Android SDKを見て解った可能性
Androidについて各方面からコメントを求められたので、SDKを展開したりしなかったりしてアーキテクチャやそのあたりのドキュメントを斜め読み。
細かいことについてはUEIテクニカルディレクター布留川英一によるAndroidメモ
に詳しくまとまっています。
僕がAndroidで感心したのは以下の点
・電話機能や電話帳機能までもがJavaで実装されている(ようだ)
・アプリケーションの動作状態をフォアグランドだけでなくバックグラウンド動作やサービス動作まで細かく規定している
・SQLiteを実装している
以下のダイアグラムを見て下さい。
Googleがズルいなと思うのは、実際のところGoogleのコストは全体に対してほとんどかかってないこと。
LinuxカーネルにOpenGLにSQLiteにWebkit。ほとんどオープンソースの寄せ集めで最も大変な部分は丸投げ。Symbianの開発者がこれをみたら「そりゃないよ」と思ってるに違いありません。
ではなにをやっているのかというと、Application Frameworkの構築とパラダイムの設計。あとサンプルアプリケーションの開発とドキュメント化。
いわばこれはGoogleによる携帯電話向けLinuxディストリビューションと見るのが正しいかもしれません。
逆にいうと、パラダイムとFrameworkの設計に集中することで、それまでの携帯電話向けOSの欠点を見直し、新しい次元を開いたと評価できなくもないですが、最小のコストで派手な打撃効果を得る手段だったという穿った見方もできます。
しかしそのぶんパラダイムは面白い。特にバックグラウンドアプリケーションやサービスアプリケーションの開発が可能になった点。これは携帯電話としては当然そうなるべき進化だったにも関わらず、あらゆるプラットフォームが解っていて無視していた領域です。
他の機械と異なり、サービスの側からユーザに注意を喚起できる唯一のデバイスである携帯電話により実現するアテンション・コンピューティングの世界では、この進化は必定だったはず。
停滞しきっていた携帯電話OSの世界にカウンターパンチを食わせるくらい革新的なアプリケーションがこの機能を利用してうまれることを切に望みます。
アーキテクトとマネージャー
先日の「プログラミングが好きだと言ってほしい」というエントリに対して、賛否両論をいただいたのですが、もうマシン語のときの話といい、この手の議論は堂々巡りですな。
でも根本的な問題は
・プログラミングが好きでないとプログラマになってはいけないのか
というように誤解されているのだと思います。
僕は「いけない」とまでは思っていません。不幸なことのような気がすることは否めませんが。
プログラマの仕事は、二種類あると言えます。
ひとつはこじんまりしたシステムをゼロから構築する仕事。この場合、多くても4,5人のチームで完成させることになります。プログラマは1人かもしれません。
もうひとつは、大規模なシステムを構築したり更新したりする仕事。この場合、数十人単位のチームで動くことに成ります。プログラマはいくつものサブチームに別れるでしょう。
前者は大工が家を立てるのに似ています。後者は建築会社がビルを建築するのに似ています。
建築現場の作業員には、ビルを立てるのが死ぬほど好きだ、という人もいるでしょうが、日銭のためにやっているうちに少しずつ仕事に慣れ、その仕事そのものを好きになる人もいるでしょう。極端に言えば、建築現場の作業というのは、体力さえあればだれでもできるように組織化され、マニュアル化され、教育されるからです。
しかし大工はどうかと言うと、そもそもまとまった教育機関や研修期間はありません。
文字通り親方のやり方を目で見て盗まない限り、仕事を覚えることはできません。よほど積極的にやらないと、一人前の大工になれないのです。
中島さんや僕は、どちらかというと大工に近いです。どちらも小規模な会社を経営していて、プログラマでありながら自らの意志で会社の方向性や戦略を決定できる立場にあります。
僕らはいわば自分たちの弟子を募集するのが重要ですから、「好きじゃないと困る」とか「スキルがないと困る」とかという話になるわけです。
僕にしてみると、何十人、何百人と関わるような大規模なシステム開発というのは別の世界の話のように聞こえます。
親戚に大工の棟梁(アーキテクト)が居て、いつも家の増改築に来てくれていたのですが、もう親方っていうのは大工の仕事が好きで好きでたまらないわけです。面と向かって「大工の仕事って好きなの?」と聞くと、照れくさそうに「ばあか、こんな大変な仕事好きなわけねえだろ」って言うのですが、顔は笑ってます。
工事現場を指揮するのは現場監督(マネージャー)です。監督と親方の仕事はたぶんぜんぜん違うのだと思います。
ただ、どちらも「建築業者」というくくりでみれば一緒ですし、それが不幸な誤解のもとだと思います。
ただ作ろうとしているものや作っているものや作り方そのものが現実に違います。
すると自然に必要とする人材像が変わってくのです。
確かにプログラミングスキルがなければUIEやUEI(似ていて混乱しますが別の会社です)には入れませんが、NECや日立、IBMなどには諸手をあげて歓迎されるでしょう。
それはもう会社の成り立ちそのものの違いなので、しょうがないのです。
だから僕のエントリは「好きだといって"欲しい"」であって「好きでなければ"ならない"」ではないのです。
はてブかなにかで「これで求人こなくても知らないぞ」というコメントがありましたが、プログラミングが好きでもなんでもないプログラマに求人を出されたらむしろ困ります。そしてたとえその結果として応募がゼロであってもそれはそれで仕方ないのです。
UEIは小さい会社としては例外的に毎回数百万の求人広告費を使っていますが、それだけかけても会社の求める基準に達しない場合は一人も合格しないこともあります。50人応募があって1人も合格しないこともあります。
UEIのプログラマはプログラミングが好きで好きでたまらない人間であって欲しいからです。