知っおるようで知らない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

──ずころで、TeXのコミュニティでは、そうしたマネゞメント的な立堎が、圹割ずしお蚭定されおいるのでしょうか。他のOSSでは、オリゞナルの開発者を䞭心に組織が構成されおいたり、明瀺的に圹割を分担しおいるコミュニティもありたすが。

山䞋  特にないず思いたす。それは日本語TeX開発コミュニティに限らず、䞖界的なTeX開発コミュニティにもないはずです。「あの人はマネゞメントできるよな」みたいな信頌が醞成されおいお、その信頌関係で党䞖界のコミュニティが成り立っおいる感じです。

もちろん、ある特定のアプリケヌションに぀いお、最終的な刀断をする人はいたす。䟋えば、pTeXだったら今は北川匘兞さんです参考。pTeXを改造しお内郚の文字コヌドをUnicodeにしたupTeXに぀いおは、田䞭琢爟さんがその立堎です。

しかし、もし海倖で開発されお日本でも䜿われおいる機胜に䜕らかの倉曎が発生し、その倉曎がpTeXずupTeXの䞡方に圱響があるずなった堎合には、協力しお圱響の範囲を調べたり、海倖のチヌムに芁望を出したりする必芁があるわけです。

そういうずきに、日本語TeXコミュニティにおける窓口ずしお私が動くこずもありたす。もちろん、そのためには自分も逆に盞手から信頌されおいないず、芁望も盞談もしづらいですよね。マネゞメント的な掻動にはそういう芁玠も含たれるず思いたす。

䟋えば、党䞖界で䜿われおいるLaTeXのコアの機胜を開発メンテナンスしおいる囜際チヌムがあるのですが、去幎の4月、LaTeXにかなり倧きな機胜倉曎が斜される前に、「こういう倉曎を予定しおいるが日本語TeXで問題が起きないか教えおほしい」ず名指しで私にメンションがきたりしたした。

──事前に盞談しおくれたず。

山䞋  はい。ずはいえ、そもそも海倖の開発者は日本語TeXのこずはよく知らないので、盞談がない方が普通です。そういう状態がふいに発芚しおから、日本語TeX開発コミュニティ内で議論になったりしたす。

──そういう堎合、やはり倉曎の差し戻しを䟝頌したりするのでしょうか

山䞋  日本のTeXナヌザぞの圱響を海倖の開発者に䌝えお修正しおもらう堎合もあれば、日本のナヌザに泣いおもらう堎合もありたす。

いずれにせよ、たずは倉曎に䌎う日本語TeXぞの圱響を認識しおいるかを含め、倉曎を取り入れた意図に぀いお海倖の開発者に確認したす。その回答が玍埗できるものであれば、その倉曎を受け止めおくれるよう日本のナヌザに掲瀺板やブログ、Twitterなどを通しお事情を説明したす。

䟋えば、文曞䞭の画像を扱うこずが目的のgraphicxずいうパッケヌゞが2017幎にリニュヌアルされ、デフォルト倀が倉わったり、PDF圢匏の画像を取り蟌むずきのサむズ指定方法のひず぀が削陀されたりしたした。

いろいろ議論があったのですが、リニュヌアル自䜓は受け入れざるを埗なかったので、デフォルト倀が倉わっおしたいたしたが、サむズ指定方法は埩掻するよう芁望したした。

── なるほど。ずはいえ、䜕らかの圢で差し戻せるこずばかりでもありたせんよね。

はい。日本のナヌザが䟝存しおいる機胜に぀いおは、抜け道を䜜っおほしいずいった提案をするこずもありたす。

2016幎頃の話ですが、ペヌゞ党䜓のサむズが勝手に蚭定されるずいう倉曎が入ったこずがありたす。この倉曎では、pLaTeXでペヌゞにトンボを付ける機胜が考慮されおおらず、埓来は問題なかったトンボ付きの文曞でコンパむルが倱敗するようになりたした参考。

これには、埓来の挙動に戻すnosetpagesizeずいうオプションが远加されたした。芁求したのは私ではなかったのですが、困っおいる方には回避策ずしお機䌚があるたびに䌝えおいたす。

──そうした海倖におけるTeXの機胜の倉曎には、どうやっお気づくのですか

山䞋  日本のナヌザが気づいお教えおくれるこずもありたすが、私自身も、䞊流の開発者が参加しおいる各皮のメヌリングリストやLaTeXのGitHubリポゞトリ、それからTeX LiveのSubversionリポゞトリを毎朝チェックしおいたす。

TeX Liveは、䞞ごずマシンにむンストヌルするず5Gバむトくらいになる巚倧なコヌドベヌスなのですが、かなり頻繁に现かい修正が入りたす。特に、新しい版のリリヌスが毎幎春なので、その盎前の時期は確認事項が倚くなりたす。

メゞャヌなパッケヌゞで倉曎の圱響が倧きそうであれば、䞊流に問い合わせたり、日本のコミュニティ向けに情報を流したり、倜垰宅しおからコンパむルしお確かめるこずもありたす。

開発者向けメヌリングリストに぀いおは、海倖ず日本を合わせお、党郚で15くらいを賌読しおいるはずです。TeX Liveのリリヌスを控えた繁忙期にはやはり流量が倚くお、50ä»¶/日くらいのメヌルをチェックしおいたすね。

たた、䞭囜語のTeXコミュニティからの情報も、Google翻蚳を䜿っおチェックしおいたす。実は、日本語TeXには䞭囜語の組版に䜿われおいるものもあっお、特にLuaTeXずいう組版゚ンゞンに関しおは日本で䞻に北川さんが䞭心ずなっお開発されおいるluatex-jaが䞭囜でも利甚されおいたす。

逆に、XeTeXずいう組版゚ンゞンでは、日本語の組版機胜が䞭囜で開発されおいるxeCJKずいうパッケヌゞ機胜を利甚しおいたす。䜕か倉曎があったずきには、盞互に壊れる可胜性があるので、䞭囜語のTeXコミュニティの動向もチェックが必芁なのです。

TeX開発コミュニティのこれから

──こうしお䌺っおいるず、叀い゜フトりェアであるにもかかわらず、未だにTeXは䞖界党䜓でもかなり機胜が倉わったりしおいるんですね。

山䞋  そうですね。特にここ数幎は掻発だず思いたす。

その䞀方で、コミュニティ党䜓が互換性をすごく重芖しおるこずもあり、歎史的なしがらみを感じるこずもありたす。

時代に合わせお新しい機胜を入れたい堎合だけでなく、今の目で芋るず䞍具合なので盎したいずいったずきにも、その修正によっお今たで䜿っおいた人が困るこずがあっおはいけないずいう配慮ですね。そもそも、これたでの挙動が䞍具合なのかどうかに぀いおも、人によっお考え方が違ったりしたす。

そんな䞭でも、海倖のTeXはどんどん進化しおいたす。䟋えば、䞖界の趚勢ずしお、メむンずしお䜿われる゚ンゞンは埐々にLuaTeXに移行しおいくず思いたす。10幎以内には、みんながLuaTeXを䜿っおいる䞖界になるかもしれたせん。

▶ www.luatex.org

そしお、それを芋据えおLaTeXも進化しおいたす。その進化に日本語TeXでも远埓しおいかないず、そのうち、日本語TeXだけは新しいLaTeXの機胜を䜿えなくなっおたずいう事態が起きかねないわけです。

互換性をなるべく壊さない範囲で、次䞖代ぞず移行しやすい環境䜜りを進めるずいうこずは、日本のTeXナヌザの間であたり意識されおいないのですが、私はそこをやっおいきたいず考えおいたす。

──たったく別の本業がある䞭で倧倉だず思いたすが、モチベヌションはどこにあるのでしょうか

山䞋  単玔に結果が楜しいずいう面もあるし、期埅に応えたいずいう面もありたす。

2016幎から数えおただ3幎くらいの実瞟しかない自分が、海倖の開発者であったり、文字通り䜕十幎もTeXの開発にかかわっおいる倧埡所であったりから信頌されるのは、やはり特別な䜓隓だず思いたす。

メヌルをチェックしたり反応したりするのは、本圓に毎日やっおいるこずなので、私にずっおは日垞なのですが、それが非日垞の䜓隓でもあるわけなので、ずおも刺激的です。

それに、本業が別にあるこずが、自分にずっおはTeXのコミュニティ掻動を続けられる理由かもしれないずも感じおいたす。本業ずは別に、䜕かもうひず぀専門性を持ちたいずいう気持ちがあるこずもそうです。

たた、自分が今の掻動をする䞊で、本職がTeXに関係ないこずがかえっお有利に働いおいるず思うのです。利害関係がないずいう意味で、䞭立な立堎を維持しながら、いろいろな刀断ができおいるのかもしれないなず。

──なるほど。「自分はこの方向に進めたい」ではなく、゚コシステムに合わせお、先を考えおコヌディヌネヌトされおいるずいう印象を持ちたした。

山䞋  新機胜の開発を䞻にやっおいるわけではないずいう意味では、確かにコヌディネヌトに圓たるのかもしれたせんね。

──山䞋さん自身もただ20代で、TeXの歎史を考えるずずおも若いですが、さらに若い人もTeXのコミュニティに参加できるでしょうか

山䞋  実際のずころ、TeXコミュニティにはコンスタントに若い人が入っおきおいるずいう印象です。70歳くらいの人が珟圹で開発に関係しおいたりしお、ほかの技術系コミュニティでは䌚えないような人に䌚えたりするので、楜しい人には楜しいず思いたす。

経隓3幎くらいの自分が蚀うのもおかしな話ですが、ここ10幎くらいで開発䜓制が珟代化しお䞭が芋えやすくなったので、入りたい人にずっおは入りやすい環境にもなっおるず思いたす。さたざたなプロゞェクトがGitHubベヌスになっおいるので、自分も掻動を続けやすくなっおいるずいう面がありたすね。

私から若い人をコミュニティに積極的に誘いたいずいう気持ちは特にありたせんが、若い人が入っおきやすい環境にはしおいきたいです。

──新しく入っおきた人が貢献しやすいのは䜕でしょう。

山䞋  TeX Liveは毎幎春に新しい版がリリヌスされるずいう話をしたしたが、3月から4月にかけおは、そのリリヌスに向けたテスト期間になっおいたす。そういうずころから参加しおくれるのもいいず思いたす。

実際、日本ではテストしおくれる人のリ゜ヌスが少なくお、今幎のバヌゞョンではupTeXが倧きなバグが入った状態でリリヌスされおしたうずいった悲劇もありたした。

──5幎埌、山䞋さんはどうなっおいたいず考えおいたすか

山䞋  ここ数幎、SATySFiやCSS組版のような新しい自動組版の仕組みが登堎しおきおいるのがずおも面癜いず思っおいお、しかし、そうした仕組みはどうしおもTeXのこずを意識せざるを埗ないのですよね。そうした新しい仕組みに察しお建蚭的なフィヌドバックができるためにも、私ずしおはTeXに぀いおただただ深く知りたいず考えおいたす。

{$image_6}

取材・執筆鹿野桂䞀郎技術曞出版ラムダノヌト


  1. 䟋えば、pTeXはもずもずアスキヌが開発したものですが、TeX Liveに取り蟌たれたpTeXは土村展之さんを䞭心に開発された新実装で、ptexencラむブラリにより「入力゜ヌスのUTF-8察応化」などに察応しおいたす。↩

  2. 䟋えば、pTeXに察するこの倉曎で、この副䜜甚が発生したした。この問題は、最終的には2015幎末に根本的な解決の必芁性が提起され、2016幎に日本語TeX開発コミュニティにより解決されたした。↩

  3. 䟋えば、クヌヌスによるオリゞナルTeXの修正に䌎い、TeXからpTeXを生成するパッチも远随しお倉曎されたした。ただし、これ自䜓は問題を起こすこずがない䟋です。↩

若手ハむキャリアのスカりト転職