LoginSignup
2
0

この記事は カオナビ Advent Calendar 2023 (シリーズ2) 8日目です。

はじめに

カオナビでサーバサイドエンジニアとして働いているふじのんです。

カオナビでは「ホンダナ」という、月に1冊好きな本を購入できる制度があります。
今回はじめて「ホンダナ」を利用して、ちょうぜつソフトウェア設計入門を購入しました。

折角、読書がんばってするなら、セットでアウトプットもしちゃえということで筆を取りました。

書籍紹介

プログラミング言語の入門を済ませたけれど、もっとよく書きたいと思っている、中級者を目指す方のための本です。
本書はいわゆる「オブジェクト指向」を中心とした話がメインになりますが、正確にいうと「ソフトウェア工学のうち、かつてオブジェクト指向というトレンドをベースとして発達してきた領域」について記載されています。
また本書は、オブジェクト指向について、かなり高度なところから詳細までの説明をする本とは異なり、基礎的な価値観から順序立てて理解しやすい形(ストーリー仕立て)で紹介されています。そのため、ぜひ順番に読み進めることをお勧めします。

クリーンアーキテクチャ

:tent:クリーンアーキテクチャとは

横文字を見るとウッとなるふじのん向けですかね? とてもありがたい。
とても素敵な解説から始まります。クリーンなアーキテクチャ、「きれいって何?」

アーキテクチャは「構造」
クリーンアーキテクチャって、「きれいな構造」にするには? という知見がまとめられた用語なんですね。

:milky_way:きれいな構造

きれいの反対はきたない ですね、きたない構造は何がまずいか?
意味を認識するのに時間がかかる

実体験でも、構造が整理されたコードを読む際、2時間ほどで、どういう方針で組み立てられた設計か把握でき
どのような対策を行うことで、問題を解決できるか把握しやすかったけれど、
構造が整理されていないコードを読んだ場合、8時間ほどかかっても、不安が取れない感じです。

:writing_hand:分かりやすいたとえ話

おもちゃ箱が3つあります。

ぐちゃぐちゃの場合、クマのぬいぐるみはA、B、Cどれに入れましょう?
勝手に整理していいかわからない場合、とりあえずAに入れたりしませんか?

Aは本、Bはぬいぐるみ、Cはつみきのように整理されている場合、
クマのぬいぐるみは、ほとんど考えることなくBに入れますよね。

構造を整理するというのは、次に使う人が整理して使うかどうか? にも影響があるんですね。


:eyes:依存

次は別の着眼点で構造を見ていきます。
プログラムには依存が存在します。
風が吹けば桶屋が儲かるみたいな話です。

全く依存しない、依存されない、モジュールはただの:put_litter_in_its_place:ゴミなので
各モジュールは必ず繋がりがあります。

依存先のコードが書き換わった場合、依存している処理は何らかの影響があります。
どうすれば、この辛さを最小化できるかを考えるのが健全です。

依存先のコードを頻繁に書き換えないようにすれば、辛さが最小化できるのではないでしょうか?
(価値あるリファクタリングにするには、ファイルに対するコミット数を見てみるのも良さそうだなと感じました。)

:milky_way:きれいな構造

  1. ひとつの関心がひとつの箇所に閉じている
  2. 依存する / 依存されるの関係各所をできるだけ減らす
  3. できるだけ変更頻度の高い事情に依存しない

さいごに

はしごを外すような形になってしまうのですが、
クリーンアーキテクチャは銀の弾丸ではなく、コンセプトのようなものです。
クリーンアーキテクチャ使って書きましょうは、きれいなプログラム書きたいですね
と似たようなものなので、具体的にどう整理するか? はそれぞれ考える必要があります。

カオナビでも、具体的にどう整理するか? を考え、やってみて、また考えを繰り返し
巨大なプロダクトの運用を支えています。

それではシリーズ2の9日目の記事もお楽しみください!!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0