Ubuntu Weekly Recipe

第548回書籍制作を支援するソフトウェア「Re:VIEW」使う

技術系同人誌を作成している人なら特にお世話になっているであろう「Re:VIEW」の最新版3.0.0がリリースされました。今回はこのRe:VIEWをUbuntuにインストールした上で、その基本的な使い方を紹介します。

Re:VIEWとは

Re:VIEW(りびゅー)は簡単に使える、紙書籍・電子書籍作成支援ツールです。出力フォーマットとしてEPUBやPDFだけでなく、InDesign XMLにも対応しているため、電子版の同人誌から印刷される商業出版に至るまで幅広く使われています[1]⁠。

組版に必要なマークアップは独自の言語を採用しています。このためRe:VIEWを本格的に使うにはマークアップに対する知識が必要にはなるものの、その記法はなるべく書籍の著者にとっても書きやすくなるよう作られているようです。おそらくそこまで困ることはないでしょう。ソフトウェアの作成言語はRubyであり、ツールやマークアップ言語の仕様はGitHub上で開発されています

さらにRe:VIEW knowledgeには、Re:VIEWを使うにあたっての事細かなノウハウが記載されていますので、困ったらまずはここを見ましょう。

さて、そのRe:VIEWは11月30日にメジャーバージョンアップグレードである3.0.0がリリースされました。機能追加・不具合修正はもちろんのこと、CSS組版の広まりや技術書典を始めとする技術系同人誌における利用を見越した大幅な見直しも行われています。特にPDFを生成するLaTeXビルダーについては、Re:VIEWユーザーの広まりを想定して「より安全なPDFを生成できる」よう、大きな変更が加えられました。今から新しく書籍を作るのであれば、Re:VIEW 3モードを有効化して作ると良いでしょう。

本記事でもRe:VIEW 3環境で新規に作成することを前提に説明します[2]⁠。ちなみにRe:VIEW 2と3では設定ファイルの内容や生成されるドキュメントのレイアウトは変わるものの、Re:VIEWの書き方そのものに違いはありません。よって複雑な原稿でなければ、そのまま流用できるはずです。

UbuntuでRe:VIEWの最新版をインストールする

さっそくUbuntuにRe:VIEWをインストールしましょう。最低限必要なのはRuby本体です。

$ sudo apt update
$ sudo apt install ruby
$ ruby --version
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]
$ gem --version
2.7.6

Rubyのバージョンは2.1以降であれば良いようです。Ubuntu 16.04 LTS以降であればどのバージョンでも公式リポジトリのRubyが使えることになります。またgemの依存関係も小さくなるように配慮されているため、大抵の環境なら特に問題なく動くでしょう。

Re:VIEWそのものはRubyGemsからインストールします

$ sudo gem install review
Fetching: image_size-2.0.0.gem (100%)
Successfully installed image_size-2.0.0
Fetching: rouge-3.3.0.gem (100%)
Successfully installed rouge-3.3.0
Fetching: rubyzip-1.2.2.gem (100%)
Successfully installed rubyzip-1.2.2
Fetching: review-3.0.0.gem (100%)
Successfully installed review-3.0.0
Parsing documentation for image_size-2.0.0
Installing ri documentation for image_size-2.0.0
Parsing documentation for rouge-3.3.0
Installing ri documentation for rouge-3.3.0
Parsing documentation for rubyzip-1.2.2
Installing ri documentation for rubyzip-1.2.2
Parsing documentation for review-3.0.0
Installing ri documentation for review-3.0.0
Done installing documentation for image_size, rouge, rubyzip, review after 8 seconds
4 gems installed

gemコマンドの標準のインストール先は/var/lib/gems/2.5.0なので、管理者権限が必要です。ユーザーのホームディレクトリ以下にインストールしたい場合は--user-installオプションを付けてください。パッケージ名をreview:3.0.0にするとバージョンを指定できます。また--prereleaseを付けると正式リリース前のプレビュー版もインストールできます。

$ which review
/usr/local/bin/review
$ review version
3.0.0

Re:VIEWで書籍を作成するにあたって、最初に雛形を生成します。今回は「sample」という書籍にしてみましょう。

$ review-init sample
$ cd sample
$ ls
Gemfile     bundleコマンドで環境構築する際に使う
Rakefile    rakeコマンドでビルド・クリーンする際に使う
catalog.yml 使用するreファイルのリストと構成
config.yml  書籍の設定
doc         Re:VIEWのヘルプドキュメント
images      画像ファイルの保存先
layouts     レイアウトファイルなどの保存先
lib         Rakefileのタスク
sample.re   書籍のサンプルデータ
sty         LaTeX用スタイルファイルの保存先
style.css   EPUB用スタイルシート

当面重要になるのはsample.recatalog.ymlconfig.ymlの3つです。sample.reにRe:VIEWフォーマットで書籍の本文を執筆し、catalog.ymlに各reファイルのファイル名を列挙していきます。config.ymlでは、書籍全体の設定を行います。

雛形はそのままでもビルド可能なので、実際にEPUBファイルを作成してみましょう。review-epubmakerに設定ファイルを渡して実行すれば、EPUBが生成されます。

$ review-epubmaker config.yml
WARN: sample.re:1: headline is empty.

$ cat sample.re
= $

$ file book.epub
book.epub: EPUB document

sample.reはタイトル要素=だけのファイルなので、上記のように警告が出てしまいます。ちなみにrakeコマンドがあるなら、ターゲットとしてepubを指定することで同じようにビルド可能です。将来的にEPUBとPDFの両方を生成するのであれば、rakeを使うとより直感的でしょう。

$ rake epub

EPUBの動作確認をするためにはEPUBリーダーが必要です。公式リポジトリにあるものだと編集も可能なSigilやKDEのOkularなどが有名です。もちろん第534回で紹介されているAtrilも選択肢になります。

図1 OkularでEPUBを表示した場合
画像

今は本文に何も書いていないので、表紙と目次と作者が書かれたのみのシンプルなEPUBファイルとなっています。

PDFを生成する

Re:VIEWがPDFを生成するには別途TeXのインストールが必要になります。Ubuntuであれば、TeX Liveのパッケージ一式をインストールすることになるでしょう。

$ sudo apt install texlive-lang-japanese texlive-latex-extra texlive-latex-recommended

あとはEPUBと同様にreview-pdfmakerコマンドもしくはrakeコマンドを用いてPDFを生成します。

$ rake pdf
review-pdfmaker config.yml
INFO: compiling sample.tex
WARN: sample.re:1: headline is empty.
INFO: extractbb cover.jpg cover-a5.ai
INFO: uplatex -interaction=nonstopmode -file-line-error __REVIEW_BOOK__.tex
INFO: uplatex -interaction=nonstopmode -file-line-error __REVIEW_BOOK__.tex
INFO: uplatex -interaction=nonstopmode -file-line-error __REVIEW_BOOK__.tex
INFO: dvipdfmx -d 5 -z 9 __REVIEW_BOOK__.dvi
$ file book.pdf
book.pdf: PDF document, version 1.5

生成されたPDFについては、Evinceをはじめとする普通のPDFリーダーで閲覧できます。

図2 EvinceでPDFを表示した場合
画像

Re:VIEW 3以降でPDFを生成した場合、そのまま印刷所に入稿できるようトンボ付きのPDFとなります。

基本的な使い方

EPUB/PDFの生成方法がわかれば、あとはRe:VIEWの書式に従って執筆するだけです。Re:VIEWの書式は比較的人間が読みやすい形式なので、どんなエディタを使ってもそれほど困らないでしょう。プロジェクト生成時にdoc/format.ja.mdとしてフォーマットガイドがコピーされているので、それを参考に執筆を進めてください。とりあえず「見出し」「箇条書き」⁠ソースコードなどのリスト」の書き方さえ覚えておいて、あとは一通り書き終えてからじっくりと編集しましょう。

書籍として取り込むreファイルは「カタログファイル」に列挙します。カタログファイルcatalog.ymlはYAML形式のファイルであり、reファイルごとにそれが本編なのか後付なのかなどを指定できます。テンプレート生成直後は「⁠⁠書籍名).re」のみ指定されているため、reファイルを追加したりファイル名を変更した場合は合わせてカタログファイルも更新してください。

書籍全体のメタデータは、config.ymlファイルで設定します。書籍名・著者一覧・刊行日と言った一般的な書籍用メタデータはもちろんのこと、表紙を付けるのか目次はどうするのかやTeXコマンド時の実行時のオプションに至るまで、さまざま設定を行えます。設定項目の詳細はconfig.ymlの中にコメントとして書かれているので、一度目を通しておきましょう。

トンボなしのPDFを生成する

前述したように、Re:VIEWでは初期設定だとトンボありのPDFを生成します。トンボは印刷所に入稿する際に必要になるものの、生成したPDFをそのまま配布するのであれば邪魔なだけです。トンボの有無はconfig.ymltexdocumentclassで変更できます

# LaTeX用のdocumentclassを指定する
# オプションについてはsty/README.mdを参照
# デフォルトは印刷用。電子配布版を作るには media=ebook とする
texdocumentclass: ["review-jsbook", "media=print,paper=a5"]

上記の最終行にあるmedia=printmedia=ebookに変更した上で、rake pdfを実行すれば、トンボなしPDFが生成されるはずです。

もし印刷用と電子配布版の両方を作れるようにしておきたいのであれば、inheritパラメーターを用いて設定ファイルを継承し、一部の設定だけ書き換える方法があります。まずconfig.ymlを継承し、texdocumentclassのみ設定が異なるconfig-print.ymlを、次のような内容で作成しましょう。

inherit: ["config.yml"]
texdocumentclass: ["review-jsbook", "media=print,paper=a5"]

この状態でrake pdfを実行すると、config.ymlを元に電子配布版が作成されます。さらに印刷版を作りたい場合は、次のようにconfig-print.ymlを使うように呼び出します。

$ rake clean
$ REVIEW_CONFIG_FILE=config-print.yml rake pdf

この方法を用いれば、逐一設定ファイルを書き換えることなく、異なる設定の複数の書式を生成可能になります。

PDFにフォントを埋め込みたい

TeX LiveのupLaTeXからPDFを作成した場合、初期状態だとフォントは埋め込まれません。もし電子書籍として配布するにあたってフォントを埋め込みたい場合は、kanji-config-updmapコマンドもしくはpxchfonパッケージの設定が必要です。今回は書籍ごとに埋め込むフォントを変更可能な、pxchfonパッケージを使ってみましょう。pxchfonパッケージはtexlive-lang-japaneseに同梱されています。

まずRe:VIEW用のカスタムスタイルファイルにて、pxchfonパッケージの使用を宣言します。

$ echo '\usepackage[ipaex]{pxchfon}' >> sty/review-custom.sty

「ipaex」はプリセットと呼ばれるパラメーターで、ここではIPAexフォントを埋め込むように設定しています。pxchfonのパラメーターについては、texdoc pxchfonで表示されるPDFを確認してください。

設定できたら、あとはPDFを作り直すだけです。Evinceのプロパティから「フォント」タブを開くか、pdffontsコマンドを実行することで、フォントが埋め込まれているかどうか確認できます。

$ rake pdf
$ pdffonts book.pdf
name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
REWOMU+NimbusSanL-Bold               Type 1C           WinAnsi          yes yes no       4  0
LSGTJF+IPAexGothic                   CID TrueType      Identity-H       yes yes no       6  0
QSYCKF+LMRoman10-Regular             Type 1C           WinAnsi          yes yes no      14  0
SQJYWU+IPAexMincho                   CID TrueType      Identity-H       yes yes no      22  0

上記の例の場合、⁠emb」「yes」になっているフォントがPDFに埋め込まれているフォントです。

当然のことながら、フォントをPDFに埋め込んで良いかどうかは、個々のフォントのライセンスに依存します。

正しいEPUBが出力されたかどうか検証する

EPUBCheckはEPUB仕様に従ったEPUBファイルかどうかを確認するJava製のツールです。EPUBCheckを用いて生成したファイルを検証しておけば、大抵のEPUBリーダーで期待通りに表示される可能性が高まることでしょう。

EPUBCheckはUbuntuのリポジトリにもありますし、最新のバージョンが必要であれば開発サイトからビルド済みのバイナリをダウンロードもできます。ただしリポジトリにある4.0.2のほうは大量の警告が出る問題があるようなので、可能であれば4.1.0以降を使いましょう。

$ sudo apt install unzip default-jre
$ wget https://github.com/w3c/epubcheck/releases/download/v4.1.0/epubcheck-4.1.0.zip
$ unzip epubcheck-4.1.0.zip
$ java -jar ~/epubcheck-4.1.0/epubcheck.jar book.epub
Validating using EPUB version 3.0.1 rules.
No errors or warnings detected.
Messages: 0 fatal / 0 errors / 0 warnings / 0 info

epubcheck completed

特に問題がないことがわかりましたね。

技術書典6に向けて本を作ってみよう!

Re:VIEWは紙書籍・電子書籍作成を作成するツール・フォーマットでありながら、原稿データはMarkdownやreStructured Textと同じようにプレーンテキストとして編集できます。つまりGitによるリビジョン管理やチームでの共同執筆がかんたんに実現できます。さらにGitで管理することで、既存の一般的なソフトウェアと同じように、Pull/Merge Requestを用いた修正・レビューや継続的インテグレーションを利用した品質管理も導入できるのです。

技術系同人誌のお祭りである技術書典は、来年4月に第6回の開催を予定しているようです。これを期にRe:VIEWを試して、次の技術書典に向けて何か本を執筆してみてはいかがでしょうか?

おすすめ記事

記事・ニュース一覧