generated at
Scrapboxで技術同人誌を書いている話 (daiiz)
20:25~
こんばんは



daiizです daiiz
京都でScrapboxを開発しています
ユーザー時代からScrapboxを色々な活用法を実験している
今日はScrapboxで技術同人誌を書く話です

Scrapbox実験コーナー
バックナンバー

目標
これまでScrapboxに書き溜めたページを再構成して一冊の薄い本を書く
Scrapbox上で執筆する
ボタン一発で印刷所に入稿可能なPDFファイルを生成する

Scrapboxのページグラフ
privateなprojectではまた違った様相

育ってきたノードについて書く
思い入れのあるネタ、気づいたら詳しくなっていたネタが見えてくる
ネタは十分にある、という状態
Scrapboxは執筆前のネタ集めに最適

ページグラフのシリアライズ
ページグラフは日々刻々と成長している
ある時点での成果をシリアライズして放出する価値があるのではないか?
人生の節目で撮る写真みたいに

目次を書く
リンク記法で各章へのリンクを書くだけ
プリアンブルも書ける
コンパイル時にここに書いた設定が反映される

章を書く
普段どおり書く

書きやすさを求めた工夫
Scrapbox上で連続する行を一行として出力する
空行を挟むと別の行として認識される
さらに行頭に [ ] を書いて字下げすると改段落される
節を別ページに切り出せる
1ページが長くなりすぎてしまうと見通しが悪い
将来的にエクスポートしたJSONファイルを配布することも考えているので、普段のスクボのように小粒なページで表現されている方が嬉しい
付録
参照されているが目次には存在しないページをAppendixとして巻末に収録する


節を別ページに切り出せる
執筆時も小さいページを組み合わせる体験をしたい
章や節を個別にPDFプレビューできる
章ページにリンクを張っておけば展開されるようにした


記法の拡張
上級者向けの機能として文字装飾記法の拡張がある
執筆に便利な記法を定義した
UserCSSで見た目を書く
自作の文書変換器で解釈できるようにする
定義した記法
コメント
[# ここはコメントです]
節の埋め込み
[! []]
図のキャプションと表示サイズ
脚注 (footnote)

Scrapboxの1ページは、直列化すると結構なボリュームになる
関連ページが絡まり合っている
ページ自体は短くても関係するストーリーが分厚かったりする
面白そうなページを理解しやすい流れで一つにまとめあげないといけない
背景知識や目的を改めて述べる必要がある
しっかり説明しようとするとそれなりの分量になる
リンクによるコンテキストがないので各章の導入部も力を入れる
トピックごとに小さいページを沢山書いてリンクで関連付けるのはラク
本題をいきなり書ける気軽さは日々のメモとしてはやはり強力、と再認識した


Page Menu
UserScriptを書いて、必要な機能ボタンを置ける
ページをPDFで表示するボタン
ローカルサーバーにアップロードするボタン
製本するボタン

デモ
執筆環境用のプロジェクトを作った
原稿、進捗管理、ボツ案、その他のメモがすべてここにある
/teamj-books (private)

仕組み
Scrapboxページ ->
(content_script.js) --postMessage--> (background.js)
--POST--> ローカルサーバー
下線部はブラウザ拡張機能で実行

専用のブラウザ拡張機能
ScrapboxページをLaTeX文書に変換する
ページのHTML要素のclassNameなどを読んで記法を解釈
LaTeXとして出力
ローカルサーバーにアップロード
そのうち公開予定
12月の技書博に向けてこれを使って執筆している
ドッグフーディングの真っ最中

ローカルサーバー
LaTeX文書からPDF/X-1a形式のPDFファイルを生成する
画像をRGB → CMYKに変換する
ページに含まれる画像をfetchして一括変換
こちらもDocker image を公開予定
TeXコンパイル環境を一瞬で構築できて便利

おまけ

PDF/X-1a
印刷用途向けのPDFの規格であるPDF/Xのひとつ
LuaTeX \usepackage[x-1a1]{pdfx} を指定すれば生成できる
画像の変換はやってくれないので自分で処理する
この規格に沿っていれば印刷所でのトラブルは避けられる
主な制約
画像がすべてCMYKまたはGrayscaleカラースペースで表現されていること
フォント埋め込みされていること
トリムボックス (仕上がりサイズ)、ブリードボックス (裁ち落としサイズ) 指定されていること
トンボ指定すること
プリアンブルの gentombo を消せばトンボなしでも出力できるので電子書籍向けファイルも簡単に生成できる

まとめ
日頃書き溜めたページを組み合わせて本を書こう