次期 WordPress に実装される、投稿の履歴機能がどうなっているのか気になってちらっとみてみました。 これは、投稿したあとの修正が履歴となって残り、その差分比較ができるという機能です。 とりあえず、UI からみていきましょう。
投稿の編集画面の最下部に post revisions 項目が追加になっています。
これは投稿の修正ごとに増えていきます。 これをクリックすると新設された、Compare Revisions 画面に遷移して、下で比較するリビジョンを選択して、上でその diff をみれるようです。
なかなか面白い機能ですね。
ぼくは CMS 系のアプリケーションの本当の意味でのコアというのは、こういったデータの持ち方だと思っていて、コンテンツをどういう観点で整理してタンキングしていくか、という部分がそれぞれの CMS の特色だと思います。
WordPress の場合は、もともとブログシステムなので時系列につよい特色があります。 それに付随して記事に対してのメタ情報、タグであるとか階層をもてるカテゴリであるとか、記事に対してシステムユーザ管轄ではない情報をあたえるコメントであるとかという機能が使えます。
wiki 系なんかはあまり時系列にはつよくないですが、履歴がもてたり、ユーザ管理につよかったり、ワークフローをもっていたりします。 今回 WordPress は履歴の機能をもつことになり、簡易的なワークフローである pending 機能とあわせて、ユーザ同士の文書のやりとりを行う意図もあるのかなーと思ったのが第一印象です。
CMS の設計ってこの辺が一番面白いんですよね。 🙂
さて、この履歴機能の実装ってどーなってるんだろーっとおもってぱらっとテーブルをみてみました。 予測するにトランザクション用のテーブルがひとつふえてる!
[tegaki]・・・ふえてない![/tegaki]
てなわけで、ぜんぶ wp_posts にもたせたようです。 いままで、wp_posts は直近の投稿内容をもつテーブルでしたが、今回からある意味トランザクションテーブルにかわります。 じゃー、主キーはどーなるの? って話ですが、 ID のままです。
そう、履歴がとられるごとに ID ふえるんですね。 でもって、post_name ってページスラッグ名をいれるところに、履歴レコードの場合の親記事ID とリビジョン文字列をいれるという、かなり強引な下位互換を考えた実装になっています。 😛
でさー、ぼくは全然気にしないのですが、パーマリンクの ID の歯抜けを気にする方はちょっとあれかもですね。。過去記事の修正ごとにレコードできるので、その場合は新規投稿は番号抜けします。 あと、これは微々たるものですが wp_posts の容量の増加量も増えます。
テーブル増やして、機能の使う有無を選択できるようにしてくれればよかったのになーと思いましたがはたしてみんなの評判はどうか。 気になるところであります。
# 時間無くてぱっとみで、ソースまで追えなかったのですが、この機能、きれないよね?
