AppEngine Ja Night Sapporo #1 完了しました

札幌でも35℃近い気温を記録した8月6日に札幌での初AJN(AppEngige Ja Night)が開催されました。参加人数は、前半のセッションが約30名、BT(Beer Talk)が約25名です。開催を告知すると一晩で100名以上の参加希望者が殺到する本家AJNには遠く及びませんが、Google App Engineへ興味を持つエンジニアや関係者が増えて言って欲しいですね。
以下、簡単にセッションレポート。
ustで公開していますので、参加できなかった方はこちらへどうぞ。

GAE/J, slim3, そしてEtupirkaCMS @shuji_w6e

最初のセッションは自分の導入セッション。初のAJNということで、どのくらいの知識の人が参加するか未知数ということで、前半は、クラウドとGAEの概要を軽く説明し、slim3の特徴を解説しました。どのくらい知っているかを簡単に聞いてみたところ、クラウドに関しては概要はほとんどの人が解り、GAEは8割程度の人が概要を知っており、slim3については半分くらいの人が簡単には使ってみたことがある、そんな感じでした。

後半はErupirkaCMSの実装を駆け足で紹介。特にコントローラ部分の工夫である scenic3について多めに解説を行っています。scenic3は、どうしても大量になってしまうslim3のコントローラを整理して見通しの良いアプリケーションにする拡張ライブラリです。うまくslim3の特徴を殺さないように作っていることが伝えられたかなと思います。他にはキャッシュの仕組みや独自テンプレートエンジンの解説などを交え、少しオーバーしてしまいました。
資料についてはこちら。

GAEを効率よく学習するためのポイント @shin1ogawa

メインセッションの2本目は、今回のajnに合わせて北海道旅行に来ている @shin1ogawaさんのお話。ちょうどslim3本が発売されたと言うことで、ひがさんのサイン本を2冊提供して戴きました!(後ほどじゃんけん大会)
内容としては前半はやはりGAEの特徴。やや被っている内容もありましたが、自分のセッションが入門編で、@shin1ogawaさんのセッションはもう少し踏み込んだ内容や具体的にどんなシーンで使うべきか?という具体的な内容が多かった。ちょうどよかったです。
その後はAppEngineの裏側を解説しつつ、開発時に気を付けなければならないはまりどころの説明。なにはともあれ・・・

  • 日本語ドキュメントを信用してはいけない

今日だけで5−6回はこのフレーズでていましたねw
FrontServer - AppServer / StaticContent あたりの構成の話は調べなければ出てこない部分なのでajn 札幌の初回ネタとしては非常に良かったと感じます。また、どうしてx秒ルールというのがあるのか?どうしてパフォーマンスを意識すべきなのかという理由の解説はためになります。

つまり、spin-upが遅くても落ちなければいいやというのは正しくなくて、ある程度のリクエストを裁くためにはspin-up/downは避けられない。30秒ルールはあるけど、実質的に10秒以内で起動しないとリクエストを捌ききれない(10秒ルール)。さらに処理も1秒以内で返すのが理想(1秒ルール)。
ちなみにetupirkacmsのspin-upは2200 - 3000msくらい。最近は少し落ちているのでまたチューニング必要。
他には課金の話とかデータストアの制限など、キーワードを色々といただいたので1−2ヶ月は勉強するネタに困らないでしょう。こういう刺激があるのはこういうイベントの一番の効果です!

じゃんけん大会

ひがさんのサイン入 slim3本争奪のじゃんけん大会!こればかりは参加しなければ貰えませんw
@higayasuo さん、 @shin1ogawaさんありがとうございます!
ちなみにゲットした2名は、この後でBTをした @maimuzo さんと弊社社長でしたw

JavaじゃないあたりのGAE事情 @maimuzo

続いてBeer Talk。1本目は札幌では主にAndroidで有名な @maimuzoさん。資料はこちらで公開されています。
内容としては、RubyPHPを使おうとしたけど無理があるなーという失敗談と、結局はPythonでやってますという話です。

本来はajnに関してはPythonネタでもJavaネタでも構わないんですが、札幌のPython人口は少なく、GAE人口も少なく、Python + GAEとなってくると数名しか居ないのが現実(いやJavaでも数十名くらいだけど)。さらりと流した後、kayフレームワークの紹介という流れでした。ちょうどJava系の人が多かったのでPython側の事情を少し知れて良かったと思います。
ただ、最後の方に @shin1ogawaさんに突っ込まれていましたが、現状ではPythonでもJavaでも大きな違いはなくなっているので、PythonJavaかのメリット/デメリットはあまりないという事。とはいえ、Pythonのspin-upは妬ましいw一方、JavaIDEとかテスト環境とかGTX(slim3)とかメリットもありますのでトントン。

chocicaの紹介 @teamcounter

2本目のBTは、@teamcounterさんによるGAE/slim3の導入事例紹介。技術ネタが続いていますので、こういう事例紹介は重要と思っていました。実際に一番質問が飛び交っていたです。
chocicaは幼稚園/保育園などを対象とした写真のアップロード/ダウンロード(販売)サイト。幼稚園とかでのイベントの写真がアップロードされ、親はそれをダウンロード(購入)し、お金は幼稚園に月謝と共に支払うという仕組み。まずは、目の付け所が面白いと絶賛されていました。
GAE/slim3の採用理由は単純にコスト(初期・運用)が低いから。技術的にはGAEも初めてでJavaも慣れた人がいない状況でしたが、なんとかなる!という姿勢は見習いたいですね。プロジェクトは@teamcouterさんをリーダーに+3名体制で、実質的に3人月くらいで作成したという話。こういう具体的な数値ってやってみないと解らないですが、参考値が解ると採用するかの判断がしやすくなります。惜しげもなく公開して貰えるってエンジニアは太っ腹です((他業種じゃ、有料なセミナーでしか聞けないでしょうねぇ、社外秘な情報なことも多いだろうし)))。
後は「日本語ドキュメント信用できない」とここにも被害者がw

AppEngineのLowerな世界 @shin1ogawa

本日最後のセッションは @shin1ogawaさんの2本目のBT。マニアックなネタでシメです。PB(Protcol Buffer)という仕組みで低レベルなレイヤーは処理を行っており、その辺をハックすると面白いよという内容です。
まずはApiProxyとDelegateについて説明。この辺りはJavaとかデザインパターンに慣れていないと、Proxy? Delegate? という感じかと思いますが、BTなので気にしない。ざっくりと、Delegateに委譲している処理の前に何かをやればAOPっぽい動き、テスト用に例外をThrowするようなStubを作るのも簡単、さらには丸ごとローカルで実行するはずの処理をサーバで処理してしまうようなパターンもあるよという流れでした。
この辺は自分もなんかできそーだな?と調べ始めたのが2−3ヶ月前ですが、検索していくと @shin1ogawaさんのajnネタであることが判明した所です。ただし、半年以上前の話で、「札幌にいると情報のキャッチアップしないと遅れる」と危機感を持ったものです。etupirkacmsでもこの仕組みを使ってインポート/エクスポートをしようと思ってます(ソース)。
ただし、異常なリクエストが発生する可能性があるのでうまく処理するか、課金ONにする必要があるという話も聞けました。課金に関しては一時的な(分単位の)上限は超えても課金は1日単位なので結局0円というトリックがあるそうです。

総評

とにかくBTが熱い!
自分も本家ajnに参加してめちゃくちゃ面白い!って感じた部分だったので、その雰囲気を半分くらいは再現できて良かったです。お酒を少し入れていくくらいの方が質問が飛び交いますね。
また、今回はご厚意で札幌まで遊びに来て戴いた @shin1ogawa @aqubi夫妻に感謝です!今回の成功はお二人の参加あってのこと。定期的に色々な人を呼んで刺激を入れたいところです。また、slim3本にサインを書いていただいた @higayasuoさん、ありがとうございました。
結局、20分ほど延長し、23:20頃までみっちりやったAppEngine ja Night 札幌 #1 です。たまにしか開催できないわけで次は昼間からBeer Talkやりましょう。秋か冬くらいに、できれば今年中にもう1回やりたいかと考えています。札幌に遊びに来てくれるゲストスピーカー募集(笑)

以上、駆け足ですが、AppEngine ja Night 札幌 #1 のレポートでした。