サイトのトップへ戻る

Google App Engine ドキュメント日本語訳

Hello, World!

Go App Engine アプリケーションは、Goの http packageと互換性のあるウェブサーバを介して外界と通信を行います。 これにより、スタンドアロンのGo ウェブアプリケーションと記述する時と同じやり方で Go App Engineアプリケーションを記述できます。

それでは、短いメッセージを表示する簡単なアプリケーションの実装を始めましょう。



簡単なHTTP ハンドラを作成する

myappという名前のディレクトリを作成してください。 このアプリケーション用の全てのファイルはこのディレクトリに置きます。

myapp ディレクトリ内で、hello.goという名前のファイルを作成し、以下の内容を記述してください:

hello.go
View on GitHub
package hello

import (
    "fmt"
    "net/http"
)

func init() {
    http.HandleFunc("/", handler)
}

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, "Hello, world!")
}

このGo package は、リクエストに対してHello, world!メッセージを含んだ応答を返します。

注意:スタンドアロンの Go プログラムを記述する時は、このコードをmainパッケージ内に配置するでしょう Go App Engine ランタイムではmainパッケージは特別なものとして使用されているので、 HTTP ハンドラコードをあなたが選んだパッケージ内 (この場合は helloに配置する必要があります。



設定ファイルを作成する

App Engine アプリケーションは app.yamlと呼ばれる設定ファイルを持っています。 特に、このファイルでは使用するランタイムとGo プログラムによって処理されるURLをApp Engineサービスに指示します。

myapp ディレクトリ内で、以下の内容を記述したapp.yamlという名前のファイルを作成してください:

app.yaml
View on GitHub
application: helloworld
version: 1
runtime: go
api_version: go1

handlers:
- url: /.*
  script: _go_app

上から順に、この設定ファイルではこのアプリケーションに関する以下の内容について記述しています:

  • アプリケーションの識別子は helloworldです。 このチュートリアルの後半であなたのアプリケーションをApp Engine に登録する際に、重複のない識別子を選択し、この値を更新します。 この値は、開発段階では何でも良いです。今のところはhelloworldと設定しておきましょう。
  • これはアプリケーションコードのバージョンナンバー1を表します。 新しいバージョンのアプリケーションソフトウェアをアップロードする前にこの値を変更した場合、 App Engine は以前のバージョンを保持しておくので、管理コンソールを使って以前のバージョンにロールバックできるようになります。
  • このコードはgoランタイム環境の、API バージョン go1で動作します。
  • 正規表現で/.*に合致するパスを持つURL(つまり全てのURL)へのリクエストは、Go プログラムによって処理されます。 _go_app の値は、開発用ウェブサーバで認識される魔法の文字です;製品版App Engineサーバでは無視されます。

注意: Go SDK はPython SDKおよびJava SDKとは異なる動作をします: 特定のアプリ用のGoパッケージは、全部まとめて単一の実行可能ファイルにビルドされます。 リクエストの割り振りはGo プログラム自身が処理します。 これは、handlerとウェブルート ("/")を関連付けるためにinit関数内でhttp.HandleFuncを呼び出すためです。 ですが、app.yamlを使って静的ファイルを提示するパスや特別な権限が必要なパスを設定することもできます。

このファイルの構造は YAML形式です。 設定オプションの全一覧についてはGo アプリケーション設定のページを参照してください。



アプリケーションをテストする

helloパッケージ と全てのURLが Go プログラムに紐付けられた設定ファイルの準備ができれば、アプリケーションは完成です。 これで、App Engine SDKを持つウェブサーバでアプリケーションをテストできます。

全てのファイルが適切な位置に置かれているか確認してください。 アプリケーションのディレクトリ構造は以下のようになります:

myapp/
  app.yaml
  hello.go

myappディレクトリへのパスを指定した以下のコマンドを実行すると、アプリがコンパイルされてデベロップメントウェブサーバを起動します:

/path/to/go_appengine/goapp serve myapp/

前回推奨したように/path/to/go_appengine/をあなたのPATHに追加しているのであれば、 コマンドの/path/to/go_appengine/ の部分は削除できます。 また、カレントディレクトリがmyappの場合も同じように省略ができるので、コマンドはシンプルになります:

goapp serve

これでウェブサーバは動作しており、8080ポートでリクエストを待っています。 ウェブブラウザに以下のURLを入力するとアプリケーションをテストできます。:

使用するポートの変更方法を含む、デベロップメントサーバの動作についての詳細情報は、Go デベロップメントサーバリファレンスを参照するか、goapp help serveを実行してください。



反復型開発

デベロップメントサーバはソースファイルの変更を監視しています。 あなたがソースファイルを更新すると、それらを再コンパイルしてローカルアプリを再起動します。 goappで再起動する必要はありません。

それでは試してみましょう: ウェブサーバを動作状態にしておき、hello.goを編集して表示する文字をHello, world! から別の何かに変更してください。 http://localhost:8080/のページをリロードすると、変更されたページが表示されます。

ウェブサーバをシャットダウンするには、ターミナルウィンドウをアクティブ状態にして、 ControlキーとCキーを押してください (もしくはあなたのコンソールの適切な "break" キーを押してください)。

以降のチュートリアルの間も、ウェブサーバを起動したままにできます。サーバを停止する必要がある場合でも、前述のコマンドを実行してサーバを再度起動することができます。



次は…

これで App Engine アプリケーションが完成しました! このシンプルな挨拶文アプリケーションを すぐに配置し、世界中のユーザーに公開できます。 しかしアプリを配置する前に、他にも様々な機能を追加してみましょう。

Users サービスを使用する>>