先日CocoaアプリケーションからOpenMetaによるメタデータを操作するで書いたように、CocoaアプリケーションからOpenMetaによるメタデータを操作するにはGoogle Code上で公開されているOpenMetaクラスを利用するのが簡単です。しかしこれ、使っていくうちに色々と首を傾げたくなる部分が出てきます。
1. メソッド名がCocoaの命名規則に則っていない
まず最初に気になるのがこれ。例えばファイルに付けられたタグを得るには+ [OpenMeta getUserTags:url:]
というクラスメソッドを使いますが、これはメソッドの返り値としてタグを配列を得ることができます。普通Cocoaでは求めているオブジェクトが返り値から得られるとき、メソッド名にget
は付けません。get
を付けたときは普通引数に目的のものをコピーすることを意味します。もちろん、DOM APIのように外部で標準のAPIが定められている場合はこれに当てはまらないこともありますが、Cocoa内で完結するものはたいていこの規則に従います。しかしOpenMetaはなぜかこれを無視しています…
2. メソッド名が意味不明
OpenMetaアプリケーションはたいてい最近使ったタグを簡単に扱えるようになっています(OMWizardやQSBOpenMetaも自動補完という形で対応しています。OMWizardのほうは少し不具合がありますが…)。このリストは全OpenMetaアプリケーションで共有されていて、アプリケーションからこれを更新するには+ [OpenMeta updatePrefsNewTags:newTags:
というメソッドを使います。…私は最初にこのメソッドを見たときわけがわかりませんでした。newTagsという名前が2回でてきてどっちがどっちだかさっぱりでした。幸い、仮引数名がoldTags
とnewTags
だったのでわかりましたが、これはちょっとおかしいんじゃないかな…
3. ライセンスが不明
そして3つ目の問題。Google Codeのプロジェクトページにはしっかりと"Apache License 2.0"と書かれているのに、OpenMeta.mでは一番上の目立つところに"MIT license"と書かれています。まあ確かに両者は似た性質を持っていますが、それでも同一ではありません。
…とまあいろいろと挙げちゃいましたが、これはOpenMetaそのものの問題ではなくそのためにIronicが用意したライブラリの問題です(OpenMetaそのものの問題についてもIronicのフォーラムで議論されているようですが… それについては今後書くかもしれないです)。多くのデベロッパに採用してほしいなら、この辺はちょっと修正してもらいたいところです。