かわろぐ

技術、セキュリティ、その他もろもろ

MENU

gitbook で PDF を書き出そうと思ったら応答がなかった

前回の記事では、gitbookの環境のセットアップをしました。今回は、gitbook で作成したドキュメントを PDF に変換するときにハマったことを書いておきます。

環境

  • macOS X catalina
  • calibre 4.2.0
  • gitbook-cli 2.3.2
  • GitBook version: 3.2.3

pdf 出力すると途中で止まる

以下のコマンドで、 gitbook から PDF のドキュメントに変換して出力できるはずです。

$ gitbook pdf . out.pdf 

が、以下の出力がコンソールにあってから、待てど暮せど完了しません。CPUが回っているわけでも無いので原因不明です…

info: 7 plugins are installed
info: 6 explicitly listed
info: loading plugin "highlight"... OK
info: loading plugin "search"... OK
info: loading plugin "lunr"... OK
info: loading plugin "sharing"... OK
info: loading plugin "fontsettings"... OK
info: loading plugin "theme-default"... OK
info: found 3 pages
info: found 2 asset files

解決策を探すためデバッグログをみる

原因を探るためにデバッグログを出力させます。 gitbook は以下ののオプションでデバッグログを出力するようにすることができます。

$ gitbook pdf . out.pdf --log=debug —debug
debug: Auto generated TOC with 3 entries.
debug: Flattening CSS and remapping font sizes...
debug: Source base font size is 12.00000pt
debug: Removing fake margins...
debug: Cleaning up manifest...
Trimming unused files from manifest...
debug: Creating PDF Output...
debug: 67% Running PDF Output plugin
debug: 68% Parsed all content for markup transformation
debug: 70% Completed markup transformation
debug: [1106/220730.806158:ERROR:icu_util.cc(177)] Invalid file descriptor to ICU data received.
[1106/220730.806170:ERROR:icu_util.cc(177)] Invalid file descriptor to ICU data received.
debug: [1106/220730.806054:ERROR:icu_util.cc(177)] Invalid file descriptor to ICU data received.
debug: [1106/220730.812668:ERROR:icu_util.cc(177)] Invalid file descriptor to ICU data received.

なるほどわからん。とりあえず gitbook側のバグではなさそう?ということぐらいしかわかりません。 ひたすらググっていると以下のQAがヒットしました。

https://stackoverflow.com/questions/58498643/no-result-or-error-when-using-gitbook-pdf

これを見ると calibre をダウングレードしろとありました。 ダウングレードして、再度実行したところ無事にPDFが出力されました。

がしかし…

gitbook はもうメンテナンスされていない

ってここまで環境を構築しておいて gitbook はメンテナンスされていないことに気づいた。悲しい。gitbook-cli の方だけじゃなくて、 gitbook 本体のリポジトリの方も確認すべきだった。

代替として Sphinx を調べてみようか…

Pythonプロフェッショナルプログラミング第3版

Pythonプロフェッショナルプログラミング第3版

SphinxでKindle本を作る

SphinxでKindle本を作る

gitbook を使うために行った環境構築まとめ

エンジニアが主対象だけど、エンジニアじゃない人にも見れるようにしなくてはいけないドキュメントを作る機会がありました。Word とか GSuite の Docs でチコチコ作るのはつかれるし、レビューしてもらいづらいので、Markdownでかけて PDF にも変換できそうな gitbook を使ってみました。 そのときに実施した環境構築についてまとめておきます。

環境

  • MacOSX 10.15.1
  • Nodebrew 1.0.1
  • gitbook-cli 2.3.2
  • GitBook version: 3.2.3

nodebrew をインストールする

node.jsを直接インストールしても良いのですが、いろいろなバージョンが使えるように、管理ツールの nodebrew を入れて、そいつで任意のバージョンの node.js をインストールする方法で行きます。まずは homebrew で nodebrew をインストールします。

$ brew install nodebrew

nodebrew で node.js の安定版をコンパイルする

バイナリを取ってきてインストールでもいいんですが、コンパイルできるオプションもあるのでちょっとこっちでやってみました。以下のコマンドで、安定版をコンパイルしてインストールすることができます。

$ nodebrew compile stable

私の環境でやってみたところ、自動でコンパイルに必要な必要なディレクトリを作ってくれないみたいです。

$ nodebrew compile stable
Fetching: https://nodejs.org/dist/v12.13.0/node-v12.13.0.tar.gz
Warning: Failed to create the file
Warning: /Users/kawa.xxx/.nodebrew/src/v12.13.0/node-v12.13.0.tar.gz: No such
Warning: file or directory

curl: (23) Failed writing body (0 != 1039)
download failed: https://nodejs.org/dist/v12.13.0/node-v12.13.0.tar.gz

求められたディレクトリを作成して再度実行すると今度は Xcode 関連でエラーが出ているようです。

$ nodebrew compile stable
Fetching: https://nodejs.org/dist/v12.13.0/node-v12.13.0.tar.gz
######################################################################################################################################## 100.0%
INFO: Using floating patch "tools/icu/patches/64/source/common/putil.cpp" from "tools/icu"
INFO: Using floating patch "tools/icu/patches/64/source/i18n/dtptngen.cpp" from "tools/icu"
No receipt for 'com.apple.pkg.CLTools_Executables' found at '/'.

No receipt for 'com.apple.pkg.DeveloperToolsCLILeo' found at '/'.

No receipt for 'com.apple.pkg.DeveloperToolsCLI' found at '/'.

gyp: No Xcode or CLT version detected!
Error running GYP

Xcode のコマンドラインツールが入っていないのかな?と思っておもむろにインストールコマンドを叩いてみるとどうやら入ってはいるようです。

$ xcode-select --install
xcode-select: error: command line tools are already installed, use "Software Update" to install updates

ググってみたところ、コマンドラインツールをXcode同梱版に切り替えると良いという記述を見つけたので、早速やってみます。

$ xcode-select -p
/Library/Developer/CommandLineTools
$  sudo xcode-select -s /Applications/Xcode.app/

そして、再実行すると。。。

$ nodebrew compile stable
Fetching: https://nodejs.org/dist/v12.13.0/node-v12.13.0.tar.gz
######################################################################################################################################## 100.0%

Agreeing to the Xcode/iOS license requires admin privileges, please run “sudo xcodebuild -license” and then retry this command.
WARNING: C++ compiler too old, need g++ 6.3.0 or clang++ 8.0.0 (CXX=c++)
Agreeing to the Xcode/iOS license requires admin privileges, please run “sudo xcodebuild -license” and then retry this command.
WARNING: C compiler too old, need gcc 4.2 or clang 3.2 (CC=cc)
WARNING: Could not recognize `gas`:
Agreeing to the Xcode/iOS license requires admin privileges, please run “sudo xcodebuild -license” and then retry this command.
ERROR: Did not find a new enough assembler, install one or build with
       --openssl-no-asm.
       Please refer to BUILDING.md

切り替えてもエラーが出ました。ライセンスに合意していないぞというエラーですね。エラー文の中にあるコマンドでは、なぜかうまくライセンス合意がなされないので、Xcode を一回起動させました。

コンポーネントのインストール(?)も走ったので、1回は起動させたほうがいいのかもしれませんね。その後再実行させたらうまくいきました。

gitbook cli をインストールする

gitbook 自体は npm のモジュールとして配布されているので、以下のコマンドでサクッとインストールします。

$ npm init
$ npm install gitbook-cli
$ gitbook --version
CLI version: 2.3.2
GitBook version: 3.2.3

さてこれで gitbook を使ってドキュメントを作る最低限の環境が整いました。次回はPDFへの出力などをまとめていきます。

参考文献

https://qiita.com/UTA6966/items/6f8b1fd21c2dc9591488

サルでもわかるGit入門

サルでもわかるGit入門

  • 作者: 大串肇,アクツユミ,一戸健宏,兼清慮子,齋木弘樹,清野奨,福嶌隆浩,株式会社ヌーラボ
  • 出版社/メーカー: インプレス
  • 発売日: 2018/09/25
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

バレットジャーナルで休日の効率が上がった話

早いものでバレットジャーナルを始めてから丸3ヶ月以上が経過しました。多少の波はあれど、自身の人生の整理ができていると感じています。今回はバレットジャーナルを使って、休日の生産性を上げてみたのでまとめます。

休日を生産的に

私は休み方が下手くそなのか、無計画に休みに入ってしまうとダラッとしてしまい、時間を無駄に過ごしてしまうことが多くありました。 そこで、今年の遅めの夏休みは、バレットジャーナルに2019年夏休みプランプロジェクトを作りプランを立ててから休みに入りました。

これは以下のバレットジャーナル公式本の p361 を参考にして、自分流にカスタマイズして作りました。

バレットジャーナル 人生を変えるノート術

バレットジャーナル 人生を変えるノート術

  • 作者: ライダー・キャロル,栗木さつき
  • 出版社/メーカー: ダイヤモンド社
  • 発売日: 2019/04/18
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

夏休みコレクションの作り方

まずは見開き左上に “夏休みにやること” とコレクション名を書きます。

見開き左側のページにはその休みの期間にやりたいことを書き出して行きます。一通り書き出し終わったら、見開き右のページは6分割し、XX日AM、PMと上から順番に記していきます。こちらはスケジューリング用ですね。もし、3日以上の休日であれば、次のページ以降に枠を増やして行きましょう。

そうそう。インデックスにコレクション名とページ番号の記載を忘れずに。

f:id:kawa_xxx:20190918225228j:plain

夏休みにやることをスケジューリングする

見開き右側のページで書き出したタスクをすべて右側の日付ボックスの中に入れ、スケジュールしていきます。タスクの実行に必要な場所や順序も考えながら書き込んで行きましょう。

この時、見開き左側のタスクは > を入れてしまってもいいですが、完了した時に2箇所チェックを入れて達成感を倍増させても良いです。私はそこまでタスクの量が多くなかったので後者でやりました。

休みを終えて

いつものお休みよりもアクティブに活動できましたし、プランニングしない休みよりも多くのことを実行することができたと感じています。

やっぱりプランニング重要です。バレットジャーナル上で考え、実際に行動し、形にするそんな夏休みでした。

ズボラなエンジニアの英語勉強作戦

英語の勉強ってとにかくやる気が出ないです。仕事でゆくゆくは必要になるとわかっていても。。

そんな私が考えた勉強方法は、技術書を英語にすることです。あらかた知っている内容ならばなお良いですね。 専門用語はだいたいカタカナで英語にしても一緒なので、そこまで苦にならずに読めますし。 そこから、知らない単語を辞書で引きメモし、自分のボキャブラリーをまずは増やしていく作戦です。

で、英語でどんな技術書を読むことにしたかと言うと、日々一番使っているものにしようということで、Vimに狙いを定め、 Practical Vim を読むことにしました。英語を学びつつ Vim を基礎からやり直す。そんな感じです。

Practical Vim: Edit Text at the Speed of Thought (English Edition)

Practical Vim: Edit Text at the Speed of Thought (English Edition)

このやり方だとボキャブラリーは増えますが文法的な力はそんなに伸びないなーと感じています。なので、以下の English Grammer in Use を教本として文法はそちらで補おうと考えています。

English Grammar in Use Book with Answers and Interactive eBook: Self-Study Reference and Practice Book for Intermediate Learners of English

English Grammar in Use Book with Answers and Interactive eBook: Self-Study Reference and Practice Book for Intermediate Learners of English

真面目に続いたら、TOEIC受けたり進捗報告があると思われます。 Practical Vimを読み終わったら次は tmux の本でも読んでみようかな。

バレットジャーナルを2ヶ月近くやってみた

以前のブログでバレットジャーナル人生を変えるノート術を読んだことを記事にしました。この本を読み始めたのが2019年5月中旬で、2019年6月からバレットジャーナルをはじめました。もうすぐ2ヶ月立つのでざっと感じたことをまとめておきます。

使ったノートはロイヒトトゥルムのバレットジャーナルエディションで、ペンは uni の JETSTREAM です。

仕事の生産性を上げたかった

バレットジャーナルそのものの説明は、書籍や他にきれいにまとまっているWebサイトがあるので省略します。

バレットジャーナルを試してみようと思った1番の理由は仕事の効率、生産性を上げたかったことです。ITツールだけではどうしても忘れてしまうというか、通知や他のことが気になって集中力が大きく削がれてしまっているという課題感がありました。

背景には仕事上の役割の変化や、いろんな相談や質問を受けることが多くなって、通知や割り込みが増えたことが原因ではないかと考えています。

やってみたら空白の時間が減った

バレットジャーナルを始めてから、紙のノートの上では通知は絶対に目に入らないので集中力高く次の仕事について考えることができるようになりました。それに、物理的にここを見ればすべてが書いてあるというものがあるのはやはり強いとも感じました。

PCやスマホなどでタスク管理していた場合は、アプリのフリーズやちょっとした反応の遅れがストレスになり、思考を妨げられることが日常茶飯事でした。紙のノートの上ではそれは特にありません。

デスクワークな人には確実におすすめ

なにかを考えるときもやはり、紙とペンのほうが集中力が続き、しかもあっちこっちに思考が飛んでも紙の上に書いてあるので簡単に戻ってこれるのはデジタルにはない強みですよね。それに、手書きってPCのツールでは容易に真似できないくらい高い自由度、例えばちょっとした図をさらさらっとかけるなどがあるなという当たり前のことを大きく再認識しました。

総じてバレットジャーナルは、IT業界で日々どっぷりITツールに漬かっている人のほうがメリットを実感しやすいのでないかと感じました。ちょっとでも気になった人は、2〜3ヶ月程度試して見ることをおすすめします。

バレットジャーナルをやることが目的ではない

Webなどで Bujo やバレットジャーナルを検索するととてもきれいに書かれたノートを多数見ることができますが、私は、バレットジャーナルをクリエイティブにするのではなく、自身の仕事や生活をクリエイティブにするツールとしてバレットジャーナルを使い倒して行きたいと思っています。

なので、私のバレットジャーナルは公開できませんw