いまここで全力でTrackBackに取り組んで良いものか分かりませんが、ともかく取りかかります。
作業を始めるにあたって作成したTrackBack実装メモを公開してみます。これは、あくまで作業を行うためのメモなので、本来なら公開しないものです。また、公開しても、あまり意味のないものと言えます。
かなりの作業量になりそうな…… §
TrackBackは小さな仕様なので、一見容易に実装できるかのように思えます。しかし、それは正しい認識ではありません。実際にはTrackBackをきちんと運用するには、かなりの機能を付けねばなりません。RSS対応とは作業量が桁違いに多いものになります。
それにしても、実際にリストを作成してみると、とても多いですね。
大多数の人には意味が分からない項目も多いと思いますが、以下がそのリストです。
TrackBack実装メモ §
●TrackBackの受信
・トラックバック情報の記録ディレクトリを確保
・トラックバック情報読み書きクラス
・トラックバック情報を受信して記録するページの作成
・トラックバックを受信するUIページの作成
・トラックバック情報管理クラス(キャッシュ機能付き)
・ユーザートラックバック一覧確認UI
・管理者トラックバック一覧確認UI
・管理者トラックバック削除UI
・IPBanListリストの記録ディレクトリを確保
・IPBanListリストを管理するクラス
・IPBanListリスト、表示UI
・IPBanListリスト、追加UI
・IPBanListリスト、削除UI
・IPBanListリストのIPからのTrackBackは受理しない
・空のTrackBackは受理しない
・自サイトのURLをHTML中に含んでないページからのTrackBackは受理しない
・TrackBack受信通知を管理者に送る。拒絶したTrackBackの情報も送る
●TrackBackの送信
・コンテンツ作成ページから書き込みを選ぶと、トラックバック送信を行う
・コンテンツ自身が、あるコンテンツが既に送信したTrackBackを保存する
・コンテンツ自身が、入力されたが未送信のTrackBackを保存する
・既に送信したTrackBackのリストを表示するUI
・既に送信したTrackBack URLにもう一度TrackBackしようとした場合は、確認を求める
・AdminWriteにTrackBack URLの入力フィールドを追加
(・リンク先URLの内容を調べて、トラックバック Ping URL の自動検知を行う機能はこの段階では取り入れない)
ご意見歓迎 §
このリストに関する意見は歓迎です。こんな機能があるべきだ、これは要らない、といった意見はぜひお寄せ下さい。
プログラム開発手順的な補足説明 §
このリストは、テスト駆動開発(書籍、テスト駆動開発入門の感想文)のToDoリストにそのまま対応して使われるべきものです。
このリストを作成した段階から、コーディングを開始することになります。こんな大ざっぱなリストだけで、きちんと設計しないで書き始めるのは問題だと思う人がいるかもしれませんが、これはそれなりの知の蓄積の上で採用された方法です。つまり、どれほど必死に詳細で美しい仕様を作成したとしても、それがその通りに実現できるとは限らないと言うことです。あとから、判明した様々なことによって、どんどんプログラムの構造が変わっていくとしたら、詳細まで設計する手間は無駄ということになります。実際、TrackBackのような未知の新しい技術に対応する場合、事前に全てを把握し、見通してから設計することはほとんど不可能でしょう。見通せていない技術を扱うプログラムを、詳細まで設計するのは、賢い選択とは思えません。やはり、最初から詳細な設計は行わず、その代わりに、コーディングしながらプログラムを改善していく手順に関する知というものを活用することになります。
さて、詳細な設計はしない方が良い、と言っても何も考えないで、すぐにコーディングに取りかかるのも上手く行きません。どうしても、無駄が多くなるし、見落としも出ます。事前に、いったい何を作るべきかをじっくり考える必要があります。その結果が、ここに書いたようなリストになります。少なくとも、これぐらいは事前に考えておく必要があると思います。しかし、このリストも、必要に応じて、どんどん書き換えられていく性質のものです。リストがどんどん変化していくということは、プログラムが柔軟に変化していくということを意味します。それは、常に変化し続ける世の中に適応するために要求される必須の条件とも言えると思います。