手順は腐り、ソースは残る — 25 年前の自分の TeX ガイドを発掘して

古いホームページのファイルを整理していたら、20 数年前に自分で書いた「TeX Guide」が出てきました。日本語 TeX の環境を一から構築するための、丁寧な導入手順書です。当時の私は、これを愛着を込めて書いた。フォントの入れ方を、コマンド一つひとつまで書き留めてある。

読み返して、まず笑い、それから少し背筋が伸びました。手順は、一行残らず死んでいた。にもかかわらず、その手順で作った文書は、いまも生きている。この落差に、知的生産について大事なことが詰まっていると考えられます。

§1 手順は、全部、死んでいた

ガイドはこう始まります ── まず ASCII の FTP サーバからフォントを「もってくる」。

prana:src% ncftp ftp.ascii.co.jp
ncftp /pub/TeX/ascii-ptex > get -r jvf
prana:standard# cat standard.map >> $TEXMF/dvips/base/psfonts.map

ncftp という FTP クライアントで ftp.ascii.co.jp に繋ぎ、VF(仮想フォント)を psfonts.map に追記する ── この数行に、いま生きているものは一つもありません。ncftp を常用する人はもういない。その匿名 FTP サーバは存在しない。匿名 FTP という配布様式そのものが廃れた。

その先も同じです。watanabe-mincho のエントリをコメントアウトし、dvips で DVI を PostScript に変換する ── 当時の組版パイプラインの常識でした。いまは LuaLaTeX が OS のシステムフォントを直接叩くので、VF も map ファイルも dvips も、まるごと要りません1。DVI も PostScript も、日常では見なくなった中間生成物です。

私が一行ずつ丁寧に書いた手順は、いま一行も動かない。

手順書とは、その時代の道具と環境に密着した知識です。道具が変われば、密着していた知識ごと剥がれ落ちる。これは劣化ではなく、手順という知識の 本性 だと考えられます。

§2 ところが、ソースは生きていた

同じフォルダに、その手順で組んでいた .tex ファイルが残っていました。何年も前の論文、その頃の原稿。試しに、現在の環境でこう打ちます。

lualatex-ja thesis.tex

PDF が、出ました。フォントの導入手順を一行も再現していないのに。当時の道具立ては完全に消えたのに、その道具で書いた 中身 は、たった一行のコマンドで現在に着地する。

理由は単純です。.texプレーンテキスト で、LaTeX という開放形式 に乗っている。テキストは半世紀現役で、grep で検索でき、Git で版管理できる。LaTeX は仕様が公開され、複数の実装が世代交代しながら受け継いできた ── TeX → pLaTeX → LuaLaTeX、と。レンダリング装置は丸ごと入れ替わったのに、ソースはその入れ替えを貫いて流れた。本サイトの腐らない資産を設計するが原理として論じたことを、私は自分の発掘物で追体験したわけです。

// 翻訳すると道具は世代交代し、手順は腐る。だが開放形式に乗ったソースは、道具の世代交代を「素通り」する。装置は借り物、ソースは持ち物。

§3 私は、価値を取り違えていた

ここがいちばん効く反省です。

20 数年前、私が「資産」だと思って力を注いだのは、あの手順書のほう でした。フォントの入れ方を間違えないように、コマンドを一つずつ検証し、つまずきどころに注をつけ、人が読んで再現できるように整えた。一方、論文の .tex は、締切に追われて打ち込んだ、いわば消耗品の感覚だった。

四半世紀後、価値は完全に逆転していました。労力をかけた手順書はゴミになり、消耗品のつもりだったソースが宝になった。私は、腐るものに投資し、残るものを軽んじていた。

手間をかけた方が腐り、雑に扱った方が残った。投資の向きが、逆だった。

§4 これは「思考と作業の分離」の、時間軸版だった

この逆転は、本サイトの思考と作業を分離するが引いた一本の線を、別の角度から照らしています。あの記事の論旨を、要点ごと丸ごと引いておきます。

知的生産の現場で、思考 は連続的な注意を要求しますが、作業 は分割・後回し・自動化が可能です。この非対称性を活かさない設計 ── 思考と作業を時間的にも空間的にも混ぜたまま走らせる設計 ── は、結果として知的生産性を侵食する場合があるといえるでしょう。

[入力/整理、内容/版面、草稿/推敲 ── 三つの分離を論じたうえで、記事はこう束ねます。]

これら三つの分離 (入力 / 整理、内容 / 版面、草稿 / 推敲) は、表面的には別の話題に見えますが、共通する設計原理を持っているといえるでしょう。

分離の対象 思考側 作業側
入力 / 整理 思いつき 分類・並び替え
内容 / 版面 論証・構造 フォント・配置・空き
草稿 / 推敲 内容生成 形式調整・読者目線への翻訳

いずれの場合も、思考側は連続的な統制処理を要求し、作業側はバッチ処理・後回し・自動化が可能 です。同時に走らせるとどちらも低品質になり、分離して走らせるとどちらも質が上がります。設計上の含意はシンプルです ── 知的生産の道具は、書き手に「思考と作業を同時に処理する」要求を課してはなりません。

ここで効くのが、表の 内容/版面 の行です。WYSIWYG エディタ(見たままが出るワープロ)は、書きながら常にレイアウト判断を走らせ、思考に作業を干渉させる。対して TeX / LaTeX の 構造化記述 は、「ここは見出し」「ここは数式」という構造(思考側)だけを書き手に書かせ、版面(作業側)は機械に渡す。あの記事はこの分離を 「いま、この瞬間の注意」を守るための設計 として論じました。注意は単一チャンネルだから、思考と作業を混ぜると両方が劣化する、と。

ところが、発掘した標本が教えるのは、同じ分離の線が、時間軸でも効いていた という事実です。私が「作業側」として切り出したもの ── フォントの入れ方、版面を出すための手順、道具の操作 ── は、25 年で一行残らず腐った。私が「思考側」として構造化記述に託したもの ── 何を、どういう構造で書いたか ── は、そのまま生き延びた。あの表に、もう一行を書き足せます。

分離の対象 思考側(残る) 作業側(腐る)
手順 / ソース(時間軸) 構造化された中身 道具に密着した操作・手順

作業として切り出したものが腐り、思考として残したものが生き延びた。

つまり「思考と作業を分離せよ」という命題には、あの記事が扱った 注意の経済 に加えて、もう一つの報酬があった ──耐久性 です。作業側(道具に密着した操作)は、その時代の道具と心中する宿命を持つ。思考側(開放形式に乗った構造)は、道具の世代交代を素通りする。分離の線は、いまの注意を守る線であると同時に、未来まで生き延びる中身を選り分ける線でもあった、と考えられます。

// 翻訳すると「思考と作業を分ける」は、机の上の生産性の話だと思っていた。それは同時に、25 年後に何が残るかを決める線でもあった。

§5 だから、ハウは軽く持ち、ソースを重く残す

なぜ作業側だけが腐るのか。中坊公平のハウからホワイへが、その理由に名前を与えます。

手順書は、純粋な ハウ(How) ──「いかに環境を作るか」です。ハウは、その時々の道具に密着しているからこそ実用的で、道具が変わった瞬間にまるごと無効になる。一方、ソース(中身)は「何を書いたか」── ハウより深い層にある。だから道具を超えて残る。「改良の先に改革はない」と中坊が言ったのと同じ構造で、手順をいくら丁寧に磨いても、それは道具の寿命を超えない

ここから、二つの構えが出てきます。

ひとつは、書かない設計UNIXという考え方の、時間軸での裏づけです。フォント管理の仕組みを自分で抱え込めば、その保守を一生背負う。LaTeX や POSIX のように他者が数十年保守してきた基盤に乗れば、ハウの腐敗は基盤の側が引き受ける。自分のハウは最小に、開放形式のソースは最大に残す

もうひとつは、もっと素朴な戒めです。腐るものを、丁寧に保存しようとしないこと。当時の私のように、消えゆく手順を労を惜しまず書き留めるのは、博物館的な価値はあっても、資産形成としては筋が悪い。手順は、必要になればその時の道具で引き直せる。残すべきは、引き直しの効かない中身のほうだ。

// 核心手順書は、道具に宛てた手紙だ。道具が引っ越せば、宛先不明で戻ってくる。未来に送るなら、手順ではなく、ソースを送れ。

発掘した TeX ガイドは、結局のところ 腐るものの標本 として役に立ちました。あれだけ丁寧に書いた手順が一行も動かないという事実は、何を残すべきかを、どんな原理の説明よりも雄弁に教えてくれます。

腐らない資産を設計するが「開放形式のソースは時間を貫く」を原理として示したとすれば、本稿はその裏面 ──「手順は腐る、そしてそれでいい」── を、自分の標本で確かめた記録です。そして思考と作業を分離するが引いた線は、いまの注意を守るだけでなく、時間を生き延びる中身を選り分ける線でもあった。道具に密着した知識(ハウ・作業)は軽く持ち、道具を素通りする中身(ソース・思考)を、開放形式で重く残す。

四半世紀前の自分に一言だけ言えるなら、こうです ── その丁寧な手順書より、締切に追われて打ったその .tex のほうを、大事にしておけ。

残すべきは、道具の使い方ではなく、道具を通り抜けるものだ。

参考文献


  1. 当時の日本語 TeX 環境は、アスキーが配布する pTeX に VF(Virtual Font)でメトリックを与え、dvips で DVI を PostScript に変換する構成が標準だった。現在の LuaLaTeX(および luatex-ja)は Unicode とシステムフォントを直接扱うため、VF・psfonts.mapdvips のいずれも不要になっている。本稿は腐らない資産を設計するの姉妹編であり、あちらが「開放形式のソースは時間を貫く」を原理として論じたのに対し、本稿は「手順(ハウ)は道具とともに腐る」という裏面を、発掘した実例で扱う。手順とソースの対比は、思考と作業を分離するの 思考/作業 の分離を、注意の軸から時間の軸へ展開したものと読める。