「Kaggleで勝つデータ分析の技術」について(執筆ツール編)

 「Kaggleで勝つデータ分析の技術」(amazon)の、執筆周りの知見の情報共有です。

今回は原稿をmarkdownで執筆しました。終盤まではGithubで管理を行い、その後出版社にPDFにしてもらい、PDFに修正依頼を入れることを数回繰り返し、完成となります。*1  

原稿

  markdownはバージョン管理ができるのがやはり楽です。ただ、Githubmarkdownを見ようとしても数式が表示されないという致命的な問題がありました。
ここで、atommarkdown-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

 

ソースコード

  ちゃんとやるには、

  1. 書籍内に記述するためのコード
  2. 公開するためのコード
  3. 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も良い選択肢かもしれません。