はじめに
みんなおすすめ本持ってていいなア!!じゃあ、本バトルしようぜ!本バトル!!
nikkieです1。
みなさん、「ITエンジニア本大賞 2023」に投票しました?(12/11締切)
私は、し ま し た!
「ITエンジニア本大賞 2023」で #ミノ駆動本 に投票した! #Forkwell_Library
— nikkie にっきー 🎤10/1 XP祭り 10/14-15 PyCon JP (@ftnext) 2022年11月22日
投票したおすすめの本は『良いコード/悪いコードで学ぶ設計入門』残りはひみつ🤫です #itbookaward https://t.co/h7WFDWt8VV
おすすめ本について語っていくブログシリーズができることに気付き、今回筆を執っています。
初回はミノ駆動本です。
目次
ミノ駆動本ってどんな本?
ミノ駆動本の正式名称は『良いコード/悪いコードで学ぶ設計入門』2。
設計の入門書で、変更容易性を実現する設計について学べます。
誰もが犯しがちなまずい設計(=悪魔)を「なぜそれがまずいのか」「どのようにすれば解決できるのか(悪魔を退治できるのか)」をコード例とともに解説しています3。
私の渾身の紹介がこちら:
#ミノ駆動本 を"元気よく"紹介!
— nikkie にっきー 🎤10/1 XP祭り 10/14-15 PyCon JP (@ftnext) 2022年8月12日
イエェェェーイコード/悪いコードで学ぶ設計入門https://t.co/J2DajR06V0
空前絶後!技術書にして和書ランキングに殴り込み!
読んだらボコッ!超絶怒涛の保守しやすいコード!
潜む悪しき構造(悪魔)にノーイェイ&ジャスティス🤟できる
イエェェェーイ!!!
写経も交えて読むのがオススメです!
ミノ駆動本で知った設計テクニック
クラスの使い所がようやく分かった😭
ソフトウェアエンジニアとして現在7年目(キャリアの過半はPythonを書いてきました)ですが、クラスの使い所が長いこと分からなかったのです。
ミノ駆動本を読み、手を動かす中でちょっとずつ分かってきて、悪魔も見えるようになってきました。
if文/switch文以外の分岐
ラブライブ三昧 を作業BGMに#ミノ駆動本 の6章で知ったinterfaceを使って
— nikkie にっきー 🎤10/1 XP祭り 10/14-15 PyCon JP (@ftnext) 2022年5月4日
アイの歌声を聴かせて 非公式Botの機能開発(Python)、一区切り!
GW感にあふれた1日です
interface使うと分岐の追加の代わりにMapの要素追加で済むの劇的ですね。スッキリする!(知らなかったらif文ネストしてました)
if文/switch文以外に分岐を実現する方法があるとわかったのは、非常に大きかったです!
ライブラリのコードを読んでいて、「これってMapを使った分岐じゃん!」と発見しました4。
自己防衛責務を備えたクラスのインスタンスを渡して別のクラスをインスタンス化
#ミノ駆動本 8.1の割引価格のクラス設計、手を動かしてみてうまいな、と。読む前の自分にはできない設計でした
— nikkie にっきー 🎤10/1 XP祭り 10/14-15 PyCon JP (@ftnext) 2022年10月21日
通常価格クラスで負の整数が通常価格になる可能性を消し、
通常価格インスタンスから割引価格クラスのインスタンスを作る(☆)
(☆)はある概念の値を使って別概念の値を算出するテク(8.2.5)
こちらは最近の学び。
自己防衛責務とは、インスタンスが絶対不正な状態にならないこと(完全コンストラクタや不変性で実現)。
イニシャライザ(Pythonの__init__
)は引数をそのまま設定するものと思い込みがあったのですが、不正な状態になっていないインスタンスがラップしている値を取り出して属性に設定、「なるほど!」と膝を打ちました。
ミノ駆動本は他の技術書を紐解くきっかけにも!
後述の読書会のおかげもあって、ミノ駆動本で知ったトピックについて他の技術書で学びを深めています。
たーのしーー!
『Clean Code』
#ミノ駆動本 読書py、5章低凝集。
— nikkie にっきー 🎤10/1 XP祭り 10/14-15 PyCon JP (@ftnext) 2022年9月30日
5.5「多すぎる引数」は、実質姉妹書(17.1.4で紹介)の『Clean Code』の「関数の引数は理想的には0」を知って、理解進みました。なるほど〜
そして"引数オブジェクト"か!痺れる⚡️
次回は10/21(金)予定、8章 密結合の前半8.1です。責務責務責務責務🔥🔥
『テスト駆動開発』
本日あります!#ミノ駆動本 読書会!(Python使いの視点で読む読書会)https://t.co/y0iYj1P7n0
— nikkie にっきー 🎤10/1 XP祭り 10/14-15 PyCon JP (@ftnext) 2022年9月9日
読むのは4章「不変の活用」!
準備期間長かったので、
再代入しない=不変なの?、
別名参照問題と値オブジェクト
といった項目を調査済み!
アウトプットの機会として楽しみにしていますー
私もびっくりしたのですが、ケント・ベックの『テスト駆動開発』、(TDDにとどまらず)設計についても学びがありました!
別名参照問題についてはどこかでアウトプットしたいなー。
ミノ駆動本_読書py
#ミノ駆動本 読書会立ち上がってるんですね!
— nikkie にっきー 🎤10/1 XP祭り 10/14-15 PyCon JP (@ftnext) 2022年5月18日
私はPythonでどう適用するかを考えてみたくて、読書会主催ありだなぁと思ってます。
Pythonコミュニティで動きあれば教えてもらえると嬉しいです
なければ主催すればいいんだし、誰も来なければ1人で読めばいいんだし。
6月上旬に初回とかで考えてます https://t.co/OyMGIYlUjT
加わっていただいたYumihikiさんと共同主催している、Python使い視点での読書会。
2〜3週に1回ペースで2桁に到達しました!
これまで1回でもご参加いただいた皆さま、誠にありがとうございます。
みんなで学んでいるおかげで、ミノ駆動本からいろいろな気付きを得られているのかなと思います。
#ooltjp 「1人で、みんなで、#ミノ駆動本 で学ぶオブジェクト指向」
— nikkie にっきー 🎤10/1 XP祭り 10/14-15 PyCon JP (@ftnext) 2022年6月29日
ご清聴いただきありがとうございましたhttps://t.co/0wTSgv4oms
今日のLT会では何回もミノ駆動本登場しましたね。
Python使い視点の読書会は今週7/1(金)にもあります。interfaceを使った条件分岐についてワイワイ。よろしければ!
共同主催Yumihikiさんのアウトプットからも刺激をいただいています!
次回は12/2(金) 20:30〜。
常連さんも、はじめましての方も、お久しぶりの方も、お待ちしています!
終わりに
私の2022年の学びの大半はこの本から、ミノ駆動本について語ってきました。
/
📣 ミノ駆動本はいいぞ!!
\
さて、「ITエンジニア本大賞 2023」は全6冊投票可能。
つまり、あと5冊、オススメを残しています。
投票したおすすめの本シリーズ、次回もお楽しみに(せめてもう1回は書きたい!)
12/11までです、ITエンジニア本大賞 2023に投票して盛り上げましょう!
ブログなどでみんなのおすすめ本も、教えてほしいなア!
P.S. 勝手にアニメコラボ
であいもん5とシンクロ!!
#であいもん 9話で「皆に幸あれ」と聞いてhttps://t.co/8qbQLBvYT6
— nikkie にっきー 🎤10/1 XP祭り 10/14-15 PyCon JP (@ftnext) 2022年6月30日
私が思い出したのは #ミノ駆動本 (プログラミングの設計入門本)謝辞での同じフレーズでした。
結びつかないであろう2者を結びつけた脳内コラボ!
皆に幸あれ!!
読書会のconnpassを作る中で、「えぬえるぴーや的に鬼滅の刃は恐ろしい」と思い知りました😨
8章 密結合の8.1 責務のところを読みます!(煉獄さんは公式には6文字であることに翻弄されつつも)ミノ駆動本_読書py[8] を公開しました! https://t.co/1wcfR97jZ3 #ミノ駆動本
— nikkie にっきー 🎤10/1 XP祭り 10/14-15 PyCon JP (@ftnext) 2022年10月8日
- チェンソーマンはエアプ勢です↩
-
「良い」のルビは「いい」ではなくて「よい」です。
↩本日の #ミノ駆動本 読書py、ご参加ありがとうございました!
— nikkie にっきー 🎤10/1 XP祭り 10/14-15 PyCon JP (@ftnext) 2022年8月12日
本日最大の気付きは、書名のルビ!
良いコードは「いいコード」と読む、だ、と…
ずっと「よいコード」だと思ってました(バタリ ←衝撃を受けすぎて倒れた
※10.4〜10.7を読み、メソッド名は動詞1語などの学びも得ています - 先日のForkwell Libraryでも共有されていましたね(動画 10:58-)。 ↩
-
例えばFlaskのデコレータです。
↩#ミノ駆動本 6章の分岐をinterfaceで実装、Pythonでこれを応用したデコレータがいけるんちゃうかとアイうた応援Botで検証
— nikkie にっきー 🎤10/1 XP祭り 10/14-15 PyCon JP (@ftnext) 2022年5月29日
Flaskでapp=Flask()ってした後の\@ app.route() デコレータって、app内部の辞書に関数を登録してるんですね。
if文使わない分岐を実現するためのMapを内蔵したオブジェクトがapp https://t.co/bY4xO5iGv0 - 舞台の京都にイベントに行くくらい好きです。↩