正しいアーキテクチャとは何か? - 完璧を目指さない進化するアーキテクチャ
セミナータイトル: 正しいアーキテクチャとは何か? - 完璧を目指さない進化するアーキテクチャ
日時: 2025年6月3日
場所: (記載なし)
登壇者: 増田さん、福井さん
概要
今回のセミナーでは、「正しいアーキテクチャとは何か?」というテーマについて、増田さんと福井さんの経験と視点から議論が交わされました。ソフトウェア開発におけるアーキテクチャの重要性、変更可能性、そして進化していくアーキテクチャについて学びました。
セミナー内容
増田さんの話
増田さんは、これまでの経験から、システムをぶった切った経験や、現状維持バイアス、サンクコストなど様々な課題を抱えてきたことを共有されました。その中で、使いにくいものはバラして組み立て直すという感覚が伝わらないことへの違和感を強く感じたそうです。アーキテクチャ検討にあたっては、上記の各種バイアスを解除し、現状維持ではなく変更や進化を受け入れることが重要だと述べられました。また、費用感と効果感についても言及され、いきなりプロダクションではなく、リポジトリをクローンしてプロトタイプを作成することを推奨しました。
福井さんの話
福井さんは、ソフトウェア工学の歴史が浅いことを指摘し、建築のメタファを適用しようとしたのが誤りではないかという問題提起をされました。ガウディの言葉を引用し、「完璧な仕事は神にしかできない。人は作り続けなければならない」という考え方を紹介し、ソフトウェア開発はプロジェクトではなくプロダクトとして考えるべきだと述べました。そして、ソフトウェアの本質は変更可能性にあると説き、「変更可能な構造」「美しさ」が重要であると述べました。ソフトウェアも積み上げ式であり、すべてを知る人などいないため、「とりあえず動かしてみる」ことが手っ取り早いと述べました。
共通の話題
分解の重要性: 認知負荷を下げるためにシステムを分解することの重要性が語られました。
業務構造との整合性: 業務の関心事が違うところで分け、業務構造とソフトウェアの構造を一致させることが重要だと述べられました。
DB連携: DB連携においては、非同期に至る前にまずは連携用のテーブルやVIEWを用意すること、そしてDBを隠蔽することが重要だと述べられました。
アーキテクチャの正解: アーキテクチャに正解はなく、常に選択の繰り返しであると述べられました。アーキテクトの責任は、説明可能性を担保することだと述べられました。
マネージドサービス: 若手がマネージドサービスが隠蔽する仕組みを理解することは望ましいという見解で一致しました。
「ドメイン駆動設計をはじめよう」の翻訳: ユビキタス言語やバウンデッドコンテキストなど、重要な概念について説明がされました。
リファクタリング: 契約には影響させず、内部を変更するのがリファクタリングであり、変更に際して「整理整頓が必要だな?」と思った時に行うのが良いと述べられました。
チームのレベル: チームのレベルが低いなら(何が良いものか分からないなら)作るな、勉強せよという厳しい意見が出ました。
設計設計とは入出力と計算・判断を分けること。ドメインモデリングするまでも無い場所であっても、レイヤリングはやるべきだと述べられました。