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

学術文書を 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.20096462) を参照。 ↩↩

  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. ↩