HMDT - Logic and Intuition -

about HMDT

HMDT Journal

June, 2009

June 16

popInっていうサービスがある。どういうものか文章で説明するのは難しいんだけど、Webブラウザの機能を拡張するもので、たとえばあるページを見ているとするでしょ。そこに出ている語をGoogleで検索したいとする。そうすると普通は、その語を選択して、コピーして、新しいタブ開いて、Google検索する、っていう流れになるでしょ。あー、めんどくせ。選択したら、その場で検索できたら嬉しいよね。それを実現するのが、popIn。なぞって選択したら、そのページの中で検索結果を表示することができる。他にも、FilckrやYouTubeでもなんでもこい。

で。popInは、Internet ExplorerやFirefoxで使えていたんだけど、このたびMacのSafari版が出た。それがpopIn on Safari。これ作るの協力したの、私です。正確に言うと、popInの本体はJavaScriptで動いている。そのJavaScriptを、現在読んでいるWebページに埋め込まないといけない。これはJavaScriptだけではできなくて、Safariになんらかの仕掛けをしなくてはいけない。その辺の事をやった。

どうやってやったかというと、このページ読んでいる人は想像付いていると思うけど、Input Managerです。Input Managerについては、こちらのページなぞどうぞ。ハックです(キッパリ)。これしか方法ねーもん。

今回はSafari対応だけど、実際にはWeb Kitの機能のみに依存しているので、シイラを含むWeb Kitベースのブラウザで使えるはず。でも今は、サポートも大変だろうから、ふたをしている。

Safariにこういうことをやらせてみたい人は、Dynamic Objective-Cの本を読むと、詳細にやり方が書いてあるよ。と、宣伝で締めてみる。

June 15

日本に帰ってきた。豚インフルエンザの脅威もくぐり抜けて、無事に帰ってきた。こっからは日本時間での更新になりまっせ。

日曜の夜に帰ってきて、月曜の朝はいつもどおり5時起床で仕事。時差ぼけなし。ぼけてる場合じゃねーよ、っていう精神的プレッシャーが、一番の処方箋だね。

June 12

WWDC全セッション終了。参加された方々、お疲れさまでした。

写真は昨日のBeer Bash。すんごい人出。演奏していたバンドは、Cakeというバンドらしい、と警備の人が言っていた、と聞きました。

今年も去年に引き続き、日本からも多くの開発者が参加したわけで。この盛況は、100% iPhone効果なわけだ。だから参加している人も、iPhone開発から入ってきた新しい人たちが多いんだよね。新世代だ。私は、旧世代に入っちゃったんだな。年はそんな変わらないんだけどね。

iPhone開発から始めた人たちといろいろ話すと、あぁ世代が違うなー、と感じる事もいくつか。まず、昔からMacの開発をやっている人は、だいたいMac好きおよびApple好きなんだよね。そりゃ、そうじゃなきゃやってられなかったから。根源の動機は、愛だ。でも新しい人たちは、そうとは限らない。単にiPhoneがそれなりに売れてて、App Storeが参入しやすかったからやってみた、別にAndroidでもかまわなかった、って感じ。別に問題ないんだけど、温度差は感じるなー。

あと、なんつーか感じたのは、あんまり技術に興味ないんじゃないの? ということ。私はプログラマ上がりなんでWWDCに来ると、テクノロジーラブ! GCD素敵! OpenCLクール! Objective-Cのブロック構文は美しさがないね! って感じでテンションが上がる。でもその勢いで話すと、あれ? こういう話興味ないすか。すいません。。。ってなっちゃった。うまくコミュニケーションとれねーよ。ジェネレーションギャップだ。技術系の話は、ジジイの繰り言のように、片隅でコソコソとやるのでした。

iPhone SDK登場して、1年経った。当初は単純なフレームワークだったのが、3.0ではCore Dataが使えたり、OpenGL SLまで使えたりして、結構複雑になってきた。ここからは、技術力、開発力の差が出てくると思うんだけどね。

June 11

Objective-Cのブロックについて、このあたりで仕様が公開されていると、コメントをもらった。ありがとうございます。

Language Specification for Blocks
Block Implementation Specification

ブロックの仕様、および実装について説明されている。ダイナミックObjective-Cのネタにちょうどいいなぁ。もう連載は終わっているけど。HMDTで勝手に続編やっちまうか。

ブロック構文は、CLANGの方で仕様策定したりしてたわけね。

Mac OS Xのコンパイラは、gcc。それはそれでいいんだけど、コンパイラの機能拡張は、gccの進行具合頼みって感じはしたね。それが最近はLLVMやらCLANGといった、次世代のコンパイラ作りが始まってきた。そこでAppleは、これらのプロジェクトに積極的に人を送り込んでいる。プロジェクトに対して人的資源で協力しつつ、その方向性を自分達の望む方にコントロールしていく。うまいやり方だ。

WWDCの会場では、App Storeの売り上げをリアルタイムで表示するモニタが設置されている。

App Storeに登録されているアイコンがずらりと並び、そのアプリが売れるとピョンピョンと飛び跳ねる。1つのディスプレイに1,000個のアイコンがあり、そのディスプレイが20個ある。つまり、全部で20,000個のアイコンね。これは壮観。

しかし、真に驚くべきことは、これがQuartz Composer + OpenCLで構築されていること。なんと。Quartz Composerはポテンシャル高いとは思っていたけど、こんなことも平気でできてしまうのか。LeopadではOpenGL SLを使うことができていたけど、Snow LeopardではOpenCLも直接使えてしまえるらしい。史上最強のグラフィックコンポーザーツールだ。一体どこにいこうとしているんだ、Quartz Composer。孤高の道を突っ走るのか。

June 10

WWDC三日目。今日はMac OS X技術のセッションを中心に回る。Grand Central Dispatchとか。OpenCLとか。

セッションによって人気はぱっかり分かれていて、やっぱりiPhoneセッションが人気。Mac OS XのExpert向けセッションは、人少なめ。

いくつか気づいた事。GCDはGrand Central Dispatchの略なんだけど、Dispatchって何よ? ってずっと思ってた。どうやら、スレッドと似たような処理単位なんだけど、伝統的なスレッドとは違うSnow Leopardでの独自な処理単位なんで、Dispatchって呼んでいるみたい。

Objective-Cには、ブロック構文が導入される。クロージャーとか、無名関数とか呼ばれるあれね。この情報ってまだ公開されてないんだっけ? まぁいいや。

ブロック構文導入の動機は、簡便化とか言っていたけど、おそらくGCDのため。GCDの主な処理単位は、ブロックになる。GCDを使うならば、ブロック構文は必須。そうでなければ、まー使わなくてもいいんじゃないの? 私は、別にブロックはなくてもいいだろ派。

面白いのは、ブロック構文はObjective-Cの拡張じゃなくて、C言語の拡張として実現されているところ。そう、C言語でもブロック構文が使えるんすよ! そんなの、アリか。

June 9

WWDC二日目。今日からが本番。今日は、iPhoneのメディアテクノロジー周りを中心にセッションを受ける。OpenGL ES 2.0、OpenAL、iPod Library、Audio Sessionなど。Audio Sessionは、やっと使い方が分かった。そういうことするために用意されてたのね。

iPhone OS 3.0はOpenGL ES 2.0をサポートする。これは何を意味するかというと、OpenGL Shading Languageが使えるってことだ。携帯でOpenGL SLが使える時代が来ちまったよ。これを使うとリアルタイムの画像編集能力が格段に上がるので、カメラ系アプリは対応必須でしょう。

でも、OpenGL SLはハードウェアで実現するので、iPhone 3G Sでしか使えないのね。また面倒くさいことになってきたよ。

どこかのセッションで、並列処理を行なうときの方針について解説していた。互いに独立して処理を行える並列処理、たとえばHTMLリソースを取得するためにサーバにリクエストを投げるやつとか、をどのようにプログラミングするべきか?最悪なのは、まずAを処理して、それが終わったらBを処理して、というようにシーケンシャルにやるタイプね。

2つの方針が提示されていた。1つは、複数スレッドを作って、1スレッドで1処理を行うもの。もう1つは、非同期的なステートマシンを作って、1スレッドで処理するもの。前者は、プログラミングが簡単で、マルチコア環境に向く。後者は、プログラミングが複雑になるけど、効率がいい。つまり、マルチコアなMacでSnow Leopardの場合は前者でやって、iPhoneでは後者でやろう、っていう話だったんだよね。

MacとiPhoneってソフトウェアプラットフォームはほぼ共通なんだけど、ハードウェアリソースの違う。それにより、アプリケーションの設計方針が大きく変わることもある訳だ。なかなかいい例でした。

June 8

もうすぐ基調講演。いってきます。

基調講演終了。9時頃会場に行ったら、余裕でオーバーフロールームに回されて、視聴。

まずは、Snow Leopard。Snow Leopardでは、Windows 7と同じように、新規機能はほとんどない。でもその理由が、WindowsはVistaが嫌われていたから、それを改良して7にした。Mac OS Xは、Leopardがとても好評だったから、それを改良してSnow Leopardにした、との事。く、苦しい言い分だ。

新規機能は、64 bit、Grand Central Dispatch (GDC)、OpenCL。このあたりは、有効に使うことができれば、アプリケーションの性能は飛躍的にアップする。でも、それには充分な知識が必要。アプリケーションデベロッパによって、開発力の差が出るかも。

FinderもCocoa化。ちらっと、プラグインサポートとかいう文字が見えた。Cocoa化で、プラグインが作りやすくなるかも。

値段は、Leopardユーザは$29。ここで会場、この日一番の大盛り上がり。この値段はインパクトあるわー。

iPhone OS 3.0では、基本的にはすでに提供されている機能のおさらい。新情報としては、SMSで画像などを送ることができるMMSをサポートするキャリアの紹介。Softbank、あったー!あと、iPhoneをモデムとしてMacをインターネットにつなげる、ティザリング機能をサポートするキャリアの紹介。Softbank、なかったー!

そして、iPhone OS 3.0の提供開始日。6月17日。うーん、結構早いぞ!来週か!それまでに、あれやって、これやって。WWDC出ている場合じゃないぞ!

iPhone SDKは、基調講演直後は、当然のようにダウンロードできず。

そして、iPhone 3GS。ほぼ事前のリーク情報通りのため、会場からは大きな驚きはなし。

ハードウェアのバリエーションが増えるという事は、iPhoneプラットフォームの成長を考えると、必ず必要なもの。毎年、新しいモデルを投入することになるでしょう。開発者から見ると、様々な問題が増える。まず、パフォーマンスの問題。いくら新しいのが2倍速くなったといっても、それにあわせてアプリを作る事はできない。やっぱり、第一世代iPod touchで快適に動くというのが、パフォーマンスの目安になるでしょう。新しいデバイスのポテンシャルを活かす事はできない。

あと、ビデオやコンパスといった、デバイスの違いによる新機能。これらを使ったアプリを作ると、iPhone 3GS専用になってしまう。そこまでしたくない場合は、何らかの代替手段を考えないといけない。これもまた大変。

早い話が、手間が増えるっていうことですな。ま、これは宿命でもあるんだけど。あ、画面サイズが変わらなかったのは嬉しい。これがいちばんインパクトでかいからね。

今年はやっぱり、熟成の年のWWDC。Mac OS X、iPhone OSともに、事前に提供されているものがほとんどなので、驚きはなかった。新ハードとなるiPhone 3GSも、漸進的なアップデートといった印象で、すんなり受け入れられた。

こういう年はこういう年で必要なんだよね。ここまでの一年間は、iPhoneアプリのローンチが主目的で、たくさんの数のアプリは登場したけど、濫造といってもよかった。次の一年間は、熟成されて洗練されたアプリが市場を握ることになるでしょう。

June 7

じゃ、WWDC行ってきます。参加される方々、現地で会いましょう。

なんだかんだいって、新製品の発表あるんじゃないかと期待しております。

カラオケアプリ「UTAMO」は、順調にTOP 10入り。よしよし。

800円くらいのアプリでも、きちんとしたコンテンツを持ってれば、ちゃんと売れるんだね。App Storeが健全な市場になる可能性は、まだあるね。

到着しました、サンフランシスコ。こっからHMDTは、アメリカ西海岸現地時間での更新っす。

ホテルにチェックインした後、レジストレーションへ。ちょっともめたけど、どうにか終わらす。

会場の1Fにあるバナーは、2つ。1つはSnow Leopard。もう1つはiPhone 3.0。

開発者としては、この2つが中心になるでしょう。

夜、会場の前を通ったら、2Fのバナーがかざられていた。読もうと思ったら読めたけど、めんどくさいのでパス。

June 4

AppStoreで、「UTAMO」っていうiPhnoe用カラオケアプリが、ブレイブさんから販売されております。iPhone初のストリーミングによるカラオケアプリで、3,000曲が歌い放題!これ、プログラミングはHMDTであります。

特徴は、なんといってもストリーミング対応した事で、大量の楽曲が提供できる事。さらに、追加楽曲も予定されているらしい。やっぱりカラオケはこうあるべきだよね。

プログラミングするときに気をつけたのは、横回転すると字が大きくなって見やすくなる事とか、駅探ライクなドリルダウンインタフェースで曲を素早く検索できると事か。

今回初めてカラオケの歌詞データってのを扱ったんだけど、バイト数をけずるためにすごい工夫してんのね。文字コードの空き領域に記号などを詰め込んだため、すごいアクロバティックなエンコーディングになっている。泣きそうだった。

June 3

Dynamic Objective-Cのプレゼントキャンペーン、先日の夜中に無事終了。ご応募いただいた方、ありがとうございました。

今回の応募総数は、44名。難易度高めの本だし、発売から日数がたっていたからもっと少ないかな?と思っていたけど、健闘したね。

なにはさておき、気になる当選者は次の方々!

  • 澤頭 勝彦
  • kininaruki
  • Magica

おめでとうございます!すでに当選通知は送ったので、必要事項を記入して送り返してくださいね。

June 1

MacおよびiPhoneアプリ開発者の祭典である、WWDCまであと一週間!インフルエンザは無視して、今年もサンフランシスコに行ってくるぜ。

Webサイトの方でセッションスケジュールを確認する。WWDCは、新OSが発表されて新機能がたくさん登場する年と、新しい発表はないから既存の技術を深く掘り下げる年、が、交互にやってくる。今年は後者だね。Snow Leopard、iPhone OS 3.0ともに、機能の内容は開発者に公開済みだから。

新機能登場の目安となるのは、事前公開されるスケジュール表に登場する「Session to be announced.」まだ内容は明かせないよ、来てからのお楽しみね、ってやつ。ここに新機能の発表がある可能性が高い。その数を数えてみたら、現段階で今年は9つ。少ないね。

が、ちょっと気になるところも。初日の午後の一番最初のセッションが「to be announced」になってるよ。基調講演の後のこの時間は、例年であれば「State of the Union」と題される、現在のMacやiPhoneの機能を概観する内容になっている。ここが未定ってのは、気になる。何か、開発者全体に伝えたい、大きなメッセージが用意されているのかも。

Dynamic Objective-Cのプレゼントキャンペーンの方、ご応募ありがとうございます。サイトの紹介も続いております。

締め切りは、明日の夜12時まで。気になる方は、ぜひチェックしてください。

back to top content

Copyright © 2002-2006 HMDT. All rights reserved.