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

balmysundaycandy-morelowlevel-beta-r28をリリースしました

http://code.google.com/p/balmysundaycandy/downloads/list

の、r28が初回リリースバージョンです。

現在のリリースバージョンでは、
・appengineにおけるmakeSyncCall呼び出し可能なメソッドの全量を整理(漏れてる可能性はありますが、設計ポリシーから推察するに全量です)
・appengineの各種サービスについて、makeSyncCall呼び出しのprotocol bufferオブジェクトの型を整理

しています。


例えば、

StringProto request = new StringProto();
request.setValue(APPID); // アプリケーションID
CompositeIndices response = DatastoreOperations.GET_INDICES.call(request);

などの様に、サービス名 + Operationsのクラスに対して、makeSyncCallのメソッド名を指定し、protocol bufferオブジェクトを渡すと、appengineの各種サービスを呼び出すことができます。makeSyncCallのシグネチャは、Stringのパッケージ名・Stringのメソッド名・protocol bufferオブジェクトのbyte[]表現を渡す必要があるため、呼び出し可能なサービスを特定するためにソースを洗う手間が省けます。

※上記のサンプルはappengine producutionでも動作しますが、調査を行う場合はappengine producutionを向いたenvironmentを使用してリモート呼び出しする方が簡単です。


率直に言って、普通にappengineの開発をしたい人はこれを使う意味はあまりありません。が、このソースを読むことによって、

・リモートサーバー(appengineの各種サービス)とのインターフェイスを知ることができる
・やり取りしている生のデータ構造をたどりやすくなる

というメリットがあると思っています。


今回リリース作業を行っていますが、そもそも広く使ってもらうものを作るというよりは調査が主目的なプロジェクトです。appengineの各種サービスを呼び出すためのprotocol bufferの構築と解析は(ドキュメントがないので)大変なのですが、このリリースは上記にあげたような調査用のリソースを提供するためのリリースです。


今回のリリースについての注意事項は下記の通りです。
・datastoreサービス以外は動作未検証です。
動作確認自体がappgngineのproduction環境で実行可能かどうかの確認を含むため結構な時間がかかります。調査したい人のためのソースのをリリースしたかったので、動作確認はひとまずおいておきました。一人でやっても年内には調査が終わると思うので、調査結果だけ知りたい人はソースを見る必要もないと思います。

※production環境において動作しないものもコミットされています。コメントつけるの忘れてたので、DatastoreOperationsの動作可否については、http://code.google.com/p/balmysundaycandy/issues/detail?id=1&can=1を参照してください。近いうちに、動作可否一覧も整理する予定です。

・protocol bufferの構築と解析は自力で行う必要があります。
結構たいへんです。

・一部実装ポリシーが異なる箇所がある
DatastoreOperationだけメソッド名をvalueとして持たせていますが、ソースが長くなるのでべた書きにしようと思っています。その他、コメントなども整理していく予定です。


全体を調査した結果、makeSyncCall呼び出しのうちdatastoreサービスとtaskqueueサービスには標準apiで使用できなさそうなものが含まれていることがわかりました。ただ、実開発向きというよりは開発サポートツールの開発に役に立つかもしれない、という程度の内容です。


努力の割に得るものが少ないような気もしていますが、もともとオープンソース活動には興味があったのと、範囲が限られているので作業見通しも立てやすいことから、もうすこし続けてみようかと思っています。

ご意見ご感想など、よろしくお願いします。