ここのところ、FlickrのAPIを使っていろいろ遊んで試していますので、それなりにネタが溜まってきています。今回も、そこのところをちょこっと紹介します。タグの話です。
Flickrで、タグは非常に便利なものです。文字どおり名札なので、識別しやすいものをいろいろ付けて、分類の目的に使用できます。
私は、タグを単に付けるだけでなく、そのタグが何を意味するのかという情報まで持たせてやろうと考えました。たとえば、場所を意味するのか、文字どおり名前なのか、そういったことです。
場所を表すなら、「place:」と頭に付けて、名前を表すなら「name:」と頭に付けます。人間が見れば、こんなものを付けなくても、だいたいの見当は付くのですが、プログラムだとそうはいきません。そうです、プログラム側からうまく識別させてやるために、このようなことをさせているわけです。
これは、本来のタグの使い方からは外れているのかも知れませんが、まぁ許してもらいましょう。
しかしこのタグ、けっこう面白い振る舞いをします。上記のように、「:」(コロン)を挟んでタグを指定することもできますが、内部的にはコロンなしで扱われているようなのです。たとえば、これはFlickrの「Your Tags」で全タグを表示させた場合の一部です。
左は、内部的に集約されているタグで、中央が、実際に入力、指定されたタグのようなのです。つまり、記号を含めてタグを指定することはできますが、記号のみが異なるタグというのは、実は同じタグとして扱われているということのようです。これが内部的な事情なのか、曖昧さを吸収するための配慮なのかは、ちょっとわかりかねます。
気になったのは、写真についてタグ情報をAPIで取得したとき、果たして何が返るのか、ということでした。タグを取得するには、flickr.photos.getContextsメソッドを使って、APIキーとIDを与えればOKです。
さっそくやってみますと、いろいろ返される情報の中で、tag要素を確認すればよいようです。tag要素は、タグの数に応じて複数返されます。
<tag id="46298786-4771032717-58571898" author="463900000000" raw="place:新治市民の森" machine_tag="0">place新治市民の森</tag>
ここで、raw属性を見ると、コロンを含む、指定したものがそのまま入っていることに気づきます。また、tag要素の値としては、コロンが取り去られた、内部的な形式になっていることも気付きます。
指定したタグをそのまま取得したければ、taw属性にアクセスすればよさそうです。ということで、プログラム的には、タグから写真の意味などを取得しやすくなりました。