BP Study

今日はBPStudyという勉強会に行きました。ここに行くのは初めてです。
2つの内容があり、どちらも非常に楽しみにしています。



・GAEForJavaについて
量は非常にありましたが、今まで聞いたGAEの講演では
とくにBigtableについてはわかりやすい内容です。

  • まずはFlexBlazeDSで作成したご都合.comの説明。私もAIR+BlazeDSでプログラムを作成した事があり、GAEでもこの構成が実現できるのか、という点が印象的で、是非試してみたくなりますね。但し、単純にBlazeDSをそのまま使えず、コンパイルをしたり等、動かすまでには色々な苦労がありそうです。



その後は、GAEの説明、

  • クラスタ=ステートレスにしており、ステートフルを実現する場合はMemcacheを使う、
  • Memcacheにデータをいれ、Cronを使用し、いらないデータは削除する(容量オーバーすると、Sessionがきえてしまうらしい)
  • Memcacheはノードが変わっても、自分で挿入したデータを共有(どこからでも)されているので、ノードを意識する必要はないらしいメモリーに頼らず、Memcacheを有効的に使用する事がよいので、ここがGAEにて何を実現する時のポイントになりますね、JavaでWebアプリを作成する場合、Sessionに何でもいれてしまえという設計になり、使用ユーザーが多くなり、パンクすることになります。今後は一部はBigtableへ、画面遷移等でよく利用するデータはMemcacheに入れる、という設計を行い、Memcache←Bigtableを効率よく利用しないといけない事を理解しました。



その後はBigtableの説明、

  • 今回初めて知ったことは、大量のデータを処理する場合はlowerlevelAPIを使用し1件ずつ処理をする場合、JDOを使用するとよいみたいです。
  • Key・Entity・Propertyについて、色々な講演を聴きましたが、今回はじめて詳しく詳細について説明がありました(時間がかかる内容ですので)。
  • データベースからの取得件数は1000件までという制限があり、1001件目が存在する場合、NGのようです。ページングについてはPythonではAPI的なものが用意されていますが、Javaはまだないようです。
  • 条件式を作成する場合、イコール(=)をうまく使うと早いですが、<=や=>などを使用し、さらにOrderbyを使用すると、遅くなるということです、おまけにIndexも作成してしまうので。ここはデータを抽出する時、うまく設計しないといけないですね。Memcacheなどをうまく利用して、イコールでできる方法を考えます。



・Liftについて
Seasar2の時、EscafeFlowに出席しましたので、Liftは仕方なく参加できませんでしたが、
ここでもあるじゃん、と思い参加しました。
アメリカの開発者の人たちが継ぎはScalaだ!とみていっており、なんでなの?
Java+関数型という仕様の何がいいの?という部分についての私なりの疑問が
なるほど、と理解できました。講演のとき、関数を作り、この関数をどのように
呼び出したり、使用したりするというデモがあり、このようなことができる言語は
確かにないなぁ、特にオブジェクトに関数を代入する、という考えが印象的でした。

  • さらに関数を部分的に適応できる為、カリー化も可能になる。
  • Switch文で、Javaですと数字のみですが、文字・オブジェクトでも大丈夫のようです。
  • LiftはUSの書籍を購入して、一通りみてみた経験があり、美味しい所をとっています、色々なフレームワークの。Wicketに非常に近いですね、かつWicketはかなり評判がよいです、外人さんたちの話を聞いても。
  • Template・Snipet・Modelで構成され、Controllerに該当する部分はなく、Lift側でここは担当します。つまり、Viewが中心のフレームワークです。
  • ボタン実行→関数実行=パラメーターを設定しておく、つまりイベント処理ではブラウザーからSnipetを実行するまでの間で、上記の処理をレンダリング時に行うので、ルールさえしっかり守れば、Controllerを意識せず、画面に表示・設定したい情報をコーディングするれば、表示される、と。
  • 本当にViewが中心のフレームワークで、かつScalaを使うことでコード数を削減しようとしているので、非常に面白いフレームワークだと思います。



<まとめ>
今月は講演が多い月でしたが、どれも全体を通して、色々なことを学ぶことができ
非常に充実しています。いまはBigtable関係の講演が多く、今年はこのお話が
色々なところで聞かれると思います。
個人的にはScalaについては非常に面白いと思っており、時間を見つけて、サンプルを
作ってみようと思います(色々と試したい事が多くなってきています)。。。