JTPA ギークサロンに行って Web API について聞いてきた

せっかくシリコンバレーにいるのだから地の利を活かそうと思い、JTPA 主催の「船木信宏氏とWeb APIについて語る」に行ってきた。結論から言うと、非常にためになった。JTPAについて知らない人のために補足しておくと、シリコンバレーで働くエンジニアリングに関わる日本人の支援団体で、日本の人にはここしばらく毎年3月に開催されているシリコンバレーツアーが有名だと思う。

さて、開場は Palo Alto で Stanford 大学のすぐ横だったのだが、Apple からは徒歩で17km(3時間)と出ていたので自転車で行くとどれくらいかと思っていたが、普通に漕いで1時間15分くらい。実家から駒場や江古田に行くより近いので、これくらいの距離だったら自転車圏内だなぁ。しかし一番分かりやすい道の El Camino という幹線道路があるのだが、この道は車の通行量が多いのと bike lane がないとので、次行くときは自転車で安全に行ける道を探さないとちょっと怖い。

開場は19時からだがトークは19時半からなので、参加者の人たちと自己紹介をしたりなんだり。日本法人の子会社の人もいれば、こちらの企業で働いている人もいるし、就職活動中の人もいる(MBA 取得直後とか)。こちらにいる人はもっとエンジニアばかりかと思っていたのだが、どうも話を伺って想像するにそうでもないみたいで、考えてみれば日本でもそうだし当たり前なんだろうけど、それが意外で新鮮だった。

トークの内容は Web API の話で、どちらかというと自分は使う方ではなく提供する方の気持ちで聞いてしまうのだが、使う側の気持ちをいろいろと教えてもらって参考になった。

大ざっぱに言うと、提供する側にもされる側にも明らかにメリットがあるのはアフィリエイト系で、する側は勝手クライアントを無料で作ってもらってトラフィックも増え、購買行動につながるので嬉しく、される側は使い勝手のいいクライアントをユーザに出せばクリックが増え、お金が入ってくるのでどんどん使いたくなる、という寸法。

次に提供する側にメリットがあるのは TwitterFlickr みたいにユーザが情報を投稿してくれる系で、これもさまざまなプラットホームに対応してクライアントを作るのは特に小さな企業だとそこまで開発にリソースが割けないが、Web API として公開すれば誰かがライブラリだとかアプリケーションだとを作ってくれるので、無料でアウトソーシングできる、というのが利点。あと API 経由でアクセスすることで負荷も軽減・分散できるし、とりあえず公開してトラフィックを増やしておき、収益をどのように上げるかはあとから取れたデータを元に考えればよい(コンサル会社を立ち上げて企業相手にマーケティング資料として売ったりとかが一例)、と。ユーザも Web API に厳しいアクセス制限がなかったり、ブラウザからアクセスできるデータは全部取れるようになっていたりしてくれるのであれば、喜んでクライアントを作ってくれるものらしい。

逆に提供する側にメリットがあまりないのはデータの出し惜しみをする例。上位N(Nは2桁くらい)件しか検索結果が取得できないとか、1日に API を叩けるのが500回とか、そういうのだと使う気をなくし、「こんな使えない API 公開するんじゃねーよ」と逆効果だとか……。あとリスポンスが遅い Web API もだめで、結果の取得に0.1秒以上かかるものは(特に広告だと)使えない、とのこと。結果を提示する相手が一般ユーザなのかビジネスなのかで違うと思うが、一般ユーザは速度にはかなりシビアなので、これは納得。

自分としては Web API と言ってここまで流行るのはよく分からないところがある。これまででもライブラリとか使ってやっていたはずなのだが、サーバを常に立てておかないといけないとか、それが必ずしもいじれないところにあったりログが見られなかったり、メンテナンスのコストがかかるデメリットもあるんじゃないかと思うのだが、そういうサーバを用意する側のデメリットにはあまり触れられないような? 要はそれぞれの処理を抽象化しておけば、自分が注目しているレイヤー以外のことはあまり意識しないで作業できるようになるので、プログラミングのコストを軽減することができる、というだけのことなのだろうと思うのだが……。そういう意味では Web API より分散処理とか、クラウドコンピューティングとか、そういうレベルで抽象化してくれるほうが大きな変化だと思うのだけどなぁ。(そういうデータ構造だとかアルゴリズムだとかにメリットを感じる人が少なくて、ほとんどの人は抽出できるデータ自体の価値を重視する、ということなのだろうけど)

自然言語処理に関係する Web API で言えば、漢字にルビを振る Web API がすごいとか、翻訳する Web API がほしいとか、要はクライアント側で Mecab なり Moses なりを立ち上げてテキストを流し込むだけで実現できるのだが、たぶんそういうところのメンテナンスをクライアント側でしたくない、データも持ちたくない(もしくはデータを持っていなくてもサービスは使いたい)、ということなのかなと思った。日曜プログラマにとってはデータの収集も面倒くさいので、ネタ一発で動かせるのが大きい、みたいな? Yahoo! の自然言語処理 API もいろいろあるが、使う側としては簡単に試せるというのが大きいかな。提供する側としてのメリットはいまいちよく分からないが……。

今の時代重要なのは、表(クライアント)側では、新しい技術が出てきたらすぐ適応できる能力(流行りそうな技術、おもしろそうな技術に先行投資することを楽しめること?)、あとは裏(サーバ)側では、クライアントからは隠蔽されているさまざまな技術的困難をいろんな人と連携し、たくさんの知識を投入して解決していく能力、ということかな。自分が裏方が好きなせいかもしれないが、もっと裏側に興味持って取り組む人が増えるといいんだけどなー。(そういう意味では、仕事ではクライアントを作っていても、勉強会だとかなんだとか、仕事を離れたところでアルゴリズムやデータ構造だとか機械学習だとかに興味を持ってくれる人は大事だと思う。)

あと個人的にはっとしたのは、ウェブ業界では5年後のことなんて予測できないからそんなのは考えるだけ無駄、と言われたこと。とりあえず動いてから考えろ、と。トラフィックを増やしてデータをひたすらためておいて、たまってきてから使い途を考えればいいじゃないか、というもの。博士まで来た(大学院に入ってから出るまでに5年かかる)から思うことなのかもしれないが、予測は外れることはあっても「こうなるだろう」とか「こうなってほしい」とか「こうしたい」と思って将来のことを考えて現在を選択するものなんじゃないかなぁ。どうせ外れるから予測すること自体を放棄する、というのはなんか違うような……(もちろん予測することによるオーバーヘッドというかコストはあるのだろうけど)。

あと、スタートアップ企業と中堅企業、超大企業ではそれぞれ考え方ややり方が少しずつ違うと思うのだが、とりあえず見切り発車してからなんとかする戦略が採れるスタートアップ企業には自分はあまり関心がないんだな、と思った。スタートアップにしても、こういう技術があってこんなニーズがあるから絶対これは人々の生活を豊かにする、そういう信念があってやる(他の人がどう言おうと自分が正しいと思ったことをやる、みたいな。"do the right thing")ならいいけど、(極端に言うと)金儲けを最大化するために仕事をする、というのは自分の生き方じゃない。現状からすぐ見えるところだけ見て動いていると、最終的に行きたい方向には行けないこともあるんじゃないかな?

でも、実際にウェブ業界で働いている人の皮膚感覚はそうなのかぁ、と思い、そんな身を切るような動きの激しいところに居続けるのはすごいな、と思った。流れが遅すぎると水も淀んで腐っていくが、逆に速すぎても苔が生えないので魚も棲めない。ところどころうねっていたり滝があったり、速いところもあれば遅いところもあって、速いところに棲みたい魚はそこでよくて、遅いところに棲みたい魚はそこでよくて、そこそこ苔が生えて生態系が回っているような、そんなところが理想的だなぁ。

来月、再来月来られるかどうか分からない(帰国するのは9月13日))が、とてもおもしろかったので、機会があればまた来たいものである。