たごもりすメモ

コードとかその他の話とか。

appengine の人気が現状微妙だという話。で?

発端は Google AppEngineについて思うところ - Togetterまとめ で、あんまり関わるまいと思っていたのについつい夜中になって口を出してしまった。それを機にぐちゃぐちゃと脳内に溢れてきたので、とりあえず整理のために書く。明日は寝不足だよチクショウ。

技術的に appengine がどうだという話はとりあえずしません。他人の意見の反駁もできるだけしないつもり、自分の意見だけ書き殴ります。丑三つ時だしね。

appengineが「いまいちブレークしてない」理由

理由なんてただのひとつしかなくて、世の中の(多くの)人が、なにがなんでも使いたい、と思うようなプロダクト/プラットフォームでは現状ない、ということでしょう。技術的な理由なんてそんなところにはない。

iOSアプリは腐るほど出てて開発者も山ほどいるけど、iOS SDK自体が技術的にすばらしいからというのは理由ではなくて、世の中の人が「iPhone/iPadを使いたい」と思っているから、そういう人に自分のアプリを使わせたい人が開発者になっているだけ。もしくは(自分のように)開発者としてラクができそう*1だから、という人もいるかもしれない。
ユーザへの課金がラクだから、というのもあるだろうと思う。
で、じゃあその逆(論理学的な意味で)が成り立つかというと、そんなわきゃーない。PHPだってMySQLだってAWSだってCassandraだってHadoopだってLinuxだってgithubだってTwitterだって、エンドユーザへの課金の仕組みなんか備えちゃいない。以上証明終わり。

プロダクトあるいはプラットフォームは、それを何がなんでも使いたいという人がいて初めて、ブレークと言えるほど多くの人の手に触れることになる。そういったブレークスルーになりうる要素が出現しない限り(あるいは世の中の評価基準が変化しない限り)、「ブレーク」という現象は訪れない。反証/反例はどこかにあるかな?

appengineが「ブレークしてない」ので困る人

で、「ブレークしてない」状態で誰か困るの? という話。内容は簡単で、困ってるんだったら、離れるか自分でどうにかしましょう、ということ。

技術的にダメな点があるのが困る

技術的にダメな点があるんだったら、自分でそれを補えばいい。

RDBMS的なトランザクションが発行できなくて困る*2とか、データのバックアップ/リストアが貧弱*3とか、テストをもっと便利にできないと使えない*4とか、RailsのWebサイト生産性が捨てられない*5とか、そういう例は既にいくらでもあるし、これからも数多く出てくるだろう。
課金システムがないのが不便? 誰もが便利でそれに乗っかりたくなるようなのを作ればいいじゃん。Datastoreにクセがある? SQLを解釈してDatastore層にアクセスしてくれるライブラリだって頑張ればできるんじゃない? ぶっちゃけひとつのエンティティグループにRDBMSのテーブルスペースをブロック分割したエンティティを放り込めばいいだけだし。死ぬほど遅いだろうけど。

自分にとって必要なアレがない、なら、見切りをつけて他所に行くか、自分でどうにかするか、誰かを巻き込んでみんなでどうにかしようとするか、すればいい。あ、評論家のセンセイは別ね。評論しててください。でもちゃんと肩書に「評論家」ってつけておいて、他の人が見たときに分かるようにしてほしいな。

で appengine について言えば appengine ja night も数時間で定員埋まっちゃうし、関西でも北海道でも行われてるみたいだし、フレームワークがいくつも(国内だけでGAE/Jでひとつ、GAE/Pythonでふたつ?)出てきてるし、その他にもみんなあれこれ書いてるし、開発者目線だと充分「ブレークしてる」と思うけどね。アーリーアダプターの玩具レベルかもしれないけど、少なくともそこで停滞してるわけでもないよね?

理由はともかくブレークしないのが困る

なんで困るの? 自分が使うだけだったら特に困らないよね*6
開発環境・実行環境に対してユーザが少ないということから不利益をこうむると考えられるのは、主に以下の点かな。

  • 開発者が少ないと有用なライブラリ・フレームワークが少なくて不便
    • 自分で使いたいものがあるんなら自分で書けば?
    • というのはプラットフォームを限らず、どの技術でも言えること。RDBMSだって、今でも裏でMySQLのストレージエンジンをがりがり書いてる人はいっぱいいるのです。
  • ドキュメントおよびその他のノウハウが少なくて初心者に厳しい
  • 「その初心者とはあなたのことですか?」
    • 初心者なら本を読みましょう。appengineは本の1冊もないほどマイナーなプラットフォームではなく、幸いにしてあれこれ出版されています。
    • 公式のオンラインドキュメントを読みましょう。やっかいなことに英語版のものしか読んではならないという状況ですが、これまでに英語の技術文書を読んできた人なら特に問題なく読めるでしょう。まあ日本語版を読んでしまっても「だいたいは」正しい内容が書かれてますし……。
    • 気兼ねなく人に聞きましょう。Twitterで #appengine ハッシュタグを付けるといっぱい釣れます。幸いにしてコミュニティが形を成しつつあります。
  • 「あなたは初心者を教育したい人ですか?」
    • あなたが自社の開発に appengine を使いたい人かもしれないし、appengine の教育サービスをやりたい人かもしれません
    • そのような立場なら「初心者に厳しい」というのはあなたの問題です
    • あなたはあなたの問題を自分で解決すべきです
      • 初心者でも分かりやすい解説本を書いてみるといいんじゃないでしょうか
      • 極めて分かりやすいトレーニング資料でもいいと思います
      • 英語が苦手な初心者のために、最新のオンラインリファレンスの日本語訳などを作るときっとヒーローになれますよ
  • さて、他になにかあるかな?

で、人気がどうかしたの?

上記の項目はすべて、結局のところ「それはあなたの問題なのだから、あなたがどうにかするべきだ」ということに尽きる。プラットフォームの提供者は彼ら自身の都合ですべてを進めるので、あれがダメだこれがダメだと言っていてもどうにもならないし、FUDを広めるだけだ。

「人気がない」というのは*7直接にユーザの問題になることは少ない。皆無ではない*8が、少ない。
人気を問題にしたい場合は、人気がないことによって「あなたが何に困っているのか」を明記するべきだ。あなたが困っていることについて他の人も同じように困っているのであれば、それをみんなでなんとかしよう、という流れになるかもしれない。実は世の中の片隅で、あなたが困っていることは解決済みかもしれない。誰かがすばらしいトレーニング資料を作っていて無償で公開してくれるかもしれない。
そういった具体的に何を解決したいかを言わず、単に「人気が出ていないのが嫌だ」というのは何の問題提起にも、示唆にも、なっていない。

で、何が言いたかったかと言うとだ

何だっけ………w

とにかく自分でなんとかすることを考えるか、問題点を明確にして周囲と協力するかしましょうよ、そしたら人気のあるなしは別にカンケーないでしょ、ってことかな。結局、以下のtweetがすべてです。

本題とは外れるけど、appengineのDatastoreが機能的に(RDBMSに較べて)劣ってることについては以下の通りで、これがほぼすべて。

おやすみなさい。

*1:主にUIの作成面でね

*2:slim3 global transaction

*3:gobo-tools

*4:ktwjr/GAETestBase

*5:appengine-jruby

*6:まあサービス終了されちゃったら別だけど、そういう段階の話はしていない、ということにしておく。そもそもいつ止まるかわからんようなサービスについて、ブレークがどうのこうのと議論されることはない。

*7:あなたがプラットフォームの利用料金を徴収する側でない限りは

*8:サービス停止の危険性があるくらいか?