技術書典の公式テンプレートと公式ビルド環境のようなものがあります

これらを使わない手はない!

TechBooster編・著「技術書をかこう! 〜はじめてのRe:VIEW 〜」をビルドしてみる

そもそも、これが出来ないようでは自分の執筆環境が作成できないでしょう。 だから、ここからスタートです

  • この書籍はgithubでソースコードが公開されています https://github.com/TechBooster/C89-FirstStepReVIEW-v2
  • はじめて技術同人誌を書く人は、これを執筆テンプレートとして使うとよいそうです。 そういう意図で公開してくれています
  • github からソースコードをダウンロードし、Re:VIEWのdockerを使い、ビルドします。 うまくいけばC89-FirstStepReVIEW-v2.pdfというファイルが生成されます(はずです) … うまく作れません ;_;
  • 正しい直し方が分かりませんが、workaroundは次のとおりです。
    • 内部で使っているbundleというrubyアプリのバージョンをあげる
    • review 2.3 dockerイメージの場合、1.15.3 -> 2.2.11に修正
    • 最新の docker イメージでも 2.2.11 に修正すれば動きますね。 入っているのは bundle 2.3.17 (default は 2.1.4)と表示されますけど…?
[実行例]

% git clone https://github.com/TechBooster/C89-FirstStepReVIEW-v2
% cd C89-FirstStepReVIEW-v2
% sed -i s/1.15.3/2.2.11/ Gemfile.lock 
% sh build-in-docker.sh

うまく実行されていれば、C89-FirstStepReVIEW-v2リポジトリ下に

articles/C89-FirstStepReVIEW-v2.pdf

というファイルが作成されます

リファレンス

付録: エラーの様子

  • そういうわけで、なんだかうまく作れません ;_;
    • この書籍は Re:VIEW 2.3 で作成されたそうなので、 古いバージョンのdockerイメージで実行すると作れます? … つくれましぇん
    • 結局dockerのはずなのにnode.jsやらrubyやらと格闘するハメになる罠です (dockerイメージのつくりかたが間違ってますよ(怒))
    • このdockerイメージは作りが変です。 特定のバージョンのアプリ環境一式が封じ込められていません なぜなら起動するとインストールが始まるのです。 これでは、環境が再現されません
[ 実行例 ]
[ git clone して、そのまま build-in-docker.sh を走らせた様子 ... しょぼん ]

+ git submodule init
Submodule 'prh-rules' (https://github.com/prh/rules.git) registered for path 'prh-rules'
+ git submodule update
Cloning into '/book/prh-rules'...
Submodule path 'prh-rules': checked out 'a8f66f4e69b3d185f87d934e4115b4a3b8cf3b16'
+ rm -rf node_modules
   ...
+ rm -rf vendor/bundle
+ npm install --unsafe-perm
npm WARN old lockfile 
   ... snip ...
Warning: Command failed: bundle exec review-preproc -r --tabwidth=2 *.re
/usr/lib/ruby/vendor_ruby/rubygems.rb:281:in `find_spec_for_exe': Could not find 'bundler' (1.15.3) required by your /book/Gemfile.lock. (Gem::GemNotFoundException)
To update to the latest version installed on your system, run `bundle update --bundler`.
To install the missing version, run `gem install bundler:1.15.3`
	from /usr/lib/ruby/vendor_ruby/rubygems.rb:300:in `activate_bin_path'
	from /usr/local/bin/bundle:23:in `<main>'
 Use --force to continue.