Categories Books | Hard | Hardware | Linux | MCU | Misc | Publish | Radio | Repository | Thoughts | Time | UNIX | Writing | プロフィール
GCCプログラミング工房書籍化の話は、連載終了前から上がっていたのですが、改めて全体を見直してみると、過去の原稿を単純に再編集するだけでは使えそうもないことが分かってきました。
私は、几帳面で計画性のあるライターとは正反対のルーズ野郎でして、編集部の方々にはご迷惑のかけっぱなしでした。小学校時代の夏休み帳に象徴されるように、目前に締め切りが迫り、おしりに着火しないと走り出さないタイプなのです。
このような「かちかち山の狸」状態で執筆した原稿は、当の本人はベストを尽くしているつもりでも、当然のことながらやっつけ仕事に終わってしまう傾向があります。
毎回毎回のオチや盛り上がりが要求される連載とはことなり、書籍は一冊の世界の中で、完成した物語を作り出さなければなりません。じっくりと腰を据え、全体を俯瞰しながら一幅の絵を描き上げる書籍の原稿は、連載とはまったくことなることに気がつきました。
さらには時が立つにつれ、執筆当時の理解不足により、解説できていない部分が目につくようになり、自己嫌悪にすら陥る有様。
こうして、私の身勝手によりGCCプログラミング工房の書籍化は頓挫しました。
出版を心待ちにして頂いていた読者の方々には申し訳なかったのですが、2年間をかけて最善と思われる道を探し続けました。この結論が、Computer Architecture Series です。
実は、今回出版する "GNU開発ツール" の原稿は、当初全6章で予定していた書籍の前半2章分が原典になっています。後半4章には、ELF (Executable and Linking Format) の解説が含まれていたのですが、レイアウトを進めて行く段階で予定ページを大幅に超過することが判明し、急遽前半2章を加筆し、一冊に独立させることになりました。
GCCプログラミング工房など、これまで執筆してきた商業誌の記事中では、gcc hello.c で出力される a.out のサイズをマニュアル操作で切り詰めていくことがテーマのひとつでした。このアプローチは、Brian Raiter氏による "A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux" の記事にヒントを得たものですが、GNU開発ツールやELFに対する理解が深まるにつれ、この手法は "ほーら、こんなに小さくなりました!" という陳腐な手品の種明かしに過ぎないのではないだろうかと考えるようになったのです。
コードサイズの縮小はあくまでも ELF 仕様に基づく話であり、GNU開発ツールの解説は全く別物のテーマとして捉えるべきものです。また、ELF を理解するためには、機械語(アセンブリ言語よりもさらに低レベルのopcode+operand)に関する基礎知識が必要不可欠ですが、アセンブリ言語の解説書ですらほとんど見あたらない現代において、読者の方々に機械語の知識を前提として要求することには、無理があります。
そこで、GNU 開発ツールに関しては純粋に GCC (GNU Compiler Collection) と binutils (BINary UTILitieS) パッケージの体系的な解説に専念し、ELF の解説へ進む前に、いずれかのプロセッサを教材として、"機械語の基本" を解説することとしました。
このような "時代に逆行する" 構想は数年前から抱いていたのですが、商業誌で執筆活動を行う以上、出版社と編集者の意向が介在してくるため、自分の思い通りの "絵" を書ける訳ではありません。これまで日本や海外で出版されてきた書籍の中には、私が考えているテーマを扱ったものは見あたらないことからも、"自分が書きたいことを書く" ためには、自費出版しかないと判断しました。
今回の出版に関して、コストのかかる書籍ではなく、PDF などによるオンライン配布が良いのではないかというご意見も頂いています。コスト面やリスクを考えると、確かにその通りなのですが、私は自身の体験から、体系的な知識の習得に際して、本に優る媒体はないと考えています。
ネット上の情報は、知識の断片、もしくは理解のきっかけを掴むためには、大いに役立ちますが、一定以上の知識を体系的に語ることはできません。Google が天文学的な数のページを自身の中に貯めこんだところで、名著一冊には太刀打ちできないでしょう。
そして、何よりも私はインクと紙、そして本の肌触りを愛しています。これには、その昔、母親が自宅でタイプ印書を行っていたことが影響しているようです。私の幼少時代は、タイプと輪転機の音が子守歌代わり、使い古した活字がおもちゃでしたから。
ということで、本と図書館が大好きな私ですが、本作りに関わった経験はこれまでありません。何もかもが初めての経験で、刺激的なこと、この上ありません。
入稿用の原稿は、いつも通り Jedit で作成し、このファイルを基に明星企画の坂本さんが、InDesign を操りレイアウトを組んでいきます。図に関しては、私が Illustrator でラフな原稿を作成し、これを明星企画で清書して頂きます。
当初、出版コストを抑えるために TeX による組み版を考え、山のように資料を揃えたのですが、フォント環境や日本語の文字組などに限界を感じ、断念しました。
それにしても、フォントと Postscript の世界は大変面白く、いつの日か Computer Architecture Series 専用のテキストプロセッサを Lua で組み上げたいと考えています。
まず最初に行った作業は、本文のレイアウトの決定です。基本デザインを基に、和文・欧文のフォント選択を行います。フォントに関しては、今回かなりの時間をかけて下調べを行ったのですが、高品位のフォントは当然のことながら値段も高価。残念ながら、今回の出版では、私が最良と考えるフォントを採用することはできませんでしたが、今後の課題として残しておきたいと思います。
フォントの決定が終わると、次はテキストのフォーマットを決めます。具体的には天地・左右にとる余白の領域ですが、書籍のサイズは独自の B5 変形版を採用しましたので、このサイズで様々な余白のバージョンを出力しては、裁断して本に見立て「間」が適切かどうかを見極めていきます。
今回の出版を通して、フォントデザインやレイアウトでは、主役は黒ではなく、白なのではないだろうかと考えるようになりました。折しも、先日書道家の方と会食する機会があったのですが、書はまさしく「白地を見る」のだそうです。"我が意を得たり" と、その場で話はえらく盛り上がりました。
次は字間・行間の決定です。「目が踊らない」ように一行あたりの文字数を抑え、気持ちよく読み続けることができる最良の字間・行間を何度も出力で確かめながら、探っていきます。
それにしても、括弧の前後のスペースなど、細部にわたる文字組を自在に制御できる InDesign はさすがです。レイアウトは坂本さん任せですが、私も "Adobe InDesign 文字組み徹底攻略ガイド" などの本を買い込んで、にわか InDesigner として勉強しました。
こうして細かいレイアウト作業をスタッフの方々と進めていくと、「これから本を作るんだ」という実感が深まっていきます。原稿を書くだけでは到底体験できない、物書きにとっての ecstasy と言えるでしょう。
レイアウトが決定すると、次はいよいよ装丁です。かねてからの私の夢は、自分の本を "ハードカバー" で出版することでしたが、出版コストは予想外に膨らんでおり、当初は断念していました。
一般的な自費出版で提示されている金額は、自分史や小説などテキスト主体の比較的単純なレイアウトを前提としたものであり、今回のようにプログラムリストや実行例、mono-space font の挿入や色変更、果ては図の作成などが必要な原稿では、レイアウト費用は跳ね上がるのです。
手にした時の質感は、ハードカバー(上製本)が圧倒的に上ですが、出版コストをさらに押し上げてまで選択する勇気は、私にはありませんでした。コーティング紙によるソフトカバー(並製本)で見積もりを依頼していたある日、妻が言いました。
「こんな機会はめったにないのだから、自分が本当に良いと思うものを貫いてみたら」
実は、上製本の最大の利点は、見た目もさることながら、どのページも自然に開いたまま静置出来る点にあります。背の部分が布で補強されているからこそ成せる技ですが、単なる糊付けの並製本ではこうはいきません。広げても広げても、勝手に閉じてしまう本を無理矢理押さえ込み、背が割れてしまった経験をお持ちの方もおられるかと思いますが、これは並製本の宿命なのです。
妻が言う通り、私が読者であれば、手にしたときの質感を大切にしたいですし、本をパソコンの横に置き、1ページ1ページ静かにめくりながら読み進めたいと思うでしょう。辞典を重し代わりに本の上に置くのは、興ざめというものです。
その後、妻にも同席してもらった上で、再度打ち合わせを行い、最終的に上製本で出版することとなりました。右上は、実際に使用する印刷用紙と外装で作成してもらった、中が真っ白の束見本(つかみほん)の写真です。手にした感じは最高、これまで私が購入してきたどのハードカバー本よりも、素敵なものに仕上がりそうです。