Goブログ

GoとGoogle App Engine

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

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

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

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

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

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

これらのマイナーな制限事項にもかかわらず、これは真の言語です。コードはソース形式でデプロイされ、クラウド内で64ビットx86コンパイラ(6g)を使用してコンパイルされます。これは、App Engineで実行される最初の真のコンパイル言語です。App Engine上のGoを使用すると、効率的でCPUを大量に消費するWebアプリケーションをデプロイできます。

詳細については、ドキュメント(「はじめに」から始める)をお読みください。ライブラリと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
ブログインデックス