「Kaggleで勝つデータ分析の技術」について(執筆ツール編)
「Kaggleで勝つデータ分析の技術」(amazon)の、執筆周りの知見の情報共有です。
今回は原稿をmarkdownで執筆しました。終盤まではGithubで管理を行い、その後出版社にPDFにしてもらい、PDFに修正依頼を入れることを数回繰り返し、完成となります。*1
原稿
markdownはバージョン管理ができるのがやはり楽です。ただ、Githubでmarkdownを見ようとしても数式が表示されないという致命的な問題がありました。
ここで、atomにmarkdown-preview-plusのプラグインを入れることで数式も含めてプレビューできる執筆環境ができます。(mathjax-wrapperも要るかもしれません)*2
それでも確認はしづらいので、pandocでhtmlに出力して適宜印刷して眺めるようにしました。なぜかpandocはwindowsではエラーが出たので、windows subsystem for linuxにインストールすることで解決しました。*3
数式・図・注釈といった要素に対応できるので、わりと満足な執筆環境ができます。
図
結局は安定と信頼のpowerpointになりました。draw.ioも試したけどしっくりこず。図はデザイナーさんが綺麗にしてくれるのですが、明確に書いておかないと結局修正することになるので、慣れないと時間はかかりますがちゃんと図を作らないとダメですね。
VBAがとくいなので各スライドを画像にして出力するマクロを作った*4のですが、めちゃくちゃ生産性が上がりました。
Sub save_png() Dim p As Variant Set p = Application.ActivePresentation For i = 1 To p.Slides.Count Debug.Print i Dim path As String path = ActivePresentation.path & "\images_ch3\スライド" & i & ".PNG" p.Slides(i).Export path, "PNG" Next i End Sub
ソースコード
ちゃんとやるには、
- 書籍内に記述するためのコード
- 公開するためのコード
- aやbが正しく動くか検証するためのコード
を管理する必要があります。これらを綺麗に管理するのは難しく、bをベースにしながら、
# ----- START TEST ----- # ----- END TEST -----
を差し込んだりしてごにょごにょして頑張りました。.pyで記述したのですが、この目的であればJupyter Notebookの方が管理が楽だったかもしれません。
GCPで環境を作ってひととおり検証コードを流して、結果が概ねおかしくないことを確認しています。
情報共有・修正依頼
執筆者間および編集者との情報共有は、Github + Slack + google spreadsheetで行いました。 フロー情報はSlackで良いとして、入る情報の形が定まっていないストック情報の共有はgoogle spreadsheetが有力だと思います。タスクの粒度を変える必要があるときにGithubのIssueなどの他のツールだとなかなかつらい。
PDF化する前はgit管理なので楽なのですが、PDF化してからの修正依頼はなかなか苦労しました。google spreadsheetで修正対象と修正後の文章などを明確に記述して連携しましたが、ipad + apple pencilも良い選択肢かもしれません。
*1:技術同人誌などではRe:Viewといった選択肢があるようですね。参考:『読みやすい技術書を書く技術』という本を技術書典7で頒布します #技術書典 - 憂鬱な世界にネコパンチ!
*2:参考:Atom をMarkdownエディタとして整備 - Qiita
*3:参考:数式・画像付きのmarkdownをhtmlに変換 - Qiita
*4:Option Explicitを書いてないのでガチ勢に怒られます