org-modeとblosxomでのサイト構築、あるいはorg-modeのススメ
個人的には文書書くのは markdown-mode
+ outline-minor-mode
で満足していたし、org-mode に手を出す気はあまりしてなかったのだけど、
Emacs界隈の情報を見ているとやっぱり便利そうなので、バージョン8.0が出る頃に試しに使ってみた。
そうしたら思った以上に便利で、結局今では、日々のメモ、原稿執筆、タスク管理など、いろいろなことをorg-modeでやるようになってしまった。
最初、org-modeに手を出しにくかった(出したくなかった)大きな理由は、編集環境がほぼEmacsだけに限られてしまうということがあった。 しかしこれは org-mode を使ってみると、org-mode があまりに高機能なので、他の環境に移植するのがつらいからだ、ということが分かった。
org-modeで文章を書く
org-modeにはいろいろな機能・使い方があり、詳しくはinfoなりウェブ上の情報などを見て欲しいが、 単純に文章を書く環境として良くできているので、ここではそれにしぼって紹介したい。
アウトライン機能を簡単に使える
Emacsで outline-mode
を使ってみたことがある人は、あの操作の複雑さにうんざりした人も多いと思う。
org-mode もアウトライン操作用にいろいろなキーがあるが、
とりあえず最小限、 TAB
と S-TAB
さえ覚えればなんとかなるようになっているのが良い。
これらはアウトライン展開のサイクルコマンドで、何回か押すことでアウトラインを折り畳んだり展開したりできる。 Shiftありなしの違いは、Shiftありだとアウトライン全体に影響、そうでないときはカーソルのある部分にだけ影響するという違い。
コードブロックの編集が素晴しい!
org-modeでは
(setq org-src-fontify-natively t)
と設定することで、以下のようにバッファ内のコードブロックを、 そのコード用のモードと同じ色でハイライト表示することができる。
さらに、カーソルをコード部分にあわせ、 C-c ' するとそのコードを対象の言語モードで編集できるバッファが立ちあがる。
これがとても便利。 これがあるだけで、技術系の人はorg-modeで文章を書く理由になるかもしれない。
なお、なんか #+BEGIN_SRC
とか書くのめんどそう…、と思うかもしれないが、
これは easy template 機能によって、 <s
と書いてTABを押せば補完されるようになっている!
対応できる文書要素が多い
これは僕が今まで使っていたMarkdownとの比較でしかないが、
- コードブロックへの言語指定
- コード、画像、引用などの各種ブロックへのCAPTIONなどのメタ情報の指定
- テーブル
- 定義リスト
- 脚注
など、文章を書くにあたって必要な要素はたいてい揃っている。
エクスポーターがわりと簡単に書ける
バージョン8.0以降で、org-modeの文章を他の形式に変換するエクスポーターがわりと簡単に定義できるようになった。
このサイトでは、 ox-blosxom というのを適当に作って使っている。
また、原稿執筆用に、 ox-inao というのも作成している。 これはMarkdown版の md2inao が有名だが、Markdownはブロックの見出しや脚注などに対応していないので、 それらに無理矢理対応している感じがある。一方、org-modeの場合はそれらにもナチュラルに対応できるので、 より自然な感じで、楽に文章を書けると思う。
このサイトの構成
ox-blosxom で .txt ファイルをエクスポートし、それを blosxom で表示している。 blosxomの設定は https://github.com/typester/unknownplace.org/tree/blosxom にある。
blosxomはだいぶ古いCGIスクリプトなので、octopress などを使おうかと思ったのだが、 HTMLのレンダリングは org-mode でやってしまうので、それをそのまま表示する blosxom が相性が良いとおもったので、blosxomを久しぶりに使うことにした。
上記repoにはpsgiファイルをいれてあるので、
BLOSXOM_CONFIG_FILE=$PWD/config.pl plackup
こんな感じのコマンドで動作させることができる。
サイト更新手順
org-publishの設定は以下のような感じで:
(setq org-publish-project-alist
'(("blosxom"
:base-directory "~/Dropbox/org/public/"
:base-extension "org"
:publishing-directory "~/Dropbox/blosxom/"
:publishing-function org-blosxom-publish-to-txt
:recursive t)))
これで、 C-c C-e P a
すれば ~/Dropbox/org/public/
以下の .org ファイルが全て、 ~/Dropbox/blosxom
以下に
.txt ファイルとしてエクスポートされる。
それはDropbox管理なので自動でサーバに転送され、blosxomで表示できるようになる、という仕組み。
手元ではorg-modeでのpublishコマンドを叩くだけでいいので非常にお手軽である。[1]
まとめ
org-mode、とてもおすすめです。