GitHub Codespacesを用いた日本語LaTeX執筆環境『CyTeX』を作った話

こんにちは。らん(GitHub: Ran350)です。
今回は、GitHub Codespaces を用いた日本語LaTeX執筆環境テンプレート『CyTeX』を作ったというお話です。
本記事ではCyTeXの概要や開発背景、構成技術について紹介します。

CyTeX の概要

GitHubリポジトリ:github.com/cysec-lab/CyTeX

CyTeX は、環境構築が容易で、Git管理可能、無料で利用可能な日本語LaTeX執筆環境です。
GitHub Codespaces で LaTeX 環境を構築でき、ブラウザから TeX ファイルの編集が可能です。
VSCode for the Web が利用可能なブラウザさえあれば、LaTeX 環境を構築できるということです。
百聞は一見にしかず、↓の動画のような簡単な手順で環境構築ができます。
詳しい使用手順は、README を参照してください。

※ 動画内でビルド中の待ち時間は一部カットしています。特に初回ビルド時は数分時間がかかります。

開発背景

LaTeX環境構築への課題感

サイバーセキュリティ研究室の学生には、卒業論文や修士論文、学会論文の執筆時にLaTeX環境を構築する機会が訪れます。
研究室として推奨されている構築方法は特になく、各々が好きなLaTeX環境を選んでいるという状況です。
こだわりがある学生にとってはそこまで苦な作業ではありませんが、そうでない学生や締め切りに追われている人にとって執筆環境構築は面倒な作業です。(論文提出締め切りに追われない人になりたい)
また、例えば自宅PCと研PCといった、複数の環境で構築したくなった場合も面倒です。
卒論修論に関しては、大学から配布される卒論修論専用のTeXファイルのテンプレートがあるのですが、各々がファイルをダウンロードしてきて〜任意のTeXパッケージを入れて〜章立てして〜という作業は面倒です。理想的には、全員共通のテンプレートを用意し、全員が行う面倒な作業はなくしたいところです。

目的のLaTeX環境

そういうわけで

  • 環境構築が簡単で、
  • 環境差異が少なく、
  • Git管理ができて、
  • 無料で利用できて、
  • 論文テンプレートを配布できる、

そんな LaTeX執筆環境の構築を目指して作ったのが、CyTeXです。
ちなみに、CyTeX の命名は Cyber Security Lab と LaTeX からとっています。

クラウドサービス

検討したクラウドサービスについて言及しておきます。(読み飛ばしても大丈夫です)

Cloud LaTeX Overleaf は、サイバーセキュリティ研究室でも人気のオンラインLaTeX環境ですが、無料でGit管理できないのが不満です。

community版 Overleaf では、Git管理でき、登録 1週間以内は無料で使えるそうです。が、論文執筆期間を考えると無料枠だけでは厳しそうです。

ローカル環境でOverleaf環境を構築する方法もあって良さそうでしたが、操作面においてVSCodeの方が好みという学生の方が弊研には多かったため採用しませんでした。

VSCode Cloud LaTeX Extension という、ローカルのファイルを Cloud LaTeX にアップロードし、生成されたPDFファイルをローカルにダウンロードしてくれるVSCode 拡張機能もあります。
個人的には卒論執筆時に利用していて好きなんですが、一部のファイルを同期する時の挙動がうまくいかず、やや不満もありました。
余談ですが、サイバーセキュリティ研究室の xryuseix くんがこの挙動を修正したリポジトリを作ってくれていました。
https://github.com/xryuseix/cloudlatex-cli-plugin

CyTeX を支える技術

下図は技術構成の全体像です。

ここではなぜこの構成になったのか、一つずつ順を追って解説していきます。

LaTeX Workshop

構成図には載せていませんが、VSCodeの拡張機能 LaTeX Workshop も CyTeX の構成に含まれます。
保存時ビルドやPDFプレビュー、ユーザスニペットの登録、PDFからソースへのジャンプなどなど、めちゃんこに執筆体験をあげてくれます。

texlive

texlive でTeXファイルをコンパイルし、論文PDFを出力します。

Docker

texliveのみの構成だと各々のPCで texlive 環境をインストールする必要があり、環境差異を小さくしたいという要件を満たせません。
そこで、環境をまるごとDockerコンテナ化します。
CyTeX では、texlive をインストールした Ubuntu 環境の Docker イメージを使用しています。

devContainer

LaTeX環境をDockerコンテナ化して環境差異を無くしましたが、執筆する際にいちいちDockerコンテナを起動するのは少々面倒です。
理想的には、執筆リポジトリをVSCodeで開いたら自動的にDockerコンテナを起動してほしいところです。
CyTeX では、devContainer を起動するだけでDockerコンテナ化された執筆環境が準備されるようにしています。
devContainer の起動もめっちゃ簡単。VSCode でプロジェクトを開いた時に表示される「Reopen in Container」ボタンをクリックするだけです。
参考:Devcontainer(Remote Container) いいぞという話 ~開発環境を整える

GitHub Codespace

devContainer を用いて執筆環境の起動を簡単化しましたが、とはいえ前提として執筆環境のPCにDocker本体をインストールしている必要があります。
この前提も状況によっては面倒で、欲を言えば Docker がインストールされていない PC でも執筆したいところです。
そこで 、 GitHub Codespaces の仕組みを使って、GitHub が提供する仮想環境上に LaTeX 環境を構築するようにしました。
ファイルの編集自体は変わらず VSCodeで行いますが、実際に LaTeX のビルド環境があるのは GitHub の仮想環境上になります。
VSCode で編集したファイルの変更は、GitHub の仮想環境上の LaTeX 環境に反映され、ビルドが行われます。
生成されたPDFはローカルのVSCodeに送信され、執筆者が閲覧できるようになります。

VSCode for the Web

エディタに関して、上記までは Desktop 版の VSCode を前提にお話ししてきましたが、他にもブラウザ版 VSCodeである VSCode for the Web でも CyTeX を利用できます。
対応ブラウザは Chrome、Edge、Firefox、Safari がサポートされているみたいです。
これにより、VSCodeすらインストールされていない、ブラウザのみのPCでも執筆できるようになりました。

ブランチによる論文テンプレート管理

「論文テンプレートを配布できる」という要件を満たすため、CyTeX ではブランチごとにテンプレートを分けるという設計にしました。
CyTeX リポジトリには以下のようなリモートブランチを作成する予定です。

  • template/dimoco-2023  ← 学会論文
  • template/bachelor-thesis-2024  ← 2024年卒業論文
  • template/master-thesis-2024  ← 2024年修士論文

各執筆者は、各ブランチのソースダウンロードし、これをテンプレートとして執筆する感じです。

推しポイント

要件を満たせているか

  • 環境構築が簡単 → ◎ ブラウザのみで構築可能
  • 環境差異が少ない → ◎ GitHub の仮想環境に構築している
  • Git管理ができる → ◎ 各々のリポジトリでGit管理する
  • 無料で利用できる → ○ Codespaces には利用上限がある(後述)
  • 論文テンプレートを配布できる → ◎ 各論文テンプレートをのせたブランチを容易

構成の柔軟さ

上記までは VSCode + texlive + Docker + devContainer + Codespaces という構成で執筆環境を構築できると解説しました。
一方で、これを最もリッチな構成として、ここから好きな構成に柔軟に変更できるのも、CyTeX の特徴です。
例えば、次のような構成へ容易に変更可能です。

VSCode + Docker + devContainer

Codespaces を起動せずに単にローカルで devContainer を起動する方法です。
下準備として、VSCode と Docker本体のインストールが必要です。
執筆時は、VSCode でプロジェクトを開いて「Reopen devContainer」ボタンを押すだけで devContainer が起動します。

任意のエディタ + Docker

VSCode や devContainer を使用せずに、単に Docker コンテナを起動する方法です。
下準備として、Docker 本体のインストールが必要です。
執筆時は CLI や Docker Desktop などからコンテナを起動し、任意のエディタでtexファイルを編集します。

Codespaces 利用上の注意点

無料で使用できる月間ストレージとコア時間 には上限があるので、ここはCyTeX利用上の注意ポイントです。
GitHub Pro アカウントの場合は 180 コア時間/月で、2 コアから選択できるので月 90 時間分に相当します。
コア時間は、Codespace が Active 状態の時間がカウントされるみたいです。

まとめ

GitHub や VSCodeまわりのクラウドツール、すごい

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です