Docs

読んだ本・文献から抽出した概念・フレームワーク・Tipsをまとめています

概念 25件
🏗️

このサイトのアーキテクチャ

Astro + Cloudflare Pages で構築したナレッジベースの設計方針。Functional Core, Imperative Shell を Astro コンポーネント設計に適用した実例

🏷️

区分オブジェクト

ステータス・種別などの区分値を、固有ロジックを持つオブジェクトとして表現しswitch文の散在を防ぐパターン

📖

欠陥予防(真因分析と水平展開)

欠陥予防とは、不具合が発生した後に修正するだけでなく、同種の欠陥が将来にわたって発生しないようにする活動。2つの実践で構成される:

🧩

ドメインオブジェクトへの業務ロジック集約

業務ロジックをデータを保持するドメインオブジェクト自身に持たせ、貧血ドメインモデルを避ける設計方針

📦

ファーストクラスコレクション(コレクションオブジェクト)

コレクションを専用クラスでラップし、そのコレクション固有の業務ロジックをメソッドとして持たせるパターン

🏛️

Functional Core, Imperative Shell

副作用とドメインロジックを2層に分離し、ビジネスロジックを純粋関数の層に閉じ込める設計方針

🔭

オブザーバビリティ(Observability)

システムの外部出力からその内部状態を推測できる度合い。分散システムやAIエージェントの運用に不可欠な能力

📖

プロセス成熟度とテーラリング

プロセス成熟度とは、組織のソフトウェア開発プロセスがどれだけ定義・管理・最適化されているかの段階的な評価基準。CMMI(Capability Maturity Model Integration)が代表的なモデル:

📖

見積もり技法

不確実性コーン・ファンクションポイント・プランニングポーカーなど、プロジェクト規模と工数を予測する技法

純粋関数(Pure Function)

同じ入力に対して常に同じ出力を返し、副作用を持たない関数

📖

品質保証(SQA)

欠陥を防ぐプロセスを構築するSQAの考え方、品質の8側面、レビューとメトリクスによる品質管理

📖

品質マネジメントシステム(QMS)

組織が品質目標を達成するための、責任・プロセス・リソースを体系的に管理する仕組み。ISO 9001 や SQuBOK が定義する QMS の核心は3要素:

📖

品質指標設計(計測・評価)

品質指標とは、品質目標の達成度を数値で判断するための計測可能な尺度。ただし「計測できる」ことより「判断の根拠になる」ことが本質。

🚃

Railway-Oriented Programming(鉄道指向プログラミング)

エラー処理を2本レールの鉄道として表現し、型安全なエラーハンドリングを実現するパターン

📖

要件エンジニアリング

ステークホルダーのニーズを引き出し、検証可能な要件として定義・管理するための活動の総称

📖

リスク管理

プロジェクトに悪影響を与える可能性のある事象を事前に特定・分析・対処する活動

📖

ソフトウェア設計原則

高凝集・低結合・SOLID原則など、変更コストを低く保つための設計の核心的考え方

📖

ソフトウェアプロセスモデル

ウォーターフォール・アジャイル・スパイラルなど、開発活動の順序・構造を定めるフレームワークの比較

📖

ソフトウェア品質モデル

ソフトウェアの「品質」を多面的に捉えるための体系的な枠組み。ISO/IEC 25010 では品質を2つの視点で定義する。

📖

テスト戦略

テストピラミッド・TDD・ブラック/ホワイトボックステストなど、欠陥を早く安く発見するための体系的アプローチ

📖

トレーサビリティ

トレーサビリティとは、ソフトウェア開発の成果物間の対応関係を追跡可能にする仕組み。「要件 → 設計 → 実装 → テスト」の各工程で生まれる成果物が、どの要件を実現しているかを双方向に辿れる状態を指す。

🎯

型駆動設計(Type-Driven Design)

ドメインの制約・状態・ルールを型システムで表現し、不正な状態をコンパイル時に防ぐ設計手法

💎

値オブジェクト(Value Object)

ビジネス上の意味を持つ値を専用クラスで表現し、制約・操作を型に閉じ込める設計パターン

⚠️

プリミティブ執着(Primitive Obsession)

ドメイン概念をプリミティブ型で直接表現し続け、業務制約・操作がコード中に散らばるアンチパターン

🚫

状態フラグ・汎用テーブルのアンチパターン

DBスキーマで状態を複数フラグ列や汎用コードで表現し、不正な状態の組み合わせを許容してしまう設計の問題

フレームワーク 6件
🔌

メタデータ中心ロギング(Metadata-Centric Logging)

ログに記録するのはメタデータ(誰が・いつ・どこで・どのくらい・結果は何か)に限定し、コンテンツ(ユーザー入力・LLMの出力・ファイルの中身)を含めないアプローチ。

🔌

リリース可否判定パターン

リリース可否判定とは、ソフトウェアを本番環境に展開(リリース)してよいかを、事前に定義した基準と実績を照合して意思決定するプロセス。「品質目標を達成しているか」だけでなく「リリース後の準備が整っているか」まで含めて判断する。

🔌

レビュー戦略

ソフトウェア開発におけるレビューとは、成果物(要件書・設計書・コード・テスト計画等)を人間の目で検査し、欠陥・問題・改善点を発見する品質確保活動。レビュー戦略は「何を・誰が・どのように・なぜレビューするか」を体系的に設計すること。

🔌

シフトレフト(品質の早期確保)

シフトレフト(Shift Left)とは、品質確保活動をソフトウェア開発ライフサイクルの早い工程(「左」)に移動させるアプローチ。従来の「実装後にテストで品質を確保する」モデルから、「要件・設計段階から品質を作り込む」モデルへの転換。

🔌

薄いサービス層パターン(Application Service)

アプリケーションサービスをオーケストレーターに徹させ、業務ロジックを持たせないことでユースケースを読みやすく保つパターン

🏗️

三層分離パターン(ドメイン・アプリケーション・インフラストラクチャ)

ソフトウェアをドメイン・アプリ・インフラの3層に分離し、業務ロジックを技術的詳細から独立させるアーキテクチャパターン

Tips 19件
🚀

記事作成・デプロイフロー

ブログ記事・Docsの作成からCloudflare Pagesへのデプロイまでの手順

📐

業務ロジックはドメインオブジェクトに書く

サービス層を薄いオーケストレーターに保ち、業務ロジックはそのデータを持つドメインオブジェクトに集める行動規範

🧩

Astro 構文リファレンス

Astroコンポーネント・Content Collections・レイアウトなど、このブログで使う構文のまとめ

📐

見積もりを約束として扱わない

見積もりは予測であり、不確実性の範囲を示した上でコミットメントと区別する

📐

ログにはメタデータを記録し、コンテンツを含めない

ログに記録するのは以下のメタデータのみとする:

🔒

不正な状態を型で表現不可能にする

ドメインオブジェクト設計時、存在してはいけない状態をコードで表現できないようにする設計規範

📐

プロセスはチームに合わせて適応させる

プロセスを「従うもの」ではなく「コンテキストに合わせて調整するもの」として扱う

📐

品質指標は判断根拠になるように設定する

品質指標を設定するときは「この数値を見れば判断できる」を基準に設計する:

📐

要件はテスト可能な形で書く

曖昧な言葉を使わず、検証可能な条件として要件を定義する

📐

レビューは全量・目的明示で実施する

レビューを実施する際は以下を守る:

📐

リスクは定期監視し顧客と共有する

プロジェクトリスク管理において以下を守る:

📐

リスクには必ずオーナーを置く

リスクリストの各項目に担当者を割り当て、「全員の問題」を「誰かの問題でもない問題」にしない

🎯

設計はドメインモデルから始める

DBやAPI設計より先に業務の言葉・ルール・概念を整理し、技術的都合でドメインモデルが歪むことを防ぐ行動規範

🗺️

ドメインモデル抽出スキル

業務の言葉・ルールからドメインオブジェクトとその関係を発見し、設計の出発点となるモデルを作る実践手順

📚

本から概念を抽出する

読書中に出会った概念を、チームで使えるreference/rules/skillsに変換する実践的な手順

📊

Gensparkで自社ブランドスライドを自動生成する

自社ロゴ・課題・あるべき状態を盛り込んだスライドをGensparkで生成する手順と、その裏側のアーキテクチャを多方面から解説

🔨

段階的リファクタリング戦略

既存コードを壊さずにドメインオブジェクト設計へ移行するための段階的な手順

🛠️

真因分析と水平展開スキル

不具合・インシデントの表面的な修正に留まらず、根本原因を特定し、同種の問題が組織全体で再発しないようにする。

🛠️

テスト計画作成スキル

テストの品質はテスト計画で決まる。テスト計画を「やること一覧」ではなく、「品質目標を達成するための戦略文書」として作成するスキルを身につける。