HMDT - Logic and Intuition -

about HMDT

HMDT Journal

June, 2008

June 27

iPhone SDK beta 8登場。

8かよ!なんじゃそりゃ!この期に及んで、まだベータなのか!あぁ、世界中から開発者の悲鳴と呪詛の声が聞こえる。

June 20

きりかノートさんのところで、『紹介Objective-C 2.0』の読書会をやる、という告知が。

興味のある方は、ぜひチェックを。参加するであろうメンツを見ると、入門レベルからディープなところまで幅広く話せるだろうなあ。

June 16

日本に戻ってきました。サンフランシスコから10時間のフライトで、成田に到着。おぉ、湿気が!でも乾燥て寒い砂漠のサンフランシスコ気候よりも、湿り気のある東京の方が体に優しいよ。まだそんなに暑くないし。

帰ってきた日曜日は、倒れ込むように寝てしまった。でも、やりたいことも、やらなきゃ行けないことも、山のようにあるからね。月曜日は6時から仕事してまっせ。行くぞ、おらー。

WWDCに行く一番の目的は、基調講演でもなく、新技術のセッションでもなく、これから一年間分のやる気をもらってくることだと思う。今回も、いっぱいもらってきたね!

HMDTの今後一年間のロードマップも再構築することが出来たし。いやー、楽しかった。というか、これからが楽しいんだよ。

June 14

今年のWWDCも無事終了。参加された方々、お疲れさまでした。

MobileMeについて。

.Macのリプレースとして紹介されたMobileMe。そのアイコンからも分かるように、Appleによるインターネット・クラウドという位置づけだ。クラウドコンピューティングとは、雲の向こう側みたいなインターネットの向こう側にデータなどを置いておき、適したデバイスでそれにアクセスするというもの。Googleなんかが積極的に提唱している。

MobileMeでは、クラウドのデータとして、メール、カレンダー、アドレスブック、写真を定義している。これらをMobileMeの中に保存しておく訳だ。アクセスするソフトウェアには、3種類ある。1つめは、Mail、iCal、アドレスブックといった、Macのネイティブアプリケーション。2つめは、Webブラウザで動作する、Webアプリケーション。3つめは、iPhoneだ。あっと、Windowsネイティブアプリもあったっけ。ま、これはMacアプリのおまけみたいな位置づけだな。

今後、Appleによるソフトウェアの提供は、この3種類を意識したものになるだろう。新しい分野のアプリケーションを作るときは、データ構造は共通にしておいて、3種類のアプリケーションがある。それぞれの領域の特徴をいかした、ユーザインタフェースが作られるだろう。

じゃ、実際に3つアプリケーションを作ることを考えると、まぁ、MacとiPhoneはどうにかなるんだよ。基盤となる技術は一緒だから、1つ作ってしまえば、もう1つはその延長として作ることができる。

Webアプリケーションを、どうするか?基調講演の話に戻って、MobileMeのWebアプリケーションのデモを見ると、すごいね、ありゃ。デスクトップアプリケーションと、ルック・アンド・フィールはほとんど同じだもんね。ユーザエクスペリエンスの共通化に尋常じゃない熱意を持っているAppleだけあって、Webアプリケーションの世界にも自分たちの流儀を持ち込んできたぜ。

あれって一体どうやって作ってるの?と、思っていたら、疑問が解決した。SproutCoreを使っているらしい。もともと、.MacのメールWebアプリケーションもこれを使っていたらしい。その機能の高さは、こちらのPhotosのデモを見れば一目瞭然。MobileMeのPhotoと、ほぼ同じものじゃない。

これだ!

HMDTは、いままでWebアプリケーションに否定的だった。その機能はともかく、見た目汚く、ルック・アンド・フィールが寂しくて、サーバとの間で無駄なトランザクションが発生するなど、筋のいい技術とは思えなかったからだ。

でも、SproutCoreは、これらをほとんど解決している!見た目は奇麗だし、ルック・アンド・フィールはリッチだし、ユーザインタラクションはWebブラウザ内部で処理して、データの同期を行うときだけWebサーバにアクセスしている。

これだ。HMDTでWebアプリケーション作るなら、これしかないだろ!HMDTでは、SproutCoreにも注力していくぜ!

でも逆に、Webアプリケーションでここまでやられてしまうと、今度はデスクトップアプリケーションの存在儀が不明瞭になってくる。

いままでは、ユーザインタフェースのリッチさが強みだったんだけど、これではその強みが薄れてしまう。もう一度、何を売りにするのか、よく考えないと。

June 13

WWDC四日目が終了。そろそろ疲れがたまってくる。

四日目は、なんといってもOpenCLでしょう。ありあまっているGPUパワーを使い切るのだ!グラフィック処理だけでなく、オーディオ処理だろうが、物理演算だろうが、数値演算だろうが、全部GPUにやらせるのだ。GPUパワーの使用率を、常に100%にしておかなくてはいけない。計算処理能力の計測単位はジュールだ。エコなんてさようなら。

この、何に使うか予定はないけど、技術中心突っ走り主義、が最高。

June 12

知り合いの会社の人が、WWDCなのに日本からMacを持ってくるのを忘れたという、伝説に残る荒業を披露。予備のバッテリは、ちゃんと持ってきました。このネタだけで、3年は持つな。

WWDC三日目は、OpenGL、Core Image、Core Animationと、グラフィックス関連のセッションを中心に回る。あれ、あんまりiPhoneに行ってないや。

WWDCのセッションは、新規機能の紹介を行うものと、既存機能の変更点や詳しい使い方を紹介するものとに分けることが出来る。人気があるのは、新規機能の紹介。そりゃ、わざわざ来たんだから、新しい話を聞きたいよな。でもそういったセッションは、概要を紹介するだけで終わることが多い。

面白いのは、既存機能を深く掘り下げるセッションの方だね。特に、自分がよく使うフレームワークについて、知らなかったことを教えてくれたり、10.6でいままでの不満点を解消する修正が加えられるのを聞くと、よしっ!と思うもんね。

基調講演を見て、「今年のWWDCはつまらない」という人がいたけど、あれは総論的であり一般向けだからね。それぞれ自分の課題を抱えたエンジニアにとっては、いつだって刺激的な場所だ。10.6のCore Animationはすごいよ!

June 11

Snow Leopardについて。

NDAになるのかなと思ったら、Appleからリリースが出てたね。『アップル、Mac OS X Snow Leopardをデベロッパにプレビュー』とか、製品紹介の『Snow Leopard』と『Snow Leopard Server』。これをネタにして話すことはオッケーな訳だ。

ちなみに、Snow Leopardのデベロッパプレビューはもらったけど、まだ入れてない。持ってきたマシンがMacBook Airで、もうハードディスクが全然残ってないから。日本に戻ってから、ゆっくり入れるよ。ということで、以下の内容は見聞きした情報だけでの話。まぁ、触ってたとしても、その話はここでは書けないんだけど。

Snow Leopardのキーワードの1つは、「並列化」だ。背景には、CPUのクロック数アップがそろそろ頭打ちになっていること。その代わりに、マルチコア化がこれからもっと進むだろう、という見通しがある。これをうまく活用してやろうってことだ。

マルチコアのパワーを活かすには、アプリケーションレベルで対応してやる必要がある。つまり、ソースコードの中から並列化可能な箇所を見つけ出して、そこでスレッド作ってやったりする訳ね。でもこれ、難しいしめんどくさいんだよねー。pthread使って処理を分けてやればいいんだけど、いちいちそんなことはやりたくない。あと、あちこちのアプリケーションが勝手に並列化していると、システム全体でのパフォーマンスはどうなんの?って疑問もある。

てなことで登場するのが、Grand Centralだ。名前は、ニューヨークの中心にある駅名からとってる。Grand Centralは、それぞれのソフトウェアの並列化処理をまとめて管理するものになる。並列化されたタスクを、CPUの状態を見て、適切なコアに割り振ることになる。また、モバイル機器のようにパワーマネージメントが必要な機器では、いくつかのコアを休止させることで、消費電力を抑えることも出来る。

Leopardではlaunchdが導入されて「すべてのプロセスの母」と呼ばれたけど、その表現を借りれば、Grand Centralは「すべてのスレッドの母」ということだね。

アプリケーションのプログラマに向けては、Grand Centralを簡単に利用出来るための仕組みが提供されることになる。まぁ、プログラミング言語レベルでの対応になるんじゃないかな。これによって、それぞれのアプリケーションを並列処理のブロックに分割して、それをマルチコアでガシガシ処理して、新たなレベルのコンピューティングへ行こう!という話だ。

問題は、「それでほんとに速くなんの?」ということだ。

並列化で高速化っていうのは、計算機の世界では古典的な問題だ。いつの時代でも、必ず取り上げられる。そして結論は、並列化に向くアプリケーションには効果的だけど、そうでないものにはあんま効かない、ってことになる。

並列化に向く処理っていうのは、よく取り上げられるのは数値演算や画像処理など。大規模な計算で、かつそれぞれが独立しているものだ。でも、ワープロとかWebブラウザっていったソフトでは、そうした処理はあまりやらないんだよね。

AppleがGrand Centralで再び並列化を取り上げるのは、なにか勝算があるのだろうか。従来のものと違うのは、システムレベルまたは言語レベルで徹底した並列化が行われる、というところか。Machカーネルや、Cocoaフレームワークのソースコードの中には、まだまだ並列化によって高速化出来る余地があるのかもしれない。そもそも、これらのソースコードが書かれたころと現在とでは、CPUのアーキテクチャが変わっているからね。もう一度見直せば、大きく生まれ変わるのかもしれない。下のレイヤーが高速化すれば、上のアプリケーションも速くなるしね。

アプリケーションレベルでも、並列化出来るところが新たにあるかもしれない。たとえば、パッと思いつくのが、タブ。Webブラウザでたくさんのタブを開いたりするけど、あれは並列化に向くよね。タブのようなプログラミングは、昔の計算機ではありえなかった。現在のアプリケーションならではの並列処理ってのが、あるかもしれない。

Snow Leopardの特徴として、他にジョブズが口にしていたのは「軽くなる」ということ。軽くなるのはいいことだけど、それにはいまある機能を捨てないといけない。その代表が、QuickTime Xだ。

QuickTimeといえば、長い歴史を誇る万能メディアフレームワーク。あらゆるフォーマットのメディアをサポートしている。はずなんだけど、よく見ると、大昔のもう使われなくなったフォーマットはあるくせに、最近のものはH.264とかAACとかぐらいしかなかったりする。

また、歴史があるということは、古いソースコードが残っているということで。QuickTimeはCarbonの申し子みたいなものだ。これだと、Mac OS Xのパフォーマンスを活かしきれない。せっかくGrand Centralを導入して、もっともそれに向くメディア処理なのに、活用出来ない。

それなら、あれだね。切り捨てるしかないね。ということで、設計し直したであろうものが、QuickTime Xだ。AppleによるQuickTime Xの説明を読むと、「モダンなオーディオおよびビデオフォーマットのサポートを最適化するもの」ってある。これ、裏を読めば、古いフォーマットはもうケアしない、とも受け取れるよね?Appleは、古い技術を切り捨てるのを躊躇しない会社だし。

そんな感じで、QuickTimeはやっと負の遺産から脱却して、Mac OS Xにふさわしいメディアフレームワークになるんだと思う。同様のことが、他のフレームワークでも行われるでしょう。これが、OSが軽くなるってことであり、それを一言で言い表せば「Carbon Free」ってことだと思う。

Snow Leopardでは新機能の追加は一休みする、とAppleは明言している。それが商用OSのメジャーアップデートで許されるのか、そんなことでユーザが金を払うのか、といったマーケティング的な話は、ここでは触れない。私、そっちの方は詳しくないから。

技術的に見れば、Mac OS Xは登場からもうすぐ10年が経つし、その間にドッカンドッカンと新機能を突っ込んできたんだから、まぁオーバーホールの時期なのかな、と思う。次の10年を見据えた土台作りになるでしょう。

そんなことが出来るのは、プログラマとしてはうらやましいね。新機能の実装をいったん止めて、過去のソースコードを最適化する時間が与えられる。これをやると、ソースコードに自信と誇りが持てるんだよね。エンジニア冥利に尽きるでしょう。iPhoneローンチっていう一大イベントがあるから、目がそっちに向いている間にやっちゃおう、ということかな。

あと、Vistaの失敗は絶対影響していると思う。闇雲に機能を突っ込んで、肥大化して鈍重になったOSに、ユーザはNOと言ったんだよね。Snow Leopardは、機能を絞って高速軽量化するという、真逆の道を行く訳だ。果たしてこの戦略、うまくいくのかどうか。

June 10

今年の会場のバナー。まずは2Fから。

Xcode 3.0
Debug and conquer.

元ネタは、「分割して統治せよ。(Divide and conquer)」。

Interface Builder 3.0
Drag and jaw-drop.

Inteface Builderといえば、ドラッグ・アンド・ドロップ。

Instruments
See what you've been missing.

Instrumentsは、今回大きく取り上げられている。XcodeとInterface Builderに並ぶ、第三の開発アプリにしたいみたい。

Cocoa Touch
Tap into the future.

指紋のアイコンは、Cocoa Touchを表していました。指紋認証じゃなかったです。外した。

Accelerometer
Add new dimensions to your apps.

十字のアイコンは、加速度センサでした。これも外した。水平器をイメージしているのね。iPhoneの加速度センサは3軸だから、一本足りないじゃないか、と負け惜しみを言ってみる。

iPhone Simulator
Actual results will not vary.

最後はiPhoneシミュレータ。2Fのバナーは、一方から見るとMac OS、もう一方から見るとiPhone OSというようになっている。

続いて、3F。

iPhone SDK
Let's see what develops.

いまだ正式版の出ないiPhone SDK。

App Store
Now accepting applications.

こちらもローンチ時期の明かされなかったApp Store。まぁ、7月11日と見るのが、妥当でしょう。

今年は、Windowsとの対決バナーはなかったね。iPhoneローンチっていう自分とこででかいネタがあるのと、VistaとWindows Mobileじゃ相手として役不足ということかな。

iPhone関連セッションは大人気。並んでおかないと、入れない危険あり。

セッション会場の椅子のところに、電源タップが配置されている。素晴らしい!これって前からあった?

きっとあれだな。バッテリを交換出来ないMacBook Airを製品として出したから、その対策だな。

June 9

基調講演直前レポート。

とにかく、人出の多さが話題の今年のWWDC。参加者の興味は、「何時から並べば基調講演の会場に入れるのか?」ということに、集中。基調講演会場の広さでは、今年の参加者全員を入れるだけのキャパがないことは明白だから。

レジストレーションしたときは、スタッフに「5時にくれば入れるよ」と言われ、アップルジャパンによるレセプションでは、「確実なことは言えないが、7時には来ておいた方がいい」と言われる。ちなみに、基調講演は10時から。

どうしよー?と悩んだものの、目が覚めたら行けばいいや、と適当に考えてベッドに入ったら、起きたのはバッチリ5時。これは体が緊張してたな。

5時30分くらいに会場に着くと、おぉ、並んでる、並んでる!その後も続々と人が増えて、これは本当に会場に入るのは難しそうだと、納得。

従来だと8時くらいに会場の扉が開いて中で待機させるんだけど、今年は7時に開く。現在、屋内で待機中。

基調講演終了。

まずは、やはり3G iPhone。3G対応して、ネットワーク接続の高速化を果たした。従来のEDGEとの比較デモを紹介。このデモ中は、Webページを読み込んで、3Gが21秒、EDGEが59秒という差を見せたんだけど、EDGEの読み込み中30秒ほどジョブズが黙っているという珍しい演出。会場の手持ち無沙汰な空気が、EDGEの遅さを引き立てていた。相変わらず、プレゼンうまし。

3G iPhoneは、見た目の形状はそんなに変わらず、背面が黒になっている。変更点として上げられたのが、「フラット・オーディオ・ジャック」。会場、爆笑。iPhoneのオーディオジャックは、差し込み口の周りを筐体のカバーが覆っていたので、差し込むことが出来ないイヤホンがけっこうあった。それを解消。

続いて、iPhoneの世界戦略。「iPhone Attack」というタイトルで、侵略経路を紹介。70の国で今年中にiPhoneを発売することを発表。そのすべての国を、紹介しながら世界地図でどんどん塗りつぶしていく。流れている音楽は、「イッツァ・スモール・ワールド」。ここでも爆笑。「せーかいはー、ひーとつー」ってやつですか。参加しているデベロッパが、自分の国が紹介されると拍手していた。世界中から集まっているんだなー、と実感した。日本は、最後の70番目に登場。がんばって拍手した。

さらに、以前のiPhoneが8GBの$399からで「高すぎる」という声に答えて、3Gでは8GBを$199に設定。ここで会場は今日最高の盛り上がりを見せる。3G iPhoneは、22カ国で7月11日から発売。よく見たら、日本も含まれてるじゃーん!ということで、7月11日から使えるらしい!日本の人にとっては、これが最大の発表になったか。

iPhone SDKについて。

その登場を確実視していた、iPhone SDK正式版は発表なし。なにー!そのかわり、SDK beta 7が登場していた。どこまでひっぱるんじゃい。ついでに、iPhone OS 2.0のリリースは、6月後半と言っていたのを、しれっと7月前半に延期。App Storeのローンチ時期については触れられず。

SDKの紹介では、その概要をさらっと紹介。唯一新しい機能として、iPhone Notification Serverが登場。

これが登場した背景は、iPhone SDKへのフィードバックが最も多かったものは、バックグラウンドプロセスを動かさせてくれ、というもの。iPhone 2.0では、アプリケーションは常に1つしか起動することが出来ず、他のアプリケーションを立ち上げると終了させられてします。そんなんだと、たとえばメッセンジャーアプリケーションで、他のユーザがコンタクトとってきたときとかに、通知することが出来ないじゃん?

でも、バッテリーや、セキュリティ上の理由から、Appleはバックグラウンドプロセスを立ち上げたくない。他のプラットフォームはどうかというと、たとえばWindows Mobileは、タスクマネージャを使っている。ユーザはコンピュータサイエンスの知識があるだろうから、メモリやCPUの使用状況によって、適切にプロセスを終了出来るだろう。と、お約束のWindowsへの皮肉。

で、この問題に対応するのが、iPhone Notification Service。メッセンジャーみたいに、サーバからの通信をプッシュしたい場合は、直接iPhoneにプッシュするのではなくて、Appleだ用意するNotification Serviceにプッシュする。そこからまとめて、iPhoneにプッシュしてやる、という仕組み。

汎用的なプッシュサービスを提供することで、バックグラウンドプロセスを立ち上げなくてもすむよ、というかわし方。なかなかにAppleらしい方法かな。

Mac OS X 10.6について。

基調講演ではiPhoneのみで、Mac OSについては触れなかった。でも、ジョブズが一言、「Snow Leopard」って言ってたね。Mac OS X 10.6の名前は、Snow Leopardであることが公に認められた。

Snow Leopardに関する話は、基調講演では出なかったので、NDA扱いになっちゃった。

June 8

これから、WWDCに向けて出発。飛行機乗りたくねー。

ハゲの顔と、3G iPhoneを見てきますぜ。

到着したー。というわけで、早速レジストレーションを。

会場となるのは、いつものモスコーン。開幕前日は、1F部分だけ開いて、参加者の登録を行う。

この時点で、いくつかのバナーが掲げられている。Mac OS Xのものと、iPhoneのものとが、対で並んでいる。今年のWWDCを象徴しているね。

iPhoneのバナーには、気になるアイコンが2つあった。

1つは、一番右にある大きなもの。iPhoneの後ろに、指紋が見える。これは、指紋認証が行えるようになるということだな。タッチパネルと指紋認証は、相性バッチリだね。

もう1つは、Interface Builderアイコンの左に見える、十字形のもの。これ何だろう、といろいろいろ憶測した結果、ゲームのコントローラじゃない?という結論に。ゲームがとってもクローズアップされるということを表しているんだな。

June 7

ars technicaにて、WWDCでMac OS X 10.6が発表されるかもしれない、という噂が。そうそう。10.6の話はしておかないとね。WWDCは、未来を語るイベントだから、1年後、2年後の話をしないといけない。全貌がほぼ見えたiPhone SDKよりも、こっちの方が大事。

で、10.6ではCocoa化がさらに進むらしい、と。どういう意味かというと、書いてある記事をそのまま読めば、すべてのAPIをCocoaでラップするらしい。んー?微妙な表現だ。

まぁ、たぶん、CarbonのdeprecatedなAPIが削除されるでしょう。そうなると、Carbonほとんどなくなるでしょ。そうなると、Core Foundationの存在意義がなくなる。だから、Core Foundationなくなる。それなら、Core GraphicsもCocoa APIにしちゃえ。これなら、OSが小さくなる。おぉ、そいういうことか!いや、たぶん違うな。

June 5

今日は出張day。朝5時30分に家を出て、まずは新潟へ。打ち合わせを済ませてから、返す刀で今度は長野へ。そこでも人に会って、東京の自宅に返ってきたのは夜の9時30分。信越縦断だった。新幹線って素晴らしい。

先日書いた、HMDTでのプログラマ募集だけど、今日で第一陣の人とは全部会った。思ったよりも問い合わせが多かったっす。数十人とまではいかないけど、4、5人ということもなかった。とりあえず、メールを送ってもらって、条件が合った人とは全員会った。

面白かったねー。いろんな人がいました。学生さんもいたし、システムエンジニアの人もいたし、Webアプリケーション作っている人もいたし、Macのフリーウェア作っている人もいた。スキルを見せてもらうということで、ソースコードを見せてもらったんだけど、バックグラウンドによって全然書き方が違うのね。システマティックに奇麗に書く人もいれば、ピンポイントで高いスキルを見せてくれる人もいたし。いやー、ソースコードは多くのことを語ってくれるね。

いろんな人に会った結果、いくつかの決定があった。社員として採用するとオファーを出した人もいるし、アルバイトとしてお願いした人もいるし、協力会社として一緒にやっていきましょうというのもあった。その人の持つスキルが高い低いというよりも、いまのHMDTが求めているもの、MacおよびiPhoneアプリケーションの作成に合った人を選ばせてもらった、という感じかな。

今回思ったのは、人と会うのはすごく面白い、ということ。共通点は、Macのプログラムを書きたい、ということだけだったね。それ以外は、バックグラウンドも得意分野もバラバラ。でも話してみると、どっかに合うところがあるんだよね。

とっても面白かったので、HMDTでは引き続き一緒に仕事出来る人を募集します。社員としての採用は、ちょっとしばらくないけど、何かしら出来ることがあるでしょう。仕事はいっぱいあるっす。必要なのは、やりたいことがあること。そして、それを実現出来る技術力があることです。

興味のある方は、mkino@hmdt.jpまでメールを。そうそう、プログラマだけじゃなくて、デザイナも求めています。

June 4

iPhoneはソフトバンクすか。わたしはドコモだったから、乗り換えるよ。

back to top content

Copyright © 2002-2006 HMDT. All rights reserved.