Re:VIEWを利用して文書作成できるようにするまで
こんにちは。松江ラボのハンドルネーム出雲の風です。
私が所属する部署では、文書の作成にLibreOfficeを使用していました。作成者によってソフトウェアのバージョンに違いがあり、それによってレイアウトが崩れる問題がありました。また、文書をGitで管理したいという要望もありました。
そこで、検討した結果、GitとRe:VIEWを使い、誰でも同じレイアウトで作成できるようにしました。ここでは、DockerとRe:VIEWを組み合わせた文書作成環境の構築方法について紹介します。
Re:VIEWとDockerについて
文書作成環境を構築する手順を説明する前に、なぜこの環境を利用するのかについて、説明します。
Re:VIEWは電子書籍と紙書籍のための、簡潔かつ強力な文書作成ツールです。独自のフォーマットによってマークアップを行い、同じソースファイルから、必要があれば複数のフォーマットに変換することができます。また、記法の拡張も行いやすくなっています。
Dockerは仮想化環境を提供するOSSです。必要な部分だけを仮想化環境として動作させるので軽量ですし、テキストファイルに環境構成を残せるため、移植性もあります。
そのため、Dockerは軽量、移植性の高い仮想化環境が利用でき、Re:VIEWは単純な文法と、それによって書かれた文書を、様々なフォーマットに変換できるという利点があります。
また、Docker上にRe:VIEWが利用可能な環境を作成することにより、文書作成の環境を固定できたり、Gitなどでドキュメントのバージョン管理を行ったりできる、というメリットも生まれてきます。
Dockerのインストール
今回は、文書作成環境を動作させるOSとして、Ubuntu18.04 を使用します。まず、同OSに、Dockerをインストールする手順を説明します。
なお、この節で紹介するコマンド実行例は、実際に行った場合と多少異なる場合があります。
インストールに使用するツール群のインストール
Ubuntuはパッケージマネージャとしてaptを使用しています。そのため、今回はaptを使用してインストールを進めていきます。そこで、Dockerのパッケージをインストールする際、いくつかのツールが必要になります。
$ sudo apt install apt-transport-http ca-certificates curl software-properties-common [sudo] user のパスワード: パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 (略) libc-bin (2.27-3ubuntu1) のトリガを処理しています ... man-db (2.8.3-2) のトリガを処理しています ... curl (7.58.0-2ubuntu3.1) を設定しています ...
Dockerのインストールで利用するGPG鍵の取得
Dockerのインストール時に行う、署名の確認にGPG鍵を使用するので、aptの鍵リストに登録しておきます。
$ curl -fsSL http://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - OK
Docker提供のaptリポジトリを追加する
インストール時に走査するリポジトリに、add-apt-repository
コマンドを用いて、Dockerが提供するリポジトリを追加します。
これにより、aptを使用してDockerをインストールすることができるようになります。
$ sudo add-apt-repository "deb [arch=amd64] http://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" ヒット:1 http://jp.archive.ubuntu.com/ubuntu bionic InRelease 取得:2 http://jp.archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB] (中略) 取得:17 http://jp.archive.ubuntu.com/ubuntu bionic-updates/multiverse amd64 DEP-11 Metadata [2,468 B] 取得:18 http://jp.archive.ubuntu.com/ubuntu bionic-backports/universe amd64 DEP-11 Metadata [5,096 B] 1,483 kB を 1秒 で取得しました (1,101 kB/s) パッケージリストを読み込んでいます... 完了
Dockerのインストール
aptを使って、Docker社から提供されている、dockerパッケージを参照できるようになりました。Dockerには、Enterprise Edition(EE)と、Community Edition(CE)があり、前者は有料、後者は無料となっています。今回はCE版をインストールします。
$ sudo apt install docker-ce パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の追加パッケージがインストールされます: aufs-tools cgroupfs-mount git git-man liberror-perl pigz 提案パッケージ: git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-cvs git-mediawiki git-svn 以下のパッケージが新たにインストールされます: aufs-tools cgroupfs-mount docker-ce git git-man liberror-perl pigz (中略) docker-ce (18.03.1~ce~3-0~ubuntu) を設定しています ... Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service. Created symlink /etc/systemd/system/sockets.target.wants/docker.socket → /lib/systemd/system/docker.socket. git-man (1:2.17.1-1ubuntu0.1) を設定しています ... ureadahead (0.100.0-20) のトリガを処理しています ... liberror-perl (0.17025-1) を設定しています ... (略)
Dockerサービスの起動
Dockerのインストールが完了したら、サービスを起動します。
$ sudo systemctl start docker
Re:VIEWの環境用意
Dockerが利用可能になったら、Dockerを用いてRe:VIEWが動作する環境を用意します。
Dockerイメージは自分で作成することもできますが、すでに作成されたDockerイメージがある場合、それを使用することもできます。これにより、Dockerイメージ作成時のトラブルを回避でき、また、短時間で環境を作成できます。すでにDockerHub上にRe:VIEWシステムが利用可能なDockerイメージがあるので、今回はそれを使用します。docker pull
コマンドで取得できます。
$ sudo docker pull vvakame/review
取得できているか確認します。
$ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE vvakame/review latest 6ad892ad81bf 4 weeks ago 1.79GB
Re:VIEWフォーマットからPDFに変換してみる
環境が用意できたら、いよいよドキュメントを作成します。今回は、動作確認のため、Re:VIEWのGitリポジトリ内にあるサンプルテキストをPDFファイルに変換します。
まずは、Re:VIEWのGitリポジトリをgit clone
コマンドで取得します。
$ git clone http://github.com/kmuto/review.git
サンプルのRe:VIEWフォーマットソースはreview/samples/sample-book/src
内にあります。PDFに変換するためには、review-pdfmaker
コマンドを利用します。review-pdfmaker
コマンドの引数にはconfig.yml
を指定します。これをDockerの環境上で実行します。カレントディレクトリと、Dockerコンテナ上でファイルをやりとりするため、-v
オプションでホストとコンテナ間でのディレクトリ共有の指定を行い、実行コマンドをシェルに渡す指定も行います。
$ cd review/samples/sample-book/src $ sudo docker run -v $(pwd):/work vvakame/review sh -c 'cd work && review-pdfmaker config.yml' W, [2018-10-04T01:27:55.252259 #8] WARN -- : review-pdfmaker: major version of configuration file is different. compiling preface.tex compiling ch01.tex compiling ch02.tex This is e-upTeX, Version 3.14159265-p3.7.1-u1.21-161114-2.6 (utf8.uptex) (TeX Live 2016/Debian) (preloaded format=uplatex) restricted \write18 enabled. entering extended mode (./book.tex (中略) dvipdfmx:warning: Object @page.1 already defined. ][6 dvipdfmx:warning: Object @page.2 already defined. ][7][8][9] 226400 bytes written
処理が終わりました。実際にPDFファイルができているか確認してみます。変換されたファイルは、カレントディレクトリ下に出力されますので、カレントディレクトリ下にファイルがあるか見てみます。
$ ls *.pdf book.pdf
出力されていますね。以上で環境作成は完了です。おつかれさまでした!といいたいところですが、実際にはこれから本番のドキュメントの作成作業が始まります。
おわりに
DockerとRe:VIEWで文書を作成する環境ができました。
今回はPDFファイルに変換しましたが、EPUBやHTMLなど、様々なフォーマットへの変換に対応しています。書式の統一や、テキストベースでの管理のしやすさなどもあるので、今後も活用したいと思います。
機会があれば、Re:VIEWの使い方等の紹介をしてみたいと思います。ここまで読んでくださり、ありがとうございました。