[小ネタ]gcloud CLIコマンドには現行バージョンに加えて「alpha」と「beta」が存在する

CLI コマンドの成長 見習いたい
2022.11.28

ナワバリの秋、ピクニックの秋、様々な秋がありますが皆様はいかがお過ごしでしょうか。


▲ これは「悪魔を追い払うためにインク壺を投げるマルティン・ルターのイラスト」だそうです

こんにちは。DA事業本部のShirotaです。
気づけば足元が落葉だらけで、雨が降ると滑って転びやすい季節が訪れていました。今年は既に2回ほど転んでめちゃくちゃに節々を擦りむいているので日々気をつけて歩いています。
慎重に生きるようになった結果、本日はGoogle CloudのCLIコマンドで気づいたことがあったのでお話しさせてもらおうと思います。

Google CloudのCLIコマンドは3種類ある

Google CloudにはCLIコマンドが用意されています。(以下、gcloud CLIコマンドと表記します)3種類あるってどう言うこと?と思われた方もいらっしゃると思いますので簡単に説明していきます。実は私も今回調べ物をしていて初めて知りました。

gcloud CLIコマンドには3種類のリリースレベルがある

gcloud CLIはリリースレベルに応じて3種類のコマンドがあります。
普段我々が意識せずに利用しているコマンドは「一般提供」のリリースレベルに属しているコマンドです。
実はその他にも、「ベータ版」「アルファ版」といったリリースレベルのコマンドが存在します。
各リリースレベルについて、Google Cloudのドキュメントにて以下のような説明がありましたので引用しておきます。

リリースレベル ラベル 説明
一般提供 なし 完全に安定しており、本番環境で使用可能と見なされているコマンドです。現在の機能を損なうコマンドに対する変更の事前通知については、リリースノートをご覧ください。
ベータ版 beta 完全に機能しますが、未解決の問題が含まれている可能性があるコマンドです。互換性に対応しない変更が予告なしで行われることがあります。
アルファ版 alpha 早期リリースのコマンドで、予告なく変更されることがあります。

gcloud CLIコマンドの安定性においては
一般提供 > ベータ版 > アルファ版
となっていて、
gcloud CLIコマンドの最新リリース順においては
アルファ版 > ベータ版 > 一般提供
となっている、と理解しておけば大丈夫だと思います。

各リリースレベルのユースケース

新しい機能を試したい時にはアルファ版やベータ版を、本番環境でgcloud CLIを利用する場合には必ず変更の事前告知が入る一般提供のものを利用するといった使い分けをすることになると考えられます。

実際に使ってみる

簡単に3種類のgcloud CLIコマンドの内容をお話ししたので、次に使い方についてお話ししていこうと思います。

各リリースレベルのコマンドの使い方

gcloud CLIコマンドはコマンドグループが以下の階層構造でまとめられています。

gcloud  
    ┣━ (一般提供)  
    ┃   ┣━ components  
    ┃   ┣━ compute    
    ┃   ┣━ ml  
    ┃   ┃   ┣━ language  
    ┃   ┃   ︙  
    ┃   ︙  
    ┣━ alpha  
    ┃   ┣━ compute  
    ┃   ┣━ ml  
    ┃   ︙  
    ┗━ beta  
        ┣━ compute  
        ┣━ ml  
        ︙

例えば、一般提供されているリリースレベルのCloud Natural Language API関連のCLIコマンドを実行したい場合は、 gcloud ml lauguage … となります。階層構造の順番にコマンドを記述するだけで、それぞれのリリースレベルのコマンドが実行できます。
後でまたお話ししますがアルファ版やベータ版のコンポーネントのインストールに必要な gcloud components というコマンドがあります。
こちらのコマンドは基本的に一般提供のリリースレベルのものしかないため、gcloud beta components list のようなベータ版を実行するコマンドを入力すると「ベータ版にはこのコンポーネントは無いよ、一般提供されているコマンドなら実行できるよ」と言った以下のようなエラーメッセージが出力されます。

ERROR: (gcloud.beta) Invalid choice: 'components'.
This command is available in one or more alternate release tracks.  Try:
  gcloud components

各リリースレベルのコンポーネントについてはGoogle Cloudのドキュメントにまとめられているので、自分が使いたいコンポーネントのアルファ版やベータ版が存在するかはこちらから確認するのが便利です。

アルファ版・ベータ版のリリースレベルのコマンドを利用したい場合の前準備

リリースレベルの説明の時に引用したドキュメントにも記載がありますが、gcloud CLIのインストール時にアルファ版・ベータ版のリリースレベルのコマンドはインストールされていません。
gcloud components install alphagcloud components install beta コマンドを実行してインストールを実施する必要があります。
ただし例外があり、Cloud Shellではデフォルトで両方のコンポーネントがインストール済みとなっています。

Components

Status: Update Available
Name: BigQuery Command Line Tool
ID: bq
Size: 1.6 MiB

Status: Update Available
Name: Google Cloud CLI Core Libraries
ID: core
Size: 25.3 MiB

Status: Update Available
Name: gcloud Alpha Commands
ID: alpha
Size: < 1 MiB

Status: Update Available
Name: gcloud Beta Commands
ID: beta
Size: < 1 MiB
︙

2022年11月28日現在、Cloud Shellを立ち上げた時のgcloud CLIコマンドのバージョンが409.0.0で、最新バージョン410.0.0がリリースされているため、上記のようにアップデートが可能な状態になっていますが既にインストール自体はされた状態となっていました。インストールがされていないコンポーネントは Status: Not Installed と表示されます。
そのため、Cloud Shell上では特に前準備の必要なくアルファ版・ベータ版のgcloud CLIコマンドを実行できる環境が整っています。サクッとCLIコマンドを触りたい時には助かりますね。

コマンドのリリースレベルとAPIのリリースバージョンは別のものなので注意!

今回、自分用の備忘録として一番まとめておきたかったことは実はこれです。
コマンドのリリースレベルとAPIのリリースバージョンは 必ずしも合致するものではありません

2022年10月18日、Cloud Natural Language APIにて以下のリリースノートが発表されました。

Natural Language Content Classification v2 model is now in Public Preview. This model supports an expanded taxonomy with 1091 content categories and 11 languages. The model is distilled from a Large Language Model with improved performance over the v1 offering.

また別のブログにて紹介させて頂ければと思うのですが、Cloud Natural Language APIのv2モデルがパブリックプレビューになったというリリースノートでした。
v1モデルではコンテンツ分類の言語が英語しか対応していなかったのですが、v2モデルでは英語に加えて11言語(日本語もあります!)対応するようになり、コンテンツのカテゴリも1091に拡張されるという嬉しいリリースでした。
これをサクッと試したいなと思い、「アルファ版やベータ版のCLIコマンドだったら試せるかな?」と思ったのですが結果は以下の通りでした。

$ gcloud ml language classify-text --content=‘ピーナッツバターサンド、レストランの食事よりもコスパよく作れるよ!作れ!’
ERROR: (gcloud.ml.language.classify-text) INVALID_ARGUMENT: The language ja is not supported for classify_text analysis.

まずは現行の一般提供レベルのCLIコマンドで実行したものです。
v1モデルでは英語しか対応していないため、Cloud Natural Language APIが自動で日本語と認識した上で日本語はサポートされていないとエラーメッセージが出力されました。

日本語対応したv2モデルを試せないかと思い、アルファ版とベータ版でも実行したのですが、以下のように同様のエラーメッセージが返ってきました。

$ gcloud alpha ml language classify-text --content=‘ピーナッツバターサンド、レストランの食事よりもコスパよく作れるよ!作れ!’
ERROR: (gcloud.alpha.ml.language.classify-text) INVALID_ARGUMENT: The language ja is not supported for classify_text analysis.

このことから分かるように、gcloud CLIコマンドのリリースレベルとAPIのバージョンは別ものになっています。
ちなみにgcloud CLIコマンドのリファレンスを見直したところ、コンテンツ分類のベータ版のコマンドの説明欄には Currently only English is supported for this feature. とちゃんと記載がありました。リファレンスの読み込みは大事ですね。

最新のCLIコマンドを試したい時はアルファ版・ベータ版を触ってみよう

コマンドそのものにリリースレベルがあることを初めて知ったので、今回はさらっとですがまとめてみました。
またコマンドそのもののリリースレベルであるため、APIのリリースバージョンとは別の概念であることも初めて知ったのでいつかの自分のためにまとめておきました。

最新のCLIコマンドを試したい時は、Google Cloudが用意してくれているCloud Shellを使うことで前準備もほとんど要らずに実行できるので時々アルファ版・ベータ版をチェックしつつ今後もGoogle Cloudのアップデートを見守っていきたいと思います。