電気ひつじ牧場

技術メモ

技術書典6にサークル参加したので、ノウハウや備忘録的なもの

やったことやノウハウや備忘録を書いて行きます。

技術書典6とは

技術書を作って売るイベント。コミケの技術書版ですね。

出展したもの

北大IT研究会(別名: 北大IT勉強会、HUIT、ヒューイット、 ヒュイーン etc.)としてサークル参加して来ました。「Engineers, Be Ambitious」というタイトルでサークル内の4人がそれぞれ好きなテーマについて書き、入稿から当日の販売までを行いました。内容は

  • 大学内フリマサービスの開発・運用に必要なこと
  • Optunaでハイパーパラメータチューニング
  • きつねさん以下がPythonコンパイラを作った話
  • Rustで始めるネットワークプログラミング

の4章です。

自分が書いた部分

もう何度も言っているのでそろそろうざいかもですが、「Rustで始めるネットワークプログラミング」という章を執筆しました。

執筆について

利用ソフト

Re:Viewという書籍制作向けツールを利用しました。執筆メンバーは全員これを使うのが初めてで、結構躓きました。初めての方は、Re:VIEW ナレッジベースはぜひ一読しておくことをお勧めします。特にRe:VIEW 3 からの LaTeX 処理の知識はレイアウトを整える時に必要になるので重要だと思います。

ワークフロー

マークダウン→Re:View記法→pdf という変換を行ってくれるツールを公開してくださっている方がいたので、有り難く利用しました。bitbucketでCIが出来ることに気が付いたので、pipelinesを使ってmdをpushすれば自動でpdfを出力してくれるようなbashを書いたので割と快適でした(途中でCIの無料枠を超えましたが)。

bitbucket-pipelines.ymlは以下のような感じです。

image: nuitsjp/mdview

pipelines:
  default:
    - step:
        script:
          - mdview-init.sh document
          # seqsplitタグを使う
          - ls
          - ls document
          - mv reviewmacro.sty seqsplit.sty document/sty/
          - mv review-ext.rb document/
          - mkdir refiles
          # refiles(re専用)にmdをコピー
          - cp asako/asako.md ono/ono.md osada/optuna.md yoshio/yoshio.md refiles
          # refiles/に.reが入る
          - for file in `\find ./refiles -name '*.md'`; do echo "md2review "$file" > "${file%%.md}".re"; md2review $file > ${file%%.md}".re"; done

          # pdf作成用
          - sed -i -e "s/.md/.re/g" catalog.yml
          - cp catalog.yml document
          - cp ./refiles/* document
          - cp config.yml document
          - cd document && review-pdfmaker config.yml
          - mv book.pdf book-from-md.pdf
          - cd ..

          # reが個人フォルダにあればpdfにする
          - declare -a pathes=("osada/optuna.re" "asako/asako.re" "yoshio/yoshio.re" "ono/ono.re")
          - for path in "${pathes[@]}"; do if [ -f ${path} ]; then cp ${path} document; fi; done
          # 画像関連
          - declare -a names=("osada" "ono" "asako" "yoshio")
          - for name in "${names[@]}"; do if [ -d ${name}/images ]; then cp ${name}/images/* document/images; fi; done
          - cp catalog.yml document
          - cd document && review-pdfmaker config.yml

        artifacts:
          - refiles/ono.re
          - refiles/optuna.re
          - refiles/yoshio.re
          - refiles/asako.re
          - document/book-from-md.pdf
          - document/book.pdf
        # mdをpushしたらname.reとbook-from-md.pdfができる
        # .reをpushしたらbook.pdfができる

最初の方はこのような流れでやっていましたが、終盤になるにつれてmdで脚注が使えなかったり、ソースコードの改行をする必要があったりしたため、Re:Viewファイルを直接編集してその辺りの細かな制御を行いました。

印刷所

日光企画さんを利用しました。私たちのように遠方から参加する場合、制作物は現地に直接配達する場合がほとんどだと思うので、そういったサポートのある印刷所を選ぶのが良いと思います。早割なども利用できるため早めに入稿するのがお勧めです。

当日

本とご対面

製本されたものは直接現地に届くのですが、ドキドキワクワクしながら手にとった制作物がこちら。

どうしてこうなった。出展する人はお気をつけください。

チェック数、頒布数

技術書典は事前にサークルチェックといういわゆる「買いたい物リスト」を作成できるのですが、私たちの当日の被チェック数は最高で75くらいでした。二日前くらいまでは40とかだったので、噂通り直前で一気に伸びます。販売冊数は63冊(冊子版、DL合わせて)で冊子版が完売というまさかの結果になりました(流石に全部売れるとは思ってなかった)。たまたま通りかかった北大OBの方が「わざわざ北大から来たの!?」みたいな感じで買ってくださったケースが多かったです。その他にも各執筆メンバーは結構マニアックなところを突いた記事を書いていたため、それを目当てで買いに来て下さった方もいました。

最後に

買って下さった方々、本当にありがとうございました。

ついでに飯テロ

f:id:cha-shu00:20190426195808j:plain
当日の夕飯は「もと村」の牛カツ。うまい。