いまさら『Clean Architecture』の感想文

no extension

手遊びで Go でバッチ処理を書いてるのだが,ちょっと作業に飽きてきたので,前々から書こうと思っていた『Clean Architecture』の感想文をやっつけてしまおう。

Robert C. Martin(通称ボブおじさん)による『Clean ◯◯』シリーズのひとつが『Clean Architecture』である。 この本の中身については以下の解説記事が分かりやすい。

本記事を読むくらいなら上のリンク先記事を読むことを強くお勧めする。 以上!

では面白くないので,続きを。

Clean Architecture』の面白いところは,各トピックが非常に短い文に凝縮されているところ。 たとえば「構造化プログラミング」「オブジェクト指向プログラミング」「関数型プログラミング」の3つのプログラミング・パラダイムについて

構造化プログラミングは、直接的な制御の移行に規律を課すものである。
オブジェクト指向プログラミングは、間接的な制御の移行に規律を課すものである。
関数型プログラミングは、代入に規律を課すものである。

などと,ざっくりした文で締めくくっている。 いや,ざっくりしすぎだろう(笑) こういう解説を読んでしまうと, GOTO は悪とか継承がどうのとか多態化だの単態化だの不変だのそれっぽい用語を並べて語るのが馬鹿らしくなる。

世の中に山ほどのプログラミング言語があるが,すべてこの3つのパラダイムの組み合わせで成り立っていて,これらが課す規律または制約がプログラム・コード→コンポーネント→アーキテクチャにどう影響を及ぼすのか,というのが言語を語る(騙る?)際の最重要ポイントだと思う。

Clean Architecture』の主題である「アーキテクチャ」にしてもそう。 この本ではアーキテクチャを「システムに与えた「形状」である」とし,アーキテクチャの形状の目的は「ソフトウェアシステムの開発・デプロイ・運用・保守を容易にすることである」と述べ,さらに

それらを容易にするための戦略は、できるだけ長い期間、できるだけ多くの選択肢を残すことである。

と締めくくる。 ここで私はあの名作を思い出すのである。

公理によって与えられる暗黙の制約。この制約が集合の要素同士をしっかり結びつける。単純にしばるのではない、相互に秩序ある関係を結ぶ。言い換えれば――公理によって与えられる制約が構造を生み出しているのだ

つまり,プログラミング・パラダイムによって与えられる「制約」が巡り巡ってアーキテクチャという「構造」を生み出す。 おー,円環が繋がったぞ(笑)

個人的には「第32章 フレームワークは詳細」の

フレームワークなんかと結婚するな!

でバカウケしてしまった。 うんうん。 フレームワークとは距離のあるお付き合いをしたいものである(笑)

以前に『ユニコーン企業のひみつ』の読書会の話を書いたが,私は『Clean Architecture』も同時に読み返していた。 プロダクトのイテレーションを継続するためにはアーキテクチャの「できるだけ多くの選択肢を残す」戦略が必須だと思ったからだ。

こんな感じで,私はちょいちょい読み返している。 特に設計に迷ったときとか,決して「正解」を教えてくれるわけではないけど,プロダクトやシステムにとって何がコアで何が「仔細」なのか,設計が外道に落ちないようストッパーとしてこの本は効いている。

【2022-12-10 追記】「ちょうぜつエンジニアめもりーちゃん」を読め!

祝♪ #ちょうぜつエンジニアめもりーちゃん 単行本化!

というわけで,『Clean Architecture』じゃフワッとしていてよく分からんって方やこの記事の最初に挙げたリンク先よりもう少し詳細な解説書はないのか? って方には田中ひさてるさんの『ちょうぜつソフトウェア設計入門――PHPで理解するオブジェクト指向の活用』を併せて読むことをお勧めする。

特に第9章コラムにある

パラダイムがじっくり待ってくれているこの時代は、学習者にとっては大きなチャンスです。変化が激しすぎてついていけないなんてことは、もうありません。必要なことは出そろっていて、いい意味で枯れたものを学べます。

というのは本当にそのとおりだと思う。 こういった良書を時間をかけて理解していくことが大事である。

ブックマーク

参考文献

photo
Clean Architecture 達人に学ぶソフトウェアの構造と設計 (アスキードワンゴ)
Robert C.Martin (著), 角 征典 (著), 高木 正弘 (著)
ドワンゴ 2018-08-01 (Release 2018-08-01)
Kindle版
B07FSBHS2V (ASIN)
評価     

実務に即効性のある技術解説書というわけではないが,ものの「考え方」を示す本としてはよく出来ている。ソフトウェア技術史の読み物としても面白い。

reviewed by Spiegel on 2021-04-03 (powered by PA-APIv5)

photo
ちょうぜつソフトウェア設計入門――PHPで理解するオブジェクト指向の活用
田中 ひさてる (著)
技術評論社 2022-12-07 (Release 2022-12-07)
Kindle版
B0BNH1J2W2 (ASIN)
評価     

祝♪ #ちょうぜつエンジニアめもりーちゃん 単行本化! 私は版元で電子版を購入した。絵は可愛いが読み応えあり。「SoftwareDesign」連載分も収録されていて超お得!

reviewed by Spiegel on 2022-12-10 (powered by PA-APIv5)

photo
ユニコーン企業のひみつ ―Spotifyで学んだソフトウェアづくりと働き方
Jonathan Rasmusson (著), 島田 浩二 (翻訳), 角谷 信太郎 (翻訳)
オライリージャパン 2021-04-26
単行本(ソフトカバー)
4873119464 (ASIN), 9784873119465 (EAN), 4873119464 (ISBN)
評価     

版元より電子版も出ている。 Google や Spotify のような「ユニコーン企業」はどのようにして「ミッション」を遂行しているのか。

reviewed by Spiegel on 2022-05-21 (powered by PA-APIv5)

photo
数学ガール/フェルマーの最終定理
結城 浩 (著)
SBクリエイティブ 2008-07-29 (Release 2014-03-12)
Kindle版
B00I8AT1CM (ASIN)
評価     

「フェルマーの最終定理」というサブタイトルをみたとき「なんちう大風呂敷を広げるねん」と思ったものだが,実際に読んでみるとぐいぐい引き込まれる。ひっさびさに頭を使ったような気がする。

reviewed by Spiegel on 2019-01-13 (powered by PA-APIv5)