Interface Builderのバグに直面して、しばし停滞していた「うにばーさる」のリリース作業だが、Drawerを使わないことでNibファイルの破損を対処療法的に防ぎ、なんとか乗り切れそうな見込みになってきた。
となると、リリースに向けてのもうひとつの課題をクリアしなくてはならない。
各アプリケーション内のInfo.plistファイルからCFBundleIdentifierを取得し、「どこの誰が作ったどーゆーソフトなのか」を区別しようという作業である。ちょっとこれが厄介だ。
取得すること自体にはなんの問題もないのだが、問題はその内容である。
たとえば、「うにばーさる」の場合には「jp.piyomarusoft.universal」と設定してある。一般的なインターネットのドメインを逆にした感じのようなものとして理解している。ただ、これをジャストイコール、ホームページのURLを逆にしたものとして解釈している方も多く、日本人の開発者のでも「net」とか「org」で始まる識別子を用いているケースがある。
CFbundleIdentifierは、別に政治的かつ地政学的な区分を表記しようといったようなものではなく、単にアプリケーションを一意に区別するためのIDだ。
ところが…………そんな大事なIDを、日本語で記述している例に(よく)お目にかかる。
http://universal.piyocast.com/A001.html
アプリケーション名をそのまま放り込んであったりするのだ。このCFBundleIdentifierをそのままアイコン画像のファイル名にしようと考えていた自分にとって、野望成就の大きな妨げとなった。
「そんなもんにアプリ名称をしかも日本語で設定してんじゃねえよ!」
………などと、作者本人に直接言えればよいのだが、どーーもそういうのを指摘するというのも、それはそれで不要なケンカを売って回るよーなものだし、指摘された方のプライドをいたく傷つけること著しい。自分にできるのは、せいぜいリストにして全世界に公表することで見直していただくことをそれとなく促す程度のことである。
そこで、他人に働きかけたりするのではなく、自分でどーにかしょうと考え、「なんならよみがなを取得すればいいんじゃないの?」と考えた。Newt Onを推進する自分にとっては、当然至極な流れでもあった。
「形態素解析器を使ってみてはどうか?」
本来、品詞分解を行って日本語の構文解析やら意味解析を行うためのツール「形態素解析器」を、単によみがなを取得するための下世話な用途に使おうというわけだ。まあ、スパムメールの分析に使うよりはまだいいだろう。
そろそろ、いいかげんChasenという時代でもなかろうと思い(根拠レス)、MecabをダウンロードしてきてMakeしてMac OS X 10.4.7環境にインストールした。Jumanなどの他の形態素解析器も考えないではなかったが、最初に試したMecabがビンゴだったのだ。
途中、/usr/local/binにパスが通っていなかったので、これにパスを通さないとmakeが通らないといったトラブルには直面したが、まーとくに苦労もなくインストールできたほうだ。
ただ、これをMac OS X上にそのままバイナリでインストールさせるためにはどーしたらよいかと考えるとけっこう頭が痛い。/usr/local/binになければ動かないだろうし、他の設定ファイルなどについても各々の場所にあることが期待されていることだろう。これを変更するのは大変そうだ。
場所を動かさないとして、導入するのも一苦労だ。通常のユーザーはDevelopper Kitをインストールしていないから、gccなどは入っているわけがない。
必然的に、インストーラで導入ということになりそうだが、インストールされるファイルをすべて調査して、Mac OS X上のPackage Makerでインストーラを作る…………ぐらいしか思いつかない。
でも、思いついたところで、それが文章にして箇条書きにするほどには簡単ではないことも同時に想像がつくのだ。
どうやら、フリガナをMecabで取得するのはあきらめたほうがよさそうだ。MecabではなくChasenに変更したところで、昔見かけたインストーラパッケージはPowerPC版のものであり、Intel時代にはふさわしくない。
なんでCFBundleIdentifierからよみがなを取得しなければならないかといえば、各アプリケーションのアイコン画像のファイル名に使いたかったからなのだ。画像のファイル名として使うには、日本語のままでは困る。そこでよみがなを取得してローマ字にでも置き換えれば、なんとかなるだろー、ぐらいの用途なのである。
そこで、別のアイデアを思いついた。
ファイル名が日本語で書かれていようとなんだろうと、それをそのままHexダンプしてファイル名にしてしまえばよいのだ。URLエンコードする案もあったのだが、それだとURLに記述したときに日本語に展開されてしまって具合がよろしくない(回避する方策もあるのかもしれないが、自分は寡聞にして知らない)。
ファイル名を16進数でダンプする分には、数字とアルファベットだけで表現できるうえに、おそらく同名のアプリケーションでも出ないかぎり衝突は起こらない。同じ名前になる可能性はないこともないが、同じようなどこにでもあるような名前を付ける上にCFBundleIdentifierを日本語で書くような作者がそうそう出てくるとも思えない。
かくして、なんとかなりそうな気配が漂ってきた。うむっ!