発端は 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。
開発環境・実行環境に対してユーザが少ないということから不利益をこうむると考えられるのは、主に以下の点かな。
- 開発者が少ないと有用なライブラリ・フレームワークが少なくて不便
- ドキュメントおよびその他のノウハウが少なくて初心者に厳しい
- 「その初心者とはあなたのことですか?」
- 「あなたは初心者を教育したい人ですか?」
- あなたが自社の開発に appengine を使いたい人かもしれないし、appengine の教育サービスをやりたい人かもしれません
- そのような立場なら「初心者に厳しい」というのはあなたの問題です
- あなたはあなたの問題を自分で解決すべきです
- 初心者でも分かりやすい解説本を書いてみるといいんじゃないでしょうか
- 極めて分かりやすいトレーニング資料でもいいと思います
- 英語が苦手な初心者のために、最新のオンラインリファレンスの日本語訳などを作るときっとヒーローになれますよ
- さて、他になにかあるかな?
で、人気がどうかしたの?
上記の項目はすべて、結局のところ「それはあなたの問題なのだから、あなたがどうにかするべきだ」ということに尽きる。プラットフォームの提供者は彼ら自身の都合ですべてを進めるので、あれがダメだこれがダメだと言っていてもどうにもならないし、FUDを広めるだけだ。
「人気がない」というのは*7直接にユーザの問題になることは少ない。皆無ではない*8が、少ない。
人気を問題にしたい場合は、人気がないことによって「あなたが何に困っているのか」を明記するべきだ。あなたが困っていることについて他の人も同じように困っているのであれば、それをみんなでなんとかしよう、という流れになるかもしれない。実は世の中の片隅で、あなたが困っていることは解決済みかもしれない。誰かがすばらしいトレーニング資料を作っていて無償で公開してくれるかもしれない。
そういった具体的に何を解決したいかを言わず、単に「人気が出ていないのが嫌だ」というのは何の問題提起にも、示唆にも、なっていない。
で、何が言いたかったかと言うとだ
何だっけ………w
とにかく自分でなんとかすることを考えるか、問題点を明確にして周囲と協力するかしましょうよ、そしたら人気のあるなしは別にカンケーないでしょ、ってことかな。結局、以下のtweetがすべてです。
人気がないのなんて「人気の出る理由がない」しか理由がないんだからいくら言ったってムダだって。人気出てほしかったらみんなが使いたくて使いたくてしょうがなくなるようなライブラリのひとつでも書いて公開しろよハゲ。酔ってます。
本題とは外れるけど、appengineのDatastoreが機能的に(RDBMSに較べて)劣ってることについては以下の通りで、これがほぼすべて。
あと大規模インフラを眺めるとわかるのは、高性能を叩き出すインフラというのは、イコール処理あたりの価格が安いインフラだということ。アプリ単体が高性能を求めていなくても、その制約を受け入れることで安価なランニングコストを享受できる。
おやすみなさい。