1. readline.fm
  2. EP185 Clean Craftsmanship PA..
EP185 Clean Craftsmanship PART1
2026-04-20 38:56

EP185 Clean Craftsmanship PART1

spotify apple_podcasts

## とりあげた本

『Clean Craftsmanship 規律、基準、倫理』Robert C.Martin 著, 角征典 訳 アスキードワンゴ 2022


## mixi2

https://mixi.social/communities/513e0bc9-582b-4962-a9c1-c5c076175e08/about


## ShowNote

https://gennei.notion.site/EP185-Clean-Craftsmanship-PART1-347c645d49118053bde1cd1e788c6248

感想

まだ感想はありません。最初の1件を書きましょう!

サマリー

今回のエピソードでは、ロバート・C・マーチンの著書『Clean Craftsmanship 規律、基準、倫理』について、げんえい氏ときんじょう氏が語り合います。本書は、ソフトウェア開発者やマネージャーに対し、規律の重要性を説き、堅牢で耐障害性のあるソフトウェアを構築するための規律、基準、倫理を解説しています。特に、新人の開発者やキャリアの早い段階で読むべき本として推奨されています。 本書は「規律」「基準」「倫理」の3部構成ですが、大部分が「規律」に割かれており、TDDやリファクタリングといったエクストリームプログラミング(XP)の実践方法に焦点を当てています。しかし、単なるテクニックの紹介に留まらず、なぜそれらのプラクティスが必要なのか、その本質的な部分を理解することの重要性を強調しています。また、ソフトウェア開発が社会に与える影響の大きさを、フォルクスワーゲンの排ガス不正問題などの事例を交えながら解説し、開発者としてのプロ意識や倫理観を問い直します。 さらに、テスト駆動開発(TDD)の応用として、テスト対象のアーキテクチャ境界を越える場合の「ロンドン学科」と越えない場合の「資格語学科」という考え方や、モックを使いすぎることのリスクについても議論されました。テストしやすいコードを書くことの重要性や、それが自然とSOLID原則に繋がっていくことにも触れ、読者自身の現場での実践に役立つヒントを提供しています。

はじめに:本書の紹介と位置づけ
スピーカー 2
こんにちは、readline.fmです。 readline.fmは、つんどくが庶民の2人が、何かの本を読んだ感想を雑談するポッドラストです。
ハッシュタグは、ハッシュリードラインFMです。 Mixi2にreadline.fmのコミュニティもありますので、そちらでも感想やワイワイお待ちしております。
ホスト役は、げんえいさんときんじょうです。 それではげんえいさん、よろしくお願いします。
スピーカー 1
よろしくお願いします。
スピーカー 2
なんか、いつにも増して滑舌が悪い気がするけど。
スピーカー 1
年度末ですから、しょうがないです。
3月31日なので、会社によっては明日から新人が来たり、あれ来ないねってなったりするんですかね。
そうですね。弊社も明日、新人がたくさん入ってくるので、今回の本を渡したいなって気持ちになりましたね、ものすごく。
スピーカー 2
まさに新人に大事な本をやっていこうと。
すごい、きれいにつなげられた。
えーと、それは何の本でしょうか。
スピーカー 1
今回は、ロバートシーマーチンのクリーンクラフトマンシップですね。
スピーカー 2
みんな大好きボブおじさんですね。
スピーカー 1
そうです。多分いっぱいシリーズで出てるんですよね、クリーンシリーズっていうのは。
みんなが一番知ってるのはクリーンアーキテクチャーとか、クリーンコードとか。
他にも出てますけど、もしかしたらこれ一番知名度が低いんじゃないかって俺の中で思ってるんですけど、どうなんでしょうかね。
スピーカー 2
なんか、いよいよクリーンじゃなくていいなってなってますよね。
スピーカー 1
そうそう。
スピーカー 2
クリーンじゃないクラフトマンシップってなんだろうなーっていう気持ちになりながら。
スピーカー 1
そうそう。
今回はちょっとロバートシーマーチン読むんだったらクリーンアーキテクチャーでいいんじゃないっていう気配も感じられるんですが、
今回はちょっと別の視点でクリーンクラフトマンシップを読んでいきましょうという感じですかね。
クラフトマンシップとは何か
スピーカー 2
そうですね。ただレベル感で言うとどのくらいクリーンコードの次ぐらいなんですかね。
クリーンコード結構ビギナー向けというか、これから頑張るぞそうな気もしていて。
スピーカー 1
そうですね。自分はでも読んだのがクリーンアーキテクチャーを全部ではないけども気になるところをかいつまんで読んで、
コードは読んだはず、コーダーアジャイルとか多分持ってはいるけど読んでないんですよね。
スピーカー 2
クリーンアジャイルはなんかあれですね、スクラムは嬉しすぎるみたいな話をしてる。
なんだっけ、基本に立ち返りみたいなサブタイなんですよね。
スピーカー 1
そうですね。基本に立ち戻りっていうサブタイついてますね。
スピーカー 2
立ち戻りか、はい。で、だいたいXPの話をするという感じですね。
面白かったですよ。なんかその境外化してるゾンビスクラムじゃないですけど、
カゴカルトっぽいスクラムではこうだからっていうのに、
とらわれすぎないようにする必要あるよねっていうのを厚く語ってる感じでしたね。
スピーカー 1
いいですね、いいですね。読みたくなってきたな。
でもその中でいうと、レベル感としてはそうですね。クリーンコードの次とか、新人で読んでもちょっと背伸びして読むみたいな感じのぐらいのレベル感なのかなという気はしましたね。
スピーカー 2
逆に言うと、今もアーキテクトですとか、テックリードやってますみたいな人が読むと、
なんていうか、もうちょい早くここら辺はすっかり抑えておくべきだったなみたいな風になるかなという感じがするかな。
スピーカー 1
そうですね。本の内容があれなんですよね。規律、基準、倫理っていう大きく3つに分かれていて、
規律のところがもう完全にTDDの話とリファクタリングの話をしていて、この辺は別の本でも読めるし知れることだよねみたいな話だったりするんですよね。
なのでアーキテクトやテックリードだと、もう知ってるよとかやってるよみたいな話が結構多かったりするっていう感じですよね。
スピーカー 2
そう願いたいですね。
スピーカー 1
そうですよね。で、基準のところは結構あれですよね、XPとかみたいな価値観みたいなところが多かったような気がする。それだけではもちろんないですけど。
スピーカー 2
規律、基準、倫理っていうレイヤーで話していって、だんだんとちょっと答えのない世界に進んでいくみたいな感じですよね。
スピーカー 1
そうですね。
スピーカー 2
で、東映ページ数的には規律で半分以上いってるのかな、確か。
スピーカー 1
規律が終わるのがもう230ページとかなので、300ページぐらいあるうちの、230ページ?300ページ超えたら落ちるのかな。
残り100ページでその後ろ2つを話しているというような本の構成になってるので、実は3分の1ぐらいしか、人によっては読むべき場所がなかったなってなっちゃう本かもしれないっていう感じはありますね。
スピーカー 2
まあでも技術上そんなもんでいいと思うんですよね。
スピーカー 1
まあね。
スピーカー 2
軽く内容紹介というか、あれしてみますか。公式サイトとか出版社の書いてあるやつを紹介すると、出版社アスキードワンゴですね。
スピーカー 1
そうですね。珍しい。
スピーカー 2
あれ?クリーンシリーズって割とここから出てません?そうでもないっけ?なんか表紙は見覚えあるなってなる気がする。
スピーカー 1
アスキードワンゴからクリーンシリーズは多分全部出てるはずで、ただあんまり他のこれ以外の本をアスキードワンゴで買うってことがないなと思いながら。
観数型ドメインモデリングとか買ってますけど。
スピーカー 2
買ってたよなと思って。
スピーカー 1
リーディングクオリティーとか持ってますね確かにとか思いながら。
スピーカー 2
リーディングクオリティーも確かに。
そうですね。観数型デザインbyロバートシーマーチンもアスキードワンゴですね。
スピーカー 1
そうなんですよね。
スピーカー 2
まあいいんですよ。脱線するのが早い。
内容紹介なんだろうな、最後の方だけ読むか。
ソフトウェア開発の社会的責任
スピーカー 2
本書の目的はソフトウェア開発者とそのマネージャーたちに、規律の必要性を印象付け、堅牢で対障害性のあるソフトウェアを構築するために最も効果的な規律基準倫理を教えることにある。
っていう風に言ってますね。
そうか、規律の必要性を印象付けっていうのは狙ってるのか。
スピーカー 1
そこは結局、最初テクニックの話だよねっていう風に冒頭から読んでいくとなるんですけど、後ろの方に読んでいくと、結局こういうテクニックっていうものがないとマインドだけなってもしょうがないよねっていうところ。
なぜそれが必要なのかっていうことを実は後ろで解説してるみたいな構造に本書になってたりするんですよね。
スピーカー 2
あれもあれなんだよな、スクラムとかには技術サイドの話が少なすぎるみたいなやつをここでも言いたそうにしてるなみたいな感じで見てましたね。
そういう厳重もちらっとは実際この本の中にはあったりはしますけど、結局品質とかそこらへんをちゃんとやっていこうってなると、当然高い技術力とかプラクティスとか必要だよねっていうような話ではあるんで、言ってることはそうねって感じ。
スピーカー 1
そうそう、わかるって思いながら読んでましたね。
スピーカー 2
本文入ってきますか。
スピーカー 1
そうですね。
スピーカー 2
全部で3部構成で、第一部規律、第二部基準、第三部倫理っていう風になっているんですが、第一部に入る前に第一章クラフトマンシップっていう章があって、
タイトルにクラフトマンシップって書いてある本なので、そもそもクラフトマンシップってなんだっけっていうのをちらっと触れつつ、この本ではこういう話をしていくよっていうのを紹介していってますね。
ここ第一章は何か触れておきたいこととかありますか。
スピーカー 1
そうですね。
初めにからクラフトマンシップあたり。
そうですね、初めにクラフトマンシップあたり。この本が想定しているクラフトマンシップって、結局クラフトマン、クラフトマンシップって何なのっていうことは、ちょっと話しておいた方がいいのかなっていう気がしますね。
スピーカー 1
自分がクラフトマンのところを初めにで丁度定義があったんで抜き出していて、クラフトマンとは特定の分野に関する高度なスキルを持ち、物事を成し遂げる人である。
道具や業界に設立しており、仕事に誇りを持ち、仕事に対する尊厳とプロ意識を持って行動できると信頼されている人であるっていうのがクラフトマンの定義としてありますね。
スピーカー 2
第一章の方を見るとクラフトマンシップとはっていうのがあるんですけど、これはクラフトマンとクラフトマンシップの違いなのか。
何かをうまくやる方法を知っている状態である、それは優れた指導と豊富な経験の結果であるっていうのがクラフトマンシップとはっていうくだりで言われてますね。
その続きを見ると、最近までソフトウェア業界にはそのどちらもなかったっていうふうに書いてあったりしつつ。
スピーカー 1
少なくとも技術は必要だし経験も必要だしみたいなどちらですよ。
スピーカー 2
技術をどう生かすのかっていう、生かすべき技術、中身っていうのとそれをどう使う、どうあるべきかっていうのをやっていこうなって感じですよね。
スピーカー 1
この本の中でたびたびなんでそれがすごい大事なのかっていうことを主張しているところとして、あれですよね、社会のためにみたいなところがやっぱり大事で、
ソフトウェアを作るのにミスをしてしまったり失敗してしまったりして、いろんなこういう事故がありましたよみたいな話がたびたび出てきて、ちょっと気を引き締めんといかんなみたいな気持ちになるような事例がたくさん出てくるんですけど。
スピーカー 2
ずしっと来るというかドキッとするようなものが出てきますよね。同じ話を10回ぐらいしてるなと思ったけど。
スピーカー 1
でもやっぱ人命に関わったり、大きなお金に関わったりするものが出てきたりとか、あとこの事例が載ってるのは結構最近の本だなって感じたのがホルクスワーゲンの排ガス規制の不正問題とかの話が載ってたりとかして、確かにこれ結構最近あったよなっていうことを思ったりとかして。
スピーカー 2
そうそう、我々の大好物の年代の話を触れてなかったですけど、最近の本なんですよね。
スピーカー 1
そうですね、そうそう。この本は結構最近で。
スピーカー 2
2020、原著が2021で翻訳が2022なんで、これ翻訳めっちゃ早いなっていうのもあるんですけど。
僕は確かに原著が出て翻訳される前に読んでたんですけど、今回改めて読み返してみて、COVID-19の話とかがあって、完全にアフターコロナで書かれてる本なんで。
っていうちょっと言及もあったりして、それはめっちゃ最近の本というか、あれがもう5年前かみたいな両方を完全に挟まれつつ。
で、働き方とかチームワークみたいな話が出てるんで、フルリモートになってどうだったみたいな話とかが出てきてるわけですけど。
そうですね、ゲイさんが今言中してくれたようなフォルクスワーゲンの話だったり、いろいろとリアルタイムにちゃんと覚えてるような話が出てるわけですね。
パンチカードとかの話は今回はしなくていいと。
スピーカー 1
そうですね。.
スピーカー 2
NETとかしなくていいと。
スピーカー 1
ひたすら.NETの話をこする、APIをこすり続ける話、必要はもうないということですね。
でも結局、つい最近の話題まで入ってるよねってことになるとどうなるかっていうと、
アンドリュー・セン・ホリッツとかが言ってた、ソフトウェアが世界を飲み込んでいるっていうエッセイが結構有名で、
世の中どんどんソフトウェアが支配してるよという話が、あれが多分2010年前後ぐらいだった気がしますけど、
10年ぐらいだったと思いますけど、それ以降の世界においてどんどんソフトウェアってものが重要になっていて、
そういうことを扱っているのを仕事にしてるんだよっていうことをすごく気にしなさいねというか、
意識しなさいねってことになってるよなっていうことを思いましたね。
スピーカー 2
プロとして働くってどういうことなんだっけとか、っていうところにちゃんと眼差しを向けるというか、
胸を張って行動かけてるのかみたいなところを突きつけてきますよね。
スピーカー 1
また戻っちゃうんだけど、表紙が良くて、日本語版の表紙だと、より良く働き生産性を高め、
自分が書いたものに誇りを持つっていうふうに書いてあるんですよね。
最近は自分が書いたものじゃなくて、AIが書いたものに誇りを持つみたいな時代がちょっと近づいてる感じはありますけど、
クラフトマンシップっていうところを考えた時には、こういうことをちゃんと堂々と言える、誇りを持っている状態になれるためにどうしていきましょうかねっていう感じはありましたね。
スピーカー 2
そうすると一周回って、自分のやってる仕事ってなんだろうっていうのが出てくるので、
コードをどうやって書くかっていうのは別にタブで保管してても、プロンプトでバーってやっててもいいと思うんですけど、
動くものを作ってるのは自分なんだっていうのは、ちょっと大事にしていきたいよなっていうようなことを思わされたりしますよね。
スピーカー 1
そういう意味で新人の人とかでも全然読んでもOKというか、むしろ新人だからこそ読みたいみたいな。
スピーカー 2
技術的にレベルが高い話とか、逆に前回のアラインドみたいなソフトスキルとか、どういう力学で組織っていう生き物が成り立ってるのかみたいなハイレベルの話でもないので、
割とキャリアの早いうちに読んでおくのがいいんじゃないかなって個人的には思ったりしつつ。
スピーカー 1
そうですね。しかもこれでTDDまで学べたらもう最高ですよね。
スピーカー 2
そうですね。TDDはTDDでやっておくといいなという気もしつつですけど。
でも初めに序文から第一章はそんなところですかね。
スピーカー 1
そうですね。
スピーカー 2
本当にクラフトマンシップとはっていう話とか。
自分たちの食料がいかに社会に対して影響を与えてしまうポジションにあるのかっていうのを改めて意識していこうぜ的な話ですね。
スピーカー 1
そうですね。
第一部:規律の本質とプラクティス
スピーカー 2
で、まあ第一部いっていきます。
スピーカー 1
そうですね。ただ起立の中であえてこれを触れておきたいぜみたいなのってどうですかね。
スピーカー 2
どうだろうか。具体の話っていうよりかは起立ってどういうこと言ってるのっていうのは紹介しておくと僕らがこの後しゃべりやすくなるんじゃないかという気はしてはいて。
わかりやすいのが目次だと思うんですけど、第一部が本当に長いんですよね。
スピーカー 1
200ページくらいあるね。
スピーカー 2
全部で14章あるうちの8部までが第一部。
スピーカー 1
半分以上じゃん。
スピーカー 2
そこで触れられてるのがエクストリームプログラミングだったりテスト駆動開発、テスト駆動開発の応用、テスト設計、リファクタリング、シンプルな設計、努力的プログラミング、受入テストってなってて。
てか全部XPじゃねえかって思って。わざと言えないんですけど。
スピーカー 1
そうですね。
スピーカー 2
本当にここらへんの具体の話を知りたいんだったらマジでXPの指導本とか。
XP関連でおすすめの本はいくらでもあるんでそっちを読んだほうがいい気はしていて。
どっちかっていうと規律基準倫理っていう階層化されたこの本の世界観の中で、どういう位置付けでどういう意味合いでこの規律としてそこらへんのプラクティスとかが紹介されているというか、
位置付けられているのかなっていうところだけちょっと触れておく分には面白いんじゃないかなっていう気はしたんですが。
どうですかね。規律とはって話じゃないですか。
スピーカー 1
そうですね。第1部の一番最初の例というか最初の文章がすごくいいのかなと。
規律とは何でしょうかと。規律とは本質的な部分と任意の部分で構成される一連のルールであると。
本質的な部分は規律にパワーを与える。規律が存在する理由となる。任意の部分は規律に形と実態を与える。
任意の部分がなければ規律は存在できないっていうふうな文章で始まっていて。
この本のこの例でいくと、例えば下界っていうのは手を洗いますよと。
本質的な部分っていうのは手を清潔にしていることであると。
任意の部分っていうのはじゃあどんなふうに手を綺麗にしましょうかねって言ったときに、
厳格な基準に沿って手を洗ってるんですよって言って、石鹸を使ってブラシを使って、
指ごとに上の部分、左下、右の部分を10回洗うっていうような。
爪も10回洗いましょう。それを繰り返すっていうような話をしていて。
10回っていうのはいいのかどうかっていう。5回じゃダメなのかとかいろいろあるんですけど、
とりあえず十分だっていうことが大事ですよみたいな話をしていて。
同じようにソフトウェアの中で本質的な部分、規律っていう部分と、
それを取り巻く任意の部分、エンパワーしてくれるような道具立てみたいな部分があるんだよっていうような話を
ここからしていくよっていうことを言ってますね。
スピーカー 2
形式化されたルールに従えばOKじゃなくて、ちゃんとクラフトマンシップを体現していくには、
なんでそのルールがあるんだっけとか、そのルールによって何を達成できればいいんだっけっていう裏側というか根っこの部分みたいなところに
ちゃんと意識を向けるというか、そっちもちゃんと扱っていこうねっていう話として、
ここから半分ぐらいTDDの話をしていくわけですね。
スピーカー 1
でも難しいですよね、医者は手を清潔にするっていうのって本質的なことなんだけど、
じゃあみんな清潔にしてくださいねって言われても、いきなりじゃあ清潔ってなんだろうとか、
清潔のために何やったらいいんだろうとかゼロから考えだすとめっちゃ大変だし、
でもじゃあルールを作ると、じゃあ10回洗えばいいんだねって。
同じ場所で10回洗っても洗ってない部分があったら意味ないじゃんみたいなことになって、
本質を考えるみたいなことを言われみたいな。
多分プログラミングも同じで、鉄則道開発ができます。
何のために鉄則道開発してるんですかって言ったら、
いやなんか先輩に言われたんでみたいなことになったりとか、
いやリファクタリングをしたいですって言っても、
なんでリファクタリングしたいんですかって、
リファクタリングをしたいからですみたいなことしか言えないとトトロシアン系みたいなことになって、
結局そのテクニックだったりとか色々あるけども、
これ何のためにあるんだろうってことはやっぱり絶対考えないといけないってことなんですよね。
スピーカー 2
なんかCIがちゃんと整備されてるんで、CI統合してからレビューリクエスト投げてくださいって言った時に、
なんかテスト消しときましたみたいなね、最近そういう奴らがよくいるんで。
そういうことじゃねえんだよっていうのがやっぱりルールだけ、形式だけで歩いちゃうとそうなるよねっていう。
そうですね、だから本質的な部分、トニーの部分で。
てかボブおじさんはこういう分け方好きですよね。
スピーカー 2
なんか技術的詳細とか些細な部分はどうでもよくていいみたいな。
コアが大事みたいな。
スピーカー 1
そうですね、このページをパラッとめくるとサークルオブライフってやつで円が書いてある。
これはなんかやっぱ円も好きなのかみたいな気持ちになってきたんですけど。
スピーカー 2
サークルオブライフはめちゃくちゃ、てかケントヴィックじゃないのかこれ言ってるのは。
ロン・ジェフリーズって言われてますね。
でもこのサークルオブライフってXP文脈でめちゃくちゃ出てくるやつなんですけど、一番3つのレイヤーの円が重なってて、一番内側が結構わかりやすいというか技術プラクティスっぽいやつなんですよね。
一人から二人でやるものみたいな言い方が近いのかな。そこの中にTDDがあったり、リファクタリングがあったり、ペアリングって書いてますけど、ペアプロがあったりとかシンプルな設計みたいな書いてあって、
その一つ外側に継続的インテグレーションとか行動所有とか、メタファーとかって話があったり、その外側にチーム開発とか受入テストとか、小さくリリースしようとか、計画ゲームとかっていう、チーム全体を巻き込んだプラクティスみたいなものがあってて、
この規律って言ってるのは一番中心にある部分。本当に一人一人が今から始められるようなものが載ってる的な位置づけとして説明されてますね。
なぜか中央にある四つと左下にある一つだって書いてあって、なぜか受入テストも一応入ってるんですよね。規律が。
一つだけ色ついてないんですよね。なんでだ。
スピーカー 1
いや、でもこっちのも色ついてないですね。
スピーカー 2
色ついてるついてないって言ってなんかハイライトされてるんですよね。その一番内側にある点が。
左端のもつけといてくれればいいのに。
まあそれはそれはいいんですが。
規律を抽象的な観点で、規律とはこういう話をこの本の中でしてましたみたいなところをまとめると、だいたい今言ったような形になるのかなと思いつつ。
テスト駆動開発の応用:ロンドン学科と資格語学科
スピーカー 2
なんかちょっと気に入った下りとかグッときたフレーズとかって。
第一部全体でありました。第一部が終わるとこの本半分終わるんで。
スピーカー 1
あっという間だな。
スピーカー 2
あっという間。
スピーカー 1
そうですね。
スピーカー 2
まあ改めていい話はしてるんですよね。ただいい話はしてるんですけど、およそXPの話ではあるので。
なんかあるかな。
スピーカー 1
ちょっと飛んじゃうけど、なんかどういうふうにテストっていうものを考えてるのかなみたいなところがちょっと見て取れるような部分があったので。
3章のところでテスト駆動開発応用っていうのが3章ですけど。
何ページかがちょっと行方不明になってる気がしますが。
スピーカー 2
258ページじゃないですか。
スピーカー 1
いやー違うんだな。
我々は金の版と紙版のせいでページ数が違うっていうのが今ちょっと大変なことになってるんですけど。
紙版だと142ページで話が書いてあって。
ロンドン学科と資格語学科の話をしている部分があって。
要は全部Mockするかそのテスト対象以外を全部Mockしますかとか。
極力Mockするっていうことをやめましょうかみたいな部分の話の中で。
じゃあどこをMockしてどこをMockしないのかっていうことをこのボボおじさんどう考えてるのかなって言ったときに。
テストがアーキテクチャの境界線を超えるときはロンドン学科になるよと。
テストが境界線を超えないときは資格語学科になるよっていう風な言い方をしていて。
これはすごく分かりやすい基準みたいなところだなと思って。
例えば外部のライブラリーに依存しているところは差し替えるし。
パッケージバイフィーチャーで作っていればその違うパッケージに依存をするような部分は差し替えるし。
一方でそうじゃないときは資格語学科前はいくつかテストするんだっていうようなことを書いていて。
これすごくいい基準だなと思って説明しやすいなと思って思いましたね。
スピーカー 2
これアーキテクチャの境界線って言ってるのどこら辺のルールだっけって今思っちゃったな。
なんかあれじゃないですかクリーンアーキテクチャの人じゃないですか。
あそこでいうレイヤーをまたぐときには要するに外のレイヤーに対して変にという依存してしまってテストが脆くなるのを防ぐために
レイヤーの境界をまたぐときにはMockしたりしよう例みたいな感じですよね多分。
スピーカー 1
そうですね。
スピーカー 2
それを考え…ああそうだずがった。
結論結構ボックしてるなこういうのの人。なるはなる。
スピーカー 1
そうですね。
だからレイヤーを超えるとっていうとじゃあデータベースのところはMockしましょうねとかってなるし。
コントローラーのテスト…まあでもこれはユニットテストコンポーネント単位のテストするときだからコントローラーをテストするときに
コントローラーのその依存しているものを全部Mockするってことはもちろんないと思うけど。
スピーカー 2
でもあるんじゃないですかなんかコントローラーがビジネスロジックコントローラーのテストを書くときにビジネスロジックっぽいテストを書かなくて
なんかインプットとアウトプットを受け取ってプレゼンターに渡すみたいなところだけテストすれば
あとの中身はあっち側の責任野郎って感じだと思うんで
ここらへんはスタブとか使うんじゃないかなっていう気はしますね。
スピーカー 1
自分があんまりコントローラーのテストを書くときにこう普通にインテグレーションテストで担保するっていう考え方をしてるから
スピーカー 2
それ以外やることないやろって
スピーカー 1
そうむしろそれ以上にコントローラーにこの理学的なことをやろうとしていて
要はレイヤーをある程度切るぞみたいなことをやろうとしていて
コントローラーにテストしたいことがたくさんあったらそれはそれでちょっとおかしいよねみたいな感じになりそうだなと思いながら
極力コントローラーの責務って多分薄くなっていくはずなのでやってたら
スピーカー 2
なんかゲットとポストから取り出したのを詰め替えるくんってテスト本当にいるみたいだね
スピーカー 1
そうでしかもインテグレーションテストも書くんでしょってなったらってなっちゃうから
スピーカー 2
まあでも多分クリーンアーキテクチャーというかこのボボおじさんがよく使ってる方の具体的な設計アーキテクチャー図の中でいうと
まあそういう感じなんだろうなーっていう気はしますけど
アーキテクチャーなんて別にその組織でその過程の味があればいいと思うんで
スピーカー 1
この辺とかは多分TDDをやり始めてとかテスト書き始めて
何をモックして何をモックしないかみたいな基準みたいなのは何か持っとかないと
なんでここはモックしてるんですかって聞かれた時に
いやなんかモックした方がいいかなと思ったんだよとかって答えざるを得なくなるとちょっと辛くなるから
スピーカー 2
そうですねモックに誘われたんでみたいなことを
スピーカー 1
そうそうちょっとたまには違うことやってみるのもいいかなと思ったんですよね
スピーカー 2
一番よくないな
スピーカー 1
ってなるから何かある種の指針みたいなところで
ボボおじさんはこんな風に考えてるからそれをヒントに
じゃあ自分の現場ではどういう風にやるといいのかなみたいなことを考えていくと
いいのかなっていうのをちょっと読みながら思いましたね
スピーカー 2
リュードみたいなものはすごい色々出てきそうだなって思いつつ
なんかこういう紹介性を超える時は論々学派
アウトサイロイン的に書くというかモックとかスタブとか使うよねーっていう話は非常にわかりやすいですもんね
そうなんだよなーっていう
何でもかんでもモック使いすぎないみたいなところはやりたいので
テストしやすいコードとモジュールの変更
スピーカー 2
コストだけかかってやたら技能性のテストを生み出していっても仕方ないので
スピーカー 1
本当そうなんですよ本当にそうなんですよ本当にそうなんですよ
スピーカー 2
あなたは何をテストしてるんですかねみたいな
スピーカー 1
上手にモックできたことをテストしましたねみたいな
じゃあこのテスト消すねみたいな
いやでも結局なんかテストを増やしていくってのは多分結構やろうというか簡単にできる
じゃあできるようになっていくんで慣れてくると
何をテストしなくてもいいのかってことを見極めてテストの数を減らして高速にCIを回していくみたいなことっていうのが
だんだんあるタイミングで転換点を迎えてテスト多すぎるんで消すみたいなことをやってくると思うので
そういうことを考えると無駄にテストを増やさないっていうのはやっぱ大事っちゃ大事なんですよね
そうですねテスト消すのなんかやっぱり罪悪感ありますしね
スピーカー 1
なんかこれで検知できないこれがあれば検知できてたのになとかってなった時ちょっとあっってなっちゃうし
スピーカー 2
そうですねそこら辺がテスト駆動開発応用の章に書いてあることです応用って言ってるのがあれか
第2章がテスト駆動開発で第3章がテスト駆動開発応用なんですけど
第2章でTDDこんな感じだよねっていうルール説明とか進め方みたいな話をしてて
それによってこういうものが得られるよねっていうようなベネフィットみたいなのを第3章の応用の方で書いてるねって感じですかね
スピーカー 1
そうですねそうですね
スピーカー 2
他は第1部どうでしたか
スピーカー 1
そうですね
第4章のこれ源さんが書いてくれてるモジュールに対してテストを書くと壊れやすくなるってどういうくだりでしたっけ
スピーカー 1
これはあれですねなんとかクラスみたいのを作った時にそのクラスに対して一体値対応のテストを書くみたいなことを
暗黙的にこれがこういうルールなんだろうなみたいなことを思ってテストを書き始めると結局そのモジュールが変更された時に何をテストしたかったんだっけみたいな
つまりクラスに対してテストを書くとやってると何を確認したくてそれをテスト書いたんだっけっていうのはないのでバンバンバンバン変更が入って
振る舞いは一緒だとしても壊れてしまうみたいなことが起きるよねっていうような話が書いてあって
いやーやったことあるからわかるなって思いながらはい
結局なんかこれとこれとこれひとまとまりでテストしておけば最終的にそのインアウトは変わってないからテスト自体はいいんだけども
それを一個一個に対してテスト書いていってさらにモックなんかしちゃったりしちゃったら直すものが大量に増えてテストがどんどん壊れていって
辛いみたいなことが起きるんだろうねっていうのを思い出しながらちょっとメモってたって感じですね
スピーカー 2
なんかせっかくコードと別のところにテストっていうのを書いているのにめちゃくちゃな依存しやがってみたいな
依存ってめっちゃ結合しとるやんみたいなやつですかね
スピーカー 1
本当そうなんですよ
そうなんだよテストは書けるようになってきたら多分どんどんテスト書いていってよしこれで大丈夫だって言って
次変更する時にここを直したいなと思ったらなんか直した結果のモックのところを全部書き直さないとなとか
あれこっちのテスト直したら中が壊れるなみたいなこっちのテストこっちのソースコード書いた時に
意図してないところまでその影響がいってテストがぶっ壊れるみたいなことが
それは良いことなのか良くないのかでも振る舞いはそんな変わってないんだよなみたいな時に辛いみたいな気持ちがありますね
スピーカー 2
いやー難しいな
そうだから第一部はなんかそういう本当に具体的な設計良いコードをどうやって作っていくんだっけみたいな話が多めですよね
スピーカー 1
そうですねでもテストが書けるこの本の中のどこかにもあった気がするけどテストが書けるっていう
ちょうど第6章にそれメモしてたなテスト可能なコードは分離されたコードであるっていう話が書いてあってそうよねっていう
なんか結局テストしづらいなって思ってる時ってなんか構造がおかしかったりとか
そうなんだよな
設計がいまいち減っている場合が多いのででなんかこう無理やりオーバーロードとかして
木を無理やり書き換えてこれはちょっと大人の都合でこうですみたいな
謎の魔術が起きてたりとかしてちょっと直すとそのテストが爆発するみたいなことってよくある
よくある稀によくあるやつなんでちゃんとテスタブルなコードを書きましょうねってなっていくと
結局自然とこうソリッドの原則にのっとったというかいう感じに近づいていくんだよなーみたいなことを思ったりしますね
スピーカー 2
やっぱり責任を期待する責任が曖昧だったんだなーっていう風になりますよね
スピーカー 1
あれもこれもチェックしないとなって言われると何なんだこれはみたいなことになっちゃうから
なんでこのクラスのというかこのメソッドのテストをするのになんでデータベース引っ張ってこなきゃいけないんだみたいな
いやそうそうそうそう
スピーカー 2
こいつが欲しいの値があれば十分だっただけではみたいなやつ
スピーカー 1
そうそうそうそういやほんとそうなんですよ
スピーカー 2
なんか数時間前にやったなそれ
スピーカー 1
そういうものと戦っていくのがもしかしたらエンジニアなのかもしれない
金城さんはどうでした
38:56

コメント

スクロール