LuaTeX を Docker でリモート実行する — 思考環境を漏らさない設計

Read in English

学術文書を LuaTeX で組版しようとすると、最初に壁になるのは環境構築の重さだといえるでしょう。TeX Live のフルインストールは数 GB、日本語フォントを揃えれば追加で数百 MB、依存パッケージは OS によって挙動が異なります。論文や報告書を書きたいだけなのに、ローカルマシンが組版環境のために肥大化していくわけです。

組版能力を犠牲にせず、ローカル環境を最小化したい ── この要請に応える一つの解として、リモート Docker による組版環境の隔離が選択肢になるといえるでしょう。本稿は、その実装である luatex-docker-remote2 の設計方針を、構成要素ごとに整理してみます。

設計方針 — ローカルを汚さず、組版能力を最大化する

設計の出発点は単純です。

  • ローカル環境: テキストエディタ + .tex / .sty / 図版ファイルだけ
  • 組版能力: TeX Live full + 日本語フォント生態 + LuaLaTeX-ja
  • 両者の橋渡し: rsync + SSH + Docker

具体的には、ユーザーが手元で luatex-pdf document.tex と打つだけで、背後で次のことが起こる構成です。

  1. ローカルの .tex / .sty / 画像ファイルがリモート Docker ホストに rsync される
  2. リモート上の Docker コンテナが LuaTeX を起動して PDF を生成する
  3. 生成された PDF がローカルに戻され、リモート側の一時ファイルは破棄される

ローカルマシンに残るのは PDF だけです。TeX Live もフォントもキャッシュも、すべてリモート側のコンテナに閉じ込められる、という設計だと整理できます。

本サイトの基礎記事 決定論的にではなく、相対的に の語彙でいえば、これは 媒介物を制御下に置く 設計です1。LuaTeX 環境は「何をどう組版できるか」を規定する媒介物ですが、それをローカルに展開すると、TeX Live のバージョン、フォントの状態、依存パッケージの挙動が他の作業と絡み合い、いつしか「捨てられない」状態になります。コンテナに隔離すれば、媒介の境界が物理的に明示され、まるごと差し替えることも捨てることもできます ── 媒介物が自分の手を離れて勝手に育っていくのを防ぐ、という態度です。

ネットワーク自動検出 — 一つのコマンドで内・外を切り替える

実用上もっとも面倒なのは、自宅ネットワーク内と外出先で SSH 接続先が変わる問題だといえるでしょう。家庭内では内部ホスト名 (例: zeus) で接続でき、外出先ではグローバル IP やドメイン経由 (例: zeus-soto) になる。同じコマンドで両方をシームレスに動かしたい、という要請です。

luatex-docker-remote のネットワーク自動検出は、次の二段階の判定で実装されています。

  1. 現在のグローバル IP を取得する
  2. 事前に登録した「自宅のグローバル IP」と比較する

一致すれば内部ホスト名で接続、しなければ外部ホスト名で接続 ── これだけです。設定は ~/.home_global_ip~/.config/luatex/network-config の二ファイルに分散しており、初回セットアップは make setup-network で完結します。

実装は素朴ですが、ユーザー体験への効果は大きいといえるでしょう。luatex-pdf document.tex というコマンド一つが、自宅でもカフェでも同じ意味を持つ ── これが目指された使い勝手です。

.sty 自動同期 — プロジェクトローカルとシステム共通の二層

LaTeX における .sty (スタイルファイル) の扱いは、伝統的に二つのパターンに分かれます。

  • プロジェクトローカル: 当該プロジェクト固有の .sty.tex と同じディレクトリに置く
  • システム共通: TEXMFHOME (~/.local/share/texmf/tex/latex/) に置いて全プロジェクトから参照する

luatex-docker-remote はこの二層を踏襲しています2

  • プロジェクトディレクトリ内の .sty は、.tex と一緒に rsync される
  • ~/.config/luatex/styles/ 以下の .sty は、コンテナ起動時にマウントされ、全プロジェクトで利用できる

この分離は、CLAUDE.md などのプロジェクト固有設定ファイルの取り扱いと類似した発想だと読むことができるでしょう。「プロジェクトに閉じる設定」と「横断する設定」を物理的に分離して、衝突を防ぐ ── 計算環境設計の常套手段だといえます。

日本語フォント生態 — 原ノ味と Libertinus Math の組合せ

日本語 LuaLaTeX における長年の課題は、フォント整備の手間でした。Adobe Source Han が登場するまでは、IPA / IPAex / TakaoFonts などを個別に整備する必要があり、ライセンス確認も含めて初期投資が大きい領域だといえるでしょう。

luatex-docker-remote の Docker イメージには、次の和文フォントが事前インストールされています2

  • 原ノ味フォント (Harano Aji) ── Adobe Source Han 系を TeX 用に最適化したもの
  • Noto CJK ── Google・Adobe 共同のオープンソース CJK フォント
  • IPA / IPAex ── 情報処理推進機構 (IPA) 提供の伝統的アカデミックフォント
  • TakaoFonts / M+ FONTS / さわらびフォント / VL ゴシック など

このうち、欧文の Libertinus Math (数式・本文) と組み合わせる際の第一推薦は 原ノ味フォント だと位置づけられます。理由は、Source Han 系の字面と Libertinus Serif の字面が視覚的に近接しており、和欧混植のときに「グレースケールの均衡」が取れることだといえるでしょう3

数式を多用する物理・工学系の文書では、Libertinus Math が unicode-math パッケージで使える唯一級のオープンフォントだといえます4。著者が個人的に標準として使っているのもこの組合せです。

使用フロー — 透明性と冪等性

設計が成立すれば、日々の使用はきわめて単純になるといえるでしょう。

# 通常コンパイル (LuaLaTeX + 日本語)
luatex-pdf document.tex

# 監視モード ── ファイル更新で自動再コンパイル
luatex-pdf -w document.tex

# エンジン切替 (upLaTeX, pLaTeX, XeLaTeX, pdfLaTeX)
luatex-pdf -e uplatex document.tex

この luatex-pdf コマンドが背後で行っているのは、rsync (ローカル→リモート)、SSH 経由の Docker 起動、コンパイル、PDF 取得 (リモート→ローカル)、リモートクリーンアップの一連です。これらすべてがコマンド一回で透明に完結するように整えられているといえるでしょう。

make uninstall を実行すれば、ローカル側に残った設定ファイルとシンボリックリンクは綺麗に消える設計になっています ── 環境を捨てやすいことは、環境を導入しやすいことと同じくらい重要だと整理できます。


ここから少し、この設計を 2026 年の知的生産論の文脈で位置づけ直してみたいと思います。luatex-docker-remote のような環境設計は、単なる「便利ツール」ではなく、思考の延長を整える行為そのもの だと読むことができるのではないでしょうか。

梅棹忠夫が『知的生産の技術』(1969) で示したのは、思考と処理の 分離・統合の技術 が知的生産の中核であるという命題でした5。Clark & Chalmers の「拡張された心」(1998) は、外部の道具やメディアが認知の構成要素となりうることを哲学的に定式化しています6。これらの議論を、luatex-docker-remote のような計算環境設計に当てはめれば、次のように読み替えることができるでしょう。

  • ローカル環境のクリーンさ = 思考の流れを止めない (梅棹のカード書き作業に対応)
  • リモート Docker への隔離 = 処理装置を外部に置く (Clark & Chalmers の外部認知装置に対応)
  • ネットワーク自動検出 = 道具操作を自動処理層に降ろす (Shiffrin & Schneider の自動処理に対応7)

つまり、組版環境の設計は計算工学の問題であると同時に、認知環境の設計 ── 媒介の設計 でもあるといえるでしょう。Clark & Chalmers が「拡張された心」として論じたものと、本サイトが 媒介性 と呼ぶものは同じ事態の別の入口で1、ここでは「組版を媒介する装置を、どこに、どう隔離して持つか」という形で現れています。一行のコマンドが文脈に応じて適切に動くこと、ローカルを汚さないこと、捨てやすいこと ── これらはすべて、媒介物を制御下に置きながら書き手の思考の流れを止めないための条件だと位置づけられます。

知的生産論の系譜に立ち戻れば、luatex-docker-remote のようなツール設計は古典的な問いの現代における実装だと整理することができるでしょう。本サイトの既掲記事 書くことは考えることか — 思考と道具の境界、および基礎記事 決定論的にではなく、相対的に と併せて読まれると、その射程はさらに鮮明になるはずです ── 道具を「正解の手順」にせず、媒介する範囲を明示して状況に応じて差し替えられるようにする、という態度の、組版環境という分野での具体例がこれです。

参考文献


  1. 媒介性 / 差延 / 検証と妥当性確認 (V&V) の非対称性 の操作的な定義と理論的な扱いについては、本サイトの基礎記事 決定論的にではなく、相対的に の脚注、および著者の Zenodo プレプリント・シリーズ (レター版 DOI: 10.5281/zenodo.20096463) を参照。 

  2. mashi727/luatex-docker-remote, GitHub リポジトリ. https://github.com/mashi727/luatex-docker-remote ── 設計の詳細、インストール手順、サポートエンジン一覧などはリポジトリ README を参照。 

  3. Libertinus Fonts Project. Libertinus. GitHub. https://github.com/alerque/libertinus ── Linux Libertine からフォークされ、unicode-math 対応を含む数式フォントとして整備されているオープンソースフォントファミリ。 

  4. Robertson, Will, et al. unicode-math: Unicode Mathematics Support for XeTeX and LuaTeX. CTAN, 2025. https://ctan.org/pkg/unicode-math ── LuaTeX で OpenType 数式フォントを利用するための標準パッケージ。 

  5. 梅棹忠夫『知的生産の技術』岩波新書、1969 年。 

  6. Clark, A. and D. Chalmers. “The Extended Mind.” Analysis, vol. 58, no. 1, 1998, pp. 7–19, p. 7 ── “Where does the mind stop and the rest of the world begin?” 

  7. Shiffrin, R. M. and W. Schneider. “Controlled and Automatic Human Information Processing: II. Perceptual Learning, Automatic Attending, and a General Theory.” Psychological Review, vol. 84, no. 2, 1977, pp. 127–190.