Permalinkとは?
|
Mac OS Xのフレームワークでは、Cocoaと同等かそれ以上に使い込んでいるWeb Kitなんだけど、いままでどうしても分からないことがあった。それは、HTMLフォームでsubmitしたデータを取得する方法。 HTMLのページで、フォームがあるやつがるでしょ。テキストフィールドやポップアップが並んでいるやつ。ファイルのアップロードとかもできる。そこで文字とかを入力して、Submitボタンを押す。そうすると、HTTPのPOSTメソッドでデータが送られるんだよね。このデータを取得したい。テキストフィールド入力した文字列じゃなくて、生のHTTP bodyデータを取り出したかった。 そのためには、submitボタンが押されたイベントを捕まえなくちゃいけないのか、それともフォームからデータを作るところを捕まえようか、じゃあWeb Kitのソースコード見ると、なんかWebCoreの奥深くでそんな感じのことやっている、でもこれをとらえるのはめんどくせー、などとグルグル考えていた。 こういうときには、鉄則がある。うまくいかないのは、難しく考えるからだ。もっと簡単に考えなくてはいけない。 というわけで、簡単に出来ないかなー、とpublicなメソッドを見ていたら、気づいた。WebFrameLoadDelegateの、webView:didStartProvisionalLoadForFrame:を使えばいいんじゃないの?このデリゲートメソッドは、HTTPリクエストを送った直後に呼び出される。つまり、フォームデータを作成するタイミングで捕まえるのではなく、送った直後に取得すればいいんだ! 試してみたら、おぉ、簡単に出来た。これで、フォームから送るデータが丸分かりだ!何に使うって?それは、非Webブラウザアプリケーションで、ブラウザがHTMLページを遷移するのをシミュレートしたいんだ。そうすれば、HTMLベースであっても、自由に情報にアクセスできる。 2nd Editionは、Cocoa入門から始まって、Cocoaの基礎的なクラス、ボタンやスライダーといったコントローラの使い方、テーブルビュー・アウトラインビュー・ブラウザの使い方、ベジエ曲線の描き方、画像の描き方、テキストファイルの取り扱い、さらにはWeb Kitの使い方、Cocoaバインディングまで入っている。位置づけとしては、『たのしいCocoaプログラミング』を読み終えた人が、さらに突っ込んでCocoaを使ってみたいときに読む、ってところだね。 初版を売り切った後、増刷もなくそのままで、よく「2nd Editionが手に入らないんです」って問い合わせが来るたびに、心苦しく思ってた。が、編集さんの度重なる働きかけと、たのココが好調らしいんで、どうにか刷ってもらえました。あんまり数は刷らないらしいんで、欲しい方は見かけたらすぐ買う事をお勧めします。 本っていうのは、他のどんな経済活動もそうだろうけど、売れると次につながる。売れたら、次はどんな本出そうか、って新しい展開が出てくる。売れないと、つながらんです。 昨日の話の続き。ツールバーアイコンをきれいに見せるには、複数サイズの画像を持ったTIFFファイルを使えばいい。 Appleから、ハード・ソフトともに新製品ラッシュ。たくさん出たなー、と思っていたら、弊社のデザイナが「ツールバーが大変なことになっている!」と大騒ぎしている。「小さくてもきれい!」と。 どういうことかというと、Mac OS Xのツールバー、というかCocoaアプリケーションのツールバーかな、は、大きさをレギュラーとスモールの2種類から選択できるでしょ。コンテキストメニューで「小さいサイズを使用」ってのを選ぶと小さくなる。 小さくなるのは便利なんだけど、そのときアイコンの画像が縮小されて表示されてしまう。通常のツールバーアイコンサイズは32x32なんだけど、24x24で縮小表示される。そうすると、アイコンが若干ボンヤリと表示されてしまう訳だ。弊社のデザイナはそれが大変気に入らないらしく、「ツールバーのスモール表示は廃絶すべきだ」と主張。 ところが、iWork'08のツールバーアイコンは、小さくともきれいである。というか、デフォルトで小さい表示になっているし。 大きいときは、枠の線が1ピクセルでクッキリ引かれているけど、小さくするとぼやけているでしょう。「図形」とか「コメント」が分かりやすい。 これはどうやっているかというと、簡単な話で、あらかじめ2種類の画像を用意している訳だ。大きいやつと小さいやつね。で、ツールバーのアイコンはTIFFファイルにするんだけど、TIFFは1つのファイルに複数の画像をまとめることができるから、両方の画像を持たせているんだ。 このテクニックは、実験したところ、現在のCocoaアプリケーションでも有効な事が判明。なーんだ、そうだったのか。ならば、これからHMDTで作るアプリケーションでは、ツールバーアイコンは2種類のサイズを持つことにする。手間は二倍になるけど、美しさのためならば! 新潟へ行ったときの事。着いたら気温が35度。暑っ!外を歩いていると、風がドライヤーで吹き付けられているようだ。 その日会ったすべての人が、開口一番、何となくいい訳っぽい口調で「今日はフェーン現象で。。。」って教えてくれる。そうか、フェーン現象だから特別暑かったんですね。でもその説明5回くらい聞きました。 新幹線で着いたのが15時で、15時30分くらいから打ち合わせ。技術的に細かくあーだこーだと話していたら、17時過ぎには「では、そろそろ飲みに行きましょうか。」と。早っ! 「新潟は米どころだから、日本酒がおいしいんですよ。」えぇ、そうだと思います。「新潟の有名なお酒は、〆張鶴に、きりん山に、八海山に。。。じゃ、その辺持ってきてください。」豪快な頼み方ですね。「じゃ、何からいきますか。グラス2つ渡しますから、メインはこれ、サブはこれでいきましょう。」いや、そんなお酒の飲み方聞いたことないし! と言いつつ、差し出されたものはすべていただいてきました。お酒好きな人が多く、「プログラマなら日本酒だね!」との宣言も飛び出すし。その後、ギリギリまで飲んで、足早に駅に向かい、帰りの新幹線に飛び乗ったのは発車の一分前。新潟最高。 |
[ 52] August 2007 | HMDT Journal
[引用サイト] http://hmdt.jp/archives/2007_08.html
|
すでに手に入れた方もいるだろうから、レビューもちらほら見かける。そんな中で、JAM LOGさんのレビューを引用。 ざっと見た感想ですが...まず、タイトルのフォントの力の抜け具合が良いですね。気軽にやってみよう、って気にさせます。あと、ブックカバーが半透明の薄いカバーになっていて、なかなか新しくてオシャレです。プログラミング系の本というとどうも教科書っぽく堅苦しい見た目が多いのでこれはGOOD。 中身は「プログラミング初心者向け」というより「Mac OS Xプログラミングの初心者向け」という印象を持ちました。口調が「です・ます」調でなく、HMDTのサイトで見られる木下さんの口調で書かれていて砕けた感じで親しみやすいです。それでいて変に説明を端折ってないところが良いですね。 えぇ。力抜けてます。とにかく敷居を高くしないように、見た目や読みやすさにはこだわってる。 手に取った第一印象は、厚さに比べて「軽い」でした。紙の重さというのは、読むときに影響するのでこれはいいです。さらにページをめくっての印象は「見やすい」でした。本筋の内容を判断する前から好印象です。 内容に関しても、入門レベルとは言えこれまで見たことのない構成です。プログラミングの本題に入る前に、環境に関する外堀部分を埋めています。疑問に思ったことをすんなり流せないタイプの読者にとって、置いてきぼりにならない構成だと思います。まだ最初の3章くらいまでしか読んでいませんが、これまでの入門書では書かれていない情報が盛りだくさんなので、いろんなCocoa本を購入済みの方にもお勧めできます。 そうなんです。入門向けの本だけど、内容は簡単ではない。むしろ、ベテラン向けの本だったらさらっと流してしまうような事を、しつこく、これは何のために必要なのか?を明らかにしようとしてみた。 たとえば、C言語のHello Worldだと、先頭に「#include <stdio.h>」って文を書く。これを、「呪文だと思ってそのまま書いてください」って説明している入門書は多い。じゃ、これを解説してみよう。Cocoaの場合だと「#import <Cocoa/Cocoa.h>」ってなるわな。この#import文っていうのはヘッダファイルを読み込むもので、つーかその前にヘッダファイルの説明しないといけないな、ヘッダファイルには@interfaceでクラスが定義されていて、って@interfaceの説明もしないといけないし、@interfaceはクラスを定義するもので、ってクラスって何よ?クラスはオブジェクト指向での処理の単位で、だからオブジェクト指向を説明しなきゃ始まらんだろ! というわけで、Hello Worldの第一行目を説明するのにはこれだけの説明、実際にはもっと、しないといけない。でも、全部説明しきってやったぜ!たのココでは、サンプルとしてHello Worldを作って、そのソースコードが何を意味しているのか一行ずつ説明しているんだけど、そこにたどりつくまで180ページを費やしている。C言語、Objective-C、オブジェクト指向、Cocoaフレームワーク、アウトレットとアクション、を説明しておかないといけないからね。 この中にある、Cocoaはじめの一歩は、Cocoaの初心者向けの入門サイトとしておすすめ。Become an Xcodeという初心者向けドキュメントの日本語訳や、練習問題などもあって充実してます。 たのココプレゼント、今日もたくさんメールが届いた。ありがとうございます。 ところで、プレゼントのページの方で締め切り日が抜けていた。締め切りは、6月30日の夜中の12時まで。今週中ってことね。一週間の短期キャンペーンです。 では、紹介サイトの紹介を。ハングルで紹介してくれているところもアリ。 たのココプレゼント、早速応募していただいて、ありがとうございます。紹介していただいたページを紹介していくね。 まだまだ受付中。WebサイトやBlog持ってなくても問題ないので、お気軽に。 第一印象。。。軽い!物理的に。これなら、電車の中で片手で持って読んでも大丈夫だ。 あと、ページを開いてそのまま机に置いても閉じない。つまり、そのページを開いておいて、それを見ながらMacでソースコードを入力できる訳だ。 このへんは、前の本を出したときに指摘してもらった点を、編集さんに伝えておいたから。進化してるよ。 本屋や流通によっては、そろそろ現物が置いてあるはず。早速、見てくる。そして、平積みにしてくる。レジの隣に積んでくるのもいいな。 『たのしいCcooca』発売直前に控えて、紹介ページを作った。どういういきさつでこの本を書くことになったのか、書いてみた。 そして、今回もやります、プレゼント企画!HMDT 3rd Editionのときも好評だったので、たのココでもプレゼントやるよ。応募要項を読んで、ぜひご応募を! 先日仕事をしていたら、なんか手足がしびれだす。あれ?と思ってたら、胸に差し込むような痛みが来る。あれあれ?と思ってたら、せきが出てきて、めまいがして、熱が出てきた。 よく分からんけど、よくない症状がまとめて出てきたので、これはイカンということで、帰ってひたすら寝倒す。丸一日寝たら復活。過労だな、たぶん。おかげで、激込みだったらしい山手線に乗らずに済んで、ラッキー。 シイラのサイトの方で、ローカライズをスタートさせた。通常、Macのソフトのローカイラズは、Interface Buiderというアプリケーションを使って.nibファイルを編集するんだけど、それだと敷居が高い。そこで、Webアプリケーションでそれを行えるknyk(コニャックって読む)を開発。それを使って誰でも簡単にローカライズできるようにした。 が。アクセス多すぎ。というか、攻撃とおぼしきみたいなものが来て、まったくアクセスできない状態に。 これはいかんということで、シイラのWebサイトを置いているshiira.jpを、いったん止める。現在対策中。それが終わったら、再び稼働させる予定。 iPhoneDevCampっていう、iPhone用のWebアプリケーションを作るイベントがあるみたい。発売前にこんな告知を行ってしまう、突っ走りっぷりが素敵だ。 案内の中に、持ってくるもの、ってのがあるんだけど、そこに書いてあるのが、 Windowsにちょっかい出したりして怒られたけど、Mac版もちゃんとやっとります。というか、とうぜんMacがメインです。 とか言われる。メインスレッドで実行できるように変更した。気をつけましょう、みなさん。(普通はやらない) Leopardになって、アニメーションバリバリのインタフェースを作るとなると、メインスレッドとアニメーションスレッドの区別をきちんと付けなくてはいけなくなるんだろうな。 Cocoaプログラミングでは、ウィンドウでの描画周りを触るときはメインスレッドでなくてはいけない、っていう鉄則があるんだけど、Core Animation時代ではどうなるんだろう。 とりあえず、自分で書いた去年のレポートを読み直してみた。わーお、ほとんど同じだよ。この一年間は、発表した機能のブラッシュアップに努めていた訳ね。 それとは逆に、去年は触れられなかった、Finder、BootCamp、Safariは今回大きな発表があった。去年のレポートでその事を指摘していたのは、先見の明があったと思わない?ね、ね? アプリケーション屋さんとして一番気になるのは、やっぱりCore Animation。あのデモはすげーな。動きもさることながら、数百におよぶあれだけの数のムービーを読み込んでしまうところがすごい。 実際にあのアプリケーションを作る事を考えると、まずムービーの読み込みに時間がかかる。ピクセルサイズを小さくして、一つが5MB程度としても、数百MBになるわな。と、考えると、あのデモアプリケーションは起動に数分はかかるよな。あらかじめ起動しておいて、ジョブズのプレゼンにあわせて切り替えたってことか。 いまのグラフィックカードとCore Animationによって、大量の画像やムービーデータを、俯瞰するタイプのユーザインタフェースが可能になった。これは非常に面白いので、どんなインタフェースが効果的なのか、HMDT内部で議論中。ただその時に思ったのが、多量のデータを用意するにはローカルでの蓄積が必要になる。ネットワークからのダウンロードでは間に合わない。これからは、ネットワークからデスクトップへの回帰が起こるかも。 個人的にテクノロジーのブレークスルーとして期待しているのは解像度非依存。でも、基調講演では特に情報はなかった。 まぁ、これはデバイスが出てこないと話にならないからなー。Leopard発売と同時に、有機ELを使った超高精細度ディスプレイを持ったMacBook Proの登場を期待。で、1.5倍か2倍の解像度で表示する。これが来たら、コンピューティングは変わるよ。紙より美しくなる。 原因の推察。特別な初期化処理が必要か?Core Graphics周りとかの初期化をあらかじめやっておかないといけないのかもしれない。InitializeCoreGraphicsとかいう関数があるから、これを呼ぶのかな。 または、Core Foundationを使っているから、そっちのRun Loopをあらかじめ作っておく必要があるのか。そうだとすると、通常のWindowsのウィンドウで表示するのは難しそうだな。 iPhone開発環境は、SDKがなしという時点でテンション萎えまくり。ウィジェット環境のみかー。 ユーザインタフェースに関して言えば、ウィジェットと同等のことができる訳だから、そこそこは出来ると思う。でも、iPhoneが売りにしている派手派手なやつはできないけど。 あと、ウィジェットではJavaScriptからアクセスできるプラグインを作成することができるから、同様の構造があると思う。それを使えれば何かできるかな。たとえば、ネットワークからダウンロードしたリソースをローカルに保存して、読み込むとか。これができればアプリケーションらしいことはできるな。 ダウンロードして、インストール。Safariフォルダをのぞいてみる。すると、こんな感じに。 Cocoaプログラマならおなじみの名前が並んでいる。一応解説してみると、 新しい本『たのしいCocoaプログラミング』は、あと二週間くらいで発売。 目次も公開された。全部で20章になっている。前半は、テキストというよりは読み物として読めるようにがんばってみた。後半になると、リファレンスっぽくなってくる。普通のプログラミング本と違うのは、MVCやアウトレットとアクションといったCocoa特有の要素を説明しているところかな。 また、プログラミング言語の解説もちゃんとある。Objective-Cだけでなく、C言語もだ!初心者向けの本だけど、子供だましの内容ではないぜ。丁寧ではあるが、骨太だ。 ISBNも取れたみたい。ISBN978-4-86100-443-8。値段は、税込みで2,940円となっとります。これは、3,000円は切りたいねということで、ページ数や印刷の紙を吟味してこうなりました。前の本よりは買いやすくなったでしょ。 土曜日出発組と日曜日出発組とがいて、土曜の人はもう着いてるね。日曜の人は、これから成田に向かうところか。 なんか、こう、留守番ってのは楽だけど気持ちは落ち着かんものだね。自分で行く方が、気は楽だ。 ここ一年ぐらい、忙しい?と問われれば、忙しいとしか答えよーがねーよ、という日々を送っている。冷静に考えて、やらなくてはいけない事の量が、一日の時間を上回っているから、そらもう無茶な訳で。 とはいっても、忙しい忙しいって、忙しぶっているのもかっこう悪い。もう開き直るというか、優先度をつけて片付けていくしかないねー。 そんな中で、シイラです。シイラの優先度を考えると、まずお金という面で考えるならば、お金に全くならないシイラの優先度は低い。んがっ!そんなこと言ってたら何も出来んぜ。人生は金がすべてではない、という台詞はこういうときに使えばいいのか。正しく言えば、仕事は金がすべてではない、ということか。 ということで、もう強制的に無理矢理シイラの時間を作ることにした。そこで生まれたキーワードは、1日1シイラ。1日のうち、シイラの開発に割く時間を、最低1時間作る。これはもう、無理矢理作る。えー、たった1時間?と、思った方。すいません。やっぱりお金も必要なんで。 という訳で、この宣言を実践に移すべくしばらく続けているんだけど、なんか前進してるかも。1時間だけでも、0よりはマシだ。最近は、作業の内容をシイラのページに書くようにもしているので、そっちも見てね。 WWDCの3日目、6/13に、サンフランシスコのApple Storeでポッドキャストのイベントがある。三洋のXactiを使ってビデオポッドキャストをやろうというもので、ボイスバンクっていう会社が主催している。 日本の会社が主催して、スタッフも日本人がいるので、英語に自信の無い方でも気軽に楽しめると思うよ。あと、パーティもあるって。 ここで使うソフトウェア、HMDTもソフトウェアの開発で協力している。 という訳で、WWDCに行かれる方で、動画配信に興味のある方、新しいXactiに触ってみたい方、なんかイベントに参加してみたい方、ただ飯を食べたい方は、ちょっとのぞいてみてあげてくれないでしょうか。 アップルストアでビデオポッドキャストイベントを三洋電機さんとやります。世界初の新作カメラと弊社のソフトウェアの紹介、そしてビデオブロガーを集めた催しです。 6月13日(水)6時からアップルストアです。もし動画に興味がおありでしたら、是非いらしてください。動画配信の最新情報、最新機器をお届け致します。 また、同日の8時から3時間でパーティーもあります。こちらは日本企業はもちろん、現地でアクティブに活動している個人や企業が集まるかと思いますので、ネットワーキングにもお役立ていただけると思います。 タイマー機能を追加。-tオプションを使って、Webページ読み込み後に指定した時間待ってから画像を取得する。Flashがあるページなどで活躍。あと、1.1の印刷ダイアログに関するバグフィックスも。 たぶん、6月の25日ぐらいに、本屋に登場する。よろしくお願いします。 はっ。ということは、今年のWWDCの隠し球はこれか。しまったー。行くべきだった。 |
[ 53] June 2007 | HMDT Journal
[引用サイト] http://hmdt.jp/archives/2007_06.html
