faviconについて調べてみた
faviconについてあれこれ調べたのでメモの断片を置いておきます。
faviconとは何か
概要や歴史はFavicon - Wikipediaが参考になります。
実際にどのように使われているか、どのように設定すべきかはRealFaviconGeneratorというサイトのFAQページによくまとまっています。 これを参考にして日本語で解説しているblogもあります。
faviconの優先順位
公式な仕様はなく、主要なブラウザが独自の仕様を持っている模様。 基本的にはhead要素内にlink要素として宣言されているので、rel属性を見てfaviconっぽいものを取得すればOK。
ひとつも見つからなかった場合はfallbackとしてルートディレクトリにfavicon.icoがないかどうかチェックするのが定石です。
複数取得できたときにどのfaviconを使うか、は用途次第なので、各ブラウザが独自に決めているようです。
faviconを作る
faviconの作成サービスはたくさんあります。前述のRealFaviconGeneratorもその一つ。 他にも日本語だと様々なファビコンを一括生成。favicon generatorなども。
バリエーションにどこまで対応しているかはサービスによって異なるのでニーズに合わせて選びましょう。とりあえず作りたい、レベルならどれを選んでも大差なさそう。
faviconを取得する
API形式でfavicon取得のサービスを提供しているところがいくつかあります。quota(=取得回数制限)ありのフリーミアム形式が主流のようです。
16x16のfavicon.icoだけがターゲットならGoogleの非公式APIが使えます。
http://s2.googleusercontent.com/s2/favicons?domain_url=http://domain.com
のように、パラメータに取得したいサイトのURLを指定するとfaviconが返ってきます。非公式ですし、いつ使えなくなるか分かりませんが手軽です。
また、各言語向けの取得ライブラリも探せば見つかります。GitHubとかで探しましょう。
自分がよく使う言語はJavaなので、試しにJavaで探してみました。ぱっと見つかったのはこれ一つ。ちょっと古くてメンテが行き届いていないっぽいのが難点です。
どのライブラリも割とシンプルな作りなので、それらを参考に自前で書くのもアリかと。
おススメ