Google App Engineに最適化したJavaフレームワーク「Slim3」登場。作者のひがやすをさんにインタビュー
Google App EngineのJavaに最適化した日本発のMVCフレームワーク「Slim3」。3月18日にバージョン1.0.0がリリースされました。
Slim3は、Google App Engineで複数行のトランザクション操作を可能にし、標準で用意されているAPIよりも高速な動作を実現するなどの特徴があります。Slim3を開発したのは、オープンソースのJavaフレームワークとして知られるSeasarなどを開発してきたひがやすを氏です。
正式リリースにあたり、Slim3の特徴、開発に苦労した点、今後の展開などについて、ひが氏自身に説明してもらうべくインタビューをしました(インタビューはメールで質問し、返答いただくという方法で行いました)。
Slim3の設計哲学は、“Less is more”を実現すること
―― Slim3とは何でしょうか? Javaにそれほど詳しくないというプログラマにも説明するとしたらどう説明するでしょうか?
Slim3の名前は、Simple and “Less Is More”の頭文字をとったものです。3は単にドメイン名(slim3.org)をユニークにするためにつけたもので、あまり意味はありません。また、“Less is more”は、Slim3の設計哲学にもなっています。
“Less is more”は、ドイツの建築家で近代建築の巨匠として知られているミース・ファン・デル・ローエの標語で、近代機能主義デザインの金言になってます。 「装飾をつけなければつけないほど、そのものの本質が現れ、より豊かな表現となる」という意味です。単純なものほど訴える力が強くなるのです。
Slim3の設計哲学は、“Less is more”を実現することです。機能を増やすことは時間をかければいくらでもできますが、シンプルを追求することはむずかしいことです。単に機能を削れてばいいというものではありません。
Slim3を一言でいうと、本質を見極めて余分な装飾だけを削ることに挑戦しているフレームワークです。
―― Slim3での機能の特徴などを教えてください。
Slim3の主な特徴は次の五つです。
- Global Transactions
- Faster than JDO/JPA
- Fast spin-up
- HOT reloading
- Type safe query
この中でも特に強調したいのは、Global Transactionsです。
Google App EngineではEntity Groupという狭い塊でしかトランザクションをサポートしていませんが、Slim3では複数のEntity GroupにまたがるGlobal Transactionsをサポートしています。
実用的な速度でちゃんとしたGlobal Transactionsをサポートしているのは、Google App Engineでは初めてなはずです。
また、クラウドにおいてパフォーマンスが悪いことはバグであるとさえ思っているので、 パフォーマンスにもこだわっています。Googleが公式に用意しているJDO/JPAよりも圧倒的にパフォーマンスが良いことも特徴です(デモはこちら)。
Slim3のWebサイトにはもう少し詳しく書いてあるので、参照してみてください。
―― Seasarの開発から、なぜGoogle App Engineに最適化したフレームワークのSlim3の開発に至ったのか、経緯を簡単に教えてください。
今後のIT業界がクラウドへシフトしていくのは誰もが感じていることだと思いますが、オンプレミスとクラウドでは求められているものが違うので、クラウドの良さを引き出そうとすると、どうしてもこれまでのフレームワークでは無理が出てきます。
例えば、Google App Engineではspin-up(アプリケーションの起動)がとても頻繁に起きます。これは、使っていないインスタンスはすぐに(2、3分で)終了させられ、必要に応じて再起動されるからです。
既存のフレームワークはspin-upのことをほとんど気にしていないため、Springなどの機能豊富なフレームワークは、spin-upにかかる時間が20秒を超えることも普通にあります。spin-upの間、ユーザを待たせてしまうので、これは困りものです。
Slim3はGoogle App Engineに最適化されているので、spin-upも1秒前後ととても速くなっています。
どうしてAmazon EC2やマイクロソフトのWindows AzureじゃなくGoogle App Engineかというと、Amazon EC2もWindows Azureも基本的に既存の技術の延長なので、イノベーションが起こりにくい土壌だからです。また、既存の技術の延長ということは、既存のマーケットで強かった人たちの強みがそのまま生かされるということでもあります。
Slim3は後発のフレームワークなので、イノベーションが起きる可能性のある未開拓なマーケットを選びました。
―― Slim3の開発で苦労した点はどこでしょうか?
Google App Engineでは、データベースにRDBMSではなく、分散キーバリューストアの一種であるBigtableを採用しています。多くの人にBigtableにいかになじんでもらうかということが、最も苦労しているところです。
RDBMSっぽい機能をBigtableでも用意すればいいと考えがちですが、これが最も失敗するパターンです。なぜなら、BigtableはRDBMSとは全く違うものだからです。
Bigtableの良さを引き出し、開発者にも理解してもらうというのは、とてもチャレンジしがいのあることだと思っています。
―― Slim3は世界に向けてリリースしたいとおっしゃっていました。そのための方向性、取り組みなどについて教えてください。
Slim3はサイトもドキュメントもMLもすべて英語で用意していて、英語圏の方に違和感なく使ってもらえるようにしています。あとは地道にユーザを獲得していくだけですね。
―― 最後に、これからGoogle App EngineやJavaにチャレンジしたい人に向けてメッセージをください。
Google App Engineのような新しいプラットフォームが出てきたときに、早めにチャレンジしないというのは、はっきりいって損ですよ。うまくいけば、そのプラットフォームの中心に立つこともできる。仮に、そのプラットフォームが流行らなかったとしても身につけたことは損にならない。
こんな絶好の時期に何もせずにチャンスを逃す人は、この先もチャンスを逃し続ける 可能性が高いでしょう。