知ってるようで知らないTeXの世界 自分の人生より歴史あるソフトウェア開発をマネジメントする技術

アルゴリズムに関する大著『The Art of Computer Programming』のため、ドナルド・クヌース先生が組版システム「TeX」を発表して41年。その開発は世界中で活発に続いています。日本語TeX開発コミュニティやTeX Liveチームで活動する20代のエンジニア山下弘展(aminophen)さんに、自分より1.6倍も長生きなソフトウェアをメンテナンスする技術について聞きました。

知ってるようで知らないTeXの世界 自分の人生より歴史あるソフトウェア開発をマネジメントする技術

数式がきれいに組めることで広く知られているTEX(以下、TeXと表記)は、誕生から40年を超える自動組版システムです。

学生時代にレポートや論文でTeXを使ったことがある人も少なくないでしょう。技術系の同人誌でページの見栄えを改善すべく、Re:VIEWなど書籍執筆支援システムの背後で動くTeXに手を入れて苦労した人もいるかもしれません。

その長い歴史のために見過ごされがちですが、TeXは、現在でも精力的に世界中で開発が進められているオープンソースのソフトウェアプロジェクトです。開発者のコミュニティもあり、意外なほど幅広い年齢層のエンジニアや研究者が開発に参加しています。

TeX Users Group (TUG)

この40歳を超える長寿のOSSで、日本における開発者コミュニティのハブとして活躍する20代のエンジニア、山下弘展@aminophenさんに、なぜTeXに興味をもったのか、開発コミュニティでの仕事、これからのTeX開発コミュニティがどうなるかを聞いてみました。

{$image_1}

山下 弘展(やました・ひろのぶ) {$image_2}aminophen {$image_3}aminophen
1993年生まれ。東京大学入学後にTeXと出会い、2014年からユーザ間の交流に参加するようになる。同大大学院工学系研究科へ進学後、2015年から日本語TeX開発コミュニティ、2017年からはTeX Liveチームにも参加する。現在は応用化学系の研究開発職の傍ら、TeX関連の開発とメンテナンス、広報活動を続けている。

TeXの長い歴史と、そう長くない使用歴

──TeXというと、かなり古くから使われているソフトウェアですよね。

山下  ドナルド・クヌース(Donald E. Knuth)がTeXの最初のバージョンを公開したのが1978年なので、かなり歴史のあるソフトウェアですね。私が1993年生まれなので、もちろん自分より年上です。

現在、オリジナルのTeXとされるものはバージョン3なのですが、そのバージョン3でも1990年まで遡るので、それよりもまだ私の方が若いです。1993年というと、TeXの上でふだん多くの人が使っているLaTeXの現行バージョンであるLaTeX2eが登場した頃だと思います。

──山下さん自身は、いつ頃からTeXを使っているのでしょう。

山下  使い始めたのは、それほど昔のことではありません。大学の1年次に数学の授業で名前を聞いたことがあって、2年次に入ってから何となく使い始めた感じです。

──やはり授業でレポートなどを書く必要があったからですか?

山下  いえ、特に大学の授業で必要と感じたことはありません。私がTeXを使い始めた理由は、1年次からの数学の授業でなんとなく「TeXは数式を表現するのに便利そうだな」と感じていたので、「もしかすると将来役に立つかな」くらいの軽い気持ちからでした。

ただ、私は化学専攻に進んだのですが、「やっぱり化学だとTeXを使うことはあまりないんだな」と感じたくらいTeXを使う機会はなかったんですよね。もちろん、化学の分野でもTeXを使う人は使いますが、私の研究室では卒論も修論もWordだったのです。

実際、今でも自分でTeXで文書を書くことはあまりありません。3年次くらいまではTeXを使ってレポートを書くこともあったので、自分がTeXをいちばんよく使っていたのは、ひょっとすると、この2年次の後半から3年次にかけてだったかもしれません。

──え? ご自身ではあまりTeXを使わないんですか。

山下  はい。タンパク質や生物寄りの研究に進み、込み入った方程式をレポートや論文に表記することも少なくなったので。今でも本業は化学関係ですから、TeXよりむしろWordです。

──ここまでお話を伺っている限りでは、なぜTeXの開発に深くかかわるようになったのか、とても不思議な感じがしますが……。

山下  学部4年次の頃、PowerPointの資料に数式をいれるためにTeX2imgというツールを使っていて、そのバグを報告したのがきっかけだと思います。

技術イベントからTeXの開発コミュニティに踏み込む

山下  TeX2imgは、LaTeXで書いた数式を画像として簡単に保存できるGUIソフトです。寺田侑祐さんと阿部紀行さんという、今は日本語TeX開発コミュニティでも活躍されている方々が、開発とメンテナンスをしています。

TeX2imgの中の方々との交流の中で、ソフトウェアの背後にある人たちが見えて、フィードバックして恩返ししたいという気持ちが自然とできていったのが大きかったと思います。バグ報告の仕方とか開発の流れのようなOSSの基本的な所作も、このときに学べました。

──つまり、直接のきっかけはTeX2imgだったと?

山下  そうです。さらに、それから2カ月後くらいに「TeXユーザの集い2014」という技術イベントに参加して、TeXコミュニティのさまざまな方と知り合えたことも契機だったと思います。そこで、分子模型の3DアニメーションをPDFの発表スライドに埋め込む方法を紹介するライトニングトークをしたのです。

3Dアニメーションや動画をPDFに埋め込むのは、実はわりとスマートな方法がないのですが、LaTeXにはそのためのパッケージがあります。そのパッケージを探し出すために調査したり、使い方を調べたりしているうちに、TeXのエコシステムの雰囲気が少し見えてきて、これはなかなか面白いなと。

──なるほど。必要があって調べるうちに詳しくなるという話はよく聞きます。

山下  実は、後にOCamlによる組版システムSATySFiの開発を手掛ける諏訪敬之さんや、TexdocのコミッタになるなどTeX開発に深くかかわっていく朝倉卓人さんとも、このTeXユーザの集い2014で知り合ったんです。

たまたま3人とも同じ大学だったこともあって、そこから東大TeX愛好会ができたりもしました。この愛好会では、今でも現役の学生たちがTeXにまつわる活動を継続しています。

──2014年のTeXユーザの集いは、山下さんだけでなく、日本のTeXコミュニティにとっても転機だったようですね。

山下  かもしれません。例年に比べても盛況で、公式発表では126人が集まったと聞いています。

ただ、日本のTeXコミュニティにとっての転機という意味では、2015年の「日本語TeX開発コミュニティ」の立ち上げになるような気がします。

日本で広く使われているpTeXやpLaTeXは、2010年からTeX Liveという世界的なTeXディストリビューション(関連ツールの集合体)の一部に少しずつ組み込まれていくのですが、中には歴史的な理由で管理者が曖昧なものもありました1

TeX Live - TeX Users Group

開発者同士の話し合いの場も不足していて、十分な検討をしないまま変更が入り、後から問題が発覚したこともあります2。また、pTeXがTeX Liveに組み込まれたことで、日本の外でpTeXのソースコードが変更されることもあります3。場合によっては、知らないうちに日本のTeXユーザに重大な影響を及ぼさないとも限りません。

そんな中、黒木裕介さんや山本宗宏さんが発起人となって有志を集めたのが、日本語TeX開発コミュニティでした。発足当時は何をするとも決まっていませんでしたし、そのような話題になったことも今までありません。

ただ、開発者がそれぞれ言葉には出さずとも感じていた「コミュニケーション不足」が、この枠組みができたことで自然と解消していったように感じています。私自身も、この頃にマネジメント的なことの必要性を意識しはじめました。

今では、pTeXやpLaTeXを含むさまざまなツールを「コミュニティ版TeX関連ソフトウェア」として一元的にGitHubで管理しています。こうしておけば、例えば「pTeXの修正にpLaTeXが追い付かない」といった問題は未然に防げますから、安心ですよね。

{$image_4}Japanese TeX Development Community · GitHub

すごいプログラマでなくても仕組みや原理の整理はできる

──いま言われた「マネジメント的なこと」というのは、コミュニティ内での人間関係の調整とか政治力学的なことですか?

山下  いや、むしろ何か技術的に問題が起きたとき、あるいはそうした問題が起きそうな変更が取り込まれたときに、それを相談すべき相手を知っているということですね。なので、コミュニティとその外側、具体的にはTeX Liveという集合体のメンテナや、pLaTeXが依拠しているLaTeXのメンテナとの外交を取り持つことが多いです。

私自身は、実を言うと、そんなにTeXの全てを熟知しているわけではないという自覚があるんです。ものすごいTeXのマクロが書けるわけでもないですし。

しかし、すごいマクロが書けなくても、すごいプログラミングはできなくても、必要に応じて背景の仕組みや原理を探求していくことはできると気づいたんです。そうすれば自然と、分からないことが起きたときに何を見ればいいか、誰に頼ればいいかが見えてきました。

──TeXくらい巨大で複雑なシステムになると、裏側を探るといってもかなり大変ですよね

山下  例えば、TeXは必ずログファイルを出力します。ログファイルには、エラーメッセージ、読み込んだファイルの場所、バージョン番号など、たくさんの情報が含まれているので、まずはそれを頼りに該当するファイルを探し、その中身を読みます。

どうしても分からない場合には、TeXやpTeXのソースコードが必要になることもありますが、それも全て公開されているので、ある挙動の裏で何が起きているかをとことん突き詰めることができます。これがフロントエンドの仕組みだったりすると、ユーザによる操作と背景の仕組みの関係を解きほぐすことになり、私には手が出せないんですが。

そうやって調べていって、ようやく裏で何が起きているのか仕組みが分かると、とても安心できます。さまざまな事柄の背景の仕組みや原理を探求したいという気持ちが個人的に強いのかもしれません。よく考えると、本業の化学の研究にもそういう側面はありますしね。

──裏側を探ったことで、TeXというシステムに詳しくなり、マネジメントができるようになった?

山下  そうですね。ただし、システムの構造を知っているだけでは、これだけ歴史的なしがらみもある巨大なソフトウェアの管理というのは、なかなかできないと思います。

私自身も、初めからマネジメントできたわけではなく、できることから始めて経験を重ねた、という感じでしょうか。自分が「このTeX開発者のコミュニティでできることは何かな?」と模索していくうち、だんだんと今のようなマネジメント的な仕事が増えてきたのかもしれません。

もちろん、マネジメント以外の仕事もやっています。日本語のTeX環境にはフォントの埋め込みなどで特殊な面があるので、そのインフラ整備などですね。

──ヘビーなTeXユーザとしてでなく、流れで深入りしてやれることを探していったらハブの中心になっていたというのは、とても面白いと思います。

{$image_5}

世界のTeXの中の日本のTeX

エンジニアHubに会員登録すると
続きをお読みいただけます(無料)。
登録のメリット
  • すべての過去記事を読める
  • 過去のウェビナー動画を
    視聴できる
  • 企業やエージェントから
    スカウトが届く