日記の公開を遅延する機能 | tech - 氾濫原 この機能を実装してみたので、徐々に使ってみる。

実装的には結構やることがあって面倒だった。今までエントリごとの status みたいなものを作ってこなくて、全て public 前提の設計だった。まずそこから直して、status カラムを追加し、public scheduled private をとるようにした。遅延投稿では scheduled を使う。

加えて publish_at カラムを追加し、公開時刻を設定できるようにした。ただ、この用途だと特に厳密に公開する必要はないので、デイリーのバッチで status = scheduled かつ publish_at が過去なエントリを対象に公開処理を行い、エントリ更新処理を走らせることとした。

裏側で結構ややこしいキャッシュをしているのと、自分には常にエントリが見えるようにしたかったので、若干実装に不安がある。

とりあえず、新しいことはじめようと思って別ブログ(非公開モード)を作ってしまったはてなブログから記事をインポートするところからかなあ。はてなブログはAPIないと思って、管理画面の JSON 読んだりしたけど、ググってみたら普通に AtomPub の API があるっぽい。(はてなブログにはエクスポート機能もあるけど、MT形式で HTML に変換済みのものが出てくる。はてな記法のままインポートしたいのでエクスポート機能はつかわない)