スキルアップ

【保存版】エンジニアが技術書を執筆するための環境構築

how-to-write-a-technical-book
自分も技術書を書いてみたいな。
どうやって技術書を書いているんだろう?

まだ技術書を書いたことがない人にとって、すでに書いたことがある人のことを「すごい人」「特別な人」と思うかもしれません。

ですが実際は、書くためのツールを知っていれば誰でも本を書くことができます。

執筆した内容を本の形式に出力するツールはいろいろありますが、無料で使えるツールの代表例として、Re:VIEW というものがあります。

ただ扱いに少し癖があったり、デザインがシンプルすぎるというデメリットがありました。

デメリットを改善したツールが、Re:VIEW Starter です。

Re:VIEW Starter を使用することで、初期設定を GUI で完了させ、おしゃれなデザインで本を出力することができるようになります。

本記事では、Re:VIEW Starter を使用した環境構築の方法と、実際に本に出力する方法について解説しました。

私はすでにこのツールを使用して8冊の書籍を執筆しているので、ポイントだけ抜粋してお伝えできると思います。

最後まで記事を読むことで、本を執筆する準備を整えることができます。

では、さっそく見ていきましょう。

エンジニアが技術書を執筆するための環境構築

まずはじめに、雛形をダウンロードしてきてから執筆作業を始める必要があります。

ダウンロードした雛形をもとに、手を加えていく流れです。

Re:VIEW Starter でプロジェクトファイルを作成する

Re:VIEW Starter の公式サイトにアクセスします。

下に「プロジェクトの作成を始める」のボタンがあるので、クリックしましょう。

how-to-write-a-technical-book

最初に、著者名またはサークル名を入力します。

カタカナの読み方も入力したら次に進みます。

how-to-write-a-technical-book

次にタイトルとサブタイトルを決めます。

あとでも変えられるので、仮のタイトルで問題ありません。

how-to-write-a-technical-book
ペンギンくん
ペンギンくん
じゃんけんに100%は無いような…

次はサイズです。

個人的にあまりページ数が増えるのが好きではないので、B5 で設定しています。

このあたりの設定はすべて後で変更することができます。

how-to-write-a-technical-book

次にフォントサイズです。

私は B5 サイズで作成するので、より小さい文字サイズである 10pt を指定しました。

how-to-write-a-technical-book

次に、章タイトルや目次を右ページから始めるかどうかです。

私の場合は PDF の出力のみを考えているため、「章や目次が左右どちらのページから始まってもよい」にしています。

how-to-write-a-technical-book

次に章や節、項のデザインです。

ここは個人の趣味で問題ありませんが、私は次の設定にしています。

how-to-write-a-technical-book

次のフォントの種類です。

ここも自由に設定して構いません。

how-to-write-a-technical-book

ターミナル用のフォントも変更できます。

how-to-write-a-technical-book

次に、プログラムやターミナルの表示オプションです。

プログラムが右で折り返しされると見にくいので、文字を小さめにしておくのがオススメです。

あとは code のタグで囲ったときに、薄いグレーの背景で表示するオプションもよく使っています。

how-to-write-a-technical-book

私は PDF の出力しかしないので、デフォルトの出力を PDF にしています。

あとは自由に設定してください。

how-to-write-a-technical-book

最後にプロジェクト名を設定します。

何でも構いませんが、英語名しか指定できません。

出版予定日も後で変更できるので、適当で構いません。

書籍の販売は「技術書典」が有名ですが、「技術博」というイベントも開催されています。

技術博の場合は、発行責任者と連絡先情報が必要なので、専用の入力欄が用意されています。

how-to-write-a-technical-book

ここでようやく準備が完了です。

ファイル一式をダウンロードできるようになっているので、青いボタンからダウンロードして、解凍してください。

how-to-write-a-technical-book

プロジェクトファイルの解説

プロジェクトファイルの中身を見てみましょう。

how-to-write-a-technical-book

「たくさんファイルがあってよくわからない」と思うかもしれませんが、知っておくべきところは少ないので安心してください。

contents フォルダ

一番重要なのは、contents フォルダの中身です。

how-to-write-a-technical-book

contents フォルダは実際に出力される本の中身を置いておく場所です。

章ごとに「.re」ファイルを作成し、特有の形式で記述することで、いい感じに出力してくれます。

マニュアルは、Re:VIEW Starter の「ユーザーズマニュアル」のリンクから確認できます。

images フォルダ

次に重要なのが、画像を配置する images フォルダです。

how-to-write-a-technical-book

images フォルダに画像を置いておくことで、本文から画像を参照することができます。

章ごとにフォルダを作成しておくのがいいでしょう。

cover_b5.pdf は本の表紙で、B5 の場合はこちらのファイルを使用します。

catalog.yml

catalog.yml は、contents フォルダで作成した各章を分類するファイルです。

ここにファイル名の記載がないと、PDF 出力に含まれません。

contents フォルダの中身と catalog.yml の中身は必ず一致させるようにしてください。

how-to-write-a-technical-book

config.yml

config.yml は、Re:VIEW 側の設定ファイルです。

本のタイトルや著者名などは、このファイルから修正することができます。

how-to-write-a-technical-book

config-starter.yml

config-starter.yml は、Re:VIEW Starter 独自の設定です。

用紙サイズや出力のターゲット(PDF や紙など)はこのファイルから修正することができます。

how-to-write-a-technical-book
ねこじょーかー
ねこじょーかー
プロジェクトファイルで確認しておくべきところは、これだけです!

オススメの執筆環境

私がオススメする執筆環境は、「VS Code」です。

Docker も使うので、ターミナルも一体になっているところが使いやすいと思います。

さらに、Re:VIEW Starter Syntax Highlight という拡張機能を入れることで、入力補完もしれくれるのでとても便利です。

実際に出力をする手順

公式のインストール手順は、contents フォルダにある 01-install.re に記載されています。

本の形式に出力をするには、Docker が必要になります。

まずは、Docker をインストールしてください。

Docker をインストールして起動したあと、以下のコマンドを実行してください。

$ cd hoge-book/
$ docker pull kauplan/review2.5    ← 3GB 以上ダウンロードするので注意(初回のみ実行)
$ docker run --rm -v $PWD:/work -w /work kauplan/review2.5 rake pdf

docker run のコマンドで、PDF ファイルが出力されます。

mac の場合は「rake docker:pdf」とするだけでも、PDF 出力が可能です。

実際にコマンドを実行してみましょう。

$ rake docker:pdf
docker run --rm -v $PWD:/work -w /work  kauplan/review2.5 rake pdf
compiling 00-preface.tex
compiling 01-install.tex
compiling 02-tutorial.tex
compiling 03-syntax.tex
compiling 04-customize.tex
compiling 05-faq.tex
compiling 06-bestpractice.tex
compiling 91-compare.tex
compiling 92-filelist.tex
compiling 93-background.tex
compiling 99-postface.tex

[pdfmaker]$ /usr/bin/ruby2.5 /work/lib/hooks/beforetexcompile.rb /work/hoge-book-pdf /work

[pdfmaker]$ uplatex --version | head -1
e-upTeX 3.14159265-p3.7.1-u1.22-161114-2.6 (utf8.uptex) (TeX Live 2017/Debian)

[pdfmaker]$ time uplatex -halt-on-error -file-line-error -interaction=batchmode book.tex > /dev/null
       13.73 real        10.60 user         0.71 sys

[pdfmaker]$ time uplatex -halt-on-error -file-line-error -interaction=batchmode book.tex > /dev/null
       12.06 real         9.45 user         0.55 sys

[pdfmaker]$ time uplatex -halt-on-error -file-line-error -interaction=batchmode book.tex > /dev/null
       12.12 real         9.77 user         0.53 sys

[pdfmaker]$ time dvipdfmx -q -d 5 -z 3 -o ../hoge-book.pdf book.dvi

kpathsea: Running mktexpk --mfmode / --bdpi 600 --mag 0+480/600 --dpi 480 bskarr10
mktexpk: Running mf-nowin -progname=mf \mode:=ljfour; mag:=0+480/600; nonstopmode; input bskarr10
This is METAFONT, Version 2.7182818 (TeX Live 2017/Debian) (preloaded base=mf)

(/usr/share/texlive/texmf-dist/fonts/source/public/boisik/bskarr10.mf
(/usr/share/texlive/texmf-dist/fonts/source/public/boisik/bskbase.mf)
(/usr/share/texlive/texmf-dist/fonts/source/public/boisik/bskarrows.mf
(/usr/share/texlive/texmf-dist/fonts/source/public/boisik/bsklist-ar.mf)
(/usr/share/texlive/texmf-dist/fonts/source/public/boisik/bsksymbols.mf
[251] [254] [250] [253] [252] [255] [30] [7] [9] [10] [32] [34] [33] [35]
[6] [8] [31] [248] [14] [15] [249] [0] [21] [1] [22] [16] [232] [233] [234]
[235] [230] [231] [240] [241] [242] [243] [244] [245] [26] [27] [28] [29]
[246] [247] [23] [4] [5] [3] [25] [2] [24] [18] [236] [12] [20] [237] [11]
[13] [17] [238] [19] [239] [49] [38] [39] [40] [41] [42] [43] [37] [48]
[44] [50] [227] [46] [36] [47] [226] [45] [229] [228] [225] [224] [223]
[222] [221] [220]) ) )
Font metrics written on bskarr10.tfm.
Output written on bskarr10.480gf (87 characters, 12928 bytes).
Transcript written on bskarr10.log.
mktexpk: /root/.texlive2017/texmf-var/fonts/pk/ljfour/public/boisik/bskarr10.480pk: successfully generated.

kpathsea: Running mktexpk --mfmode / --bdpi 600 --mag 0+480/600 --dpi 480 bskarr10
mktexpk: /root/.texlive2017/texmf-var/fonts/pk/ljfour/public/boisik/bskarr10.480pk already exists.
        5.86 real         3.24 user         0.64 sys

ひと通りの処理が完了すると、フォルダ直下にプロジェクト名と同じ PDF が出力されます。

とりあえず表紙だけ載せておきますね。

how-to-write-a-technical-book

最後に

Re:VIEW Starter を使用した環境構築の方法と、実際に本に出力する方法について解説しました。

1冊目の執筆は覚えることがたくさんあって大変ですが、一度やってしまえば2冊目以降はスムーズに執筆を進めることができます。

この記事を参考に、みなさんも素敵な執筆ライフをお送りください。