The Go Blog

Go と Google App Engine

David Symonds、Nigel Tao、Andrew Gerrand
2011年5月10日

Google の App Engine は、ウェブアプリケーションを構築・デプロイするための信頼性が高く、スケーラブルで簡単な方法を提供します。appspot.com およびカスタムドメインで、App Engine インフラストラクチャを使用して10万を超えるアプリがホストされています。元々は Python アプリ向けに書かれていましたが、2009年に Java ランタイムが追加されました。そして本日、Google I/O で、Go がその次に続くことを発表できることを大変嬉しく思います。まだ初期段階であるため、今のところは実験的な App Engine 機能としてマークされていますが、App Engine チームと Go チームの両方がこのマイルストーンに非常に興奮しています。

初期段階とは、まだ展開中であることを意味します。本日現在、Go 用 App Engine SDK はダウンロード可能であり、間もなく Go アプリを App Engine ホスティングインフラストラクチャにデプロイできるようになります。本日、SDK を通じて、ウェブアプリの作成、API (そして、それが初めての方には言語も) についての学習、およびローカルでのウェブアプリの実行が可能になります。完全にデプロイが有効になったら、アプリを Google のクラウドに簡単にプッシュできるようになります。

このニュースのクールだが目立たない点の1つは、Go を試すための非常に簡単な方法を提供することです。SDK は完全に自己完結型であるため、Go を事前にインストールする必要さえありません。SDK をダウンロードし、解凍して、コーディングを開始するだけです。さらに、SDK の「開発アプリサーバー」は、コンパイラを自分で実行する必要さえがないことを意味します。すべてが驚くほど自動的です。

SDK には、Datastore、Blobstore、URL Fetch、Mail、Users など、Go の良いスタイルでカスタム設計された標準の App Engine API の多くが含まれています。環境が発展するにつれて、さらに多くの API が追加されます。ランタイムは、App Engine 環境で意味をなさないいくつかのものを除いて、完全な Go 言語とほぼすべての標準ライブラリを提供します。たとえば、`unsafe` パッケージはなく、`syscall` パッケージは削減されています。(この実装は、golang.org 上のGo Playground のセットアップの拡張バージョンを使用しています。)

また、ゴルーチンとチャネルは存在しますが、App Engine で Go アプリが実行される場合、特定のインスタンスで実行されるのは1つのスレッドのみです。つまり、すべてのゴルーチンは単一のオペレーティングシステムスレッドで実行されるため、特定のクライアントリクエストに対して CPU 並列処理は利用できません。この制限は、いずれかの時点で解除されると予想されます。

これらのわずかな制限にもかかわらず、これは本物の言語です。コードはソース形式でデプロイされ、64ビット x86 コンパイラ (6g) を使用してクラウドでコンパイルされるため、App Engine で実行される最初の真のコンパイル済み言語となります。App Engine 上の Go は、効率的で CPU 集中型のウェブアプリケーションのデプロイを可能にします。

詳細を知りたい場合は、ドキュメント (「Getting Started」から始める) を読んでください。ライブラリと SDK はオープンソースで、http://code.google.com/p/appengine-go/ でホストされています。新しいgoogle-appengine-go メーリングリストを作成しました。App Engine 固有の質問があれば、お気軽にお問い合わせください。App Engine の課題トラッカーは、新しい Go SDK に関連する課題を報告するための場所です。

Go App Engine SDK は、Linux および Mac OS X (10.5 以降) で利用可能です。Windows 版も間もなく利用可能になることを願っています。

この実現に向けて、Google の App Engine チームから受けたすべての助けと熱意に感謝いたします。

次の記事:Google I/O 2011 での Go:動画
前の記事:Heroku での Go
ブログインデックス