ひがやすを技術ブログ

電通国際情報サービスのプログラマ

ぼくがLLのひとに「ガツン」と申し上げたこと

ぼくは水曜日にTokyo Cloud Developerの集まりに出た。
そこで、LLのひとから、「Google App Engineは、Python版以外にJava版も出たけど、サンプル見たけど、たくさんコード書かなければいけなくて、正直どこがいいのか教えて欲しい」という質問があった。
blogに名前を出していいかの了解を得ることを忘れたので、ここには、LLの人としか書けない。


ぼくは、そこで一言申し上げた。あるいはそれは、「申し上げた」というような生やさしいものではないかも知れない。端的な言い方をすれば、ガツンと言ってやった。


客観的に見て、ぼくはガツンと言ってやったと思う。LLな方々を前に、「いまどきのフレームワークは進化しているから、言語による差なんて余りない。仮に、Javaのほうが二倍コードを書く必要があったとしても、開発の中でコードを書いている時間より考えている時間のほうが圧倒的に長いんだから、その辺は誤差でしょう。」と「がつん」と言ってやった。それが彼らに届いたかどうかは、ぼくには分からない。しかしぼくがガツンと言ってやったことだけは確かだ。


そうしたら、ヨシオリが出てきて、さらに「ガツン」といった。
「コードが多くても、実際の作業としては ctrl+spaceとctrl+1 を押すのが大半だから、生産効率に差はないんですよ。」


これだけをお伝えして、Java-jaチームがLLの方とお話ししたことについてのエントリーは、これで終わらせて頂くこととする。ご精読、ありがとうございました。


追記:コメントにも書いたけど、あの場では、仮にということで、Javaのほうがコードの量が多いという話にしましたが(そうでないと話がかみ合わないので)、実際は、フレームワークレベルだと、例えばRails(Ruby)とSeasar2(Java)を比べてもそんなに生産性(書く量は2割くらいはSeasar2のほうが多いかもしれないけど)は変わらないと思いますよ。
この辺に話が出てます。
http://d.hatena.ne.jp/higayasuo/20080216/1203153631


後、私は、Javaの良さがわからないといわれたので、良いと思っていることを伝えただけです。だれでも、好きなものがあって、人にその良さがわからないから教えて欲しいといわれたら、もちろん教えてあげるでしょう。


あわせて読みたい
http://d.hatena.ne.jp/aureliano/20090611/1244726606

いっちゃ悪いけどGAEでJavaを選択する場合の最大の理由をわかっちゃいないね

いっちゃ悪いけど、 GAE で Java を選択する場合の最大の理由をちゃんと解ってて話をしているとは思えない。
タイトルの通りだけど、Javaはすでに十うん年を一線で過ごしてきた言語だ、過去のコード資産が莫大にあるはずで、それを活用する場合は GAE で Java を選択する事のメリットがある。
「うん十万行の既存コードをそのまま投入できる。それにインターフェースするために多少オーバーヘッド気味のコードが数100行必要なのが何の問題がある?」これを言えないJava 使いはコード資産って物が無い貧乏人だし、過去資産に物を言わせないJavaなど相手にするのがあほくさいぐらい貧弱なものだ。

そのままの言葉で返すけど、いっちゃ悪いけどGAEでJavaを選択する場合の最大の理由をわかっちゃいないね。Javaの豊富な標準ライブラリを使えるというのは、大きな利点だと思うけど、過去に自分たちで作ったような既存のコードは実は余り役に立たない。


なぜなら、過去に作ったやつは、結構データベースが絡んでいる機能が多く、RDBMSがつかえないGAEでは直接は役に立たない。Bigtable用に移植すればいいんだけど、BigtableRDBMSとは途方もなく機能が異なるので、簡単には移植できない。
たぶん、一番の近道は、過去の知識は生かしながら、技術的には一から設計してやり直すことだ。
もちろん、既存のコードが役に立つ場合もあるだろうけど、割とユーティリティ的なものにとどまるだろう。そういうやつは、昔は自作が必要だったものも、標準のものをそのまま使えば事足りるケースも多い。


BigtableにからまないWebフレームワークだって、GAEのSandboxの制限に引っかかってそのままではうまく動かないことが多く、だましだまし使える機能だけ使っているのが現状だ。
とてもじゃないけど、「うん十万行の既存コードをそのまま投入できる」とは思えない。


じゃ、なぜGAEでJavaを選択するのか。

  1. Javaが好きだからだ。
  2. Javaに慣れているのでGAEで開発するには一番効率がいいからだ。


他の言語の人も、大体同じ理由でしょう。自分の力が最も発揮できる言語を使うのが一番。


コードではなく、過去の知識や経験はGAEに持ち込めると思うよ。でもそれは他の言語の場合でも一緒。