乱立するプラットフォームとどう向き合うか
先日,開発中のiPhoneアプリからDropboxへファイルをアップロードするしくみを作っていたのだが,そのAPIがよくできていることに気がついたので,それについてTwitterでつぶやいた。すると,すぐに知り合いの開発者から「DropboxってAPIを使うとそのアーキテクチャの優秀さがわかるよね」というリプライが返ってきた。
ほんの少し前にFacebook APIを使ったアプリを作っていたときにも同じことを感じたのだが,「デファクトスタンダードになる可能性のある」プラットフォームに出会ったときのワクワクした感じは,自分自身のモチベーションを上げるためにも,そして常に時代の先端を走り続けるためにもとても大切だと感じている。
この手のプラットフォームの類いは「乱立」と呼んでよいほど毎年たくさん出て来るので,「どれを勉強すべきか」「どれに賭けるべきか」を見極めるのはとても難しい。しかし,だからといって「どれがデファクトスタンダードになるかが決まってから勉強する」のでは,時代の最先端を走り続けることは難しい。
そこで今回は,この乱立するプラットフォームとどう向き合っていくべきかについて書いてみたいと思う。
プラットフォームの勉強は自分への投資
まず最初に大切なことは,各種プラットフォームの勉強をしておくことを「自分への投資」と認識することだ。普段の仕事を通して勉強できればベストだが,それが難しければ,空いた時間や週末などにやる。
多くのプラットフォームを,ある程度「浅く,広く」勉強しておくことは自分の視野を広げることにつながるし,将来「どのプラットフォームで作るべきか」を決める際の判断材料にもなる。ほかの人が作ったプラットフォームを一通り見ておくことは,自分自身がアーキテクチャを作ったり,APIのデザインをする際にも必ず役に立つ。
また,「これは来るかもしれない」と強く感じられるものが現れたときには,いちはやく「深堀り」する。そして,ほかの人たちよりも一歩先んじてアプリケーションを市場に出すことや,その道のエキスパートとしての地位を確立することを目指す。
そんな考え方で取り組めば,たとえ勉強したプラットフォームがメインストリームにならなくとも,決して「100%無駄」にはならない。
自分自身で評価する
もちろん,プラットフォームを深堀りして勉強したり,実際のプロジェクトに使ったりするのにはそれなりの時間もかかるしリスクも伴うので,「担ぐ価値があるプラットフォームかどうか」の見極めは重要だ。
判断材料は,マーケットの状況,商品の価値,テクノロジそのものなどといろいろとあるが,一番大切なのは自分自身で手を動かして実際に何かを作ってみることである。プロトタイプでもよいから何かを実際に作ってみるとそこから見えてくることがあるので,まずは何か作ってみることを強くお勧めする。
その時点で,「これは来る」と思えなければさっさと見切りをつければよいし,何か強く感じるものがあったら,もう一歩推し進めてみればよい。
私の場合で言えば,iPhoneが市場で成功することはMacWorldでの発表の時点から確信していた。SDK(Software Development Kit)が公表されるとすぐにダウンロードし,いくつか簡単なプロトタイプを作った段階で「これは行ける!」と感じたので,そこからは一気に本格的なアプリの開発に取りかかった。
逆にAndroidに関して言えば,本来ならHTML5ベースのアプリケーションを推し進めるべきGoogleがJavaを採用しているという時点で「筋が悪い」と感じたし,複数のメーカーが参入しハードウェアが乱立して消耗戦を繰り返している間はハードウェアの勝者も定まらないだろうから,「まだ手を出す必要がない」と判断した。
当事者意識の重要性
最も重要なことは,エンジニアとして「どのプラットフォームが勝つか様子をみよう」と高みの見物を決め込むのではなく,自分自身が「どのプラットフォームが勝つか」を決めるための重要な役割を果たしているという「当事者意識」を持つことである。
自分のエンジニアとしての価値を高く保ち続けるためには,常に時代の先端を走り続ける必要がある。「皆のあとについていく」という消極的な姿勢ではなく,「ほかの人たちに行くべき方向を示す」という積極的な姿勢を持ち続けることである。
そんな風に,「ほかの人たちに行くべき方向を示す」には,テクノロジや商品の「善し悪し」を判断する能力を磨いておくことはもちろん大切だが,それだけでは不十分だ。自らが「開拓者」として,「誰も歩いたことのない荒野に道を切り開く」「意図的にほかの人たちをある方向に引っ張っていく」という積極的な姿勢が必要なのだ。
言い方を変えると,「ギャンブラーとして『勝ち馬に乗る』のではなく,騎手として『自分が乗った馬を勝たせる』」という意識が大切だということだ。
iOSをプラットフォームとして成功させたのは誰か?
たとえば,現時点でプラットフォームとして最も注目されているのはiPhone,iPadのiOSである。今や十数万本のアプリがストアに並ぶ盛況ぶりだ。もちろん,この成功には会社としてのAppleが,そしてそのリーダーとしてのSteve Jobsが重要な役割を果たしているが,一つ忘れてはならないのは,まだ成功するかどうかわからない段階のiPhoneをプラットフォームとして担いだ「開拓者精神に溢れた」開発者たちである。
私がiPhoneアプリを作りはじめたのは,2008年のはじめにSDKがリリースされてすぐのことだ。当時は,iPhoneそのものはそれなりの成功を収めていたが,iPhoneアプリの市場が盛り上がるかどうかはまだ何とも言えない状況であった。
しかし,NTTドコモのiモードの成功を体験している私としては,「日本で始まったケータイ・ライフスタイルを世界に広げるきっかけになるのはiPhone」という確信のようなものを感じた。そして,「iPhone向けのApp Storeが7月に公開されたときに,そこに並ぶアプリの数はそれほど多くないはず。その数少ないアプリの一つを私が提供しよう」と本格的な開発プロジェクト「PhotoShare」をスタートしたのだ。
開発ノウハウもまだ共有されていなかったため開発は困難を極めたし,iPhoneがどのくらい売れるかもわからない段階だったのでビジネスとしてはハイリスクではあった。しかし,iPhoneそのものの出来がそれまでのケータイとは格段に違うことは一目でわかったし,OSも開発環境も何年か先を行っていることは明らかであった。
そして,7月のオープン時にApp Storeに並んだアプリはわずか200本。その中の1本を提供する「先駆者」としてそこに名を連ねることができた。
それだけでなく,「せっかくアプリを作るならiPhoneが日本でたくさん売れて欲しい。そのためには自分には何ができるだろう」と考え,今までのケータイでは実現不可能だったアプリ(たとえばOilCanvas(注1))を作ってiPhoneの可能性を示したり,ブログでiPhoneのすばらしさを強く訴えたりもした。
今やiOSは,携帯電話市場だけではなくPC市場まで脅かす存在になっているが,その成功に大きく貢献したのが,私のように「iOSを担いだ開拓者たち」であることを見逃してはならない。
毎日のように新しいプラットフォームが現れては消えていくが,それは「プラットフォームの善し悪し」や「ハードウェアの売れた数」だけで勝者が決まるような単純な話ではなく,「どのくらいの数の開拓者たちがそのプラットフォームを成功させようと担ぐ側に回るか」がとても重要なファクターになるのだ。
「プラットフォームを担ぐ」という意識
つまり,私は積極的に「iPhoneをプラットフォームとして成功させよう」と動いたのである。まさに「プラットフォームを担ぐ」「道を切り開く」行動に出たのである。
私が開発者として関わった90年代のWindowsに関して言えば,さらに「当事者」であった。PCの黎明期にMS-DOSを作って活躍していたMicrosoftは,私にとって憧れの的だったし,そこでAppleのMacintoshを越えるGUI OSを作ることは私にとっては夢の仕事であった。紆余曲折はあったが,最終的にはWindowsチームでアーキテクトの一人としてWindows 95の開発に携わることができたのは,「開拓者精神」に溢れ常に新しいものに関わることを求め続けていたからこそ巡って来た機会だとつくづく感じている。
つまり,この業界で常に最先端を走り続けるためには,「自分が担ぐことによってそのプラットフォームを成功させよう」「自分が関わるからそのプラットフォームが成功するのだ」「自分がそのプラットフォームをより良いものにしていこう」という自意識過剰なぐらいの意気込みが必要なのである。
「自分がプラットフォームを担ぐ側に回ること」が,「時代の先端を走り続けること」に直接つながり,それが結果的に「自分自身の人材市場における価値を高く保ち続けること」になるのを強く意識して,日々の勉強を怠らずに走り続けていただきたい。
次のデファクトスタンダードを決めるのはエンジニアである君たち自身なのだから。