nDiary は、Web上で日記を書く際に、各日付毎に定型的なタグをつけたり、過去の日記を月別のファイルへコピーするなどの面倒で、且つ、まちがいを起こしやすいルーチンワークを自動化することにより、日記執筆の支援をおこなうスクリプトです。
1日1つの日記を書いたテキストファイルを用意すると、タグをつけ、それらを連結して、月別のファイルと最近数日分の日記をまとめたファイルを静的に作成します。
基本コンセプトとして、普通のテキストファイルとして読んでもなるべく違和感のないファイルを解析して html にするというものがあります。自分自身が手軽に Web日記を書くことを目的として作成したため、高機能なものは目指しておらず、ちょっとだけ楽をしようという程度のものです。
現在以下のような機能が実装されています
Ruby version 1.6 以降 (動作試験は、Windows2000 + Cygwin版 Ruby version 1.6.2 でおこなっています)
nDiary は Ruby というスクリプト言語で記述されています。そのため、使用するには Ruby が稼働する環境が必要となります。
Ruby は、Ruby公式ホームページから入手できます。Windowsユーザの方は、こちらなどでバイナリが入手できます。また、初めて Ruby を導入される方は、インストーラ付きのバイナリ がおすすめです。
はじめて nDiary を導入される方は、有里さんの nDiary導入用覚え書き が大変参考になりますので、ご一読をおすすめします。
ndiary.conf の設定を各自の環境に合わせて書き換えます。
ndiary.conf は、sample.ndiary.conf を ndiary.conf にリネームして使用してください。
最低限設定が必要な項目は、以下のものです。
LOG_DIRECTORY、OUTPUT_DIRECTORY に設定したディレクトリは忘れずに作成しておきましょう。それ以外の項目については、ndiary.conf のコメントを見て適宜書き換えてください。
ndiary.conf は diary、ndiary-lib.rb と同じディレクトリに作成する必要があります。ただし、~/.ndiaryrc が存在する場合は、そちらが優先されます。
雛形ファイルは、日記のベースとなる html ファイルで、雛形ファイル内のコメントタグが nDiary により置換され出力されます。
最近の日記を数日分まとめたファイルと月別のファイルの 2種類の雛形ファイルを用意する必要があります。
<!--body--> というコメントは、日記本文に置換されます。最低限、これだけは雛形ファイル内に含めるようにしてください。
<!--plug=プラグイン名?opt1=val1--> というコメントは、後述する Plug-in が起動されます。
雛形ファイルに
<!--plug=プラグイン名?opt1=val1?opt2=val2-->
というコメントタグを埋め込むことにより、Plug-in を起動します。Plug-in は、埋め込まれたコメントタグの部分を別の文字列に置き換えたり、別のファイルを書き換えたりなど様々な動作を行います。各プラグインの機能は、それぞれのファイルの冒頭ののコメント部分を参照してください。
動作としては、plug= で指定されたプラグイン名に拡張子 .rb を付与した ruby script を読み込み、実行します。その際、「?」以降がオプションとして Plug-in に渡されます。
例えば、
<!--plug=monthindex?title=過去の日記?style=simple-->
というコメントを埋め込むと、monthindex.rb が読み込まれ、オプションとして、「title=過去の日記」「style=simple」が Plug-in に渡されます。
Plug-in は script/plugin ディレクトリに置いておきます。
ndiary.conf に
TOPIC = hoge.html
という行を設定すると、後述する「トピック」を抽出してまとめた「トピック一覧」を記載した html を作成します。
上記のようにファイル名を指定すると、そのファイル名で「トピック一覧」を作成します。
LOG_DIRECTORY で指定したディレクトリにそのファイル名で雛形ファイルを用意するとOUTPUT_DIRECTORY で指定したディレクトリに出力します。
「トピック一覧」は、TOPIC = という行を複数記述することにより、その数だけ作成することができます。その際、ファイル名の後ろにタブで区切って抽出するトピックの条件を指定することもできます。
TOPIC = topics.html
TOPIC = shopping.html 買
TOPIC = books.html 読書|本
この例では、全トピックを記載した topics.html 、「買」という文字を含んだトピックを抽出した shopping.html、「読書」または「本」という文字列を含んだトピックを抽出した books.html を作成します。また、正規表現に関する知識がある場合は、より細かい指定ができます。その方法については ndiary.conf の末尾のコメントを参照して下さい。
ndiary.conf の LOG_DIRECTORY で設定したディレクトリか、もしくは、それより下層のディレクトリに yyyymmdd.diary という日記の原稿となるファイル(以下 diaryファイル)を作成します。yyyyは年、mmは月、ddは日です。つまりは、1999年4月18日の日記は、19990418.diary というファイルになります。
再帰的に下層のディレクトリを検索するので、年や月ごとにディレクトリを分けることもできます。
diaryファイルは、以下のように解析され、html に変換されます。
空行で区切られた文章を一つのブロックとして、そのブロックの形態に応じてタグをつけていきます。文章の中でのタグの使用は自由ですが、ブロック毎に自動的にタグが付加されますので、自分の思った通りの表示がされない場合があります。その場合は、「<<」を使ってください。
各ブロックは次のような順序で評価され、html に変換されます。こちらに作者が実際に記述しているdiaryファイルがありますので、参考にしてください。
脚注は「ほげほげ(*脚注)」と記述した場合は「(*」と「)」で囲まれた部分が、「ほげほげ((-脚注-))」と記述した場合は「((-」と「-))」で囲まれた部分が、その日の最後の部分に自動的に挿入されます。
作成した日記本文に対して置換を行う仕組みとしてフィルタが用意されています。現在、直接タグを書かなくてもリンク、強調、ルビなどを使用できるものや ISBN を記述することによって各オンライン書店へのリンクを自動的に作成するものなどが用意されています。
使用するためには ndiary.conf に
FILTER = 'inlinedecorate'
FILTER = 'bookstore'
というように使用するフィルタの数だけ記入します。各フィルタの機能、使用法については script/filter ディレクトリの各フィルタファイルを参照してください。
diaryファイルを作成したら、html への変換を行うため、スクリプトを起動します。このときオプションの指定により動作が変わります。
また、第一引数として 拡張子が .conf なファイルを指定するとそのファイルを ndiary.conf の代わりの設定ファイルとして使用してスクリプトを実行します。
nDiary を使用していただいている方々です。(2001-02-12現在)
リンクされて迷惑だという方がいらっしゃいましたら、ご連絡ください。