2009年03月15日

最近の書籍作りのプロセス(2)

前回に引き続き。

先端的な書籍制作にチャレンジし続けている hisashimさん もたびたび言及されているように、ソフトウェア開発のプロセスやツールは、書籍制作にも効果的に応用できます。 中でも、バージョン制御システム(VCS)は欠かせぬツールです(制作にかかわる人たちすべてが広く利用するようになれば、書籍作りはもっと楽に・スピーディーになるのですが)。

VCSは、あるプロジェクトにかかわる電子的なデータのすべてを「リポジトリ」という場所に蓄え、そこになされる追加・変更・削除などをすべて追跡可能にするものです。ソフトウェア開発では主要な対象データはソースコードになるわけですが、書籍制作では原稿(翻訳なら原書原稿と翻訳後原稿の両方)、差し込む画像、アイコン、組版データ、台割、企画書、目次案、方針議事録といったいろいろなものになるでしょう。

VCSを導入することで、作業者全員が常に最新の状態のファイル群を得られ、進捗も明確になり、どのような変更が加えられたのかも明示されます。リポジトリがインターネットに公開されていれば、場所を選ばずアクセスして作業にかかれます。
VCSの概略図
FTPや宅ふぁいる便は不要となり、ファイル名で必死に区別することもなく、ちゃんと執筆や編集が仕事をしているかもバレ(これは一長一短かもしれませんが…)、過去の作業内容を確認したり変更が気にいらなくなったら元に戻してやり直すこともできるわけです。作業環境のマシンが壊れて再インストールや別のマシンで作業という羽目になったとしても(佳境の時期によくあることです)、リポジトリから取得し直すだけで何も失うことなくすぐに作業を再開できます。

VCSといってもCVS、Subversion、Mercurial、git、Darcs、BitKeeper、Bazaar、Visual SourceSafeなどいろいろありますが、フリー・OSを問わない・メジャーという点でいうとSubversionかgitのどちらかとなるでしょう。 Subversion/gitそれぞれ特徴がありますが、個人的経験からいえば書籍制作全体として採用するにはSubversionのほうが以下の観点で勝っているかなと思っています。

  • 比較的単純な構成で直観的な操作なので、知識背景のさまざまな関係者に用語や概念を説明する際にそれほど苦労しない。
  • Windowsにはエクスプローラ統合のクライアント「TortoiseSVN」があり、日本語化されていて、情報も豊富。(ちなみにgitクライアントTortoiseGitというのがあります)
  • たいていのUNIX/Linux系の人は使用に慣れている。
  • MacOS X Leopard以降にはプリインストールされている(管理者権限のない環境でもすぐに使用開始できるし、インストールするための説得も不要)。
  • リポジトリの最新内容を普通のWebブラウザでも参照してファイル取得できる。WebDAVでファイルを追加変更することも可能。
  • コマンドのヘルプが日本語で出る(Leopardのはまだ駄目だったっけ?)。
  • リポジトリが1つなので、最新版の置き場所が明確であり、(単一障害点ともなり得るが)バックアップも容易。

私のかかわる書籍制作では、1人作業にせよグループ作業にせよ作業データをSubversionリポジトリに登録するようにしています。自動組版用のツールも全部Subversionリポジトリ内なので、組版環境を構成したい場合もすぐに展開可能です。リポジトリを格納しているサーバーは、離れた場所も含めて数箇所にデータをバックアップするようにしています。

ソフトウェア開発においては、Subversionのリポジトリ内は主となる開発進捗を管理するトランク(trunk、幹)と、そこから枝分かれして別の追加開発を行う複数のブランチ(branch、枝。開発成果はいずれトランクにマージ(合流)される)に分かれて使われることが多いのですが、書籍制作では枝分かれして実験するような場面はなく(書籍原稿の文字づらを変更して何かが壊れるということはないですし)、ややこしくなるだけなので、通常はトランクのみを使用します。ただ、組版データもある場合には、著者や編集担当者に組版データを渡してもしょうがないので、組版用のブランチを用意しています。よって、リポジトリ内の構成は次のようになります。

https://Subversionサーバ/svn/書籍/trunk (著者・監訳者・編集者・出版社向けのトランク)
https://Subversionサーバ/svn/書籍/branches/indesign (InDesign組版用ブランチ)

著者や編集者らはtrunkを取得して使用、組版環境はindesignブランチを取得して使用するというわけです。覚えておくべきSubversionの機能としては、チェックアウト・更新・追加・削除・コミットの5つで十分でしょう。あとは復帰・競合解決・移動(リネーム)・コピーを理解すればほぼ用は足りると思います。

差分を表示したり過去のバージョンを取得したりするには、Subversionの機能を使うよりも、TracというWikiと課題追跡をセットにしたシステムを使うと便利です。こちらももともとはソフトウェアプロジェクト向けですが、デフォルトでは行単位でしか差分表示してくれない(標準diffコマンド以外のものを使うという手もありますが)Subversionに比べてTracでは差分をわりとがんばって文字単位で出してくれたり、log -v相当のファイル変更をわかりやすく一覧できたりといったSubversion支援機能を提供しており、制作にあたってのメモをWikiに書いたり、出版までに解決しておくべきTODOを課題として登録するといった使い方もできます。InDesignファイルはバイナリなので「差分」は出せませんが、それでも過去の作成バージョンをいちいち別ファイル名で「人が」区別することなく機械的に管理できるだけでも十分役立ちます。

これらSubversionリポジトリとTracに加えて、quickmlという簡易メーリングリスト(作業者間の連絡のほか、Subversionコミットでの変更通知が届きます)をセットにした、(「bookforge」とまでは言えませんが)書籍制作プロジェクト環境のホスティングを勤務先で提供しています。ご興味あればご一報ください(ついでに編集なり組版なりでお仕事をくださるのがベストです :) )。git、Marcurial、Darcsも(がんばれば)対処できると思います。