ソフトウエア設計のコツ ~効率的に設計する思考テクニック -ソフトウエア設計シリーズ「破」⑤

SW設計のコツ_アイキャッチ_576 x 384 知の和
この記事は約13分で読めます。

効率的な設計とは、課題を合理的に解決する方法・手段を求め、設計者が持つ知識を絡み合わせて「仮説」→「確認」→「評価」という思考のPDCAサイクルを回すこと。
ソフトウエア設計シリーズの記事は、『具体化力⇔抽象化力』を主軸とした設計スキル向上のロードマップを提供する。
本記事では、ソフトウエアの設計における思考のPDCAサイクルの中で使うと効果的な思考スキルを、適用例とともに解説する。

ソフトウエア設計シリーズ「破」⑤
ソフトウエア設計のコツ 効率的に設計する思考テクニック 松浦公政 2025年
対象読者
設計思考のPDCAサイクルに興味がある方
ソフトウエアの設計の『思考スキル』『思考テクニック』に興味がある方
ソフトウエアの設計思考の『七つ道具』『三種の神器』『鑑定眼』に興味がある技術者

記事の音声解説付き(下のプレイボタンで解説開始)

設計思考のPDCAサイクル

難しい課題に直面すると、多くの人は、まずは対策Aを試してみて、ダメなら対策Bを試す、のように対策をいくつか試す。
結論指向の設計者
解決策を導く上の試行しこう錯誤さくごを、設計思考のPDCAサイクル(Plan-Do-Check-Action Cycle)と名付ける。
課題が難しいほど手当たり次第の対策では解決しづらく、行き当たりばったりの対策では効率が悪い。

意図志向の設計者は、自分の知識を縦横に組み合わせて解決策の「仮説」を考案する(=作戦を練る)能力が高く、思考効率(対策やアイディアの考案能力)が高い。

意図志向と結論指向の設計者

次章以降で、成長を狙う「守」の水準の技術者に向け、「ソフトウエア設計のコツ」を持つ意図志向の設計者の「設計思考のPDCAサイクル」「思考スキル」を考察する。

課題解決を加速:4つの思考スキル

意図志向の設計者は、課題を合理的に解決するために自分の知識を絡ませ、「仮説」→「確認」→「評価」という設計思考のPDCAサイクルを回して最適解を探す。
設計思考のPDCAサイクル

意図志向の設計者が最適解を探すとき、紙に書き出したり、PC画面でシミュレートしたりするが、脳内で完結させることもある。

意図志向の設計者が、設計思考のPDCAサイクルごとに効果を上げやすい思考スキルは、4種に分類できる。

思考スキル

思考スキル名 説明 設計思考のPDCAサイクル
仮説 確認 評価
判別 分類、場合分け・絞り込み、条件満足度合い、を「判別」する    
抽出 対応関係、反復パターン、共通点の発見などで、情報を「単純化」する    
メタ認知 複雑な情報の視覚化、視点見直し、既知きちの情報の緩用えんようで、構造や関係を高次こうじに「把握」する  
見極みきわ 考案した対策が課題を解決するか確認・評価し、対策の有効性を「見極」める  

表の上方ほど具体的、下方ほど抽象的な思考力・判断力が必要になる。

思考テクニックの枠組み:3つの思考フレームワーク

本章では、意図志向の設計者の脳内の思考テクニックを考察するに先立って、理解を促進する「思考フレームワーク」を定義する。

思考テクニックは、秋山仁『NHK【3か月でマスターする 数学】数学的思考法 その1、その2 』(初回放映2024/7/17, 24) の数学的思考法の分類を参考に、前出の思考スキルを11項目に細分さいぶんしたプロセスで、これ以上に細分しない「汎用はんよう的」で「末端まったん」の「設計プロセス」だ
思考テクニックは項目が多くて全体を把握はあくしにくいので、思考テクニックの説明に先立って「位置づけ」の観点で便宜べんぎ的に次の思考フレームワークに分類しておく。

思考フレームワーク

思考フレームワーク 説明 位置付け
設計思考の七つ道具
FWピクトグラム_七つ道具
具体的な思考力を求める「判別」「抽出」スキルを構成する7種の思考テクニック。 直面する課題が持つ情報を整理・分類するツールキット

設計思考の三種の神器
じんぎ

FWピクトグラム_三種の神器

抽象的な思考力を求める「メタ認知」スキルを構成する3種の思考テクニック。 思考の難度(=脳の負荷)を下げ、考え易さを上げる切り札

設計思考の鑑定眼かんていがん

FWピクトグラム_鑑定眼

思考のPDCAサイクルの最終工程の「見極め」スキルの思考テクニック。 本質を浮き彫りにする思考実験を支える枠組み

意図志向の設計者のノウハウ:11の思考テクニック

本章では、意図志向の設計能力の理解のため、意図志向の設計者の脳内の思考テクニックを考察する。

思考フレームワーク名 思考スキル名 思考テクニック名 思考テクニックの方法・目的 備考

設計思考の七つ道具

FWピクトグラム_七つ道具

判断 場合分け
場合分けピクトグラム
事象を区分する分類軸を一つ決め、対象がどれに分類できるか判定する 分類軸:年齢、性別、色、形、高さ、重さ など。
極端きょくたん論法
極端論法ピクトグラム
典型的な状況ではなく、通常では起きない状況(レアケース)で生じる現象を想像し、場合分け・絞り込みなど判断が妥当かを判定する
(起こり得ない)極端な事例を想像して、設計の許容範囲や限界値を探す
データが、最大値、最小値、巨大値、極小値、限界値、ゼロ、負の値、別種の値(例:数値の格納を想定したデータ領域に文字列データを格納) など極端な値のときに起きる現象を想像する。
しぼ
絞り込みピクトグラム

考案した仮説や設計方針が、課題解消の必要条件を十分に満たすかを判定し、分析や検討のゴールへ迫る。

満たすべき必要条件は、たいてい複数件から成る。
必要条件となる例:場合分けの分類軸、規則性から導いたパターン、1対1対応する組合せ など。
抽出 1対1対応
1対1対応ピクトグラム
あるデータの値の変化に対応して、別のもう一つのデータの値が決まる関係になるデータセットを探す 二つのデータには、相関そうかん関係(値の変化の影響が双方向)や因果いんが関係(値の変化の影響が一方向)がある。
規則性
規則性ピクトグラム
繰り返し現れている構造・形状・順番・傾向などの反復パターンを探す 一定間隔で繰り返す時間的規則、一定間隔で並ぶ空間的規則、特定の人(例:1歳児)がする行動的規則 など。
不変要素
不変要素ピクトグラム
状況が変わって(場所が移動、時間が経過、相方が交代、見る位置の変更 など)も影響されない(変わらない)本質や共通点を探す 物体やモノゴトを、表とウラから眺めてみて、同じように見えるなら、その見え方は物体やモノゴトの不変要素(本質)
次元下げ
次元下げピクトグラム
多様な側面を持つ(多次元)事象の分析は、特定の側面に視点を集中して単純化(次元下げ)し、脳の負荷(思考の難度)を下げて特徴を探す 3次元の情報量のうち、1次元を無視したり、写像して2次元の情報量に圧縮する

設計思考の三種の神器じんぎ

FWピクトグラム_三種の神器

メタ認知 視覚化
視覚化ピクトグラム
パターンや特徴を探しやすいように、複雑な情報を図・表・グラフ・色分け などの二次元情報に視覚化する
視覚化すると脳の空間認識能力が活性化し、脳の論理思考能力・言語能力との連携で脳内の統合情報量が増えるに連れて連想力が高まり、広い視野で発想できる
要素間の関係・関連を相関図に示したり、時間軸での要素の状態変化を遷移図・表・グラフ等で示し、特徴を可視化する
視点見直し
視点見直しピクトグラム
複雑な事象を分析する場合は、事象の対偶たいぐうを分析して脳の負荷(思考の難度)を下げる 対偶:事象の仮定と結論を否定し、両者を逆に表現した事象
例:「BでないならばAでない」の対偶は「AならばBである」

既知きち援用えんよう既知の援用ピクトグラム

未経験の課題に直面した時、すでに知っ(知られ)ている課題に当てめて類推るいすいすることで、脳の負荷(思考の難度)を下げる
既知の援用は暗黙あんもくに経験値(引出しの多さ)を求める高度な思考テクニック
課題を視覚化すると連想力が高まり、課題から既知の情報を類推する難度が下がる

設計思考の鑑定眼かんていがん

FWピクトグラム_鑑定眼

検証 実験・試行
実験・試行ピクトグラム
思考実験やシミュレーションを繰り返し、思いついた考え・方策などの有効性を徐々に高めることで、脳の負荷のピークを分散し思考の難度を下げる 最初は簡単なデータを使って実験し、考えが有効か試す。
適切なら、次は少し複雑なデータで試して有効性を判定する、を繰り返す。

意図志向の設計者は、無意識に複数の思考テクニックをぜて使うケースも多く、一つの思考テクニックで設計を完遂かんすいさせるとは限らない。

適用シーン別:具体的なシステム事例

本章では、意図志向の設計者の脳内の思考テクニックの理解促進を目的に、ソフトウエアの仕様・機能・構造等の設計への思考テクニックの適用てきよう可能性を事例で示す。

下表のソフトウエア設計での適用可能性欄は、意図志向の設計結果の一例。

思考テクニック 思考方法・目的 ソフトウエア設計での適用可能性
システム 適用シーン 思考テクニックを適用するシナリオ例
場合分け
場合分けピクトグラム
事象を区分する分類軸を一つ決め、対象がどれに分類できるか判定する 目的地までの最適経路を算出するカーナビシステム 詳細設計 車種(バス、トラック、乗用車など)による道路の通行制限を考慮し、車種で場合分けした上で経路を算出する。
場合分け|カーナビシステム
極端きょくたん論法
極端論法ピクトグラム
典型的な状況ではなく、通常では起きない状況(レアケース)で生じる現象を想像し、場合分け・絞り込みなど判断が妥当か判定する
(起こり得ない)極端な事例を想像して、設計の許容範囲や限界値を探す
西暦年数記録関数 詳細設計の妥当性検証 「日常生活で西暦年数は『25年』『73年』など2桁数字で呼ぶ慣習に合わせ、変数サイズを2桁分に設計する」という先入観に対し、西暦2125年という極端な値を想像する。 → 「2桁だと西暦2025年も西暦2125年も同じ『25年』となって識別できず、『2桁分』のデータサイズ設計は不適」と判定する。
極端論法|西暦年数記録関数
しぼ
絞り込みピクトグラム
考案した仮説や設計方針が、課題解消の必要条件を十分に満たすかを判定し、分析や検討のゴールへ迫る 次世代スマートフォン・システム 仕様設計(エコ要件対応の設計案絞り込み) 案①:就寝時間帯の省電力モード設定(電力30%減、応答40%遅)
案②:アプリ単位での省電力モード設定(電力15%減、応答15%遅)
案③:ユーザの利用時間傾向の学習後、時間帯別に省電力モード設定(電力20%減、応答1%遅)
案④:ユーザのアプリ利用傾向の学習後、アプリ別に省電力モード設定(電力25%減、応答3%遅)
→対策案③と④に絞り込み
絞り込み|エコ対応
移動体端末(例:スマートフォン)の通信相手先の基地局選択システム 仕様設計(通信相手先の絞り込み) 優先①:信号受信強度が強い順で、強度50%以上
優先②:回線混雑度が低い順で、混雑度75%以内
優先③:通信遅延が小さい順で、遅延時間50ms以内
優先④:近隣端末の電波干渉が小さい順で、干渉影響率15%以内
優先⑤:通信断念でエラー通知
絞り込み_ 移動体端末の通信相手先の基地局選択システム
1対1対応
1対1対応ピクトグラム
あるデータの値の変化に対応して、別のもう一つのデータの値が決まる関係になるデータセットを探す 給与支払額計算プログラム 仕様設計 パートタイム契約の社員は、勤務時間数が決まると、給与月額が決まる、また給与月額が分かればその月の勤務時間数が分かる。
1対1対応_ 給与支払額計算プログラム
『スペースインベーダー』などシューティングゲーム 仕様設計 自機が敵弾に当たって破壊される(データの変化)と、自機の残数(一対のデータ)表示が1機減る。
1対1対応|シューティングゲームのキャラクターと、それらを制御するロジックが正確に結びついている様子
規則性
規則性ピクトグラム
繰り返し現れている構造・形状・順番・傾向などの反復パターンを探す
 
文字認識プログラム 機能設計 手書き文字の形状抽出用にメッシュに分割したビッグデータから、ある文字の形状が持つパターンを抽出し、文字ごとの特徴的な形状点モデルを学習する。
規則性_文字認識
大規模言語モデル 機能設計 インターネット上で公開されている膨大な文書データから、たとえば{「今日は」「  」「なので」「とても」「清々しい」}という文を大量に漁って「  」に繰り返し出現している単語を調べ、出現頻度が高い単語を学習する。
規則性_大規模言語モデル
不変要素
不変要素ピクトグラム
状況が変わっても(場所が移動、時間が経過、相方が交代、見る位置の変更 など)影響されない(変わらない)本質や共通点を探す 新幹線の座席指定システム 機能設計 N700系車両は、出発日・時刻、乗車駅に関わらず、座席指定に必要な席種(普通席、グリーン車など)、座席番号、座席位置(窓側、通路側など)は不変データ。
不変要素|新幹線の座席予約システムにおける、固定された(不変の)情報と可変な情報の明確な区別
次元下げ
次元下げピクトグラム
多様な側面を持つ(多次元)事象の分析は、特定の側面に視点を集中して単純化(次元下げ)し、脳の負荷(思考の難度)を下げて特徴を探す 飛行機の航跡データを地図上に点描てんびょうするプログラム 機能設計 飛行機の位置情報の3次元座標(緯度いど経度けいど・高度)から、緯度・経度だけを使って地図上の2次元座標(点描位置)を探す。
次元下げ_飛行機の航跡データを地図上に点描するプログラム
戦闘機バトルゲームのプログラム 機能設計 敵機(3次元空間を飛行)をコックピットのミサイル照準しょうじゅん設定画面(2次元平面)に表示するには、3次元座標を透視とうし変換演算えんざんして2次元座標へ写像しゃぞうし、画面上での描画びょうが座標を探す。
次元下げ戦闘機バトルゲームのプログラム
視覚化
視覚化ピクトグラム
パターンや特徴を探しやすいように、複雑な情報を図・表・グラフ・色分け などの二次元情報に視覚化して連想力を高める SNSの画面遷移せんい仕様 仕様設計の妥当性だとうせい確認(抜け・漏れ検証) 表示画面の変遷や他の画面での設定情報との関係から、画面の遷移仕様の妥当性を検証するために、タイムライン画面→友達の投稿画面→メッセージ送信画面 など遷移先画面と遷移条件を状態遷移じょうたいせんい図(または状態遷移表)にして抜け・漏れの気付きを喚起かんきする。
視覚化_ SNSの画面遷移仕様
ロボット動作モータ制御プログラム シーケンス設計 外部からの信号(スイッチ、センサーなど)に対する応答時間、モーターの回転開始、停止、速度変化のタイミングを厳密げんみつにシーケンス図にまとめて表す。
視覚化_ ロボット動作モータ制御プログラム
目的地までの最適経路を算出するカーナビシステム 画面遷移せんい仕様設計 たとえば「ホーム画面:(ユーザーが目的地設定ボタンを押す) → 目的地設定:(目的地が確定し、ルート検索ボタンを押す) → ルート検索:(ルートが選択され、ナビゲーションを開始する)→ ナビゲーション:(目的地に到着し、ナビゲーションを終了する) → ホーム画面」という画面遷移仕様を、遷移先画面と遷移条件を指定する状態遷移じょうたいせんい図(または状態遷移表)で表す。
視覚化|カーナビ画面遷移
視点見直し
視点見直しピクトグラム
複雑な事象を分析する場合は、事象の対偶を分析して脳の負荷(思考の難度)を下げる システム不問の典型的不具合原因 詳細設計の妥当性確認 プログラムの入力データにエラーがあると、プログラム中の条件分岐文の条件式が複雑化し、不具合混入を誘発する。
視点見直し|不具合誘発
システム不問の典型的不具合対策 プログラムの入り口で入力データのエラーの場合を除外すると、プログラム中の分岐文の条件式が相対的に単純化し、不具合混入リスクが低下する。
視点見直し|高品質

既知きち援用えんよう既知の援用ピクトグラム

未経験の課題に直面した時、すでに知っ(知られ)ている課題に当てめて類推することで、脳の負荷(思考の難度)を下げる

人工呼吸器システム システム機構設計の効率化 燃料噴射ねんりょうふんしゃ制御システムの設計経験者が、新たに人工呼吸器システムを設計するに際し、すでに知識がある燃料噴射制御システムの機能構成を参考にして、人工呼吸器システムに必要な機能構成を設計する。
既知の援用 _ 人工呼吸器システム
電話機の通信制御システム 機能分割設計 国際標準のOSI参照モデルの階層単位でタスクを分割する。
既知の援用|電話機の通信制御システム
システム不問 機能分割に際し、構造化設計手法でのモジュール分割概念のSTS分割に基づいて、「入力」「変換」「出力」のサブ機能へ分割する。
既知の援用|STS分割
検索エンジン 詳細設計 情報検索の応答性能を上げるために、高速検索手順の定石じょうせきといえる二分木にぶんき探索アルゴリズムを利用する。
既知の援用|検索エンジン
関係データベースシステム 大容量データを持つデータベースの検索高速化を狙い、索引を設ける属性(列)を設計する。
既知の援用|RDBのINDEX設計
実験・試行
実験・試行ピクトグラム
思考実験やシミュレーションを繰り返し、思いついた考え・方策などの有効性を徐々に高めることで、脳の負荷のピークを分散し思考の難度を下げる システム不問のプロトタイピング 要件満足度の検証 システムのプロトタイプ(模型)が、初号機として実現すべきの要件を満たすかを検証するテスト項目を設計する。
実験・試行|項目不足確認設計
システム機構設計の検証 機構設計したシステムのプロトタイプ(模型もけい)が、恒常こうじょう的に機能を満足する安定性を具備ぐびするなど、設計した機構の品質を検証するテスト項目を設計する。
実験・試行|品質テスト設計
乱数らんすう生成器プログラムの処理手順 詳細設計の実験・試行

最初は少けたの出力で乱数周期(生成する乱数が再び同じパターンに戻るまでの長さ)を実験し、徐々に桁数を増やしても乱数周期の維持を試行して、乱数生成器内の処理手順の妥当性を検証する。
実験・試行|乱数生成器

結論:設計力を向上させる脳の使い方

本記事では、「効率的に脳を使う設計方法」として、課題解決の核となる思考スキルを「七つ道具」「三種の神器じんぎ」「鑑定眼かんていがん」という独自の思考フレームワークに整理し、具体的なテクニックを解説した。
「七つ道具」で網羅的に情報を抽出し、「三種の神器」で多角的な視点からメタ認知を行い、最後に「鑑定眼」で見極め、仮説の設計解の採否を決める。
この思考フローは、勘や経験のみに依存せず、論理的で効率的に最適な設計解を導き出せる設計者へ成長するロードマップの中核だ。

次回は「ソフトウエア設計書に描きたい項目」を解説します。
ソフトウエア設計シリーズの目次はこちら

この記事を書いた人
公政

ヒトの行動原理を、書籍や番組で得た「知恵」「知見」を基に言語化します。
ヒトの行動原理に、ソフトウエア開発畑での設計の仕事で蓄積した知見を組み合わせ、独自視点で編成し言語化した『知恵』を発信しています。
ご興味あれば他の記事もご覧ください。

公政をフォローする
知の和技の和

コメント