技術書典6で「におうコードの問題集〜ソフトウェア設計に立ち向かう編〜」を頒布します
「におうコードの問題集シリーズ」の第三作目は「ソフトウェア設計に立ち向かう編」です。 問題集形式でソフトウェア設計について学ぶことができます。
また、委託で「Introducing Crystal Programming Language」も頒布します。 Crystal言語の入門本です。
共に「く06」でお待ちしています。
目次
本の内容
本文冒頭の「本書の構成」から抜粋します。
本書は大きく四部構成になっています。
- 本書の目的と前提
- 悪い設計の発見と修正
- 設計との付き合い方
- あとがき
第Ⅰ部では、本書の目的と前提を説明します。 設計を語る上で「前提」は非常に重要です。 ここを押さえないと議論が噛み合わないことがあります。 ですので、少々細かく解説しています。 第Ⅱ部では「悪い設計の発見と修正」を解説します。 SOLID原則を中心に、以下の説明を行っていきます。
- 悪い設計例
- 原則違反のデメリット
- 修正方法と原則準拠のメリット
第Ⅲ部では「設計との付き合い方」を説明します。 私自身の体験談をもとに、設計手法に銀の弾丸はないということ、良い設計は「目指すもの」ではなく「寄せていくもの」であることなどを解説します。
ここ最近の学習において「設計を語る上で前提はとても大切だ」と感じたので、第Ⅰ部で詳しく解説しています。 設計の話は、前提がしっかりと共有されていないと「ふわっとした話」「抽象的な話」になってしまうことが多いと感じました。 「結局ケースバイケースだよね」で話が終わってしまうこともしばしばです。 それ故、「原理原則は知っていてもコードになかなか落とし込めない」という状態に陥りやすいです。 自分もこの状態だったので「それを克服できる本があったらいいな」と思い執筆に至りました。
本書の目的は以下です。
具体的な問題を解くことで、悪い設計を発見でき、良い設計に修正できるようにすること
第Ⅱ部ではこの流れを具体的なコード&問題集形式で解説しています。 問題集形式と言っても、クローズド・クエスチョンではなく、かなりのオープン・クエスチョンです。 コードを見ながら「一度自分で考える」という時間を意図的に作っています。 実際の仕事もオープン・クエスチョンばかりですので。
第Ⅲ部では「設計との付き合い方」と題して、自分の設計に対しての考えを述べさせていただきました。 このあたり、自由に書けるのは同人誌ならではですね。
頒布価格
お品書きは以下です。既刊本も販売します。技術書典当日の特別価格もあります。
書評
事前にレビューしてくださった方から書評をいただけました。 @gaplant_tr5 さん、お忙しい中本当にありがとうございました。
先に最終版をいただけたので少し感想を。
一概に「原則違反は 悪!」とは言えないのじゃ。 もし原則違反をみつけたら、そのコードが実装された当時の状況を尊重しつつ、 現状に即していないコードを直して生まれ変わらせてあげておくれ。
過去に価値を生んだコードではありますが 書いた当時の事情なんてわからないことの方が多いので 何かあったら少しずつでも直せばいいと思います。 それが伝わる表現で私は好きです。 そういう人にとっての次のバイブルは「レガシーコード改善ガイド」になるのかな。
世の中の書籍やブログは、他の人が抽象度を上げたものなので、理解できないことは 珍しくありません。 ですので自分で手を動かして、自分なりの抽象化を行い、常にそれをアップデートしていくことが大切です。
twitterでは言及している人もいますが、 書籍ではここに言及しているものがあまり見当たらないので この本でもっと広まるといいですね。
全編通して良い教材になりそうなので、 うちの新卒さんにも読んでもらう事にします。
また、 クラス設計はできるよっていう人にも、 少人数勉強会(#設計飲み)のセクションは面白い事が書いてるので読んでみるといいのかなと。 自分も最初の頃に参加したことあるけれど、 話が深くなるし全員参加型になるのでもっといろんなところで少人数飲み会が流行ればと思います。 私は設計じゃないテーマで少人数飲み会をやる予定です。
最後に、 レビュアーとして声かけてもらって嬉しかったものの、 残り二人がすごすぎで並んでいいんだろうか? という不安は今でもある。 でも、関わらせてもらって、楽しかったです。
ありがとうございました。そして本当にお疲れ様でした。
書評をいただけたのは本当にうれしかったです。 改めてありがとうございました。
本書の目次とサンプル画像
最後に、本書の目次とサンプル画像を載せます。
気になる方はぜひ遊びに来てください。 お待ちしています。