LoginSignup
36
34

More than 5 years have passed since last update.

卒論執筆環境を手軽に構築する

Last updated at Posted at 2018-02-17

はじめに

卒論の執筆にあたり、私はMac, Windows, Linux系のどれもよく使うのでそれぞれでのLaTeXの環境構築がネックでした。
また、いちいち指導教員に見せるのもすら面倒だったのでそれならGithHubにLaTeXのソースをpushすればtravis-ciでpdfをビルドし、Dropboxにアップロードしてそれを指導教員にメールで通知とするところまで自動化すれば私は執筆に集中できる!と考えました。
この記事ではdockerとかtravis-ciなどの細かい説明はしません。

dockerを選んだ理由

手元のマシンにいちいちMacTexとかTexLiveとか入れるのめんどい。。。
ということでdockerであらかじめLaTeXのビルド環境を構築しておいて各ローカルマシンでそれを走らせればローカル環境の差をなくせるし、travis-ciでもいちいちaptでtexliveをインストールするよりdocker pullするだけで環境構築できるので楽だということです。

dockerのイメージについて

ベースはdebian-stable-slimとしてaptでtexliveを構築します。
alpineでインストーラをダウンロードしてインストールすることも考えましたが、後々何かを追加したい時にaptがあると便利なのでdebianをベースイメージとして採用しました。
不要な言語環境やドキュメントは削除することでイメージサイズを削減します。
最終的にイメージサイズは405MBになりました。
色々工夫すればもう少しダイエットできそうですがこのくらいにしておきます。

Dockerfile
FROM debian:stable-slim

RUN apt update && \
    apt upgrade -y && \
    apt install fonts-ipafont fonts-ipaexfont texlive texlive-formats-extra texlive-science texlive-lang-japanese -y && \
    apt purge *-doc* *chinese* *korean* *thai* -y && \
    apt clean -y && \
    apt autoremove -y && \
    apt autoclean -y && \
    mkdir /workdir

WORKDIR /workdir

VOLUME ["/workdir"]

CMD ["bash"]

このイメージはDockerHubに公開しているので以下のコマンドで取得可能です。

$ docker pull johejo/debian-latex-jp

ビルド

作成したイメージをデーモンとして走らせます。
デーモンにする理由は単に私の好みです。
基本的に私はdockerを使うときはデーモンで起動して入力はdocker execでするようにしています。

$ docker run --name latex-env -itd -v $PWD:/workdir johejo/debian-latex-jp
$ docker exec latex-env bash -c "SOME LATEX COMMAND"

Dropboxへのアップロード

curlを用いたDropboxへのアップロードツールを用います。
andreafabrizi/Dropbox-Uploader
通常はこのスクリプトを初めて実行した時にトークンの設定ができるのですが、今回は自動化が目的ですのでトークンを環境変数から読み込みます。
homeディレクトリに.dropbox_uploaderという名前でトークンを書き込んでおくとそれを使ってくれます
アップロードスクリプトはこんな感じです

 #!/bin/bash

readonly BUILD_DIR=build
readonly DROPBOX_UPLOADER_URL=https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh

curl $DROPBOX_UPLOADER_URL -o dropbox_uploader.sh
chmod +x dropbox_uploader.sh
echo "OAUTH_ACCESS_TOKEN=($DROPBOX_TOKEN)"  >  ~/.dropbox_uploader
./dropbox_uploader.sh upload $BUILD_DIR/hoge.pdf .
rm -f ~/.dropbox_uploader

travis-ci

GitHubのリポジトリと連携してCIするサービスですが、スクリプトを設置することで色々な自動化に使えます。
今回はtravis-ciの通知機能でビルド完了時にメールを送るようにしています。
ここら辺はslackに置き換えるのも良いでしょう。
あらかじめtravis-ciの設定でDropboxのトークンを環境変数としてセットしておく必要があります。

travis.yml
service: docker

language: bash

notifications:
  email:
    - foo@bar.com
  on_success: always
  on_failure: never

addons:
  apt:
    packages:
      - curl

before_install:
    - docker run --name latex -itd -v $PWD:/workdir johejo/debian-latex-jp:latest

script:
    - docker exec latex bash build.sh
    - ./upload.sh

最後に

快適で手軽な執筆のためでしたが私はこの環境を作り上げるまでに割と時間がかかって執筆がおろそかになりました。

36
34
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
34