#設計
40 件の記事
Go言語に至るプログラミング言語の系譜
Algol 60からGo言語に至るプログラミング言語の系譜を、公式FAQや各言語の資料をもとに整理する記事である。ニクラウス・ヴィルトのPascalからOberonへ続く流れと、トニー・ホアのCSPからNewsqueak、Alef、Limboへと続く並行処理の流れが、いかにしてGoへ合流したのかを解説する。
良いコードを書くためのおすすめ本9選【リーダブル・リファクタリング】
読みやすく変更に強いコードを書くための定番書を9冊まとめた。読みやすさの基礎、リファクタリングによる改善、複雑さとの向き合い方、視野を広げる一冊の順に紹介し、各書の個別レビューへ移動できる。
ソフトウェアアーキテクチャを学ぶためのおすすめ本12選【入門から実践まで】
ソフトウェアアーキテクチャを体系的に学ぶための定番書を、入門から実践まで12冊まとめた。設計の基礎、トレードオフ、ドメイン駆動設計、マイクロサービス、API設計の順に紹介し、各書の個別レビューへ移動できる。
マイクロサービスパターン
『マイクロサービスパターン』の書評。Chris Richardsonによる、マイクロサービスの設計パターンを体系化した一冊。分解戦略に始まり、Sagaによる分散トランザクション、API Composition、CQRS、イベントソーシングなど、分散システムで直面する課題と定石をトレードオフ付きで整理する。
なぜWeb開発ではドメインが見えにくくなり、最終的にドメインが必要になるのか
マイクロサービスやモジュラモノリスの境界設計で立ち返るべき「ドメイン」とは何かを整理し、Web開発の現場でドメインが見えにくくなってきた構造的な理由と、その向き合い方を解説する。
APIハンズオンラーニング
『APIハンズオンラーニング』の書評。APIの設計から実装・テスト・運用まで、実際に手を動かしながら学べる実践的な一冊。設計原則やドキュメンテーション、バージョニング、セキュリティなど長期運用に欠かせないトピックを一通り押さえられ、既存APIの設計を振り返るチェックリストとしても役立つ。
Good Code, Bad Code
『Good Code, Bad Code』の書評。良いコードと悪いコードの違いを、抽象化やモジュール性、エラーハンドリング、テストといった観点から具体的に示す一冊。契約の明確化や想定外の入力への備え、誤用のしにくさなど、日々のレビューでそのまま使える判断基準を与えてくれる。
シンプリシティ ―持続可能かつ人間的で効果的なソフトウェア開発
『シンプリシティ ―持続可能かつ人間的で効果的なソフトウェア開発』の書評。複雑さに飲み込まれがちなソフトウェア開発を、いかにシンプルに保つかを問う一冊。技術的なテクニックにとどまらず、何を作らないか・どこで立ち止まるかという選択が、長く健全に開発を続けるうえで効いてくることを気づかせてくれる。
偶有的複雑性と意思決定の記録不在
ソフトウェアの複雑性を本質的複雑性と偶有的複雑性に分けて捉え、偶有的複雑性が生まれる要因を整理した記事。ADRやDesign Docといった意思決定の記録が欠けると、「本質」と「偶有」を切り分けられなくなる問題を論じる。
アーキテクチャ設計における共通化の罠
アーキテクチャ設計における「共通化」の罠を整理した記事。ドメインロジックの安易な共通化が数年後に解きほぐしにくい負債へ変わりうる一方、技術的関心事は安全に共通化できるという非対称性を、境界づけられたコンテキストの観点から論じる。
アーキテクチャ戦略・戦術・設計の書き分け
アーキテクチャのドキュメントを書く際に迷いがちな「戦略・戦術・設計」の書き分けを整理した記事。三層構造として捉え、Why・What・How・When・Where・Whoという5W1Hのフレームワークを使って、それぞれに何を書くべきかを明確にする。
良いアーキテクチャ戦略・悪いアーキテクチャ戦略
アーキテクチャ戦略を立てても、形だけになったり実行に移されなかったりして機能しないことがあります。この記事では、書籍『良い戦略、悪い戦略』も参照しながら、課題分析・方針・施策という要素の観点から良い戦略と悪い戦略の違いを整理します。
なぜ・いつアーキテクチャ戦略を書くべきか
なぜ・いつアーキテクチャ戦略を書くべきかについて解説する記事です。「書く時間があるなら手を動かしたい」「書いても読まれない」といった声がある一方、戦略がないまま進めるとさまざまな問題が生じます。戦略を書く意義と、書くべきタイミングを整理します。
ADRを書くときに抑えておくべきポイント
ADR(アーキテクチャ決定記録)を書くときに押さえておきたいポイントを、経験をもとに4つに整理した記事。意思決定を一つに絞るアトミック性、トレードオフの記録、チームでの議論、テクニカルライティングの原則に焦点を当てる。
要件と制約の違い
ソフトウェア設計における「要件(Requirements)」と「制約(Constraints)」の違いについて、ISO 29148の定義をもとに整理した記事です。設計を考える際に混同しやすいこの2つの概念を明確に区別することで、アーキテクチャのトレードオフ判断に役立てることを目指します。
ソフトウェア設計のモジュール化の原則|結合バランスと持続可能な成長
『ソフトウェア設計の結合バランス 持続可能な成長を支えるモジュール化の原則』の書評。結合という切り口からアーキテクチャの複雑性をどう管理するかを理論的に学べる珍しい一冊。結合に関する分析の観点が非常によく整理されており、設計するときに辞書的に参照したくなる。
クリーンコードクックブック ―コードの設計と品質を改善するためのレシピ集
『クリーンコードクックブック ―コードの設計と品質を改善するためのレシピ集』の書評。全単射や偶発的複雑さといった概念を軸に、コードの設計と品質を改善するテクニックをレシピ集の形で学べる一冊。よく知られた法則も網羅的にまとまっており、手元に置いておきたくなる。
データモデリングでドメインを駆動する──分散/疎結合な基幹系システムに向けて
『データモデリングでドメインを駆動する』の書評。帳簿という概念を軸に、基幹系システムを分散・疎結合化するデータモデリング手法を体系的に解説する一冊。活動系と経営管理系の二分類や「残」という新しい概念を提唱し、DDDやマイクロサービス化の実践的な指針を与える。
システムアーキテクチャ構築の実践手法
『システムアーキテクチャ構築の実践手法』の書評。実務でアーキテクチャ設計に取り組む技術者のための実践ガイド。前著が「なぜ」に焦点を当てたのに対し、本書は「どのように」を扱い、要求定義から論理・物理設計、ビューによる文書化まで、現場で役立つ具体的な手法を紹介する。
アーキテクチャ・アーキテクト・アーキテクティングについて
アーキテクチャ・アーキテクト・アーキテクティングの定義を解説。IEEE規格に基づくシステム構造、コンポーネント関係、設計判断、ステークホルダニーズ統合の本質を理解する実践的知見を紹介します。