#設計
40 件の記事
凝集度と結合度とは|良い設計を支える2つの指標
ソフトウェア設計の指標である凝集度と結合度を解説。凝集度の7段階(偶発的〜機能的)と結合度の6段階(内容〜データ)を、具体例とともに整理します。
設計の賞味期限を考える
システム設計に「正解」はなく、状況に応じた「最適な妥協」があるだけだという前提に立ち、「設計の賞味期限」という観点から設計の寿命をどう見積もるかを考えます。ビジネス・組織・プロダクト・技術の変化と制約、トレードオフを踏まえた意思決定のヒントを整理します。
自分的システムの仕様書の構成
システムの仕様をドキュメントに書き出す際、どのような構成であるべきかを考えてまとめた、自分なりのシステム仕様書の構成を記した記事です。概要・アーキテクチャ・データモデル・API・技術詳細といった階層構成を、mermaidでの図のコード化も交えて運用する方法を紹介します。
アーキテクチャ戦略について考える
アーキテクチャ戦略について考えた記事。CTOやアーキテクトといった明確なポジションでなくても戦略の必要性を感じる場面を起点に、システムを構築・進化させるための方針として、ビジョンや原則、拡張性の計画といった観点を整理する。
アーキテクトの教科書 価値を生むソフトウェアのアーキテクチャ構築
『アーキテクトの教科書 価値を生むソフトウェアのアーキテクチャ構築』の書評。まさに教科書といった内容で、アーキテクトが知るべき領域を幅広く網羅する一冊。ソフトウェアアーキテクチャの話題が中心で、注釈や良書紹介、参考文献も充実しており、この本を起点に学びを広げられる。
Tidy First? ―個人で実践する経験主義的ソフトウェア設計
『Tidy First? ―個人で実践する経験主義的ソフトウェア設計』の書評。Kent Beckによる、コードの「整頓」をいつ行うかを考えさせてくれる薄くて濃い一冊。結合と凝集、そしてコストと収益という観点から、整頓の判断を経験主義的に捉える。主張が端的でわかりやすい。
ソフトウェアアーキテクトのための意思決定術 リーダーシップ/技術/プロダクトマネジメントの活用
『ソフトウェアアーキテクトのための意思決定術』の書評。アーキテクトの意思決定にフォーカスした画期的な一冊。アーキテクチャの不確実性に立ち向かうための5つの質問と7つの原則を紹介し、設計に向かう人に確かな学びを与えてくれる。
freee 技術の本 freeeにおけるマルチプロダクト開発
『freee 技術の本 freeeにおけるマルチプロダクト開発』の書評。業務系SaaSにおけるマルチプロダクト開発の実践をまとめた一冊。申請・承認といった共通業務をどうドメインとして切り出すか、基盤と各アプリケーションの関係やそこで生じるトレードオフなど、現場の設計判断が具体的に語られる。
信頼性のパターンについて
信頼性(Reliability)を高めるための設計パターンを、Azure・AWS・GCPが提唱するパターンに基づいてまとめた記事です。ユーザーが期待する機能を提供し続けるために、サーキットブレーカーや補正トランザクション、イベントソーシング、Pub/Subといったパターンを使って耐障害性・回復性を実現する方法を整理します。
権限管理基盤についての事例
認可(権限管理)基盤について、他社の開発事例を調べてまとめた記事です。freeeの認可管理基盤を開発するチームの取り組みを主な題材に、チーム構成やマイクロサービスとの関係、QA(品質保証)の進め方といった観点から、権限管理基盤づくりのポイントを紹介します。
セキュア・バイ・デザイン: 安全なソフトウェア設計
『セキュア・バイ・デザイン 安全なソフトウェア設計』の書評。個別の脆弱性対応ではなく、ソフトウェア設計そのものからセキュリティを高めるアプローチを説く一冊。DDDを中心に据え、ドメインのモデリングを丁寧に行うことで、セキュリティを機能ではなく設計に自然と織り込むという考え方を示す。
APIデザイン・パターン
『APIデザイン・パターン』の書評。APIの設計原則に始まり、標準メソッドを組み合わせるリソース指向や手続きを呼び出すRPC指向など、豊富なデザインパターンを紹介する一冊。実行可能性をはじめとする、良いAPI設計のための観点を体系立てて学べる。
API設計について学べるおすすめ本
API設計について学び直そうと、数冊をピックアップして読んだ本を紹介する記事。『Web API: The Good Parts』をはじめ、API設計の基礎から設計フェーズ、テスト戦略、実践的なデザインパターンまでを学べる書籍を、おすすめの読書順でリストアップする。
Web APIの設計
『Web APIの設計』の書評。インターフェースだけでなく、その手前の入り口からAPI設計を考えさせてくれる一冊。仕組みではなく「ユーザーが何をできるか」に焦点を当てる姿勢や、APIのゴールを洗い出すフレームワークなど、良いAPIを設計するための視点を与えてくれる。
単体テストのベストプラクティス:開発者のための実践ガイド
『単体テストのベストプラクティス 開発者のための実践ガイド』の書評。質の高いテスト設計に必要な考え方やアプローチをまとめた一冊。良いテストが備えるべきリグレッションへの保護やリファクタリング耐性、保守性を軸に、費用対効果をふまえてテストを設計する視点を、豊富な実例とともに示す。
ソフトウェア設計のトレードオフと誤り ―プログラミングの際により良い選択をするには
『ソフトウェア設計のトレードオフと誤り ―プログラミングの際により良い選択をするには』の書評。設計判断のトレードオフを対照的に考えることの大切さと、具体的な設計のトレードオフ事例を学べる一冊。選ばなかった理由まで含めて考える視点が、より良い選択につながることを教えてくれる。
アーキテクチャ設計と組織設計についての記事漁り
ソフトウェアアーキテクチャと組織設計の関係について、読んだ記事やリソースをまとめた記事。コンウェイの法則が及ぼす影響などをテーマに、アーキテクチャと組織のあり方を考えるうえで参考になる情報を随時リストアップしていく。
アーキテクチャ設計の進め方
構成図レベルでアーキテクチャを設計するときの、個人的に良いと思う進め方を1つ取り上げてまとめた記事。要件定義や調査がある程度済んだ前提で、構成図を書きながら段階的に設計を進めるアプローチを紹介し、思考の整理やチームの合意形成、過剰設計の防止につなげる。
テストケースの種類と洗い出し
テストケースの基本的な種類と、その洗い出し方についてコンパクトにまとめた記事です。バグの発見や品質保証・品質改善といったテストの目的を整理したうえで、ユニットテストをはじめとするテストの種類や、どのような観点でテストケースを洗い出していくかを紹介します。
Web API: The Good Parts
『Web API: The Good Parts』の書評。Web APIの設計方針を学ぶうえで、まず読んでおきたい定番の一冊。エンドポイント設計やレスポンスの返し方など、API設計の基礎がまとまっており、設計に迷ったときに読み返したくなる。