Snippets

対抗して作ってみた。

ALPを支えられなかった技術(0)

歴史だ! 読んで、泣け!

Androidを支える技術」の著者に煽られたので書いてます。 もう終わった過去の技術の話ですが、エイプリルフールの余興にでもなれば、と。

ALPとは何か

Wikipediaにある ように、日本の ACCESS社が USの PalmSource社を買収して作り始めたスマートフォン OS (or ミドルウェア) です。 とはいうものの、一度も出荷されたことがないので外部の人はちゃんとしたことはわからず、Wikipediaに書いてあることも「違うなあ」という感じです。

煽ってきた有野くんも ACCESSに在籍したとはいえ、ALP開発のころにはすでに MS帝国の人になっていたので、そこら辺の事情を知りたくて煽ってきたのもあるでしょう。

ALPはひとつのプラットフォームのように言われますが、実をいうと市場の変化に対応する 形で融通無碍に変わってます。 2006年の開発開始から 2010年の開発中止までの間に随分とターゲット、 そして使う技術も変わっています。

そこでここでは便宜的に ALPを 3期に分けたいと思います。

ALP第1期は、Palm臭をいかしつつも、DoCoMoとかに売り込めないか、と作業していた頃です。 iPhoneも発売されておらずのどかな時期です。

ALP第2期は、2008年ごろ、もっと DoCoMoにすりより、 LIMO として活路を探っていた頃です。 なんというか、いろいろ政治的な動きがうんざりする頃でした。

ALP第3期は、2009年、起死回生の手を探り Emblazeというイスラエルの会社と Monolithというデバイスを作っていた頃です。 無茶なことを言ってくる会社ではありましたが、技術的には面白かった頃です。

ここらへん、厳密に区別があるわけではありません。 また、当時の資料も私の手元には残っていないので記憶に頼って書いてます。 間違いがあったらもうしわけありません、といいつつ書いていきます。

ALPのはじまり

ALPの開発が始まったのは 2006年、iPhoneAndroidも世に出ていない頃です。各社が組み込み OSの上に独自に作り上げた Feature Phoneが花盛りだけど、SymbianWindows Mobileなどがその先をにらみつつ小競り合いをしてた頃です。

もちろん ALPもその小競り合いに加わろうというプラットフォームだったのは間違いありません。 小競り合いを勝つための武器の一つが、買収によって手に入れた PalmSource (およびその一部となっていた BeOS) のユーザベースと技術です。 もう一つとして iモード時代に築いた DoCoMoとの関係というのもありましたが、これが吉と出たかはよくわからないところです。

PalmSourceのもっていたもの

PalmSourceは2000年前後には PDAおよび携帯電話用 OS、PalmOSを出荷し時代の寵児でした。 ただ、その後の発展に伸び悩んでました。 マルチメディア、マルチタスク系の機能を伸ばそうと (あの Jobsに負け Appleに買収されなかった) Beを買い取り、 Cobalt を 発表しましたが出荷には至りませんでした。

そうしてジリ貧感が漂っていたところに日本のよくわからん 組み込みソフトウェア会社に買われたわけです。

ジリ貧とは言え、BeOSから引き継いだ技術はいろいろ目につく物がありました。 まずは、Androidでも採用されている分散オブジェクト技術 Binder です。 組み込みOSからは発想が及ばないものでした。

また、Palm時代から培われた Usabilityに関する哲学 Zen of Palm も、 「Androidを支える技術」を読んだあとだと重要なものだったんだなあ、と思えます。 あとがき に 書いてあるような小さい画面での UIデザインについて最先端を走っていた会社ではあるので。

また、その延長線上で Intentや Activityという 技術についても検討されてました (Android以前に!)。

持っていたものではなく失ったもので言えば、 Dianne Hackboneという、後に Androidの開発の重要な部分をしめる開発者も PalmSourceにいたのですが、私が ALPに joinしたころにはもういませんでした。

第1期ALPが選んだ技術

第1期 ALPが選んだ技術はすごい特筆すべき者は実はありません。

まず、GUIは独自のものを作らず Gtkを使っていたあたりで 今から考えるとわかってない感がしますが、当時の技術者の意識としてはそんなもんです。 X11ではなく DirectFBという技術を使おうとしていたのが組込系ですが、 マルチプロセスのときの動作でいろいろと苦労して X11に戻った記憶があります。

あと、実は Binderを使うのは諦められました。 既存の Unix系の技術と相性が悪い、とかいう理由だったかと思います。 IPCは昔ながらの socketをつかってやる、ある意味融通の聞かない形式になりました。

プログラム言語は Cでガチガチに書きます。 Javaのようなミドルウェアを作り込むリソースはなかったのと、 速度が実用的だとは思われてなかったせいでした。 MIDPなどをサポートしたおまけ程度の Javaは視野に入れられてましたが。

今から振り返ってみれば、Androidとの共通点はいくつかあります。

  • Zygoteのように、予めライブラリをロードしておいたプロセスから folkするようになってた
  • アプリごとに uidを割り振ってセキュリティを確保してた
  • Linux Input Subsystemの多用

UI的には Palmを延長したようなものを目指しており、 もちろん flickなどは考えられてませんでした。

このような商品を PalmOneはじめ各社に売り込んでいましたが、残念ながら採用に 至るメーカはありませんでした。

そうこうしてるうちに iPhoneが出て (2007年)、Androidも出荷され (2008年) あわてることになります。

つづき

ちょっとここまで時間がかかったので公開します。 第2期以降はまた後日。