もくじ へ
5. iPhoto のアルバムの HTML 書き出しの補助ツール
iPhoto と言うソフトが出たのをきっかけに、私はデジカメを買った。なにぶん「ちょっとした」を信条とする私なので、4メガピクセルがどうのこうのと言う凄いカメラは買わない。640*480 ピクセルで保存してきれいな画像が見れるようにその2倍の数の受像素子を持ち、お手頃価格と言うことで、オリンパスのC1-Zoomと言うのを買った。USBマスストレージに対応しているので、新品を箱から出して、電池を入れて、1枚撮って、MacのUSBに差し込むと、いきなり iPhoto が立ち上がって画像が取り込めた。あまりのお手軽さに、拍手喝采である。カメラメーカーはApple社に感謝するとともに、わざわざUSBマスストレージに対応していないカメラを作って、高い開発コストをかけて何種類ものドライバーをそろえて供給するような無駄を、もうやめた方が良いと思うがどうだろうか。
さて、iPhoto で作ったアルバムをホームページにする場合、「ホームページ」と言う機能を使えば、確かに1発でかっこいいアルバムをWEB上に作ることができる。この機能はすばらしいが、後からメンテするときに iTool を使う必要がある。iTool は良い機能であることは解るが、私の自宅は電話回線でしかインターネットに繋げないので、遅くて遅くてやってられない。
基本的なメンテは自分のハードディスク上で行い、出来上がったら iDisk にフォルダーごとドラッグして寝てしまうのが私のやり方である。ここで余談になるが、OSX組み込みの iDisk は、まず接続が死ぬほど遅くて、フォルダーの階層を移動するのがまた堪え難い遅さで、ファイルの転送速度自体は悪くはないのだけれど、電話回線接続では時々通信がフリーズして止まってしまう。当たり前のように起こるこの通信フリーズは、本体リセットでないと復帰しない上に、そのあとOSXのファイルシステムにダメージを与えるから厄介である。 iDisk のフリーズを経験された方は、是非「fsck -y」で毎回修復することをお勧めします。
iDisk への接続は、なんと言っても Goliath でしょう。現時点では実装されていない機能(例えばファイルの消去)もありますが、サクッと接続、サクッとフォルダー移動、フォルダーごと数メガバイト放り込んでも落ちないし、電話回線の都合で落ちた場合でもOSXのファイルシステムにダメージを与えるようなバカなまねはしない。安心して寝られるのだ。この点はAppleさん、見習ってくださいね。
さて、iPhoto で作ったアルバムをホームページにする場合、「書き出し」と言う機能を使えば、確かにハードディスク上にHTMLのアルバムを作ることができる。しかし、iTool のように額縁は付かないし、表題の下にコメントの文章も無い。親戚知人に自慢するには簡素すぎる。自分のためだけにつくるプログラムは「ちょっとした」が信条であるし、このCocoaのページは、飾らなくても情報が伝われば良いのだとあきらめているが、親戚知人に自分の家族の写真を「見せる」なら、ちゃんと飾りたいと私でも思う。
いつでも前書きが長い私ですが、結論が近付いてきました。iPhoto の「書き出し」機能で作った簡素なHTMLファイルを、「ホームページ」と言う機能を使った時のように、額縁を付けてコメントの文章を加えて、飾ったHTMLに変換するツールを作ろうと言う訳です。
割り込みコメント( 2003/1/6 )
以下の記事を読もうと思って頂けるのは本当に嬉しいですが、あまり読んでためになるコードでもないですし、実用的には「BetterHTMLExport」がお勧めです。私も「BetterHTMLExport」を愛用するようになって、以下のプログラムは捨てました。..と、今頃書き込んで申し訳ない。
|
設 計
このサンプルプログラムの場合、見た目は以下のようになるものとします。

iPhoto が吐き出した「index.html」ファイルを、上のテキストボックスにドラッグすると、パスが表示され、下の大きいテキストボックスにコメントの文章を書いて(改行タグは手書きで)、Convert ボタンを押すと、index.htmlファイルを変換して上書き保存します。元のファイルのバックアップは作りません。なぜかと言うと、元のファイルは iPhoto が自動的に作ったものなので、気に入らなければ何回でも簡単に作り直せるからです。
iPhoto の「書き出し」の際には、サムネイルの最大サイズを 120,120 にしておいて下さい。この「120」と言う文字列をキーワードにして変換処理をしています。4対3または3対4の縦横比以外の画像で、サムネイルの短い辺の長さが 90 以上になるような(正方形に近い)画像ではサムネイルの額縁がくずれます。
設計の方針は「その場しのぎ」です。将来の iPhoto のバージョンアップによって、書き出されたファイルが少しでも変更されたら、通用しなくても良いことにします。そんな未知の将来に対応するより、さっさと目の前のファイルを変換しようと言うことです。
コーディング
myObject の中で、ファイルを NSString に読み込んで、キーワードを検索して、書き直して、吐き出すだけのシンプルなソフトですが、見た目は長いです。rnh と言うレンジ変数は検索範囲、rng と言うレンジ変数は見つけたキーワードのレンジです。
3部構成になっていて、第1部では元ファイルのちょっとした書き直し、第2部では .txtファイルとして用意してある文字列をばんばん挿入、第3部では(Win系のバグだと言いたいのですが)TABLEタグの内部にリターンコードがあると、テーブルが1ドットずれて額縁が醜くなる現象への対応です。第3部の問題に引っ掛かって、このソフトの公開が大変遅れました。
言葉で解説するようなソフトではないし、プログラムテクニックも何もないですから、あとはソースを見て下さい。と言うより、さっさとコンパイルして使ってみて、気に入らなければ捨てるか改造するかして下さい。
サンプルソフトのダウンロード
そこそこの内容のあるソフトなのですが、 たったの14KB! ソースのみですので「Project Builder」でコンパイルして下さい。
2002.4.16
iPhoto 1.1 対応版
iPhoto 1.1 が出たのでチェックしてみると、書き出される HTML ファイルが微妙に違っていて、その微妙な違いで見事に動作不能になりました。ソースで配付しているので、対応版をわざわざ公開する必要もないわけですが、結局自分が対応しましたので公開しておきます。
その場しのぎで作った汚いソフトでも、後で読み返してみてプログラムの意味がどうにか理解できて修正できるところが、Objective-C の素晴らしいところだと改めて感心します。
サンプルソフトのダウンロード
たったの14KB! です。ソースのみですので「Project Builder」でコンパイルして下さい。
2002.5.10