AppengineJSは、Google App Engine Python SDKのオープンソースのJavaScript ポートである。Googleの永続化ストレージやサービスにアクセスし、GAEのインフラにデプロイするウェブアプリケーションを簡単に作成できるようになる。
AppengineJSはApp Engine Python APIのJavaScript ポートであるため、実際にはMozillaのJavaScript エンジン、Rhino上で実行される。RhinoはJavaで書かれているため、AppengineJSを使用するJavaScriptコードはJVM上にデプロイすることも可能である。作者がこの方法を選択したのは、“Python API のデザインはJavaScriptの世界感に近い”と考えたからである。
PythonからJavaScriptへのポーティングはJSの命名規則に沿うように実施された。つまり、Pythonのthis_is_a_name
識別子は thisIsAName
に変換され、またJSのdelete
キーワードとの衝突を避けるため、Pythonのall delete()関数は remove()にリネームした。
以下がポートされたAPIの例である。
- Datastore (カバレッジ: 90%, マイナーなAPIの変更以外は使用可)
- Memcache (カバレッジ: 90%, 使用可)
- URL フェッチ (カバレッジ: 90%, 使用可)
- メール (カバレッジ: 90%, 使用可)
- XMPP (カバレッジ: 90%, 使用可)
- 画像 (カバレッジ: 60%, 使用可)
- ユーザ管理 (カバレッジ: 80%, 使用可)
- OAuth (カバレッジ: 20%, ポート中)
- タスクキュー (カバレッジ: 80%, 使用可)
- Blobstore (カバレッジ: 50%, 使用可)
- クォータ (カバレッジ: 90%, 使用可)
- ローカル単体テスト (カバレッジ: 80%, APIの変更以外は利用可)
GitHub プロジェクトは ソースコードや、ドキュメントへのリンク、さらに、AppenngineJSを使用する2つのデモプログラム、Datastore APIを使用するJSGI アプリケーション (tar.gz), と AppengineJS と Nitro で構築したBlogシステム(tar.gz)を含む。