ドキュメンテーションジェネレータの「Sphinx」を詳しく説明している次の記事を見つけた。
Sphinxは以前から注目していたツールで、使いこなしてみたくなり、記事をなぞる形で環境構築を始めた。reStructuredTextではなくMarkdown形式で原稿を書くようにして、Mermaid記法への対応を試してみたり、Mermaidの図はLaTeXに持っていきにくそうだから図の記法をPlantUMLへ切り替えて、PlantUMLを描画するためのJava環境を用意し、LaTeXを経由したPDFファイルの中に図が描けていることを確認して……と、いくつかの問題を時間をかけてやっと乗り越えられそうだと思ったときに、気づいた。
昨今、Sphinxみたいなややこしいソフトウェアの環境構築は、Dockerを使って仮想的に行う潮流だった。ということは、この場合もDockerコンテナを用意すると便利では? (そういえば拙作LibLibでやってたなあ)
上記の着想から数日を費やし、Sphinx環境のDockerコンテナをコマンド一発で用意できるファイル一式を完成させて、mah-jp/sphinx-docker_gen-html-pdfというリポジトリ名でGitHubにアップロードした。
Sphinxでのドキュメンテーションを始める際、Dockerの力を使うと圧倒的に楽ができる。そのような時にはよかったらこのリポジトリをcloneしてみてください。
上記リポジトリのファイル一式を完成させるまで、いくつかのエラーを解決する必要があった。特にCase-3などはウェブ情報が少なくて、(M1 MacのDockerをx86-64として動かしてみてエラーの変化を調べたりなど) なかなかの試行錯誤を伴う道のりだった。誰かの参考になるかもしれないのでメモを残します。
/docs/sample.rst:00: WARNING: epstopdf command 'epstopdf' cannot be run
texlive-font-utils
パッケージをインストールする
WARNING: command 'mmdc' cannot be run (needed for mermaid output), check the mermaid_cmd setting
npm
パッケージをインストールした上で、npm install -g @mermaid-js/mermaid-cli
を実行する
b'\nError: Failed to launch the browser process!\nrosetta error: failed to open elf at /lib64/ld-linux-x86-64.so.2\n
これはM1のmacOS環境 (Ventura 13.6.7) で遭遇した。Dockerイメージのアーキテクチャはarm64のはずなのに、なぜだか「Rosetta」や「x86-64」がエラーメッセージに登場する。わけがわからない。
chromium
パッケージをインストールするmermaid_params = ['-p', 'puppeteer-config.json']
を追加{
"executablePath": "/usr/bin/chromium"
}
b'\nError: Failed to launch the browser process!\n[0000/000000.000000:ERROR:zygote_host_impl_linux.cc(99)] Running as root without --no-sandbox is not supported.
{
"executablePath": "/usr/bin/chromium",
"args": ["--no-sandbox"]
}