はてなダイアリーの記事をgithubでバージョン管理する。
github や code repos のような公開リポジトリを使って、ブログに履歴管理機能を追加できるのではないかと考えた。この記事では、はてなダイアリーの記事をgithubでバージョン管理する方法を検討する。また、ブログ記事の履歴を公開するメリットについて考える。
この記事の履歴は、以下で参照できる。
これまでにやったこと
- はてなダイアリーライター(はてダラ)にローダー(はてダロ)を加えてgithubに上げた。
- Text::HatenaとWEBrickでプレビューサーバを実装した。
- Rakeで更新環境を作った。
- 最近書いた記事をgithubに上げた。
はてダラ+はてダロ
外部ファイルではてなダイアリーを更新する、既存の素敵ツールがあるので使う。
ライターとローダーは両方使いたい。でないとブラウザから更新したときに困る。が、ローダの方はログイン処理が古くて動かなかった。コードが基本は一緒だったので、一つにまとめた。
インストール手順
素のhw.plを使うこともできるが、Rakeでもうちょっと便利な環境を作った。
のDownloadボタンでtgzかzipをダウンロード。適当なディレクトリに展開し、
$ rake init
で初期化。生成されたconfig.txtを編集する。通常はIDのみ書き換えればよい。
$ rake load@2009-07-01
として、text以下にファイルをダウンロードできればインストール完了。@の後ろには、公開済みの日記の日付を指定する。
ディレクトリ構成
- hw.pl …… はてなダイアリーライター(+ローダ版)
- Rakefile
- config.yml …… 設定ファイル。rake initで生成。
- cookie.txt …… クッキーファイル。rake initで生成。
- text/ …… データディレクトリ。rake initで生成。.この中をgithubで管理する。
config.yml、cookie.txt、textは.gitignoreに設定されているので、hatenadiary-writer をフォークして使うこともできる。
プレビューサーバ
rake server rake server@ポート番号
でプレビューサーバが起動する。デフォルトでは8080で起動。
サーバはWEBrick。はてな記法のパーサには、Text::Hatenaを使わせてもらった。というかText::Hatenaがあったから作った。
プレビューは以下のような感じ。意外と役に立ってる。
リンクにtitle:bookmarkがそのまま付いてしまうのが問題。リンク記法が認識されてない。あとで検討。
Rakeタスク
$ rake load@2009-06-30 $ rake load@20090630 $ rake load@./text/2009-06-30-foobar.txt
2009-06-30の記事を./text/2009-06-30.txtに保存する。@の後ろはTime.parseできるものなら何でもよい。
$ rake update
$ rake release
通常更新。
$ rake status
更新対象のファイルを表示。
$ rake diff
更新対象のファイルと、公開されている日記のdiffを表示。
$ rake diff@2009-07-01 $ rake diff@20090701 $ rake diff@./text/2009-07-01-foobar.txt
2009-07-01*.txtと公開されている2009-07-01の日記のdiffを表示。
動機
最近書いた、
- JavaScript正規表現メモ。 - こせきの技術日記
- 実行中のアプリケーションを外から観察するコマンド。 - こせきの技術日記
- 地雷だらけのrsyncを理解する。 - こせきの技術日記
- mod_rewriteの考え方。 - こせきの技術日記
などの記事は、次のことを意識しながら書いていた。
- ストックテキストとして書く。
- 書きかけで公開し、反応を見ながら更新する。
- 余計なことを書かない。自分で理解できるギリギリの記述で十分。YAGNI
上の記事は、思ったよりも評判が良かったので、この方法が向いているかもしれない。心の中でこれをイテレーティブ・ブログライティングと呼んでいる(カッコイイ)。
ストックテキスト
ストックとフローについては以下参照。
- Oblivion? Oblivion!
- 記憶に残っているのはid:jounoさんのこの記事。2003年。懐かしい。
- mojix氏の「Blogはフロー。Wikiはストック」という話に納得してブックマークしている人が多いのにビックリした - import otsune from Hatena
- 歴史
- 情報のストックとフロー - 準二級.jp
- 最近また話題に。
ブログに特別なインタフェースが無くても、ストック型のコンテンツを混ぜ込むことはできる。長いスパンで参照されるつもりで書き、同じ記事をメンテナンスし続ければいい。
ただ、記事の更新履歴を残せないのが難点だ。ストックテキストには、いちいち(追記)などと書きたくない。Wikiを更新するように更新したい。
はてなが記事のバージョン管理までしてくれる可能性は無いだろうなあ、などと思っていたのだが、今の世界には github があった。外部のリポジトリでバージョン管理すればいい。
アルファ版を公開する
公開しないとモチベーションが上がらない。意識して書きかけを公開するようにした。
(自分が書くような記事ではなく)本当に重要なドキュメントなら、パッチを送ってもらってドキュメントを更新してもいい。半Wiki的に。
動機まとめ
ブログの記事も、ソフトウェアの開発と同じようにイテレーティブに開発し、バージョン管理するといいことがあると思う。
TODO
実装済み
- diff。何が更新されるかわからないと不安なので。
- 実装した。hw.pl -D日付 で手元のtxtと上がってる日記のdiffを表示。
- rake statusで、touch.txt以降に更新されたファイルを一覧表示するようにした。diffよりこっちをよく使うかも。
- ファイル名を日付+名前にしたい。2009-06-29-HatenaGithub.txtとか。
- 実装した。