見出し画像

技術書典11のオフライントライアル会場で新刊「はじめてのGoコード生成」を頒布しました

7月11日(日)に池袋サンシャインシティ展示ホールDで開催された、技術書典11 オフライントライアルにて新刊「はじめてのGoコード生成」と既刊「スターティングgRPC」を頒布してきました。

技術書典6がサークルとしての初参加で、その時は所属している会社の有志での参加でした。その後技術書典9まで毎回参加して、技術書典10は申し込んだつもりが完了ボタンを(おそらく)押し忘れるという痛恨のミスにて連続参加を逃すということもありましたが、基本的には会社の同じチームのメンバーとグループで参加していました。会社の名前で参加して、グループで作った本に寄稿しつつ、自分の本も出すという自由な感じで活動させてもらいました。

今回は、初めての単独参加で不安な面もありましたが、トライアルのため一般参加が有料チケット制ということもあり、まったりとした空間でちょうどよかったかなという感じでした。人でいっぱいな技術書典もお祭り感があってよいのですが、まったりはまったりで来場者とゆっくり話もできて悪くない感はあります。ワンオペでも気楽に買い物にいけるし。

はじめてのGoコード生成

画像1

今回はGoのコード生成の本を書きました。

Goはシンプルな言語です。まず言語仕様がシンプルです。また標準パッケージが充実していてサードパッケージを使う必要もあまりありません。むしろ余計な外部パッケージはそのパッケージを学習することがシンプルさを妨げるため好まれない傾向があります。変数の名付けは冗長な名前よりも、なるべく短く簡潔なものが推奨されます。複雑なロジックをワンラインで魔法のように解決するエレガントなコードより、明瞭で誰が呼んでも何をしているのか自明なコードが良いとされます。Goのシンプルさは言語設計の根底にある哲学であり、Goの書き味の気持ちよさの所以ともいえます。僕がGoを好きな理由です。

一方でGoでクリーンアーキテクチャのAPIサーバを書いたりすると、そのシンプルさが途端に辛くなります。クリーンアーキテクチャのようなレイヤードアーキテクチャのシステムを愚直に作ろうとするとレイヤー間のDTO(データトランスファーオブジェクト)の詰め替え処理などで大量の同じようなコードを書くことになりがちです。必然的に記述量が多くなります。じゃあGoってこういう複雑なアーキテクチャのシステムに向いてないのかな?と思ったところが、この本を書くに至った出発点でした。

Goのシンプルさの恩恵は、コード生成のしやすさにも表れています。またテンプレートエンジン、フォーマッタや静的解析ツールなどが標準であることもコード生成を助けてくれます。実際にGoの多くのフレームワークやライブラリはコード生成機能を備えており、アプリケーションの一部が自動生成コードであることも一般的です。同じようなコードがいっぱいあって疲れてしまうのであれば、自分で生成すればよいのです。

コード生成を試してみるまでは、Goでのコード生成はなんとなく敷居が高いように感じていました。普段Goを書いている人でも同じように感じる人が多いのではないかと思います。そこで執筆駆動学習として、実際に手を動かして学んだ結果を本の形でまとめてみたものが本書です。すなわち僕自身もマスターオブコード生成というわけではもちろんなく、読者同様、コード生成の門を叩いたばかりの入門者でもあります。

「はじめてのGoコード生成」はまず、fmt.Fprintf関数を使ってなるべく単純にコード生成をおこなうところから始めます。次に標準のテンプレートエンジンを使った少し複雑なコード生成にチャレンジします。最後に静的解析によって既存のコードの構造に応じたコード生成に挑みます。少しずつステップアップしていくので、Goの基本的な知識は必要になりますが、挫折することは少ないのではないかと思います。

各章で実装するサンプルコードが生成するコードはかなり単純なものですが、テストもきちんと書いています。この辺り実用的で自画自賛したいポイントです。

ちなみに紙版はPDFに書き出すときにグレースケールで出すべきところを白黒で書き出してしまったので、男気ある剛健な感じの出力になりました。まあ、刷り直しは辛いので読めるからいいということにしたいです。

オフラインに参加して

技術書典でGoプログラミングはニッチとはいえないまでも、壁サークルになるようなメジャーなジャンルではないと思います。さらに内容がコード生成でかつトライアル開催で一般参加も少ないことがわかっていたので、あまり売れないのではないかと不安でした。

最終的にトライアルでの部数は21部という結果でした。オンラインの現時点が25部で、まだ2日目なので滑り出しとしてはまずまずかなという感じです。

何より、開場と同時にきてもらえたり、「楽しみにしてきました」と複数の方にいってもらえたりしたのがオフラインならではの出会いでとても嬉しかったです。前作の感想ももらえたりしたことも最高でした。自分の好きなことを本にして、誰かとそれを共有することこそが、同人の醍醐味であると改めて痛感しました。技術書典初参加の時も同じ気持ちをいただいていたことを懐かしく思い出しました。オンラインマーケットは便利ですが、やはりオンラインとオフラインの違いというものも明確にあります。早くワクチン摂取が進んで、世の中が正常化したらいいなと思います。

Booth

この記事が気に入ったらサポートをしてみませんか?