Previous month:
February 2008
Next month:
April 2008

「普通そういうことしないよ」という言葉の暴力

 先日の海部さんとの対談のビデオがYoutubeに上がったので、その中から私が海部さんの本(パラダイス鎖国)の中に出て来る「プチ変人」が受ける言葉の暴力について語ったくだりを紹介。

 ちなみに、「プチ変人」とはスティーブ・ジョブズやアインシュタインのような「何をやっても許される大変人」と「ごく普通の人」の間に存在する無数の「何か新しいものを生み出すユニークな力は持っているけど、何をやっても許されるほどはまだ実績がない人々」のこと。

 そんな「プチ変人」たちが人と違うことをしようとすると必ず投げかけられるのが「普通そういうことしないよ」「そんなことやってもうまくいかないよ」という言葉の暴力。スティーブ・ジョブズだってアインシュタインだって、最初は「誰も知らないプチ変人」だったわけで。そんな暴力に負けていてはイノベーションは起こせないぞ、と。


UIEvolutionがAT&Tのおもてなしを担当

AT&T's MEdia Mall 2.0 is designed to be the ultimate source for personalizing your AT&T wireless phone....MEdia Mall 2.0 shoppers are just a click away from even more content with millions of additional full track songs, available from Napster Mobile and eMusic. ... The grand opening of MEdia Mall 2.0, powered by software developer UIEvolution, is slated for next month on AT&T capable handsets ...【Attention Mobile Shoppers: AT&Tより引用】

 今回うちの会社(UIEvolution Inc.)がAT&Tのために作ったのは、一口で言えばAppleにとってのiTunes Storeするもの。NTT DoCoMoにとってのiメニューをずっと使いやすくしたもの、とも言える。ブラウザーでは使い勝手が悪く、かと言って端末ごとに専用アプリを作っていては莫大なコストがかかる。そこをUIEngineを使って、リッチなおもてなしを新しい形のウェブアプリケーションとして実現。技術的にはAdobeのAIRに近い(ただしAIRよりはるかに軽いのが自慢)。

 キャリア(通信事業者)向けのカンファレンスなので「ただの土管にならないためには、キャリアがiTunes Storeに相当するものをがっちりと握らなければだめ。そのためには『おもてなし』で勝負すべき」と主張して来た私だが、その裏には「だからうちの会社におもてなし設計をまかせてください」というメッセージが含まれていた、というのが種明かしである。


北米のPC市場でAppleのシェアが14%に伸びたことを受けて一言

Growth in Apple's personal computer business continued to outpace the industry average last month, with Macs accounting for a 14 percent unit share and 25 percent dollar share of all US-based PC retail sales, according to market research firm NPD.【AppleInsider | Apple snags 14 percent of US-based PC retail sales in Februaryより引用】

 digg.comで見つけたこの記事。米国の新規購入PCにおけるAppleのシェアが、2月に14%に達したとのニュース(1年前は9%)。金額ベースだとなんと25%。

 米国の企業のほとんどがあいかわらずWindowsで統一していることを考えれば、この14%という数字は驚異的。個人が購入判断をしているケースだけに絞った統計データがないのが残念だが、私のまわりを見る限り実感としては50%を超えているように思える。

 iPodでAppleブランドに親しんだユーザーがPCを買い替える際にMacに切り替えるというケースが増えていることも確かだが、その根底には「PCが単なるインターネットマシンとなる」という大きな流れがあり、「Windowsアプリが走る」という利点が年々小さくなっていることにある。

 それに加えてオープンソース系の開発者の多くがMacを開発環境として選ぶという事態まで進んでいるために、エンタープライズ系の開発者とオープンソース系の開発者の間のギャップはどんどん開くばかり。ここまで違いが開いて来ると、それを一つの「IT業界」としてひとくくりにすることには大きな違和感がある。

 その意味でも、そろそろMicrosoftは二つの会社に自らを分割すべきタイミングが来ているのではないだろうかとつくづく思う。エンタープライズビジネスから着実に利益を生み出すEnterprise Microsoftと、XBox・Zune・ネットサービス(+自社ブランドのPCや携帯電話)でAppleやSonyと真っ向から戦うConsumer Microsoftだ。


「ウェブ時代の5つの定理」の読み方、その2

I've always been attracted to the more revolutionary changes.
I don't know why. Because they're harder.
They're much more stressful emotionally. And you usually go through a perio where everybody tells you that you've completely failed. -- Steve Jobs

 これも大好きな言葉の一つ。Appleの株主には一度引導をわたされ、誰もが見捨てていた金食い虫のPixerをあそこまでに育てたジョブズが言うと説得力がある。

 まあ最近は「そんなの作ってもうまく行かないよ」から「そんなのもうすでにGoogleが作っているよ」に変わって来たが、新しいものを作ろうという人がそういうネガティブコメントを浴びるのはいつの時代も同じ。そういうネガティブコメントに耐えてもの作りを続けられる図太い神経というか超楽観主義はけっこう大切かな、と。


iPhone SDK、ヒューマンインターフェイスと微調整のおもてなし

Sign 今回、シアトルに戻る飛行機でチャレンジしたのがタッチ入力のベクトル化。指の動きを単純に繋ぐとグダグダになってしまうので、そこを適宜補完してナチュラルなカーブにする必要がある。

 プログラムはあっさりと書けたのだが、パラメータの調整が難しい。理想はサインペンでササッと書いたイメージなんだが、これがなかなかできない。大きな曲線を優先すると細かな部分が省略されてしまうし、逆に細かな部分を優先すると大きな曲線がきれいにでない。

 とりあえずエミュレーター上でできるとこまではやり、あとは実機で試しながら微調整するしかないところまで来たのだが、こんなことをやっているとあっというまにシアトルに到着。

 少し前に書いた金魚のシミュレーションの時もそうだったが、この手のプログラム作りで一番手間がかかるのが、プログラミングそのものではなくて、細かなパラメータの調整だったりするのが、ヒューマンインターフェイスを作る時の難しさというか面白さ。ホンダのAsimoとかも、きっとこの手の微調整で苦労しているんだろうな、と勝手に想像してみる。


ロックンローラーであれプログラマーであれ、自分の好きなことと仕事のベクトルを一致させることができたら誰でも矢沢永吉になれる

 この部分だけを抽出すると、矢沢永吉の「成りあがり」を読んでいるに近いものも感じられました。とにかく大事なのは、成功された今もずっと現役で走り続けているということ。本書を読んでいるとCANDYの成功の時点で、すでにかなりの資産を獲得されていたようだ。そこでの「あがり感」は微塵も見せずに新しい世界を切り開いている。【F‘s Garage: おもてなしの経営学〜ロックなオッサンの生き方。より引用】 

 自分が矢沢永吉に例えられるとは予想もしていなかったが、いい歳をしてiPhone SDKにはしゃぐ私の姿は若い人からみたら「ロックなオッサン」なのかな、と。

 インタビューを受けるたびに「走り続けなければ生きて行けない性格なんです」とその場の思いつきで「ええかっこしい」をしてしまっては後悔している私だが、とどのつまりは「プログラミングが好き」の一言につきる。「食うのに困らないのにプログラムを書いている」んじゃなくて「食うのに困らないからプログラムを書いている」わけで。そこんとこヨロシク(ここは矢沢永吉っぽく^^)。


iPhoneでお絵描き、色指定が可能に

Flower_2  昨日作ったiPhone用「マルチタッチお絵描きソフト」。今日はとりあえずストロークごとに色が指定できるようにした。ライブラリとして提供されているToolbar用のコントローラを使うとこの手のUIが簡単に実現できる。ただし、本来は複数のビューを切り替えて表示するために使うものなので、こんな風にモード切り替え(この場合は色の切り替え)に使うのは少し邪道かも。

 しかし、そろそろundoがないと絵を描くのが辛くなってきたので実装したいが、セッション間のundoをどうやって効率良く格納するかが悩ましいところ。iPhone OSはPalm OSと同じく、アプリケーションの切り替えの際にアプリのプロセスが完全に停止されるため、セッション管理をキチンとやらないと使い心地が悪くなる。

 今描いている絵を保存するぐらいは当たり前だが、undoスタックの中身をキチンと保存しておいてあげたりするのがリッツ・カールトンなみのおもてなし。

 ちなみに、このiPhone OSのプロセスモデルに文句を言っているエンジニアがいるようだが私はそうは思わない。モバイル端末のようにリソースが限られているデバイスの場合、各アプリケーションが使えるメモリの量を最大にするにはこのアーキテクチャが一番正しい。特にストレージがFlashメモリの場合、不要な書き込みは寿命を縮めるので、バーチャルメモリはread-onlyな部分にとどめておかなければならない。なぜ今のままのWindows Vistaがモバイル端末では使い物にならないかの理由がここにもある。



iPhone SDKとカリン塔の共通点

Smily  忙しいながらも時間を見つけてぼちぼちとサンプルプログラムを書き直したりして遊んでいるiPhone SDK。まだまだ慣れないところもあるが、すこしづつコツがつかめて来た感のあるObjective-C。今年はJavascriptとAction Scriptを極めようと考えていたのに、なんだか大幅な方向転換をしてしまいそうな予感(ちなみに、右に貼付けた画像は昨日作った「マルチタッチお絵描きソフト」で描いた絵)。

 誰でも無料でダウンロード出来るSDKでありながら、秘密保持契約に同意させるAppleは何をたくらんでいるのか。そのおかげで具体的なAPIの評価やサンプルコードの公開をして良いのかダメなのかが分からないので困る。今年のもう一つの仮題である「英語ブログの継続的な更新」には格好なテーマなのに...。それまでは仕方がないので、非公開の裏ブログでこつこつとサンプルプログラムの解説などを書いておくとするか。そのうち本にして出版するという手もあるし。

 ドキュメントは良く書けているし、サンプルも沢山あるのだが、OS Xで一切プログラミングをしたことの無い私にとっては、天までとどくカリン塔を目の前にした孫悟空の気分。

 「ひぇー、カリン塔ってすっげー高ぇな。でも、オラ、何かワクワクしてきたぞ!」


「ウェブ時代5つの定理」の読み方

 日本出張+final Exam+iPhone SDKの三重苦(三重楽?)も終盤に差しかかり、ようやくブログを書く時間を見つけることができたので、さっそく梅田氏ご本人から献本いただいた「ウェブ時代5つの定理」の書評から。

 読み始めてすぐに気がついたのだが、この本は一気に読むにはもったいなさすぎる本。梅田氏が集めて来た言葉は一つ一つが人類にとっての宝。たった一つの言葉が人の人生も変えることもあることを意識して、噛み締めるように丁寧に読んで欲しい。

 そこで私なりの読み方を提案かつ実行。手順はこんな感じだ。

  1. 頭から読み始める。
  2. 気になる言葉が出て来たところでストップ。
  3. その言葉をネタにブログエントリーを一つ書く。
  4. アマゾンの広告を忘れずに貼付けておく。
  5. 2に戻る

ということで、早速最初の引用は、ゴードン・ベルの言葉。起業家精神をプログラム形式で表現したものだが、私流に今風の日本語プログラムに翻訳すると、こんな感じになる。

if (フラストレーション>報酬 && 野心>失敗の恐れ && 新しい技術や製品を作れる可能性){
 現在の職.exit();
 ビジネスプランを書くツール.get();
 ビジネスプラン.write();
 運営資金.get();
 新しい会社.start();
}

 今の職場に不満があって、野心があって、技術力があるなら会社を始めて当然、という典型的なシリコンバレー魂を表した言葉だ。

 私の経験から言っても、シリコンバレーに限らず、アメリカのエンジニアが「今の仕事が面白くない」「給料が安い」なんてグチを言う姿はほとんど見たことがない。決して「面白くない仕事」や「給料が安い仕事」が無いわけではないが、そんな状況に優秀なエンジニアを置いておいたらすぐに辞めてしまうだけ、の話である。

 これでしばらくはブログのネタには困らなそうだぞ、と。


iPhone SDKとObjective-C:ニートは社会のメモリーリーク?!

 飛行機の中に9時間ほどネットもテレビもない環境に閉じ込められていたおかげでObjective-CとiPhone SDKの勉強もとても良くはかどり、簡単なアニメーションぐらいアプリなら作れる様になったし、Objective-Cでプログラムを書くことにもだんだん違和感がなくなってきた。

 しかし理解が進めば進むほど分かってくるのがiPhoneがいかに他の携帯電話と比べて進化しているかということ。OS Xの不要な部分はばっさりと切り捨てつつ、Objective-Cの拡張性を最大限に利用したとても完成度の高いものとなっている。

 特に良くできているのが、iPhone特有のユーザーインターフェイスを実現するために仕組みと、メモリ消費と電力消費を抑えるための仕組み。特に、バーチャルメモリの仕組み、リードオンリーリソースの扱い、ハードウェアアクセラレータの活用、アプリケーションプロセスの扱いなど、それぞれが徹底的にまでiPhone向けにオプティマイズされている。

 こういう設計を見ると、モバイル端末でWindows Vistaをそのまま動かすことがどのくらい無謀なことかがはっきりと認識できる。よほど大改造をしない限り、電池が持たない。

 ちなみに、iPhone OSはMac OS Xと異なりガベージコレクションをサポートしていないが、autoreleaseという仕組みでC++のスマートポインターと同じような効果を実現しているが。それが妙に気に入ってしまった私。

 具体的には、こんな感じでコードを書く。

    MyView* view = [[[MyView alloc] initWithFrame:frame] autorelease];
    [window addSubview:view];

 少し分解して順番に説明すると、

  1. [MyView alloc] // MyViewクラスのインスタンスを作る
  2. [... initWithFrame:frame] // そのインスタンスを指定した大きさでイニシャライズ
  3. [... autorelease] // そのインスタンスのリファレンスカウントを後で一つ減らすように指示
  4. MyView* view = ... // そのインスタンスへのリファレンスをviewにしまう
  5. [window addSubview:view] // それをwindowの子ウィンドウとして登録する

ということをしているわけだが、重要なのは3番目のautorelease。「アプリケーションがメインループに戻ってからreleaseしてくれ」という意味だが、こうやって新しくオブジェクトを作った後ですぐに誰かにオーナーシップを渡す場合(この場合は親ウィンドウに渡している)、こんな風に「作ってすぐautoreleaseする」ことにより、実質的なリファレンスカウントを持たないローカルリファレンスを持つことができるのだ。

 これは人間で言えば、子供が生まれたとたんに「お前とは親子でもなんでもない。勘当だ。でも大学を卒業するまでだけは家に置いておいてやる」と言うようなもの。生まれてすぐに勘当しておくことにより、大学を卒業してもいつまでも家にゴロゴロしているニートになることを避けているわけである。