DevContainerで始めるLaTeX論文予稿執筆
TL;DR
DevContainer内で
メリット
- 構築が楽、TeX Live をローカルにインストールしなくて済む
- パッケージ追加もDockerfileを編集するだけ
- LaTeX Workshopが自動でconfig込みで入るので、コンパイルを気にする必要がない
LaTeXの実行環境
アカデミックな分野で論文を執筆する場合は、WordやPages、Google Docsよりも
LaTeX のしんどいポイント
- Wordのように単一のアプリケーションとして配布されているわけではない
- 歴史の長いソフトウェアであるため、環境依存の問題が発生しがち
- 実用上様々な拡張パッケージを入れる必要がある
- PDFファイルを出力するために、幾つものコマンドを入力する必要がある
↑を簡素にした TeX Live のようなディストリビューションを利用する手やOverleafのようなクラウド実行環境を利用する手もありますが、今回はローカルで環境依存なく
環境とは
ソフトウェアを実行するためには、その実行バイナリ(.exeなど)があるだけでなく、それを実行するための条件が揃っている必要があります。
例えば:
- WindowsアプリはmacOSでは動作しない
- Pythonでライブラリを使うときはあらかじめ
pip install
しないといけない
このような条件のことを総じて「環境」(Environment)と言い、ソフトウェアを動かすためには環境を整えてあげることが必要です。
環境の準備
以下の手順が既にお済みの方は適宜スキップしてください。
(Homebrew Caskなどでインストールしても構いません)
Docker Desktop のインストール
Dockerとは
以下ChatGPTの回答
Dockerは、ソフトウェアの開発や配布を効率化するためのプラットフォームです。初心者向けに簡単に説明すると、Dockerはアプリケーションを「コンテナ」と呼ばれる独立した環境にパッケージ化して実行する技術です。以下にDockerの基本的なポイントを紹介します。
- コンテナとは?
軽量な仮想化技術: コンテナは、仮想マシン(VM)に似ていますが、より軽量です。ホストOSのカーネルを共有しながら、独立した環境を提供します。
一貫した環境: 開発環境と本番環境で同じ環境を提供できるため、動作の一貫性を確保できます。- Dockerの利点
ポータビリティ: コンテナにパッケージ化されたアプリケーションは、どの環境でも同じように動作します。開発者のローカルマシンでも、テスト環境でも、本番サーバーでも同じです。
効率性: コンテナは軽量で、リソースの消費が少ないため、多くのコンテナを一台のホスト上で実行できます。
迅速なデプロイ: コンテナは迅速に起動でき、アプリケーションのデプロイが迅速かつ簡単になります。- 基本的な用語
イメージ (Image): コンテナの実行に必要なファイルや設定を含むテンプレートです。イメージはDocker Hubなどのリポジトリから取得できます。
コンテナ (Container): イメージを実行した実体です。独立した環境でアプリケーションを実行します。
Dockerfile: イメージを作成するための設定ファイルです。どのソフトウェアをインストールするか、どのコマンドを実行するかなどを記述します。
つまりDockerとはローカルOSの環境を汚染することなく、独立した環境を作成することができるソフトウェアです。
Dockerに関してはこちらの記事がわかりやすいと思います。
インストール
https://www.docker.com/ja-jp/products/docker-desktop/ から自分のOSにあったDocker Desktopをインストールします。
Visual Studio Code のセットアップ
インストール
情報基礎の授業で Visual Studio Code (以下VSCode)はインストールされているかと思いますが、もししていない場合は下からダウンロードしてください。
Dev Containers 拡張機能のインストール
Dev Containersとは、VSCodeがDockerコンテナの中で直接ファイルを編集したりコマンドを実行するような作業ができるようになる拡張機能です。
VSCodeの左サイドバーから「Extensions」を開き、Dev Containers
を検索してインストールしてください。
使い方
リポジトリの作成
こちらのテンプレートをブラウザで開き、右上のUse this template から Create New Repositoryを選択します。
任意のリポジトリ名をつけて、自身のアカウントにリポジトリを作成します。
リポジトリが作成できたら、ローカルに作成したリポジトリをクローン(git clone
)してください。
VSCodeでの開き方
作成したリポジトリをクローンしてVSCodeで開きます。
すると、右下に「Reopen in Container」と書かれた青色のボタンが表示されるのでクリックします。初回はイメージのダウンロードとビルドを行うため少し時間がかかります。
もし「Reopen in Container」のダイアログを閉じてしまった場合は、ウインドウ左下の「><」のような青色のボタンをクリックして出てきたリストから「Reopen in Container」を選択することでDockerコンテナ内でリポジトリを開くことができます。
書いてみる
VSCodeをDockerコンテナ内で開けたら、自動的に必要な LaTeX Workshop 拡張機能がインストールされます。
main.tex
を編集して保存するたびに、自動で main.pdf
が作成・更新されるようにセットアップ済です。
あとは通常通り BibTeX や図表を追加して、快適な執筆ライフを〜
パッケージの追加
TeXLiveのデフォルトパッケージに加えて、筆者がよく利用する algorithms algorithmicx algpseudocodex
をイメージに同梱してあります。
もしそのほかのパッケージを追加したい場合も、.devcontainers/Dockerfile
を編集することで簡単にできるようになっています。
FROM paperist/texlive-ja:latest
RUN wget -P "/sty" "https://raw.githubusercontent.com/h-kitagawa/plistings/master/plistings.sty"
RUN tlmgr update --self
# ↓に追記
RUN tlmgr install algorithms algorithmicx algpseudocodex
RUN apt update && apt install -y git
CMD [ "bin/bash" ]
あとがき
DockerでTeXLive環境を建てる記事はありましたが、DevContainerを利用する記事が見当たらなかったので執筆しました。
以前筆者はOverleafを使用していましたが、Git連携機能が完全有料化されたのを機にローカルに移転するために本テンプレートを作成しました。
DevContainers、Ruby・LaTeXのような環境が重い言語には相性抜群ですね。
Discussion