内部のこと
前回に続いて、Living Earthの内部的なことについていくらか聞きました。以前にLiving Earthは、その大半をC++で書いたと聞いていたからです。
Y:なぜC++だったの?
M:全部Objective-Cでやりたかった。Objective-CとC++のミックスは非常に面倒臭い作業で、僕自身も頭を切り替えながら書くのはややこしい話だから。
ただ3Dに必要な行列処理などのライブラリはほとんどC++で、Objective-Cのものを見つけられなかった。だから3DはC++で、UIレイヤはObjective-Cでやった。
Y:両言語のグルーコードなどはAppleから標準的に出てますか?
M:いや、スタンダードなものはない。Objective-CはCのスーパーセットで(そうだね)、C++もCのスーパーセットで(ええまあそうだよ!)、だからできるよね……。
Y:そりゃまあ「可能」だろうけどね!(二人で爆笑。とても簡単にはいかないことを互いに知っているので)。
M:そう、Objective-CからはCの流儀でC++のオブジェクトや関数が呼べる。でもObjective-Cの関数呼び出しはメッセージパッシングなので、C++はObjective-Cの関数を呼べないんだ。つまり、一方からは呼べるが逆方向には呼べない。これでやるのは大きなチャレンジだった。
結局、一般性はないけどとにかく自分に必要な「UIレイヤ上の3Dエンジン」という状況で機能するグルーコードを僕は自分でたくさん書いたよ。
ところでLiving Earthは、雲や温度の各種データを公開サービスから得ています。雲のデータソースはexPlanetsから。衛星から得た世界中の雲の動きを3時間ごとにアップデートしており、あちこちの雲のデータを1つに継ぎ合わせてくれています。温度などはWeather Undergroundを使っているそうです。何と言うか、いまどきですね。
キャリア
後半は彼自身のことを聞きました。彼の前職はOQOのァームウェアエンジニアでしたが、その前はCobalt[1]でした。CobaltはLinuxベースのサーバアプライアンスであり、そこに入れるソフトウェアのビルドの管理担当だったとか。
M:毎日やるテスト用のビルドでは、自動的にテストハーネス[2]に掛けてリグレッションテストを実行するようにしてたね。
Y:その前は?
M:Motorolaの携帯電話事業部。テスト用にとても多くのSolarisやIRIXマシンがあり、それらUNIXシステムの管理者だった。
その前がWolrfram Research[3]で、同じくUNIXシステム管理だった。MathematicaはHP-UX、IRIX、Solaris、Linux、Windows、Macと、たくさんのマシンに対応していたから。
Y:Wolframが最初の会社なの?
M:いや、違うんだ(ははは)。Wolframの前はNCSA[4]で働いてた。物理学教授のプロジェクトで、Web上にコースウェアを置こうとしていた。1996年ではとても新しいコンセプトでね。
Y:確かに。
M:学生が誤答するとその場でファジーロジックを用いたアルゴリズムが誤りの理由を教えてくれるんだ。僕の仕事はそのシステムの管理だったんだけど、まあ新しくて、エキサイティングな仕事だったね。これが最初の仕事かな。
Y:いろんなことしてるねえ。
M:もう1つあった。イリノイ大学[5]の心理学部門の研究で、研究者は人々のその時々のムードが知りたかった。1日に5回、「ハッピーですか?」「悲しい?」「落ち込んでる?」と質問したいが、良い方法がない。ちょうどPalm Pilot[6]がはやり始めていたので、僕はこれを提案した。それぞれの被験者がPalm Pilotを持って歩き、僕の書いたプログラムが日に5回アラームを鳴らして質問をする。これが僕の最初のモバイルアプリケーションだね。面白かったよ。
新しい技術を求めて
彼は本当にさまざまな経験をしており、また何年かのレンジで仕事を変えています。これはシリコンバレー、あるいは米国のエンジニアとしては良くあることなのでしょうか。
M:うーん。まあ「すごく良いエンジニア」にとっては普通のことだと思うね。いつでも学びたいし、いつでも探求したい。僕自身もそうだね。何年か経って、新しい技術が立ち上がってくるのを見ると、それを学びたくなるんだ。iPhoneプログラミングがそうだ。OQOもそうで、それまでファームウェアの経験はなかったけど、x86ハードウェアのことについてもっと知りたかった。そこでOQOに行って学びたいと思った。まあ僕はそういう典型的な良いエンジニアのタイプだと思う。
まあほんとに凄いエンジニアは明確に1つのことに打ち込むし、それがうまく機能してる。でも僕にはそれはできないと思うな(ははは)。
バランス
会社の業務と個人のプロジェクトの両立について聞きました。
M:Mochi Mediaでの時間を、僕は自分のプロジェクトには使ってない。実のところ我々も(Google同様)20%プロジェクトのルールを持っているんだけど、僕の場合はまったく仕事と関係ないことを、仕事の時間以外でやって、もちろん給料は出ない。まあリスクを取る必要がある、ってことだね。
Y:でもiOSプログラミングはとてもローリスクで始められるからね。
M:まったく。僕が常にモバイルに魅力を感じるのは、大抵の場合そのプロジェクトは1人でやれる程度に十分小さいからだ。PCのようにメモリやCPU能力などの制限事項が(ほとんど)ない場合、プロジェクトの規模が大きくなって自分の小さなアイデアを外に出すのが難しくなってしまう。制限があるから、非常に良い、小さなアイデアがそのまま外に出てきやすくなる。
AppleのiOSプラットフォームは驚異的だと思うよ。アイデアを得たら、1人で開発できて、誰でも出荷できる。インフラもいらない。必要なものは年に99ドルとラップトップ1つ。これでアプリを作って、たくさんの人がワオ!ってなるんだ。ちょっとすごいことだよね。
取材を終えて
ところで取材から3週間ほど経ったころ、MoshenがMochi Mediaでのフルタイム勤務を辞めたことをFacebookで知りました。「もっと自分のプロジェクトに時間を使えるようになる」と書いています。
彼は取材の最後にこう言っていました。
「今は本当にコンピューティングの歴史の中で、最良の時代が来たんだと思う。単独のソフトウェアエンジニアがアントレプレナーとなるのにね。5年前にも自分でWebソフトを書くことができたけど、それでもサーバやコロケーションの費用など、用意しなきゃならないことがたくさんあった。でも今は要らないんだ」。
つまり彼はこの言葉通りに進んでいるのです。もちろんMoshenが多様な経験を積んだ非常に優れたエンジニアであり、彼の後を追うことが容易でないことは重々承知しています。それでも「自分の空き時間にiOSアプリを開発して独立する」という話が目の前で現実になる事に衝撃を感じます。
彼は今もLiving Earthプログラムの開発を続けています。たくさんのユーザからフィードバックがあり、追加すべき機能の一覧を作っているそうです。
「まず誰もがアラームクロックを欲しがってる。(今でも時刻表示ができるので)ベッドサイドの時計として使ってるから、これにアラームを組み込めば翌朝これで起きられるとね。ユーザからフィードバックを受けるまで、僕はそんなこと考えもしなかったね」。
と、とても楽しそうに話すのが印象的でした。