ひつじのにっき

mhidakaのにっきです。たまに長文、気が向いたとき更新。

技術書が生まれる経緯

冬コミで出した技術書「なないろAndroid」「The Web Explorer 3」「わかる!ドメイン駆動設計」の3冊について、先週から電子書籍の販売が始まっています。タイミングがよいので、難産だった「わかる!ドメイン駆動設計」の生まれた経緯を書いておこうと思います。f:id:hdk_embedded:20170122233404p:plain

techbooster.booth.pm

上記サイトではAndroidやWebの最新情報、技術書の作り方本など色んな書籍を扱ってます。ぜひみてください。

きっかけは読書会

本書は読書会を通じて生まれました。メンバーは大体4人(やんざむともちこと@tacksmanとひつじ)で、たまに@sys1yagiさんとかが参加。毎週リアルに集まるのは大変だったのでビデオハングアウトで週1回、1時間。始めたのは2016年4月~(継続中)。オンラインだったのが地味によくて、参加と継続のハードルを下げられています。

本は厚くて有名なエリック・エヴァンスのドメイン駆動設計と実践ドメイン駆動設計です。

www.amazon.co.jp

どちらも大変良い本なのは間違いないですが如何せん厚い。読書会の目的である実践レベルでDDDを理解したい、という前提では「読み終わる」ということと「本文を解釈して意味を噛み砕き、理解する」は天と地ほどの差がありました。

読書会では、あらかじめ1~2章読んでおいて分からないところを質問しあったり、いままでの経験とすり合わをしたりと、意見交換をしながら理解を確かめて進めました。締切とモチベーションの維持のための読書会、って感じです。準備が大事なので赤線を引いたり、知らない用語がでてきたら調べておいたり。

メンバーの課題意識

読書会を進めるにあたって気づいたことをいくつか。何かを理解する時に、都合の良い比喩や他の概念などを使わずに書いてある内容をうまく説明するのが思った以上に難しい。メンバーは実力のあるエンジニアであることは間違いない*1のですが、技術者としての背景が違うので当然だと思っている前提は当然ではない、という感じ。

「ドメインモデルって何を指している用語なの?」「ここでコンテキストっていってるけどコンテキストの境界の意味だよね?」と解釈を話すときは、特に言葉に注意しないと混乱してしまう感じです。

課題意識はもうひとつあって、どうやってモバイルアプリに適用するか考える事。原書はAndroidやiOSなどが活躍する前のモノなので、モダンな開発についての示唆が直接的に得られるわけではない感じです。モバイルアプリ開発(プロジェクト)で実践していく上で何が難しいのか、どこに気をつけるのか、どんな工夫ができるか、という実務を前提に議論しています。

議論するタイミングでは技術者としての背景が違う事実が役に立っていて「あー、これは気づかなかったな」とか「確かにそういう時すごい便利だよな」っていう会話が楽しいです。

読書会で気づいたこと

DDDは難しい。言葉通りの意味でDDDの考え方、概念として腑に落とすのに時間がかかるという話もあるんですが、難しさに入門しにくさというのを感じました。

原書では網羅的な解説をしていて、かいつまむのも全部読んだ後に適切なところを探すという感じなんですよね。でも「興味があるんだけど」という人にいきなり1000ページの書物を投げつけるのは忍びない。そこで厳密性の議論は一旦おいておいて、ざっくりと概念を理解する、重要な考え方を学んだほうがいいのでは、知った上で原書を読むとより理解がはやいのでは、というのが「わかる!ドメイン駆動設計」の執筆の動機です。

わかる!ドメイン駆動設計

techbooster.booth.pm

ただ解説するんじゃなくて物語を通じて理解できる構成にしました。物語のストーリーは、やんざむ*2が頭をひねって考えた。

親しみを覚えてもらいたくてアプリ開発者のもちこちゃん*3など可愛らしい挿絵で登場人物が生き生きと動いてくれます。

冬コミの新刊のなかでは一番下調べができていた(4月から読書会をしていたのでゆうに6ヶ月は調べてた)のだけども、わかりやすく表現できているか、曖昧なところはないかなど納得いくまで何度も何度も書き直して、草稿の原型が残っている箇所は殆どなくなってしまいました。

作中はAndroidアプリをテーマに話は進みますが、基本的には味付け程度でモダンな現代の開発現場でDDDを使っていく話になっています。そういうわけで対象者はDDDに興味がある開発者、という感じです。今回はコンテキストマップまでが解説の対象になっています。次(技術書典2だな?)では物語を前に進めてモバイルアプリでのDDD適用について知見を盛り込めればな、と考えてます。

組版とか

いままでB5サイズで技術書をつくっていた(組んでいた)のですが、今回は気軽に手にとって読めるようにTechBoosterでは初めてのA5サイズを採用しています。本書にあわせてレイアウトを刷新*4しました。会話シーンなども多いのでRe:VIEW記法を拡張したり、挿絵にはキャプションを入れないようにする(技術書ではキャプションが入るのがほとんどなのだけど小説は挿絵でキャプションなしが主流だったりします)などなど目に見えない組版での工夫も入ってます。

続刊にあたっては「わかる!ドメイン駆動設計」にも多少手が入る可能性もありますが、しばらくは技術書と一緒に成長していきたいな、と思っています。

*1:筆者自ら書くにはとても手前味噌を感じたけど

*2:あんざいゆき。現在ちょうどMaster of Fragmentの改訂を手伝っているが、🐑の編集作業がストッパーになっている事実をここでお詫びしておく

*3:他にも実在する人物を参考にキャラクターデザインをしているけど本人とは一切関係ないフィクションです

*4:新規作成したRe:VIEWのA5レイアウトは公開予定。綺麗に組み上がりました