azure-cli 0.6.9 公開のお知らせ
このポストは、12 月 19 日に投稿された azure-cli 0.6.9 ships, pure joy の翻訳です。
この数か月間、Azure サービスをさらに柔軟に、文字どおり「指先だけで」操作していただけるよう、既存の CLI (英語) の仕様に改良を加えました。このリリースには便利な機能をたくさん盛り込んでいますので、皆様にもきっと気に入っていただけるはずです。
簡単にご紹介すると、このツールの新機能は以下のとおりです。
- カスタム Web サイトの展開: azure site deploymentscript
- モバイル サービスのサポート: azure mobile
- Windows インストーラー
- サービス バス: azure sb
- ストレージ アカウント: azure account storage
カスタム Web サイトの展開 – 展開方法のカスタマイズ
ユーザーから最もご要望が多かったのが、Azure Web サイトでのコードの展開方法をカスタマイズしたいというものでした。たとえば、ステージング環境への展開の際に、独自の手順を毎回サーバー上で実行したいということです。
今回のリリースでは、このご要望に応える新しいコマンド azure site deploymentscript を導入しました。このコマンドを使用すると、サイトを展開する際に実行するすべてのサーバー ロジックを含んだスクリプトを、bash または cmd 形式で生成できます。生成したスクリプトは、目的に応じて簡単にカスタマイズできます。
この機能があれば、まさに鬼に金棒です。では一般的なシナリオでの活用例を使って、実際の動作をご覧いただきましょう。ここでは、Git を使用したプッシュのたびに、Node.js アプリに対して Mocha スクリプトを実行することにします。また、"express" CLI を実行し、Express でシンプルな Hello World プログラムを作成していることを前提とします。
さらに、常にエラーを返すダミーの test.js を作成してあります。
アプリ フォルダーに移動し、Node.js アプリと bash スクリプトを指定して、deploymentscript コマンドを実行します。
生成されたスクリプトについては、https://gist.github.com/4331260/revisions (英語) の Gist で最終的なファイルを参照してください。
このスクリプトには、さまざまなセクションが含まれています。
- #Prerequisites – このセクションでは、所定の処理の前に実行する必要のあるコードを定義します。この例では、Node.js アプリを使用するために、Node.js がインストールされているかどうかを確認しています。*
- #Setup – スクリプト変数のセットアップや、他の必須モジュールのインストールに対応するセクションです。たとえば、この例の場合は Node の KuduSync モジュールをインストールしています。これは、ターゲットの Web サイトに対してプッシュするファイルを、元の場所からコピーするために使用されるモジュールです。
- #Deployment – (KuduSync を呼び出して) コードを実際に配置するほか、npm を呼び出して各種の Node モジュールを有効化するなど、その他の手順を実行するためのセクションです。
*メモ: 現在、この bash バージョンにはバグがあり、bash では動作しない "where" コマンドが Node.js の検出に使用されています。修正方法については、上記 Gist の行番号 24 を参照してください。
このスクリプトのすばらしい点は、ローカルから実行できるように設計されているところです。このスクリプトは、カレント ディレクトリが所定のローカル フォルダーであるかどうかを検出したうえで、コピー対象のファイルを格納するアイテム フォルダーを作成してくれます。これは、開発の際に非常に便利な機能です。
さて、この例の単体テストのシナリオでは、生成されるスクリプトの既定の動作とは少し違う処理をさせてみたいと思います。
- KuduSync をインストールしたのと同様に、Mocha をインストールする
- Web サイトにファイルをコピーした後ではなく、コピーする前に npm を実行する
- Mocha を実行し、テストでエラーが返された場合には Web サイトの展開を中止する
上記の処理を行うためには、コードを少し変更して新たな手順を追加する必要があります。このスクリプトをローカルでも動作させるには、ちょっとした頭の体操が必要になりますが、それほど難しいことではありません。
最終的なスクリプトは、先ほど挙げた Gist のリビジョン (https://gist.github.com/4331260/revisions、英語) の最初のファイルを参照してください。
変更した箇所は、コメントに "# gb:" を付けて示しています。GitHub には優秀な差分確認機能があるので、目的のコメントと変更内容は簡単に確認できます。
では、サイトを展開してみましょう。Git をコミットすると、指定したテストが実行されて、目的の結果が出力されます。
上の結果から、テストでエラーが返されたため Web サイトが更新されなかったことがわかります。
以上です。新しいカスタム展開機能の活用シナリオはこれ以外にもたくさんありますが、ここではそのうちの 1 つをご紹介しました。
モバイル サービス
今回のリリースでは、Windows Azure モバイルサービス (英語) 用のコマンドを追加し、Windows 8、Windows Phone、iOS、Android の各アプリケーションのモバイル バックエンドをシェルから直接作成できるようにしました。これにより、数個のコマンドを使用するだけで、新しいサービスの作成、データベースのプロビジョニング、テーブルの作成と照会、スクリプトの管理などが行えるようになります。
次に、azure mobile create を使用して新しいモバイル サービスを作成する例をご紹介しましょう。create コマンドを呼び出す際に、新しいサービスの名前、ユーザー名、パスワードのみを指定しています。
ご覧のように、新しいサービスが作成され、新しい SQL サーバーとデータベースが準備されました。 –sqlServer や –sqlDb でパラメーターを追加すれば、既存のサーバーやデータベースを使用することもできます。
次に、azure mobile table create を実行して新しいテーブルを 2 つ作成し、それらの詳細を表示してみます。
今度は作成したテーブルに、azure mobile script upload を使用してスクリプトをアップロードしてみましょう。さらに、既存のスクリプトの一覧を azure mobile script list で表示し、azure mobile script download でダウンロードします。
これでスクリプトの準備ができました。次はモバイル サービスを利用するためのモバイル アプリを構築します。サービスに接続するには、アプリケーションの URL とキーが必要になります。これには azure mobile show コマンドの助けを借りましょう。
この例では、ポータルで作成する Hello World プログラムとよく似たごくシンプルなプログラムを作成し、連絡先管理ツール風にアレンジしてみました。
せっかくデータがあるので、あともう 1 つだけ例をお見せします。この CLI では、テーブルの内容を直接照会できるのです。
ここでご紹介したのは、azure mobile の機能のほんの一部です。その他の機能については、azure mobile –help を実行して詳細をご確認ください。
Windows 用の CLI インストーラー
今回のリリースでは、この CLI をワンクリックで簡単にインストールできる Windows 用のインストーラーを導入しました。
これでもう、Node の開発者以外の方で、Node.js のインストール方法や npm からのモジュールの取得方法がわからなくても安心です。インストーラーを使用すれば、必要な処理がすべて実行されます。
インストーラーはこちら (英語) からダウンロードできます。
ストレージアカウントとサービスバス
マイクロソフトの SDK を使用して Windows Azure ストレージ (英語) やサービス バスと通信している場合、ストレージ アカウントや名前空間の作成、キーの管理の際に Azure ポータルを使用されている方がほとんどではないかと思いますが、これからはポータルを使用しなくても CLI で両方の作業を実行できるようになります。
ストレージ アカウント
下の例では、azure account storage create を使用して新しいストレージ アカウントを作成した後、ストレージ キーを取得しています。
サービスバス
次に、azure sb namespace create を使用して、新しいサービス バスの名前空間を作成します。SDK の使用時に直接渡すことのできる接続文字列が返される点に注意してください。
名前空間の情報 (接続文字列を含む) は、azure sb namespace show コマンドを使用すればいつでも確認できます。
開発中のその他の機能
今後数か月にかけては、本当に便利な (はずの) 数々の機能を搭載した、さらに新しくなった CLI をご覧にいれられると考えています。たとえば、現在はアカウントとサブスクリプションを使用しなければ実行できない BLOB のアップロードやテーブルの照会、メッセージの送信といった作業までが、将来的にはストレージとサービス バスを使用して直接実行できるようになります。
また、皆さんからのご要望に沿った便利な機能も開発中ですので、ご興味のある方はこちら (英語) もご覧ください (".description" の箇所が重要です)。