以前、既存のカテゴリー分けに左右されず、「重要な記事の一覧」のようなカテゴリーが実現できないか考えたことがあった。
あのときは rNote の投稿記事ファイルの取り扱いに、シンボリックリンクのような機構を追加することで、新規に追加した「重要な記事の一覧」カテゴリーから既存カテゴリーの記事を参照するような構造で実現しようと考えた。
その後考え方がより一般化されて、記事本体に、その記事の属性を表す文字列の集合を保持するタグを追加しておき、その属性とカテゴリーの対応表を作ってやり、本体はその対応に応じてカテゴリーごとの記事への閲覧機能を提供するようにすればよいのではないかと考えた。
例えば:
・ある投稿記事の属性キータグの内容:漫画,美少女,パンヤ,ゲーム
・blogのもつカテゴリー:漫画、ゲーム、健康、アウトドア
・カテゴリーごとの、閲覧対象となる属性:漫画=漫画、ゲーム=ゲーム,パンヤ、健康=健康,健康法,体操,薬、アウトドア=アウトドア
だった場合は、その blog の漫画カテゴリーおよびゲームカテゴリにて、その記事が閲覧可能となる…という寸法だ。
そこまで考えて、そこで放置した。というのも、それはまさに DB の導入がうってつけの事例だと気づいたからだ。記事ごとの属性文字列を DB で管理し SQL で検索する形になろう。rNote は DB を使っていないので、これの実現は保留した。(しかし最近、 DB 無しでも静的にキャッシュ生成するときに同等の処理をしてやれば実現できるんだろうなと思いつつ…。実現するといいなぁ。)
前置きが長くなったが今回は、 blog 自体の記事属性ごとのカテゴライズの話ではなく、外部に記事の情報を伝えるためのカテゴライズに、同じ考えが応用できると気づいたという話だ。
ちょうどタイミングよく、亜細亜ノ蛾さんの「ブログの記事にタグを付ける利点と方法」を発見した。どうやら、同じようなことはみな考えるらしい。
同記事を参考に、Technorati の Technorati: Tags に対応するように実装内容を考えてみた。
・記事にタグ <Keys></Keys> を追加する。
・同タグの内容は、タグの埋め込まれた記事のもつ属性を表す文字列の集合とする。区切り文字は半角のカンマ ( ',' ) とする。
・rNote 本体は、投稿記事の表示にあたって、同タグに列挙された属性の数だけ、 Technorati: Tags 形式のタグに順番に置き換える。
本体に手を入れないようにスキンでとりあえず実装したみた。(抜粋)
<div class="text">
<%=$Text%>
</div>
<%=$WriteBack%>
<if def_tag="Keys">
<div class="keys">
この記事の属性キー
<?php
$string = '<%=$Keys%>';
$tkn = strtok($string,",");
while($tkn) {
print "[ <a href=\"http://technorati.com/tags/".$tkn."\" rel=\"tag\">".$tkn."</a> ]";
$tkn = strtok(",");
}
?>
</div>
</if>
</div>
しかしこのままでは、属性が複数の場合に対応できない。スキンの中に php を書いて実現できそうだが方法がまだわからないのでいったん保留。やり方は他にもあるかも知れない。rinn@rNote 掲示板で php 内の変数に記事のタグの値を受け渡すやり方を教えていただけたので、上のスキンの記述を修正してあります。これで複数キー列挙に対応できました。(感謝~)
自分がどのようなカテゴリーの情報を発信しているかを相手に適切に伝えるというのは確かに有効な手段だと思う。ただ、その仕組みは標準化されていないようだから Technorati の実装だけでなく色々出てくるものに対応できるように…と考えると、やはり上で考えたように「属性キー」という上位のレベルで情報を保持しておき、下位の個々の実装に対する仕組みは適宜追加・置換して組み込んでやれる体勢にしておくのが良さげな気がした。
- 1: sabakan (06/25 22:32)
- どうも、はじめまして。
鯖Memoの運営をしているsabakanです。
コメント有難う御座いました。
御言葉に甘えて冬星さんのアイディアを流用させて戴きました :-) - 2: 冬星 (06/27 05:30)
- こちらこそありがたく。逆に参考にさせて頂く事も。
1エントリーが複数属性を主張するのは私的には大いに有りだと思いますが、Technoratiで1エントリーが複数のタグをもつことを考慮しているかイマイチわからずです。複数タグを埋めた記事の更新ping打ったら1個目のタグだけエントリーされるのかも知れませんが…。