残るもの、残らないもの — 25 年前の TeX ガイドを開いて

古いホームページのファイルを整理していたら、20 数年前に自分で書いた「TeX Guide」が出てきました。日本語 TeX の環境を一から構築するための、丁寧な導入手順書です。当時の私は、自分用のメモと近くの学生に向けて、TeXの環境構築をはじめとして、FreeBSDのインストールの手引きや、グラフ作成ツールのGnuplotの使い方の記事を書いて公開していました。

今回発見したTeX Guideでは、フォントの入れ方もデフォルトのcmではなく、数式を含めてTimesを使うなど、なかなか凝った環境の構築について、実行すべきコマンド一つひとつを書き留めていました。

読み返して、すぐ分かったことがあります。ダウンロードリンクなどが変わっているため、固有名詞は、そのままでは使えない。にもかかわらず、必要なファイルをダウンロードしてインストールする、という流れはいまも生きていると感じました。

残るものと残らないもの、その違いはどこにあるのでしょうか。

§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 に追記する ── この数行でいまも生きているのは、FTP というプロトコルと、クライアントという道具立て そのものです。ただ ftp.ascii.co.jp は消え、ncftp を使う人も少ないでしょうね(私は今でも使ってますけど。笑)。

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

私が一行ずつ丁寧に書いた手順は、いま一行も動きません。手順書とは、その時代の道具と環境に密着した知識です。道具とそれを取り巻く環境(コンテキスト)が変われば、密着していた知識ごと剥がれ落ちる。これは劣化ではなく、手順という知識の 本性 です。

ところが、その動かないコマンドをもう一度眺めると、固有名詞の下に消えていないものがあります。ncftp で「もってくる」のは、必要なファイルを取りに行く という動作です。map への追記は、持ってきたものをシステムに登録するdvips での変換は、ソースを配布できる形に焼く。道具の名前はすべて入れ替わったのに、その下にあるアクションと、それが何のための動作なのかは、一つも変わっていません。フォントを入れるとは、いつの時代でも「必要なものをダウンロードして、システムに入れる」ことです。

つまり、同じ手順書の中に、腐る層と残る層が重なっていました。表面の固有名詞つきコマンドは腐り、その奥のアクションとその意味は残る。だから、いまこの環境を作り直すとしても、ガイドのコマンドはコピーできませんが、ガイドが 何をしようとしていたか はそのまま道しるべになります。INSTALL.txt に書かれた手順をその通りに実行する ── 順番も意味も当時のままで、ただ道具の名前を、いまのものへ置き換えるだけです。

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

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

lualatex-ja thesis.tex

PDF が、出ました。フォントの導入手順を一行も再現していないのに。当時の道具立ては完全に消えたのに、その道具で書いた 中身 は、たった一行のコマンドで現在に着地する。
あ、もちろん漢字コードは、EUCからUTF-8に変えて、フォントの設定を変更しましたけどね、ええ。

理由は単純です。.texプレーンテキスト で、LaTeX という開放形式 に乗っている。テキストは半世紀現役で、grep で検索でき、Git で版管理できる。これはそのまま、UNIXという考え方 が掲げる定石の一つ ──「データはフラットなテキストファイルに保存せよ」── の効き目です。テキストにしておけば、いまある道具でも、まだ生まれていない道具でも読める。特定のアプリの内部形式に閉じ込めず、最も素朴で枯れた器に置く ── .tex が四半世紀を越えられたのは、この一点に乗っていたからでした。LaTeX は仕様が公開され、複数の実装が世代交代しながら受け継いできた ── TeX → pLaTeX → LuaLaTeX、と。レンダリング装置は丸ごと入れ替わったのに、ソースはその入れ替えを貫いて流れた。本サイトの腐らない資産を設計するが原理として論じたことを、私は自分の発掘物で追体験したわけです。

道具は世代交代し、手順は腐ります。けれど開放形式に乗ったソースは、その世代交代を素通りする。装置は借り物で、ソースは持ち物だった、ということです。

§3 残るかどうかは、手のかけ方では決まらない

もう一つ、はっきりしたことがあります。

20 数年前、ドキュメントとして手をかけたのは、手順書のほう でした。フォントの入れ方を間違えないよう、コマンドを一つずつ検証し、つまずきどころに注をつけ、人が読んで再現できるように整えた。論文の .tex には、そこまでの作り込みはしていません。締切に追われて、ただ書いただけです。

それでも、四半世紀後に残っていたのは .tex のほうでした。手をかけて整えた手順書は動かなくなり、淡々と書いただけのソースが、そのまま使えた。ただ、これを「雑に扱ったソースが、たまたま生き残った」という話にするのは正確ではありません。.tex を消耗品扱いしたわけではない ── 消耗品なら、四半世紀ものあいだ、テキストのまま手元に残してはいないでしょう。残るかどうかを決めたのは、どれだけ手をかけたかではなく、どんな器に載せたか でした。手順書は道具に密着したハウで、道具とともに消える。.tex は開放形式に乗った中身で、道具を超える。違いは構造の側にあって、私の力の入れ方の側にはなかった、というだけです。

いまの言葉でいえば、「残る」とは 相互運用性と再利用性が確保されている ということです。プレーンテキストはどんな道具でも開け、開放形式に乗った中身は別の実装でもう一度組める。.tex は、その二つを最初から備えた器に載っていました。ただ正直に言えば、当時の私にそんな見通しがあったわけではありません。相互運用性も再利用性も、あとから付けた名前です。ソースをプレーンテキストにしたことさえ、私が耐久性を見込んで決めたのではなく、TeX がそういう道具だったから ── 中身をテキストで書かせ、開放形式に残す。それが TeX の作法でした。私はただ、洗練された道具を一つ選んだだけで、プレーンテキストも、相互運用性も、再利用性も、そして耐久性も、ぜんぶその道具についてきた副産物だったのです。

§4 同じ分離の線が、時間軸にも引けた

本サイトの思考と作業を分離するで、私は知的生産を 思考作業 に分けました。思考は連続した注意を要求し、作業は分割・後回し・自動化ができる。だから知的生産の道具は、書き手に思考と作業を同時に処理させてはいけない ── そういう設計の話です。内容(思考側)と版面(作業側)を分け、構造だけを書き手に書かせ、版面は機械に渡す。TeX / LaTeX の構造化記述は、その分離を いまの注意 のために使う仕組みでした。

ところが、発掘した標本が教えるのは、同じ分離の線が、時間軸でも効いていた という事実です。私が「作業側」として切り出したもの ── フォントの入れ方、版面を出すための手順、道具の操作 ── は、25 年で一行残らず腐った。私が「思考側」として構造化記述に託したもの ── 何を、どういう構造で書いたか ── は、そのまま生き延びた。思考と作業の分離に、時間軸の一行を書き足せます。しかも同じ線は、手順の内側にもう一度引けました ── 固有名詞つきのコマンドは腐り、その下のアクションとその意味は残る(§1)。

分離の対象 思考側(残る) 作業側(腐る)
手順 / ソース(時間軸) 構造化された中身 道具に密着した操作・手順
手順の内側(動作 / コマンド) アクションとその意味 固有名詞つきコマンド

思考と作業を分ける線には、注意の経済だけでなく、もう一つの効き目がありました ──耐久性 です。作業側(道具に密着した操作)は、その時代の道具と心中する。思考側(開放形式に乗った構造)は、道具の世代交代を素通りする。同じ一本の線が、いまの注意を守ると同時に、未来まで生き延びる中身を選り分けていました。

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

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

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

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

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

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

手順書は、道具に宛てた手紙のようなものです。道具が引っ越せば、宛先不明で戻ってくる。未来に送るなら、手順ではなく、ソースを送ればいい。

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

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

梅棹忠夫の『知的生産の技術』が半世紀読み継がれているのも、たぶん同じ理由です。京大式カードのような具体的な手順は、いまの道具に置き換わった。それでもあの本が残るのは、手順の下にある 考え方 ── 知的生産を、設計された一つの営みとして捉える視点 ── が、道具を超えるからです。残るのは、いつも道具の使い方ではなく、道具を通り抜けるもののほうでした。

参考文献


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