Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ビジネスを止めない技術的負債の返済のための戦略とその手法 - 技術的負債と向き合う / Com...

ビジネスを止めない技術的負債の返済のための戦略とその手法 - 技術的負債と向き合う / Complexity and Simplicity

phpカンファレンス2026 愛媛の登壇資料です。

Avatar for soudai sone

soudai sone PRO

October 02, 2026

More Decks by soudai sone

Other Decks in Technology

Transcript

  1. 自己紹介 そ ね たけ とも 曽根 壮大(41歳) Have Fun Tech

    LLC 代表社員 株式会社リンケージ CTO 兼 COO • • • • 日本PostgreSQLユーザ会 勉強会分科会 担当 3人の子供がいます(長女、次女、長男) 技術的にはWeb/LL言語/RDBMSが好きです コミュニティが好き
  2. ソフトウェアの品質特性 品質特性 確認すること ソフトウェアでの例 機能適合性 必要な機能と正しい結果を提供できるか ユーザに提供する機能が業務ルールに合う。機能要件を満たす 性能効率性 時間や資源の要求を満たすか 想定負荷で応答時間やメモリ使用量が許容範囲に収まる

    互換性 他の製品やライブラリと共存・連携できるか 外部APIとの連携が正しく行える 対話性 利用者が理解し、操作できるか 操作方法やエラーの対処方法が分かる 信頼性 必要な条件で機能し、障害にも対処できるか 稼働を継続でき、障害後に必要な状態へ回復できる 稼働率やMTTR(障害平均復旧時間)など セキュリティ 情報や機能を適切に保護できるか 権限のない閲覧や改ざんを防げる 保守性 想定する保守者が有効・効率的に変更できるか 変更箇所を調べ、修正し、検証できる 柔軟性 要求・環境の変化などに対応できるか 動作環境の変更や負荷の増減に適応できる 安全性 人命・健康・財産などへの危害を抑えられるか 危険な状態を検知し、警告や安全な停止につなげられる ※JIS X 25010:2025 システム及びソフトウェア技術の定義をベースにしています
  3. Four Keys • デプロイの頻度 ◦ • 変更のリードタイム ◦ • 変更のコミットから、本番環境で正常に実行されるまでの時間

    変更失敗率 ◦ • 変更を本番環境にデプロイ、あるいはエンドユーザーにリリースした頻度 デプロイによって本番環境で障害が発生する割合 デプロイ失敗時の復元までの時間 ◦ 本番環境での障害から復元までにかかる時間
  4. Four Keys • 保守性以外が問題のこともあるが、 品質が低下していることの指標としてわかりやすい デプロイの頻度 ◦ • 変更のリードタイム ◦

    • 変更のコミットから、本番環境で正常に実行されるまでの時間 変更失敗率 ◦ • 変更を本番環境にデプロイ、あるいはエンドユーザーにリリースした頻度 デプロイによって本番環境で障害が発生する割合 デプロイ失敗時の復元までの時間 ◦ 本番環境での障害から復元までにかかる時間
  5. 代表的な複雑度 指標 主に測るもの 役立つ場面 循環的複雑度 Cyclomatic Complexity 制御フロー上の独立した経路の数。 通常、判断・分岐が増えるほど大きくなる 分岐の多いメソッド、テストの追加が

    必要な場所の抽出 認知的複雑度 Cognitive Complexity 制御の流れやネストなどから見積もる、 処理を追う難しさ 深い条件分岐、読解やレビューに負担が かかるメソッドの抽出 NPath複雑度 メソッド内の非循環な実行経路の数 独立した条件判断が組み合わさる処理、 経路の組合せが多い処理の抽出
  6. ソフトウェアの主な内部品質の要素 保守性の副特性 現場で確認したいこと 複雑性が関係する例 モジュール性 一部分の変更が、他の部分に波及しにくいか 一つの変更で複数の機能を直す必要がある 再利用容易性 必要な部品を、他の用途やシステムでも利用できるか 必要な処理を呼ぶために依存するClassが複数ある

    解析容易性 原因、影響範囲、修正箇所を調べやすいか 深いネストや暗黙的な状態により、認知負荷が高い 修正容易性 他の品質を損なわず、効果的・効率的に変更できるか 条件を一つ追加すると、別の条件との整合を 広範囲に確認する必要がある テスト容易性 テストの条件を定め、その条件が満たされるか またテストの結果が確認しやすいか 分岐が多い、再現に必要な状態を作りにくい、 外部サービスを切り離せない ※JIS X 25010:2013定義