26
JAVAじゃないあたりの GAE事情 in AppEngine ja Night Sapporo at 2010/8/6(fri) 大路 裕介(まいむぞう) 201087日土曜日

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

Embed Size (px)

DESCRIPTION

Google App Engine ja Night Sapporo (gjns)での発表資料です。

Citation preview

Page 1: JavaじゃないあたりのGAE事情

JAVAじゃないあたりのGAE事情

in AppEngine ja Night Sapporoat 2010/8/6(fri)

大路 裕介(まいむぞう)

2010年8月7日土曜日

Page 2: JavaじゃないあたりのGAE事情

あばうと・みー札幌のWeb/スマートフォン系フリーランサーです。

元々Web系プログラマーです。サーバのセットアップからWebシステム開発まで一人で出来ます。

最近はAmazon EC2やGoogle App Engineなどのクラウド系技術やってます。

日本Androidの会の北海道支部長をしています。でも、Androidオンリーと言うよりは、スマートフォン全体の未来が好きです。いつもはiPhone使ってます。

2010年8月7日土曜日

Page 3: JavaじゃないあたりのGAE事情

お話すること

Google App EngineではJavaとPythonが動くのに、日本ではJavaばかり取り上げられている。

Slim3を使うとかなり便利にGAEを使えることはわかった。じゃあPythonはどうなの? PHPとかRubyはどうなの?

ってあたりを、失敗談を交えながらまとめてみます。

2010年8月7日土曜日

Page 4: JavaじゃないあたりのGAE事情

まずはRuby

実はまいむぞうは去年の夏ぐらいからGAEをいじっていまして、何度かGAEネタで発表しています。

元々Ruby on Railsが好きだったので,jRuby上でRailsを動かしてみるところから初めてみました。

2010年8月7日土曜日

Page 5: JavaじゃないあたりのGAE事情

AttenderバックエンドはGoogle App Engine for

Javaで動いているin 第3回Android勉強会in札幌

at 2009/10/31(sat)

まいむぞう

以前の内容

2010年8月7日土曜日

Page 6: JavaじゃないあたりのGAE事情

GAEってRuby動くの?

Googleが正式にサービスを提供しているのは、PythonとJavaのみ

でも、jRubyはJava環境で動くので、Rubyのコードも動くよ

jRubyをGAEjで動かすためのGemも揃ってきたよ→appengine-jruby

以前の内容

2010年8月7日土曜日

Page 7: JavaじゃないあたりのGAE事情

Railsのいいとこたくさんあるけど、取り上げるべきは…

ActiveRecordを使えばデータベースがかんたん

プラグインを使えばユーザ認証がかんたん

ロギングが簡単

キャッシュメカニズムがついてる

以前の内容

2010年8月7日土曜日

Page 8: JavaじゃないあたりのGAE事情

でもGAEjでは…ActiveRecordを使えばデータベースがかんたん→BigtableというクラウドDBはActiveRecordでは扱えない。

プラグインを使えばユーザ認証がかんたん→プラグインは動くけど、GAEjではGoogleアカウントを使ってログイン管理できる。

ロギングが簡単→GAEj用のログクラスを使う必要があるので、標準ロガーは使えない

キャッシュメカニズムがついてる→標準のキャッシュメカニズムは使えない(動的にファイルを扱えない)

以前の内容

2010年8月7日土曜日

Page 9: JavaじゃないあたりのGAE事情

GAEj×Railsの問題点

GAEjでは、配置できるファイル(ソース・HTML・画像などなど)が1000個までに制限されていて、Railsにプラグインを追加すると簡単に1000個を超えてしまう。

そもそも、Railsのメリットをあまり活かせない

以前の内容

2010年8月7日土曜日

Page 10: JavaじゃないあたりのGAE事情

と、まぁ

ここまでが去年の状況。結局Railsは捨ててSinatraってフレームワークで作りなおしてみました。

1年経って、現状はどうか調べてみると。。。

2010年8月7日土曜日

Page 11: JavaじゃないあたりのGAE事情

なんか動いてるっぽい

2010年8月7日土曜日

Page 12: JavaじゃないあたりのGAE事情

普通にRailsできる?

Railsのscaffoldが動くということは、まぁ普通に使う分には、何も考えずに使えるのかも。

BigTableをActiveRecordを使うためのアダプターも出てるみたい。簡単な処理ならいけるかも。でも、たぶんロックや各種便利機能が動くとは考えてはいけない。

やっぱり、スピンアップ問題は辛いみたい。29秒でぎりぎり起動とか。

2010年8月7日土曜日

Page 13: JavaじゃないあたりのGAE事情

こんな問題も

Railsを諦めてSinatraを使って組んだとき、dev_serverではうまく動くのに、GAEにアップロードすると動かないという問題が多発。原因は不明だが、ライブラリ実装上の問題なのかも?

GAEの管理コンソールからエラー内容を確認してみると、Rubyのコードに対するエラーではなく,Javaのコードに対するエラーが表示されてしまうので,エラー内容がよくわかんなくて困った。

2010年8月7日土曜日

Page 14: JavaじゃないあたりのGAE事情

はい次、PHP

GAE上でPHPを動かすために、QuercusというJava上で動くPHPプロセッサを使います。

Quercusそのものはmod_phpより速いらしい。

Pear:DBとSQL4Gを使えば、GQL(SQLみたいなもの)を発行できる。高機能ではない分、RDBの呪縛から抜け出やすいかも。

2010年8月7日土曜日

Page 15: JavaじゃないあたりのGAE事情

GAE上で動くPHPフレ

GAE上でも素に近いPHPは普通に動くことがわかった。でも今更フレームワークからフルスクラッチで作るのは辛いので、何か既存のフレームワークを使いたい。

CakePHP / Zend Framework / Ethna / Symfonyのどれをググッても、GAE上で動いたという記事は出てこない。全滅状態。

GAE向けのPHPフレームワークも無いみたい。

2010年8月7日土曜日

Page 16: JavaじゃないあたりのGAE事情

ちょっとPHPは辛いかも

GAE向けフレームワークや便利ライブラリが無いので、作業効率が上がらない。

またJavaの慣習に従って手作業でデプロイする必要がある。(たぶん、途中で心が折れる)

当然、ググッてもGAE×PHPな記事はほとんど出てこないので、つまずいたら泣かずに自分でソースを読み解く必要がある。( = イバラの道)

2010年8月7日土曜日

Page 17: JavaじゃないあたりのGAE事情

中間まとめ

RubyやPHP周辺は常に工事中なので、精神は休まらないかもしれない。特にRubyは良くも悪くも日進月歩の世界。昨日動いたものが、今日動くとは限らない。

GAE/jに新機能が追加されても,それをRubyやPHPから(便利ライブラリを介して)使えるようになるまでは、数カ月はかかる。

あえて延々と続くイバラの道を進むよりは,JavaやPythonを覚えてみた方が健康的だと思う。

2010年8月7日土曜日

Page 18: JavaじゃないあたりのGAE事情

本命のPythonなんといっても、標準サポートの言語。たしかPython 2.5ベース。

Djangoを初めとして、CherryPy / Pylons / web.py / tipfy / web2pyと、GAE上で動くフレームワークもたくさん!

GAE上でのPythonといえばDjangoが有名ですが,こちらもGAEの制約により素のDjangoは動かないので、都合が悪い部分を違うものに差し替えて使うのが一般的のようです。

自分はKayというフレームワークを使っています。

2010年8月7日土曜日

Page 19: JavaじゃないあたりのGAE事情

Kayフレームワーク

2010年8月7日土曜日

Page 20: JavaじゃないあたりのGAE事情

Kayフレームワーク作者は日本人。ドキュメントは日本語だし、日本語の処理や国際化に関する機能も揃ってるし、分からないことがあればIRCで直接質問できる!(これ大きい)

遅延ローディング機能があるので、スピンアップ対策が簡単。

開発サーバ上でのデバッグが楽。いや、楽というより、楽しい。

2010年8月7日土曜日

Page 21: JavaじゃないあたりのGAE事情

開発サーバ上でのデバッグ

エラーが起きた時のオブジェクトの内容をシェルから確認できる

2010年8月7日土曜日

Page 22: JavaじゃないあたりのGAE事情

Python vs Java (on GAE)

そもそもJava with Slim3が一番便利なら、他の環境なんていらないじゃん。つーことで、Python有利となる部分をまとめてみた。

まとめてみたけど、結局は一つに集約された。

つまりは、Pythonはインタプリタだから。

2010年8月7日土曜日

Page 23: JavaじゃないあたりのGAE事情

つまりは、学習段階にて、コンソール上でオブジェクトと会話することで理解を深めることが出来たり、

開発段階にて、(机上ではなく)生きたオブジェクトを叩いて挙動を確認したり、

メンテナンス段階にて、ローカルのコンソールからBigTableに直接繋いで、即席コードのバッチ処理をかけたり、

こういったことができるのは、Javaには無い(もちろん他の言語環境にもない)Pythonだけのメリット。

2010年8月7日土曜日

Page 24: JavaじゃないあたりのGAE事情

本日のまとめGAE上ではRubyやPHPも動くけど,やはり標準対応されているJavaやPythonには及ばない。

既存の言語やフレームワークが動かないことに労力を費やすより,動くことが確約されているGAE用フレームワークを覚えることに意識を集中すべき。

オブジェクトと会話する感覚が好きなホビープログラマならPythonを選択すべき。アジャイル好きとかね。

ただ、業務で使うならJavaも検討すべき。堅牢性も大切。ロック処理などはやはりSlim3が便利。

2010年8月7日土曜日

Page 25: JavaじゃないあたりのGAE事情

Kayのコードを見てみたい?

サーバサイドはKay

フレームワークを使っています。

コードも短いのでちょっと眺めるにはいいかも。

2010年8月7日土曜日

Page 26: JavaじゃないあたりのGAE事情

おしまい

ご静聴ありがとうございます。

もっと突っ込んだ話は、ビール飲みながらしましょう!

2010年8月7日土曜日