細川 達己
Tatsumi Hosokawa
<hosokawa@FromTo.Cc>
この dcdiary の最新版は、以下の場所から入手可能です。
http://FromTo.Cc/hosokawa/software/dcdiary/latest.html
dcdiary は、デジカメで撮った写真を日毎にまとめ、あとはコメントを入れる だけの HTML 形式にしてくれるスクリプトです。 また、dcdiary 0.2 からは、 サンヨーの DSC-X110 などの、 音声、動画機能にも対応しました (この機能のドキュメントは、 まだ不十分です)。 0.3 からは DCF に対応しています。
このプログラムの動作環境は、UNIX システムです。筆者は FreeBSD 5.0-CURRENT で使用しています。デジカメは Sanyo DSC-SX560 を使用していますが、 おそらく DCF 対応の他のデジカメにも使用することができるでしょう。
デジカメは以下の条件を満たす必要があります。
これ以外のデジカメの場合は、プログラムの書き換えが必要となるでしょう。 もしパッチを作られた方は、ぜひ作者 (hosokawa@FromTo.Cc) の 方まで送ってください。
このプログラムには以下の機能があります。
デジカメで撮ったデータの入ったコンパクトフラッシュ、あるいはスマートメ ディアからハードディスクにコピーをする。この際、ファイル名を、デジカメ のつけたファイル名から、撮影時刻を含んだ独自のファイル名に変換します。
a | 1998 年を起点として、a, b, c, d, ... と、年を意味する |
1106 | 11 月 6 日 |
213424 | 21 時 34 分 24 秒 |
なお、このファイル名のポリシには 1 秒の精度しかありません。もしかした ら、非常に高速撮影が可能なデジカメで撮影した場合、1 秒に複数枚の撮影が できてしまうかもしれません。そのような場合は、上記ファイル名の basename (.jpg を省いた部分) の末尾に、元のファイル名を ASCII コードで 昇順ソートした順番に -?? (?? は 2 桁の数字) がつきます。これで、1 秒に 100 枚までの高速撮影にも対応できます。
この機能を利用するには、(正しく設定されていさえすれば)
% dcdiary get
と実行するだけです。もし、フラッシュメモリを自分のユーザでマウントでき ない場合は、sudo を使ってマウントします。sudo の設定がきちんとされてい れば、パスワードを訊いてきますので、ここで自分のパスワードを打つと自動 的にフラッシュメモリがマウントされ、get の処理がなされたあとでアンマウ ントされます。
なお、タイムゾーンをディレクトリ内の TZ というファイルで設定できます。 カメラの時刻は自分の本拠地のローカルタイムに固定した状態にしてください。 TZ ファイルに「+08」や「-10」のように書き込むことで、 自動的に日付の判別にタイムゾーンを考慮してくれます。
get 機能でとってきたファイルを、HTML ファイルと画像ファイル群、サムネー ル画像ファイル群に変換します。この画質や画像の大きさは、設定ファイルで 変更できます。その際、ターゲットのディレクトリは以下のフォーマットを満 たしている必要があります。
yyyy | 年 (必ず数字 4 桁) |
mm | 月 (必ず数字 2 桁) |
dd | 日 (必ず数字 2 桁) |
title | タイトル (何桁でも良い) |
なお、デフォルトの設定では、title の末尾についた数字は、HTML 作成時に は無視されます。これは、一日が複数ページに跨る際、dcdiary.conf での $titles パラメータによる自動的 タイトル変換機能を実用的にするためです。この機能は、dcdiary.conf の $strip_digits パラメータで抑制で きます。
たとえば、1998 年 11 月 6 日 の日記で home がタイトルなら、
% mkdir 19981106-home % dcdiary conv 19981106-home
とすると、この変換が行われます。引数には処理対象のディレクトリを並べる ことができるので、
% dcdiary conv 1998110[6-9]-*
のように、複数の日の内容を一挙に変換することができます。
ガンマ補正による露出の補正や横長から縦長への画像の向きの変更などを、バッ チ的に一気に行うことができます。この処理の指定は、画像ファイルを参照し ている行の先頭に、特定の記号を書き込むことで行います。
conv 機能で生成された HTML ファイル中では、画像ファイルの参照は、以下 のような行で構成されています。
<A HREF="a1106225830m.jpg" CLASS=THU><IMG SRC="a1105225830t.jpg" \ WIDTH=80 HEIGHT=60 ALT="80x60 thumbnail image"></A> <A HREF="a1106225840m.jpg" CLASS=THU><IMG SRC="a1105225840t.jpg" \ WIDTH=80 HEIGHT=60 ALT="80x60 thumbnail image"></A> <A HREF="a1106225914m.jpg" CLASS=THU><IMG SRC="a1105225914t.jpg" \ WIDTH=80 HEIGHT=60 ALT="80x60 thumbnail image"></A>
ここでは、3 枚の画像への参照が含まれています。ここで、最初の写真を反時 計回り (左回り) に 90 度回転し、縦長の画像に、次の写真をもう少し明るく 露出補正、最後の写真は以上二つの処理をどちらも加える場合、上の部分の行 の先頭に次のように書き加えます。
l<A HREF="a1106225830m.jpg" CLASS=THU><IMG SRC="a1105225830t.jpg" \ WIDTH=80 HEIGHT=60 ALT="80x60 thumbnail image"></A> b<A HREF="a1106225840m.jpg" CLASS=THU><IMG SRC="a1105225840t.jpg" \ WIDTH=80 HEIGHT=60 ALT="80x60 thumbnail image"></A> lb<A HREF="a1106225914m.jpg" CLASS=THU><IMG SRC="a1105225914t.jpg" \ WIDTH=80 HEIGHT=60 ALT="80x60 thumbnail image"></A>
これらの記号は、当然、画像の左にすぐ表示されるので、ブラウザから再読み 込みすれば、間違った写真に指定を行っていないかどうかを、一目で確認でき ます。
こうして準備が済んだら、
% dcdiary adj 19981106-home
とすると、先ほどの画像操作が一気に加えられます。なお、デジカメから get
したまま、縮小も何もしていないファイル群が、まだ dcdiary.conf の $dcimagesdir
で指定
したディレクトリ (デフォルトではホームディレクトリの下の images/original/) に残っている場合は、画質優先の
観点から、変換済みのファイルではなく、変換前のファイルを使用してもう一
度縮小画像を作り直します。
この <A HREF>...</A>
の先頭につける文字は、正
規表現で表わせば、
(l|r|)(bb|b|d|dd|)
の文法を満たす必要があります。これらはそれぞれ以下の機能に対応します。
bb, b, d, dd でどれほどガンマ補正を行うかというパラメータは、dcdiary.conf の $bbgamma, $bgamma, $dgamma, $ddgamma で調整可能です。
なお、変換を行うと、HTML ファイルは、
<A HREF="a1106225830m.jpg" CLASS=THU><IMG SRC="a1105225830t.jpg" \ WIDTH=60 HEIGHT=80 ALT="60x80 thumbnail image"></A> <A HREF="a1106225840m.jpg" CLASS=THU><IMG SRC="a1105225840t.jpg" \ WIDTH=80 HEIGHT=60 ALT="80x60 thumbnail image"></A> <A HREF="a1106225914m.jpg" CLASS=THU><IMG SRC="a1105225914t.jpg" \ WIDTH=60 HEIGHT=80 ALT="60x80 thumbnail image"></A>
と、先頭の記号は自動的に除去されます。また、IMG 中の WIDTH, HEIGHT は、 自動的に置き換えられます。
Netscape の一部のバージョンなどでは、ここで file: で参照を行っている時 点で再読み込みを行っても、うまくサムネールのイメージを更新して表示して くれない場合があるようです。変換はうまくできているはずですので、index.html を reload したあと、画像をクリックし て大きい方の画像を表示させ、それを reload して、実際の効果を確認してく ださい。
conv 機能で変換を行うと、ターゲットのディレクトリに index.html という HTML ファイルが出来るので、こ
れを適当なエディタで編集します。その際、画像への参照 (<A
HREF="..."><IMG SRC="..."></A>
) を削除すると、そ
のページからは参照されていない画像ファイルになってしまうので、ディスク
容量の無駄です。clean 機能は、このような参照されていない画像ファイルを
探し出して消去します。
先ほどの日の日記を掃除したい場合は、
% dcdiary clean 19981106-home
とすることで、参照されていない画像ファイルは消去されます。
conv 機能の変換は、それなりに多くの時間がかかります。そこで、すでにで きたディレクトリを複製する機能がついています。たとえば、ディレクトリ 19981201-mita の内容を 19981201-mita2 に複製するには、以下のように実行 します。
% dcdiary dup 19981201-mita 19981201-mita2
なお、この複製において、各画像ファイルは、コピーではなくハードリンクで 複製されます。これによって、ディスク容量を節約することが可能で、かつシ ンボリックリンクのように clean 機能との相性に問題が生じたりすることも ありません。
FreeBSD におけるインストールは、このパッケージを展開し、できたディレク トリに移動して、
% make install
するだけです。なお、このプログラムの動作には以下のプログラムが必要です。
プログラムの名称 | FreeBSD での ports 名 |
---|---|
netpbm | graphics/netpbm |
djpeg, cjpeg | graphics/jpeg |
sudo | security/sudo |
Perl5 | lang/perl5 (注) |
(注) FreeBSD 3.0 では Perl5 はシステム組み込みである。ま た、perl のパスは /usr/local/bin/perl であ る必要がある (今後のバージョンでは Perl5 のパスを簡単に設定できるよう にする予定である)。
/usr/local/lib/dcdiary には、以下のファイ ルがインストールされます。
ファイル名 | 内容 |
---|---|
dcdiary.conf-sample | 設定ファイル |
diary.css-sample | スタイルシートサンプル |
fstab-sample | フラッシュメモリの /etc/fstab の例 (FreeBSD) |
dcdiary.conf は、それぞれの環境に応じて書 き換えてください。またスタイルシートも、自分の趣味に応じて書き換えてく ださい。
また、/usr/local/doc/dcdiary にも、関連ド キュメントがインストールされます。
このツールは、いわゆる WYSIWYG タイプの HTML エディタでの編集は全くサ ポートしていません。このタイプの HTML エディタで、更新が煩雑に行われる ページに手軽に対応できるような製品は見たことがありません。第一、ツール バーにフォントの種類だの大きさだののメニューが存在するというだけでも、 すでにトホホです (ツールバーは、「よく使う」ボタンを置くものですよね?)。 そもそも HTML とはそういうものではありません。
また、ページを「作る」ことはある程度考えられていても、「メンテナンス」 をきちんと考えた製品はなかなかないようです。趣味のページを数ページ作る だけであれば、あるいはお手軽かもしれませんが、毎日更新しようなどと思っ ている人にお勧めできるような類いのものではありません。HTML は、ちゃん と :-) テキストエディタで編集しましょう。
私は、このツールを、以下のディレクトリ構成で使用しています。
日記トップページ index.html diary.css | ||
サブディレクトリ 1998/ | ||
さらにサブディレクトリ 19981101-home/ 19981102-mita/ ........... |
年ごとにディレクトリを別ける方が、ディレクトリサイズがどんどん増殖して いくことを防ぐことが出来るので、効果的でしょう。
コメントの入れ方ですが、
<A HREF="a1103182346m.jpg"><IMG SRC="a1103182346t.jpg" \ WIDTH=80 HEIGHT=60 ALT="80x60 thumbnail image"></A> </P> <P> ケースに取りつけると、なかなかいい状態に。 </P> <P> <A HREF="a1103182800m.jpg"><IMG SRC="a1103182800t.jpg" \ WIDTH=80 HEIGHT=60 ALT="80x60 thumbnail image"></A> <A HREF="a1103183012m.jpg"><IMG SRC="a1103183012t.jpg" \ WIDTH=80 HEIGHT=60 ALT="80x60 thumbnail image"></A>
のように書いてください。作者は次のような手順でやっています。
まずはコメントを挟みたい位置に、
<A HREF="a1103182346m.jpg"><IMG SRC="a1103182346t.jpg" \ WIDTH=80 HEIGHT=60 ALT="80x60 thumbnail image"></A> </P> <P> </P> <P> <A HREF="a1103182800m.jpg"><IMG SRC="a1103182800t.jpg" \ WIDTH=80 HEIGHT=60 ALT="80x60 thumbnail image"></A> <A HREF="a1103183012m.jpg"><IMG SRC="a1103183012t.jpg" \ WIDTH=80 HEIGHT=60 ALT="80x60 thumbnail image"></A>
のように、
</P> <P>
を二つ挟みます。この組合わせは、できたての index.html の上部にあります。
<P> ここからコメント。 </P> ←この行から 2 行分のこと!! <P> <A HREF="a1107125624m.jpg" CLASS=SAT><IMG SRC="a1107125624t.jpg" \ WIDTH=80 HEIGHT=60 ALT="80x60 thumbnail image"></A>
ですから、この最初の行からカット&ペーストで 2 回ペーストすれば OK なわけです。また、この程度なら手で書いても大した手間ではないでしょう。 エディタのマクロを定義して出す方法もあります。
そして、この真ん中に、
<A HREF="a1103182346m.jpg"><IMG SRC="a1103182346t.jpg" \ WIDTH=80 HEIGHT=60 ALT="80x60 thumbnail image"></A> </P> <P> ケースに取りつけると、なかなかいい状態に。 </P> <P> <A HREF="a1103182800m.jpg"><IMG SRC="a1103182800t.jpg" \ WIDTH=80 HEIGHT=60 ALT="80x60 thumbnail image"></A> <A HREF="a1103183012m.jpg"><IMG SRC="a1103183012t.jpg" \ WIDTH=80 HEIGHT=60 ALT="80x60 thumbnail image"></A>
のように、コメントを挟んでいけば、コメントが HTML 中に表示されます。 (しかも、こうすればちゃんと <P>〜</P> の組は最後まで保たれ ます。念のために言っておきますが、<P> は「改行 の印」ではありません。そうだったのははるか古代で、今は <P>〜</P> が、段落を表わすエレメントです。きちんと段落を <P>〜</P> で囲みましょう)。
スタイルシートのサンプルが /usr/local/etc/diary.css-sample にインストールさ れます。これをベースに改造すると便利でしょう。できればそのまま使わないでね :-)。
ほそかわ たつみ
<hosokawa@FromTo.Cc>
$Id: index.html,v 1.1.1.1 2006/12/14 02:07:05 hosokawa Exp $