はじめに 


技術書典に出展してみたので振り返りをしようと思います.

技術書典とは 


新しい技術に出会えるお祭りです。(https://techbookfest.org/ より)

具体的には技術関連の同人誌の即売会です. 普段は場所を取って即売会を行っていましたが, 今回はオンラインでやりました.

元々, 3月に行われた技術書典8に参加しようと思ったのですが

  1. 即売会に出たくて応募したが時勢の影響でオンラインになってやる気が下げぽよになった.
  2. 卒論執筆がヤバくなった.
  3. 卒業旅行が楽しかった.

ので参加を見送りました. オンラインのイベントに出てもなーと思ったのですが, しばらくオフラインで開催できなさそうだったので気持ちを切り替えて技術書典9に参加したという次第です.

なんで参加したの 


  1. 大学でオタク学科を専攻しているので, 学生のうちに同人誌を書いて即売会に参加してみたかった.
  2. 在学中に東京工業女学院についての創作をして形として残したかった.
  3. CMSIS-DSPについてちょうど調べていて, 本にしてまとめるといいかなと思った.

何を書いたのか 


架空の学院, 東京工業女学院を舞台に女学生たちが組み込みARMCPUのためのデジタル信号処理ライブラリCMSIS-DSPについて学び, 解説していく本です. CMSIS-DSPの導入とか使い方、ライブラリの仕組みなどについて書きました.

ストーリーはロボット技術研究会に所属する女の子がマイコン上でデジタル信号処理が上手くできずに部室で困っていたときに部員更新に現れた幽霊部員の女の子にCMSIS-DSPというライブラリの事を教えてもらい, 一緒に学んでいくという運びになっています.(やる夫で学ぶデジタル信号処理方式だと言ったほうがしっくり来るかもしれません.)

東京工業女学院とは何か? 

架空の女学院. 東京工業大学が教育改革の一環で学部・大学院を統一した「学院」の設置を行うと発表した際, 一部の界隈で「それってYO☆女学院の設立じゃん」(恣意的な誇張あり)と話が盛り上がり, 架空の女学院を舞台とした女学生たちについて様々なアイディアが寄せられたのが始まりです.

詳細は以下のTogetterを参照するのがよろし.
https://togetter.com/li/925918

執筆環境 

執筆環境は当初, Vim + $\rm{Lua\LaTeX}$という環境で執筆をしていましたが, VSCode + $\rm{Lua\LaTeX}$に環境を変えました.

$\rm{Lua\LaTeX}$を使っているのはdviファイルを経由せずに一発でpdfが出力できるのが好きで使っています.

VSCodeは色々機能が便利だったので途中で移行しました. pdfのプレビューをクリックするとsyncTeXで該当箇所にジャンプできるし.


以下に使ったパッケージとか設定を書いておきます.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
\documentclass[11pt, b5paper, titlepage, utf-8]{ltjsbook}
\usepackage{metalogo} % for \LuaLaTeX command
\usepackage{graphicx,color} % for images
\usepackage{listings} % 箇条書き
\usepackage{amsmath} % math 
\usepackage{amssymb} % math
\usepackage{bm} % 太字の斜体
\usepackage{comment} % comment
\usepackage{here} % 画像を強引に記述箇所に貼るために使う.
\usepackage{hhline} % 線を引く
\usepackage{makecell} % 空白の作成とか
\usepackage{titlesec} % 見出しのデザインをいじる
\usepackage{pdfpages} % 表紙の挿入とか

\usepackage[unicode]{hyperref} % ハイパーリンク

% 色とか
\definecolor{teal}{RGB}{0,128,128}
\definecolor{powderblue}{RGB}{176,224,230}
\definecolor{darkslateblue}{RGB}{72,61,139}
\definecolor{darkslategray}{RGB}{47,79,79}
\definecolor{lightcyan}{RGB}{107,255,255}
\definecolor{deepskyblue}{RGB}{0,49,103}
\definecolor{pinkallpink}{RGB}{255,105,180}
% chapterのデザイン
\titleformat{\chapter}[block]
{}{}{0pt}{
  \fontsize{40pt}{40pt}\selectfont\filleft
}[
  \hrule \Large{\filleft\thechapter}
]

% sectionのデザイン
\titleformat{\section}[block]
{}{}{0pt}
{
  \colorbox{pinkallpink}{\begin{picture}(0,20)\end{picture}}
  \hspace{0pt}
  \normalfont \Huge\bfseries \thesection
  \hspace{-4pt}
}
[
\begin{picture}(100,0)
  \put(3,30){\color{pinkallpink}\line(1,0){400}}
\end{picture}
\\
\vspace{-50pt}
]

% subsectionのデザイン
\titleformat{\subsection}[block]
{\color{deepskyblue}}{}{0pt}
{
  \colorbox{lightcyan}{\begin{picture}(0,10)\end{picture}}
  \hspace{0pt}
  \normalfont \Large\bfseries \thesubsection 
  \hspace{-4pt}
}
[
\begin{picture}(100,0)
  \put(3,18){\color{lightcyan}\line(1,0){300}}
\end{picture}
\\
\vspace{-30pt}
]
% コマンドとか
\newcommand*{\auna}[1]{\textsf{「アゥナ」:}\ \ \ {#1}\\}
\newcommand*{\question}[1]{\textsf{「???」:}\ \ \ {#1}\\}
\newcommand*{\kyary}[1]{\textsf{「キェリ」:}\ \ \ {#1}\\}
\renewcommand{\figurename}{Fig. }
\renewcommand{\tablename}{Table }
\renewcommand{\refname}{References }
\newcommand{\mytitle}{女学院で学ぶCMSIS-DSP}

% Cコードの設定
\lstset{
  language=[Sharp]C,
  backgroundcolor={\color[gray]{.96}},
  basicstyle={\small},
  identifierstyle={\small},
  commentstyle={\small\ttfamily \color[rgb]{0,0.5,0}},
  keywordstyle={\small\bfseries \color[rgb]{0,0,0.8}},
  ndkeywordstyle={\small},
  stringstyle={\small\ttfamily \color[rgb]{0,0,1}},
  frame={tb},
  breaklines=true,
  columns=[l]{fullflexible},
  numbers=left,
  xrightmargin=2\zw,
  xleftmargin=2\zw,
  numberstyle={\scriptsize},
  stepnumber=1,
  numbersep=1\zw,
  tabsize = 2,
  morecomment=[l]{//}
}
\hypersetup{% hyperrefオプションリスト
  setpagesize=false,
  bookmarksnumbered=true,%
  bookmarksopen=true,%
  colorlinks=true,%
  linkcolor=black,
  citecolor=red,
}

表紙の作成はInkscapeを使って作りました. 絵は描けないので撮った大学の校舎の写真を使いました.

執筆時に気をつけたこと 


ライティングルールの設定 

例えば, 「ライブラリー」と書くのか「ライブラリ」と書くのか.
そういった語句や何度も出てくる表現やコードの記法についてルールを作って, 最後にチェックをかけていました. 最初から導入していたらもっと楽だったと思います.

ライブラリの関数の挙動 

例えば, 同じ関数でも固定小数点数のもとと浮動小数点数では挙動が違うものがあったりするので, それらについて欠かさず説明を書いたりしました.

デジタル信号処理と言っても僕が知らない分野(SVMとかガウシアンナイーブベイズとか)があったりしたので, その都度勉強しました.

正誤表リポジトリの添付 

いつだって最高の文章を書いているつもりですが, 多分どこかしらでやらかすと思ったので正誤表リポジトリを添付しました. 何か不明な点があったらいつでもissueを投げてください.

女の言葉遣い 

こういった創作をするのは初めてだったので, めちゃくちゃ戸惑いました. 執筆中も小説を色々読んで文章の書き方や表現方法を参考にしてみました.

世界観を壊さない 

例えば, CMSIS-DSPを使うための開発環境を構築する箇所を書いてGitHubの方にもコードを公開したとき, これを作中の人物が「GitHubに公開しておくね」と言って僕のGitHubアカウントを書き出したら世界観が崩壊します.(僕は女学院の世界に存在してはいけないので)
そのため, 「彼女たちがGitHubに公開した」と書くのではなく, 「彼女たちが開発環境を構築したときに注釈を入れる形でGitHubへのリンクを貼る」というふうに書きました. ココらへんめちゃくちゃ苦労した…

伏線を回収する 

ドキュメントを読んでいくとドキュメントの不備を見つけたりします. 例えばsin, cosを計算する際にテーブルからの線形補間を行っているのですがドキュメントにはテーブルのサイズは256個と書いてあるけど実際には512個になっています.

ここを飛ばして説明することはできないので作中でミスを見つけたあと「後でプルリクを書こうか」という描写を書いた後, 現実世界に生きる僕がプルリクを書いて修正をするといったことをやりました.

実際に僕は本の脱稿後, このプルリクを書き無事にマージされました. (人生初のプルリクです.)
Images
オタク.

印刷 


もともと, 紙の本を出すことが目標だったので印刷所に持っていって製本をしました. 初めてだったので, 技術書典公式の勧めのもと, 印刷は日光企画さんにお願いしました. データを見合わせて修正が必要な箇所を教えていただいたり, 印刷後, 直接運営元に発送してくれるサービスのおかげでとても助かりました. ありがとうございました!

Images

印刷のオプションはそれぞれ

  • オンデマンド平綴じフルカラー印刷
  • 表紙: NPホワイト200
  • 本文: 上質90 + マットPP加工

にしました. 紙もその場で色々触って確認して決めました. 初めて参加するときは色々と分からないことがあると思うので, オンラインよりも直接お店に行ってみたほうがいいと思います.
日光企画さんのHPhttps://www.nikko-pc.com/index/top.html

宣伝 

Twitterで一回ツイートで宣伝して時たまRTしました. 本を最後まで書けた時点で僕は満足していて, 売上はそれほど興味がなかった(例え赤字でも)のでそんなに宣伝はしませんでした. 変にやっても疲れるしね.

やらかしや反省点 


書きすぎた 

書きすぎました. 表紙込みで128p書いたので印刷代がかなり高くなってしまいました. 悲しいね. まぁ, 僕としては書きたいものが書けたので印刷代はどうでもいいかなという感じです.

執筆中にライブラリのバージョンが上がった 

執筆を開始した段階でCMSIS-DSPのライブラリバージョンは1.7だったのですが, 執筆中の2月に1.8になりました. 新しくSVMの関数とかガウシアンナイーブベイズの関数が追加されてそこら辺の勉強も新しくすることになりました.

最新版のライブラリについて書くときは注意しよう.

紙の設定をA4にしていた 

同人誌の世界ではA5やB5, B6のサイズが一般的です. 私の世界ではA4のサイズが一般的だったので印刷する一週間前に気づいて慌てて修正しました.

慌ててと言いましたが, B5ペーパに設定するだけだったのでdocumentclassをb5papperにするだけで対応できました. ありがとう組版システム.

塗り足しの存在を忘れる 

皆知ってた? 俺は知らなかった.

表紙のサイズはB5二枚 + 背表紙だけだと思っていたんですが, フチ無し印刷(紙の端まで印刷する)をする場合, 仕上がりのサイズよりも外にある裁ち落とされる部分が3mmほど必要になります. また, きれいに印刷するためにはdpiが330以上必要だとも言われました.

そのため, 日光企画さんのオフィスにてデータの修正を行いました. 幸い, Inkscapeでは紙のサイズはすぐに変更できましたし, ベクターで書いてるのでdpiを調整するのも簡単でした.(ヤッピー)

白黒差分をチェックし損ねた 

表紙はカラーにしましたが本文は値段の関係で白黒にしたのですが, 白黒差分を予め確認していませんでした. オフィスで指摘された際, GhostScriptを使って変換した後に変なところがないか目で確認しましたが事前にやっておくべきだったし, 色もそれを想定した色を使うべきだったなと思いました.

女と女の会話の構築が難しい 

長い期間書いてたので, 書き始めたときと終盤ではキャラクターの喋り方や場面の設定がずれてたりしたのでそこら辺の修正に時間がかかりました. 予めストーリー(プロット)を作っておいたほうがいいなと思いました.

目次の文字化け 

イベント開始後, 最初に本を購入してくださったゆーくりっどさんに目次(ブラウザとかで開くと横に出るやつ)が文字化けしているという報告を受けて慌てて修正しました. 普段は目次を見ずに書いてたので全く気づきませんでした.
hyperrefのパッケージにunicodeオプションを追加してすぐに解決できたのですが, データ自体が変わるので再審査を運営にするなどの二度手間が発生してしました. ただ, この審査はすぐに終わったのですぐに販売を再開できました.


ゆーくりっどさん, ありがとうございました.(๑•̀ㅂ•́)و✧

その他騒いでるオタクの様子 



今後したいこと 


サークルのロゴを作る 

皆の祈りを届けたいのでサークル名「とりどりOINOLI」が結成されました.(構成員は私のみ) 折角なのでサークルのロゴとかを作っていきたいです.(誰かにお願いしようかな)

最後に 


色々ありましたが執筆自体はとても楽しかったです. 文章を書くと「筆者」になって感情について書くと「作者」になれるらしいんですが, これで僕も「作者」の末席座っていいかな?と思いました.

今度はFPGAとかについて書きたいかな. まだ, 続けていきたいので.
Images