投稿日: 2023-06-08
5/20~6/4に開催されていた技術書典14にオンライン参加したので、その記録を残しておこうと思います。
技術書典14イベントページ: 技術書典14
前回の参加記録はこちら: 技術書典13に参加しました | tekiehei2317's blog
tRPCとPrismaによるバックエンド開発入門という本を書きました。最近仕事でTypeScriptフルスタックの開発をしていたので、そこで学んだ知見をバックエンド中心にまとめました。
章の構成は次のようになっています。
第1章 なぜサーバーサイドでTypeScriptを使うのか
第2章 Node.jsとTypeScriptの基礎
第3章 TypeScriptの型安全性を支えるエコシステム
第4章 アプリケーションを開発する前に考えること
第5章 データベースの設計
第6章 アプリケーションの実装・テスト(基礎編)
第7章 Prisma Clientの機能
第8章 tRPC Serverの機能
第9章 アプリケーションの実装・テスト(応用編)
最初になぜサーバーサイドもTypeScriptを使うのかを説明し、それからTypeScript・Prisma・tRPCなど具体的な技術について解説しています。
サーバーサイドの開発ではデータベースの設計が非常に重要なため、1つの章を割いて説明しています。データベースの設計をする際はkawashimaさんのイミュータブルデータモデルを参考にすることが多いので、イミュータブルデータモデルについても少し解説しています。
実践パートでは、花束問題というデータモデリングの問題をもとにしたアプリケーションを開発します。業務アプリケーションの試作をしているときに扱ったテーマで、それなりの複雑さがあるので採用しました。試作したアプリについては以前Zennの記事にまとめました。
TypeScriptで業務アプリを試作してみた(tRPC+Prisma)
前回は技術書典で定番のRe:VIEWを使ったのですが、今回はVivliostyleにチャレンジしてみました。Vivliostyleは、Markdownの原稿とCSSから、PDFを生成できるツールです。
Vivliostyleを使った理由は、今回は紙の本を作る予定がなかったので新しい技術に挑戦してみたいと思ったからです。また、ポータビリティの高いMarkdownで原稿を書けるメリットも大きいかなと思いました。
VivliostyleにはVivliostyle Viewerというツールがあり、PDFをブラウザ(Chromium)で確認しながら調整することができます。
使ってみた感想は、慣れているMarkdownとCSSが使えるのは非常に良かったです。表紙も、HTMLとCSSを使ってサクッと作成できました。
気になった点は、Vivliostyle Viewrの速度があまり速くなかったことです。今回はページ数がそこそこあったため(80ページくらい)、全ページのビルドには20秒くらいかかりました。
Viewrでは前のページからビルドされるので、最初のページに反映されるのは早いのですが、後のページの反映は時間がかかってしまいます。そのため、途中から原稿はVSCodeのMarkdownプレビューを使って確認するようにしていました。
もちろん、普段使っているViteなどのビルドツールが速すぎて感覚がおかしくなっているところがあると思います。PDFを生成するツールとしては十分に高速だと思いますし、Markdownのプレビューがあるのでストレスに感じることはなかったです。
Vivliostyleでは入稿用のPDFも作成できるようなので、次に参加する技術書典ではVivliostyleで紙の本の作成に挑戦してみようかなと思っています。
前回と違って全然スケジュールを立てておらず、開催前日(5/19)まで原稿の修正をしていました。ゴールデンウィークがなければ間に合っていなかったと思います。
コミット履歴を見たところ、4/23にリポジトリを作成して執筆を開始していました。書き始めた頃は、本当にこのテーマで書けるのか、書けないかもしれないので他のテーマにしようかなどの不安がありました。
一番原稿を進めたのはゴールデンウィーク2~4日目の3日間で、この期間に50Pくらい書いたと思います(次の日から予定があったので頑張りました)。この3日のおかげで多分原稿を完成させられるだろうと安心できました。
オフラインで紙の本を出典する場合はギリギリまで修正することはできないので、オンライン参加に助けられた形です。印刷会社さん(前回利用したのは日光企画さん)には早割という仕組みがあり、イベントの何日か前までは印刷料金が安くなります。早割かどうかで料金が結構変わるため、紙の本を印刷会社で印刷する場合はスケジュール管理が重要です。
開催期間中の売り上げは次の通りでした。
34 * 1000 + 800 * 6 = 38,800円の売り上げでした。原稿をギリギリまでやっていた影響であまり宣伝ができなかったので、次参加するときは宣伝等にも時間を使えるようにしたいです。
本の難しいところは、記事やドキュメントと比較すると継続的に改善することが難しいところだと思います。また、書いた本に対してフィードバックをもらうのも難しいなぁと感じます。一人の力で読んだ人に刺さるような本が書ければいいのですが、誰かにレビューを依頼した方がよかったかもというのが反省点です。
今回書いた本はボリュームがそれなりにあり、最後まで読んでもらえるものになっているかはあまり自信がありません。自信をもって書けた章はいくつかあるのですが、特に演習パートはもっと改善できるな、面白くできるなと感じています。
次はZennで書籍を書いてみたり、オンラインドキュメントの作成もやってみようかなと考えています。
今回1冊の本を仕上げられたのは、日頃から学んだことを記事にまとめていたことのおかげだと思います。文章を書くことに慣れていたので、それなりのボリュームの文量でも完成させることができました。また、書くことに迷った際は自分の記事を参考にすることもできました。
同じ期間があればもう一冊執筆できるかというと、書くネタがないのでおそらくできないと思います。日頃から学んだことを記事にまとめたり、自分の興味のある分野の情報を集めて実践するのは重要だと感じました。