flickr2006/05/06『RailsによるアジャイルWebアプリケーション開発』の制作方式ここのところ『RailsによるアジャイルWebアプリケーション開発』の制作方式について意見を求められる機会が何回かあったので、もう半年も前のことだけどまとめてみる。前提として、ふつうのコンピュータ書籍の制作過程には昨日定義した「後戻り困難ポイント」があり、それが原因で誰かが泣いている。誰も泣かないようにするには、昨日愚痴った「後戻り困難ポイント」を埋めてしまえばいい。それには、現在の手作業によるページレイアウトの工程(つまり組版工程)を放棄して、内容に責任を持つべき人間が印刷の直前までハンドリングできるようにすればいい。『RailsによるアジャイルWebアプリケーション開発』の制作では、この方針を実現すべく、以下のような方法を採用した。印刷所に納品するデータはフォント埋め込みのPDFそのPDFはLaTeXによる組版データから生成するしかし原稿はLaTeXではないので、原稿をLaTeXに変換するスクリプトを用意する原稿はSubversionで版管理するこうやって書き並べると単純すぎる話だけど、これらの方法を採用することによるメリットは強大だった。著者(監訳者)や編集者がSubversionからチェックアウトした原稿(≠組版データ)を印刷の直前まで自分で修正でき、その結果が人手を介さずに印刷用の最終的な組版データになるんだから。容易な還流が可能になる。これまで組版の工程にかけていた数ヶ月の期間をゼロにできる!たぶん、こんなのはソフトウェア開発では当たり前のことなんだと思う。ソースコード(原稿)を版管理し、それをデイリービルド(組版)しながら開発(制作)するってだけの話なんだから。ところが現在のコンピュータ書の制作では、コンパイルやビルドに相当する「原稿を組版にする作業」が完全に手作業なため、組版した後で判明した問題を原稿に戻って直したり、直して組版し直した結果をすぐに確認することができない†1。実現にあたっては障壁もいくつかあった。原稿がLaTeXじゃない。仮にLaTeXであっても、それだけでは印刷所に安心してデータを渡すことはできない(印刷所の環境で同じようにコンパイルできる保障がない。そのため、印刷所の環境でコンパイルした出力を確認するという作業が不可欠になってしまう)。印刷所に渡すデータの問題については、PDF/X-1aという業界標準があるので、それに準拠したPDFを生成できれば問題ない。これについては「Debianにotfパッケージをインストールして、dvipdfmxでOpenTypeフォントを埋め込んだPDFを吐き出すまで」を参照。原稿がLaTeXじゃない問題については、まず原稿がどんな形式だったか示す必要があるだろう。こんな感じのテキストデータだった。本書にはRubyのコードがたくさん出てきます。予約語は太字に、ダブルクォーテーション内はスラントにしなくちゃなりません。ちなみに★で始まってる部分は小さな見出しつきの項目になります。ここは、また本文に戻ってます。こんなふうに、なんとなく箇条書きな部分がタブで示されています。ひとつ箇条書きまた本文。枠で囲った記事もあります。「David曰く」「Joeの疑問」のほかに、何も指示のないコラムもあります。■H2■終わりにおしまい。これは下訳をお願いした業者さんがよく使っている形式(というか編集指示)を拡張したものだけど、多かれ少なかれどこも似たような「マークアップ」を使っているようだ。見てわかるように、あくまでも人間が手作業で組版するためのコメントみたいな指示書き程度しか施されていない。コンピュータでそのまま処理するにはちょっと厄介な状態といえる(しかも、バリデータなんてないから、けっこういいかげん)。このような「自然言語+簡易マークアップ」の構造を読み取って適切なLaTeXのスタイルに対応付けるためのフィルタを用意する必要がある。今回はゆるい規則を処理しなければいけないこともあって、後から柔軟にフィルタの仕様を変更できるようなGaucheスクリプトを正月にでっちあげた(私的に余暇を利用して作ったものなので、後日公開する予定。いま見返すと謎な処理が多いけど、なんとか目的の動作は実現している)。上記の例の変換結果は以下のとおり。本書にはRubyのコードがたくさん出てきます。予約語は太字に、ダブルクォーテーション内はスラントにしなくちゃなりません。ちなみに★で始まってる部分は小さな見出しつきの項目になります。%\end{entry}%%ここは、また本文に戻ってます。こんなふうに、なんとなく箇条書きな部分がタブで示されています。ひとつ箇条書き%%\end{myitemize}%%また本文。%%\begin{column}{J}{の疑問}枠で囲った記事もあります。「David曰く」「Joeの疑問」のほかに、何も指示のないコラムもあります。連番もあります%%\end{enumerate}%%\subsection{もっと細かい本書の読み方}%脚注もつけなければ\footnote{\kern-.5zw[訳注]}%%\section{終わりに}%おしまい。このLaTeXの出力から書籍にするには、さらに各要素についてスタイルを定義する必要がある。実はこの作業がいちばん大変なところなんだけど(LaTeXのいい加減な規則や拡張に起因)、これは会社の業務として作成したものなので今のところ公開できない。LaTeXの泥臭いところが満載なので、実際のところあまり面白くないし。ここまでは、この方法が従来の方法に比べて万能であることを意図的に強調してきたけれど、現実には適用できないプロジェクトが大半である。著者や制作業者の並々ならない協力が必要なこと、全員がアクセスできるサーバ環境が必要なこと、編集者に現状に対する問題意識が少ないこと、など原因はいろいろある。今回はとくに変換スクリプトをSchemeで作っちゃったりしたので、問題意識のある編集者であっても実際に使ってもらいにくい。いった問題を解決して汎用性の高いツールにまとめあげる大仕事を身を挺して背負ってくれそうな人がいる。できる限りの協力はしようと思う。例外はあって、最初から(商品として妥当な)レイアウトを含めて執筆された(執筆者のローカル環境以外でも同様にコンパイルが通る)LaTeXの原稿があれば、少なくとも執筆者は現在でも最後まで原稿を修正できる。編集者にLaTeXのスキルがなかったり、印刷所でコンパイルが通らなかったりして、必ずしもうまくいくとは限らない。(10)Dexter社のWalkMocsという靴が気に入っていた。靴底がウレタンのような特殊な材質で、革も軟...パズル「九個の?」をSchemeで解く仕事でワシントンD.C.に行ってきた。1.5でいつのまにか日本語の均等割り付けができるようになってるのにきがついた。む...LaTeX(TeX)で文字列中の文字を置換したい。http://d.hatena.ne.jp/s...去年の秋から超朝方を心がけているのだけど、それが可能な体調の期間と困難な体調の期間(ねむ期)がある。...枝刈りをしながら組み合わせを求めたい。似たような要素を同一視して、集合の総数を絞りながら組み...『RailsによるアジャイルWebアプリケーション開発』の制作方式ふつうのコンピュータ書籍がどうやってつくられているか。出版される前の本の内容は、通常は著者や編集者に代表される「制作サイド」の人間にしか読まれない。専門性の高い本であれば査読とか監修といったプロセスを有識者にお願いすることはあるけど、そうしたお願いをするときには有償だったりカバーや袖に名前を出したりすることが多いので、これも「...職務経歴書いろいろあって職務経歴書を作成してみることにしました。機能を使うのが一番お手軽です。編集をお手伝いしました。Blogger.自己紹介Unknown詳細プロフィールを。