読者です 読者をやめる 読者になる 読者になる

金融ITニュース。時々雑ネタ。

Fintechからレガシーまで、金融IT業界のニュース

Google Cloud Shellを使ってみた。App Engineアプリを構築してみる

Google Cloud Shellが一般公開されました。
Google Cloud Platform Japan 公式ブログ: Cloud Shell が GA リリース、料金は無料に

Google Cloud platformでの各種作業をWebブラウザ上のコンソールから利用できるサービスです。
さらにGoogle Cloud platformユーザは無料で使えます。
これまでローカルのPCに構築していた開発環境をブラウザ上で簡単に構築できて、とても便利ですので、仕様とCloud Shellを使ったGoogle app engineでのWebアプリ構築手順を紹介します。

Google Cloud Shell 機能概要

Google Cloud Shellの機能概要をまず紹介します。
https://cloud.google.com/shell/docs/features

A temporary Compute Engine virtual machine instance

f1-micro Micro machineが割り当てられます。仮想CPU1コアと0.60GBに相当します。

Command-line access to the instance from a web browser

ウェブブラウザからコマンドラインを利用できます。
対応ブラウザはGoogle ChromeFirefoxMicrosoft EdgeMicrosoft Internet Explorer 11以上、Safari 8以上です。

5 GB of persistent disk storage

1ユーザあたり5GBのディスクが割り当てられます。他のプロジェクトからもアクセス可能です。
ただしホームディレクトリ以外に保存したファイルはインスタンスを終了すると自動的に消えます。
重要なデータはGoogle Cloud Storageへの保存が推奨されています。

Pre-installed Google Cloud SDK and other tools
Language support for Java, Go, Python, Node.js, PHP and Ruby

SDKや主要なツール、プログラミング言語はプリインストールされています。
サポートするツール、言語は以下の通りです。
https://cloud.google.com/shell/docs/features から引用
f:id:memoyashi:20160810002829p:plain
f:id:memoyashi:20160810002837p:plain

Web preview functionality

インスタンス上で稼働するアプリケーションなどにHTTPでアクセスするためのWebプレビュー機能が提供されます。
ポートは8080~8084のみですが、アクセスは開発者のみに限られ、セキュリティが確保されています。
f:id:memoyashi:20160810002734p:plain

Google App Engineアプリの構築

続いて、Google app engineでのWebアプリを構築してみます。

まず、Google Cloud Platformから新規プロジェクトを作成します
プロジェクトができたら、右上のCloud Shellのアイコンをクリックします。
f:id:memoyashi:20160810002633p:plain

ターミナルが画面下部に立ち上がります。
右下の「新しいウィンドウで開く」アイコンをクリックすれば、フルウィンドウで作業できます。
f:id:memoyashi:20160810002643p:plain

今回はGoogle app engine(GAE)とGo言語(golang)でアプリを構築してみます。
管理ツールgoappが標準でインストールされているので、インストールなど事前作業は不要です。

$ goapp version
go version go1.6.1 (appengine-1.9.38) linux/amd64

ゲストブック作成のクイックスタートがあるので、これをベースに進めます。
https://cloud.google.com/appengine/docs/go/quickstart


Gitからスクリプト一式を取り込みます。今回は最終版のブランチを選択します。

$ git clone https://github.com/GoogleCloudPlatform/appengine-guestbook-go.git
Cloning into 'appengine-guestbook-go'...
remote: Counting objects: 69, done.
remote: Total 69 (delta 0), reused 0 (delta 0), pack-reused 69
Unpacking objects: 100% (69/69), done.
Checking connectivity... done.

$ cd appengine-guestbook-go/
$ git fetch
$ git checkout part4-usingdatastore
Branch part4-usingdatastore set up to track remote branch part4-usingdatastore from origin.
Switched to a new branch 'part4-usingdatastore'

スクリプトがコピーできたら、開発サーバを起動します。
goapp serveコマンドだけでデフォルトの8080ポートで起動できますが、管理ツールをポート指定したいので、オプションを付けて起動しています。
管理ツールはデフォルトポートが8000ですが、Cloud Shellのウェブプレビューでは8080~8084のポートしか使用できないため、ポートを指定する必要があります。

$ goapp serve -port=8080 -admin_port=8081

左上のウェブプレビューから8080ポートで接続します。
ゲストブックの初期画面が表示されます。試しにテキストを入力して、送信してみます。
f:id:memoyashi:20160810002748p:plain

投稿した文章が表示されました。
こんな感じで追記できます。
f:id:memoyashi:20160810002753p:plain

管理ツールからデータストアの中身をみてみましょう。
ウェブプレビューから8081ポートを開きます。
管理コンソールが表示されます。Datastore Viewerを選択すると、データの生データを見ることができます。
スペル間違いのエントリがあるので削除してみます。
f:id:memoyashi:20160810002807p:plain

8080ポートの画面をリロードすると、削除したエントリが表示されなくなっています。
f:id:memoyashi:20160810002814p:plain

最後にデプロイしてアプリを公開しましょう。

$ goapp deploy -application [PROJECT_ID] -version 1

デプロイが正常終了したら、Webブラウザから
http://[PROJECT_ID].appspot.comにアクセスすればゲストブックが利用できます。
f:id:memoyashi:20160810010125p:plain
※ The index for this query is not ready to serve. See the Datastore Indexes page in the Admin Console.
が出力された場合は、インデックスの構築中なので、しばらく待ってから再アクセスするとゲストブックが表示されます。

まとめ

CUIベースですが、1クリックで開発環境を用意して、App Engineアプリケーションを開発、公開するところまでできました。
これまでのようにローカルに環境を立てて、SDKをインストールして、環境設定して、という作業が不要になりスピーディーに開発を始めることができました。
制約はありますが、手軽に開発環境を構築でき、とても便利なサービスです。