「技術同人誌をMarkdownで書く」とは、実際どういうことか?
※ この記事はすべて無料でお読みいただけます。投げ銭歓迎。
※ またこの記事は「技術同人誌 Advent Calendar 2018」の4日目です。
※ 12/4 22:34 追記・微修正
以下、技術同人誌を書きたい方・既に書いている方に向けて書いていきます。(Markdown一般の話に比べると、やや高度なことを説明しようとしています。あらかじめご了承ください)
----------------
技術同人誌という存在を知り、自分でも書きたくなったITエンジニア(特にWeb系)にとって、
「技術同人誌を書くなら、Markdownで書きたい!」
という魂の叫びは当然のことでしょう。
Markdownを使ってブログを書き、簡単な図ならmermeidやPlantUMLで直書きし、プレゼン資料まで作ってしまうMarkdownフリークであれば、「技術同人誌ぐらい、Markdownで書けるはずだ!」という強い確信は、疑いの余地なく思い浮かぶはずです。
電子書籍として頒布する場合を除き、技術同人誌を制作することは「紙の本を作る」ことと同義でしょう。
紙の本を作るには、本当にいろいろな形態・手段があります。技術同人誌に限っても、次の2つの手段があるでしょう。
- コピー本:自力で自宅・コンビニ・キンコーズなどのセルフコピー機で、手書き・ワープロ打ち原稿などをコピーして制作する(A41枚からホッチキス止めまで。これも立派な同人誌です)
- 印刷所で印刷:印刷所に印刷を依頼(注文・入稿)する。「50ページかつ100部以上」などの多ページ・多部数印刷や、美しい本を制作したい場合には必須
コピー本に関しては、悩むことはほとんどありません。とにかくPDFを作り印刷できれば、制作できます。
そしてMarkdownで書いたものの多くは、普通にPDFとして出力できます。何も難しいことはありません。
しかし、印刷所で入稿しようとすると、ある大きな壁が立ちはだかります。
それは印刷所に入稿可能なPDFを作ることです。
印刷は面倒くさい、物理世界だもの
Webになくて、紙の本(印刷物)にあるもの……それは、物理的な制約です。
まず、そもそも紙という媒体が、厚さとサイズという物理的な制約を持ちます。
たとえばページ数が多くなり部数が多くなると、薄っぺらなはずだった紙は「本」という束となり、あなたの部屋を簡単に埋め尽くせます。いわゆる在庫です。これでも在庫は分かりやすい(しかし出版業界を揺るがすほどシリアスな)問題です。
もっと厄介なのが、印刷工程です。印刷という作業は、物理世界の制約を大きく受けます。
印刷という技術は、機械工学(紙送り・サイズ合わせなど)、物理学・化学(インクと紙の性質)、そして情報科学(フォント・画像・PDFの各仕様など)の賜物なのです。
ご家庭のプリンタは、「ある程度雑に印刷することが許される」分、めちゃくちゃなPDFでも大抵は印刷できます。
しかし、印刷所にあるようなプロ仕様のプリンタ(正確には一式の印刷システム)は違います。
高品質かつ事故のない印刷のために、入稿用PDFは印刷所の指定するあらゆる条件を満たす必要があります。
たとえば……
- フォントはすべてPDFに埋め込む or アウトライン化(ベクター画像化)する
- PDFに埋め込まれる画像のカラーは、RGBではなくCMYKまたは黒一色(インクに「RGB」という概念はないので。ただし逆に「RGBのみ」の印刷所もある)
- ページ数は4の倍数(本の綴じ方から来る制約。本の見開きの真ん中でホッチキス止めするときを想像しよう)
- トンボ(紙を裁断するときの目印)を付ける or 付けない(印刷所によって異なる)
- 通しのページ番号(通しノンブル)を付ける(事故防止のため。印刷所によって異なる)
などなど。このような条件を満たした原稿は、完全原稿と呼ばれます。(詳しくは印刷所のWebサイトに全部書いてます)
仮にMarkdownアプリから適当にエクスポートしたPDFそのまま入稿すれば、印刷所の方から確認の電話がかかってくるでしょう。
逆に、まったく何も考えずに同じPDFを入稿して無事に本が納品されたなら、それは裏で印刷所の方が死に物狂いでPDFを整えていたからかもしれません。
印刷所の方は、責任を持って仕事をしている
印刷所への入稿が面倒に感じられるもう一つの要因としては、ビジネスとしての「印刷所」の責務もあります。
雑な例えでいえば、家庭用プリンタのように「インクが切れました/紙が詰まりました。てへぺろ(・ω<)」という事態が、プリンタをフル稼働させる印刷所で簡単に起こることを想像してみます。
……ただでさえ締切ギリギリの印刷作業に遅延が雪崩式に発生し、下手をすれば同人誌即売会で多くのサークルで「納品物の本が届いてない!」という事態になりかねないのです。
また、あなたが印刷所に本の印刷を依頼したときに、「1ページだけ印刷されていない」などの事故が起こった場合には、当然のように責任問題となります。(そのために、印刷所ではページ最後に「奥付」の記載が義務づけられています)
ここまでの話をまとめると、紙の本は物理世界の制約を受ける上に、印刷所はお金と責任を背負うので、こんなに面倒なことになっているのです。
ただし、印刷所の人たちがきちんと仕事をしてくれるからこそ、著者として引き受ける必要のある面倒なのです。
(多くの同人誌印刷所は、本当に面倒見がよくて、クオリティの高い仕事をしてくれます。)
「技術同人誌をMarkdownで書く」とは、実際どういうことか?
冒頭に書いた通り、Markdownを普段から使うITエンジニアが技術同人誌を書こうとすると、「技術同人誌ぐらい、普通にMarkdownで書けるはずだ!」という強い確信を持つでしょう。
しかし、実際に「技術同人誌をMarkdownで書く」ことを経験すると、「印刷所に入稿可能なPDFを作る」段階で、Markdownのエコシステムに属するあらゆるツールが力不足であると痛感するでしょう。
「技術同人誌をMarkdownで書く」ことを技術的側面に注目して定義するならば、次のように言えるでしょう。
Markdownを使って書いた原稿を元に、何らかのツールや方法・プロセスを用いることで、同人誌印刷所に入稿可能なPDF(完全原稿)を生成する
(もしくは自力で印刷してコピー本として制作する、または電子書籍として頒布可能なPDFやEPUBファイルなどを制作する)
以下、特に「同人誌印刷所に入稿可能なPDFを生成する」について掘り下げます。
寄り道:本記事における用語の定義
用語を少しまとめます。
- 同人誌印刷所:同人誌の印刷に特化した印刷所。多くの場合、入稿時に手厚くサポートしてくれて、一部のイベントでは会場に納品までしてくれる
※ 例:「日光企画 」さん、「ねこのしっぽ」さんなど多数
※ これ以外の印刷所もたくさんあるけど割愛(チラシ・ポスター・名刺などのビジネス向け印刷所、高クオリティな商業出版物の印刷所など)
- 入稿可能なPDF:同人誌印刷所にそのまま入稿可能なPDF(完全原稿)
※ Webや画面表示に最適化したPDF(電子書籍向け)など、同人誌印刷所にそのままでは入稿できないPDFもある
※ 同人誌印刷所では、商業出版物の印刷ほど厳しい要件ではなく、ある程度なら完全原稿でなくてもフォローしてくれる場合が多い(時期・納期・予算などによって違うので注意)
Markdown文書から入稿可能なPDFを得るためのプロセス
Markdownで書かれた原稿(以下、Markdown原稿)から入稿可能なPDFを得るまでには、どのようなプロセスがあるのでしょうか。
大ざっぱには、2つの戦略があると筆者は考えます。
下書きとしてのMarkdown原稿
- Markdown原稿は、あくまでラフな下書きに過ぎない(好きなアプリ・ツールを使う)
- 入稿可能なPDFを生成するための原稿(マスター原稿)は、Markdownとは限らない任意の記法・形式で書く(例:LaTeXやRe:VIEWなど)
マスター原稿としてのMarkdown原稿
- 何かしらのMarkdown原稿をマスター原稿とみなし、入稿可能なPDFを一発で生成する(例:「make」や「npm run」などのコマンド一発でPDFを生成する)
- 間に入る中間ファイルやツール・プロセスは、Markdownと関係のないものでもよい(例:LaTeXやRe:VIEWなど)
- このMarkdown原稿は、たいていは何らかのMarkdown方言で書かれる(※)。HTMLやLaTeXなど別の記法を同時に埋め込む場合もしばしばある
※ 人気の高いGitHub Flavored Markdownでも、技術同人誌を書くには記法が足りない(筆者の主観)。Pandoc's Markdownのように、技術同人誌であればカバーできてしまうMarkdown方言もあるが、その分学習コストが高く他の方言との互換性は低くなる。
ちなみに筆者は、両者の立場に立ちます(重複アリ)。
技術同人誌の初心者は「下書きとしてのMarkdown原稿」で考えるべし
結論を言います。技術同人誌をこれから書こうとする人は、「下書きとしてのMarkdown原稿」が最も学習コストの低いやり方だと思います。
具体的には、次のプロセスです。
1. 締切を作る(できれば早割)
2. 下書きやメモ書きを、Markdownで書く
- ある程度ラフにガーッと書いてしまうのがおすすめ
- 見出しを並べて目次から書くのもよし、とりあえず本文をボトムアップで書くのもよし
3. 2と並行して、Re:VIEW(やLaTeXなど、Markdown以外のお好みの形式)で、最小限のプロジェクトを作る
4. 最小限のプロジェクトを、とにかくビルドしてPDFを出力する
- この時点で、出力されたPDFをそのまま印刷所に入稿できるかどうかを下調べすると吉。印刷所の方に直接メール・電話とかしてもOK
5. ある程度「本の形」になるのが見えてきたら、Markdownで書いた下書き・メモ書きを、Re:VIEW形式(など)の原稿に移植する
- 「md2review」など、専用の変換ツールを使うと便利(後述)
- この時点で後戻りが難しくなるので、これ以降はRe:VIEWファイル(など)をGitでバージョン管理する
6. 締切に向けて頑張る
7. PDFをビルドし、正式に入稿作業を進める(早割で余裕があると、多少ミスっても印刷所の人が丁寧に教えてくれます)
理由をいくつか挙げます。
まず、Markdownは(シンプルに書こうと思えば)シンプルに書ける記法です。
最悪でも手作業で他のフォーマットを書き換えるのは、思ったよりも大変ではないでしょう(まあまあ大変ですが)。
そして、「Markdownから○○記法への変換ツール」は、幸いなことに充実しています。
- Re:VIEW形式に変換したい: md2review
- LaTeX形式・reStructuredTextなど(いろいろ)に変換したい: Pandoc
特にRe:VIEWは、特にMarkdownに慣れている人であれば、案外学習コストが小さいと思います。
それでもゼロから記法を覚えるのは大変ですが、幸いにも『技術同人誌を書こう! アウトプットのススメ』(インプレスR&D)という本に、Re:VIEWに関して必要な最低限ことは全部書いています。これを1冊買って読みながら頑張れば、初心者でも「Re:VIEWで入稿可能なPDFを作る」ことが可能でしょう。
(さらに、初期のネタ出しから入稿時の注意・サークル出展時のノウハウまで、知識・経験ゼロの人向けに教えてくれる心強い本なので、Re:VIEWで書かない人も絶対買った方がいいです。)
「マスター原稿としてのMarkdown原稿」の道は、整備が始まったところ(中上級者向け)
一方で、「マスター原稿としてのMarkdown原稿」のプロセスは、正直に言って初心者にはおすすめしません。
残念ながらRe:VIEWに比べると、初心者にゼロから教えられるような「決定版」となる本やメソッドがなく、まだノウハウがあまり世に出ていません。(これは、筆者の力不足もあります)
重要なことは、Markdown(多くのMarkdown方言)で書かれた原稿は、そのままでは「マスター原稿としてのMarkdown原稿」になれないということです。
たとえば、同人誌印刷所で必要とされる「ページ数は4の倍数」を満たしたくても、Markdownの記法でページを制御する方法はありません。つまり、Re:VIEWやLaTeXのようなツールの力や記法に頼るか、PDFを生成した後にAdobe Acrobatなどで手作業により調整する必要があります。
入稿可能なPDFを作るには、Markdownとそのツールとは別に、
入稿可能なPDFの作り方(組版)に関する基礎知識と、入稿可能なPDFを生成するソフトウェアの使い方を身につける必要があります。
このうち、「入稿可能なPDFを生成するソフトウェア」についてはいくつかあります。
- 組版エンジン:Re:VIEWやLaTeX、Vivliostyle(CSS組版のためのライブラリ)など
- PDF編集・変換ソフト:Adobe Acrobat、CubePDFなど
※ CSS組版:CSSを用いて、印刷物のようなページレイアウトを実現するための技術(の総体)。CSS3ではいくつかの「モジュール」としてCSS組版の仕様が定義され、実装が進みつつある。
余談ですが、個人的に筆者は「Markdown」と名の付く技術同人誌を収集し始めています。その中で気づいたことが、「技術同人誌をMarkdownで書く」方法には、実に多様な方法があるということです。特に「マスター原稿としてのMarkdown原稿」に関しては、筆者が知らない方法(特にCSS組版)も多数ありました。
逆にいえば、「技術同人誌をMarkdownで書く」方法について、まだ決まった方法論が確立していない、とも言えます。つまり「マスター原稿としてのMarkdown原稿」の道は、整備が始まったところと言えるでしょう。
商業出版における組版技術の長い歴史やノウハウの蓄積に比べると、「マスター原稿としてのMarkdown原稿」を綺麗かつ問題なく入稿可能なPDFに変換する技術やノウハウは、まだまだ未熟です。CSS組版も含めて、あらゆるプレイヤーが挑戦や模索をしている世界です。
そのような困難も含めて、道の整備や開拓を楽しめる人であれば、「マスター原稿としてのMarkdown原稿」の道でも(しんどいですが)楽しめると思います。そして、ノウハウ自体を説明する本を書いて技術書典で売れば、きっと大きな注目を浴びるでしょう。
おわりに
今回は、あえて初心者を「崖から落とす」ような感じで、「技術同人誌をMarkdownで書く」ことのリアルについて書いてみました。思ったよりも面倒でしんどい話です。これがリアルなんです。
しかし、技術書典やその派生コミュニティ、各オープンソースソフトウェアの貢献者などの努力によって、確実に「技術同人誌を書くハードル」は下がりつつあります。さきほどの『技術同人誌を書こう!』という本は、まさに先人の努力の結晶です。
技術同人誌の執筆で究極的に大事なのは、「お世話になったら感謝する」「迷惑をかけたら謝る」という、人間として当たり前のことかもしれません。
先人の努力に感謝しつつ、さらにラクに楽しく技術同人誌を書いていきましょう。筆者も、皆さんの執筆のハードルを下げていけるように貢献したいと思います。
水先案内(参考文献)
技術同人誌に関する基礎知識とノウハウ+Re:VIEWの初心者向け説明
- 親方Project(編・@oyakata2438): 技術同人誌を書こう! アウトプットのススメ(インプレスR&D)
※ 一家に一冊。マストバイ。
「マスター原稿としてのMarkdown原稿」について
- ku-suke(@ku_suke): Markdownで技術同人誌を書こう!(FlightBooks)
CSS組版(Hartijaを利用)。FlightBooksというWebアプリを開発中(現在α版)。同書と同じフォーマットで、MarkdownからCSS組版によるPDFをビルドしてくれます(!)。
- 緑豆はるさめ(@spring_raining): CSSではじめる同人誌制作(pentapod)
CSS組版(Vivliostyleを利用)。CSSによるレイアウトデザインの解説が豊富で、本書自体のレイアウトもCSSの特性を最大限に活かして大胆に組まれています。
- Kojiro(@kojiro_jn): すべてのExcelドキュメントを生まれる前に消し去りたい本 2018(竜睛舎)
Pandocを使って、Word文書を中心とした本格的な業務ドキュメントを生成するノウハウ。印刷所への入稿に関しては言及していないですが、Pandocそのものの入門として充実しています。
もっと学びたい人に
- 鹿野桂一郎(ラムダノート株式会社): TeXは軽量マークアップの夢を見るか(SlideShare)
Markdown・Re:VIEW・LaTeX・HTMLなどのマークアップ言語やツールを、「軽量マークアップ言語」と「組版エンジン」の2つの層(レイヤー)に大別して分類する試み。(本当はこのスライドについて説明したかった/22:34 説明を微修正)
- 村上真雄(Vivliostyle.org): CSS組版について(SlideShare)
Vivliostyleの開発者かつCSS組版の第一人者による解説スライド。
補足(12/4 22:34追記)
ご感想をいただいたので、補足します。
まさに仰る通りで、紙にこだわらなければ、Markdown(あるいはMarkdownっぽいいろいろなテキスト記法)は多くの電子媒体に活用できます。
・電子書籍: でんでんコンバーター、LeMEで制作、Kindleなどで公開
・Boothで売る: ダウンロード販売(PDFは印刷所入稿ほど真面目に作らなくてもOK)
・note: 有料ノート(記事)・有料マガジン
※ 本記事は「有料ノート」という扱いです(ただし本記事のすべてを無料閲覧可能に設定しています)
※ まだ2018年現在では、noteはMarkdownに対応していないので、私はMarkdownの原稿を手作業で変換しています……
宣伝コーナー:『Markdownライティング入門』 12/14発売!!
この記事の筆者(藤原惟)は、『Markdownライティング入門』という同人誌を技術書典4にて頒布しました。
本書は、「そもそもMarkdownとは何か」と「Markdownの初心者がハマりやすい落とし穴」を丁寧に説明する本です。また「下書きとしてのMarkdown原稿」に活用できるノウハウも、いくつか説明しています。
※ 一方で残念ながら、「マスター原稿としてのMarkdown原稿」の作り方まではカバーできていません。筆者の次回作以降で説明していこうと思っています。
この度、同書の商業誌版を、株式会社インプレスR&D様より刊行することになりました!
- 発売日 12/14
- 予約開始 12/7(もうすぐです!)
執筆時点(12/4)ではまだAmazonなどのリンクは出てないですが、下記にて順次お知らせしていきます。
Markdownライティング入門【商業化決定】|藤原 惟
https://note.solarsolfa.net/m/m0ee0e40a1c72
藤原惟 (@skyy_writing) | Twitter
https://twitter.com/skyy_writing
『Markdownライティング入門』ご所望の方は、予約開始・刊行までもう少しお待ちください!
藤原 惟
この記事が気に入ったらサポートをしてみませんか?