「設計する」とは、人が「考える行為」の一種だ。
優れたソフトウエア設計技術者は、トップダウン思考で設計に取り組み、画期的なシステムを作る。
本シリーズは設計と文書化をテーマとし、本記事では設計するための「脳の使い方」の基本を説明する。
| ソフトウエア設計シリーズ「守」① |
トップダウン思考 | 松浦公政 | 2023年 | |
| 対象読者 |
トップダウン思考に興味がある方 | |||
| 脳の特性とボトムアップ思考の相性に興味がある方 | ||||
| モノ作りの基盤となる思考方法に興味があるIT技術者・システムエンジニア | ||||
記事の音声解説付き(下のプレイボタンで解説開始)
システム志向
たとえば自動車のような複雑な製品を製造しようとすると、ハンドルなどの操作系から作るか、エンジン・タイヤなどの駆動系から作るかなど、何から手を付けるか途方に暮れる。
| どれだけ複雑なモノでも、端からコツコツ作り上げて行けば、やがて完成するが、複雑度が高い製品だと完成以前に自分の寿命が尽きる。 |
| だから ⇩ |
| 複雑なメカニズムを持つ製品(自動車やコンピュータなど)は、基本的に出来上がったパーツ(部品)を組み上げて作る。 |
| 結合する部品の種類・数が多いほど、多くの機能を持つ「多機能システム」になる。 | |
| だが ⇩ | |
| 結合する部品数が多いほど「高機能」とは限らず、部品がたくさん集まっていても部品同士の連携や補完性が低くて、魅力が乏しいシステム(や製品)も珍しくない。 | |
| 「1+1=2」ではなく、「1.5」に留まったり、足を引っ張り合って「0.7」になるシステムもある。 | |
| 高機能・高性能な製品は、システムを構成する部品同士が適切に繋がって効果を発揮している。 | |
| 適切に部品を組み合わせると、誰も見たことがない機能や、使い勝手が良い製品が創造される場合もあり、システム化は、「1+1 ➡ 3」も起こし得る。 | |
| 新たに創造された価値に富む製品を「付加価値」が高い製品と呼ぶ。 | |
ヒトの脳のメカニズムとシステム思考の相性
| 経済評論家が言いそうなオモテの理由 | ヒトの脳力が制約するウラの理由 | |||||||
|---|---|---|---|---|---|---|---|---|
| 並行に製造した部品を組み上げる方が、トータルの製造期間つまり納期を短縮できて売りやすい、という経済的メリット。 | 機能を単純化した小規模な部品は容易に作れるが、複雑で大規模な製品を「ひとかたまり」で考えると、①途中で製造ミスしやすく ②やり直しが多発して作るのに時間を要するから。 | |||||||
| ミスが出る原因 ⇩ | ||||||||
| ヒトの脳の特徴 | ||||||||
| ヒトが思考するときは脳の「短期記憶(作業記憶)領域」内で行い、短期記憶が同時に扱える意味の塊の単位(チャンクと呼ぶ)は最近の研究では4±1個らしい。 | ➡ | ヒトが同時に扱えるチャンク数は4±1個と絶望的に少なく、チャンク限界を超えて思考するときは、どれかのチャンク(意味情報)を短期記憶領域外へ追い出して入れ替える。 | ||||||
| この結果 ⇩ | ||||||||
| 多数の情報を使って思考しようとすると、次の問題が生じる。 | ||||||||
| 多数の情報を使って思考すると、短期記憶内のチャンクの入れ替え(スワッピング)頻度が高まる。 | ➡ | 短期記憶領域の記憶入替え所要時間(「えーっと」と思い出す時間)は、思考時間より長いので、思考速度が低下する。 | ➡ | 入れ替え操作に要するエネルギー消費量は多く、脳の疲労度が増して集中力が低下する。 | ||||
思考対象のテーマの規模がもたらす影響
| 思考規模 | 小規模 | 大規模 | |
|---|---|---|---|
| 影響 | 短時間で効率的に考えられる。 | 思考が発散して効率が悪化する。 | |
| 次第に ⇩ | |||
| 主観的に複雑と感じて「考えるのが嫌になった」と投げやりになる。 | |||
| 結論の品質 | 隅々まで配慮した上での結論。 | 考慮の浅い表面的な結論。 | |
| 思考の品質を上げる条件 | モノ作りで成功する条件 | ||
| 人の脳の特徴を考慮すると、大きな問題をいかに局所化できるかが、思考を成功に導くカギ。 | モノ作りに当てはめると ➡ |
複雑な製品でも、小規模な部品を組み上げて作るように工夫(システム化)すると、成功確率が上がる。 | |
ヒトの脳の特性と相性が良い「ボトムアップ思考」
| 現代社会には、すでに多様な部品があり、製品開発に再利用できる環境が整っている。 |
| この結果 ⇩ |
| 現代の製品開発現場では、既存の部品をいかに効果的に利用するかが課題になる。 |
| 既製品の利用方法に着目する考え方は ⇩ |
| 末端の部品を寄せ集めて組み合わせ、少しずつ積み上げて作る「ボトムアップ思考」が求められる。 |
| ボトムアップ思考(下の階層から積み上げ式に考える)のイメージ ※思考順序欄が下(ボトム)から上へアップすることに注目 |
|||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 思考順序 | 思考の対象(設計の段階) | 思考難度 | |||||||||||
| ↑ | ④ | 仕様の設計 | ![]() |
難 | |||||||||
| ↑ | システム(=製品)が完成する。 | ||||||||||||
| ↑ | |||||||||||||
| ↑ | 完成品のイメージ | ⇧ | |||||||||||
| ↑ | ⇧ | ・ | |||||||||||
| ↑ | ③ | 機能の設計 | ![]() |
・ | |||||||||
| ↑ | さらに必要な末端部品を結合する。 | ・ | |||||||||||
| ↑ | ・ | ||||||||||||
| ↑ | ⇧ | ・ | |||||||||||
| ↑ | ② |
構成の設計 | ![]() |
・ | |||||||||
| ↑ | 末端部品を結合する。 | ・ | |||||||||||
| ↑ | ・ | ||||||||||||
| ↑ | ・ | ||||||||||||
| ↑ | ⇧ | ⇩ | |||||||||||
| ↑ | ① | ![]() |
内部の設計 | 易 | |||||||||
| ↑ | 製品の末端部品を集める。 | ||||||||||||
| ↑ | |||||||||||||
⇧
| 思考順序の各局面で脳が判断することは、 | |||
| 局面 | 脳に求められる判断 | ||
|---|---|---|---|
| 末端部品を集める | 既製品が目的に合うかの観点で選択 | ||
| 末端部品を結合する | 結合させる手指の操作方法の判断 | ||
| など、各局面で「考える」べき範囲は限定されている。 | |||
ボトムアップ思考は、記憶領域にため込んでいる様々な事象・現象の「知識」に含まれる共通項を見出し、課題の解決方法を探す(帰納的にアプローチする)思考方法。
脳の観点でボトムアップ思考が求められる理由は ⇩
末端部品は小規模なので、作ったり組合わせ方を考える際に、考慮すべき範囲が限られ、脳はあまり疲労感を覚えなくて済む。
| ヒトが末端部品に心惹かれる理由 | ||||||||
|---|---|---|---|---|---|---|---|---|
| 末端部品ほど規模が小さい。 | だから ➡ |
考えなければならない範囲が狭くて済む。 | そうすると ➡ |
脳が「考え疲れ」を起こしにくい。 | この結果 ➡ |
摂取する栄養量が少なくて済む。 | ||
ヒトは脳を発達させるように進化した副作用で、脳を生かすために莫大なコストを払う羽目に陥っている。
| 脳の活動 | 指令センターである脳の活動は「思考」に限らず、たとえば心臓を動かす筋肉など全身の「筋肉」を無意識下で連続的に制御するなど寝ている間も休むことなく活動している。 | ヒトが眠っている間も脳の無意識部分は働き続けており、エネルギーを使っている。 | ➡ | 朝起きた時に空腹を感じる理由は、睡眠中に脳がエネルギーを消費したから。 |
|---|---|---|---|---|
| 脳の運用コスト | ヒトの脳の重さは体重の2%しかないのに、ヒトが消費するエネルギーのうち、カロリーの20%(ブドウ糖の25%)を使うため、ヒトの肉体の構成部品の中ではダントツに欲深い部品(器官)。 (【参考】Gigazine「脳をフル活用するとカロリーが大量に消費されるというのは本当か?」) |
|||
ヒトは、最も近縁種のチンパンジーと比べて、脳の重量を3倍に進化させて「思考能力」を高めたものの、進化させた脳の運用コストがベラボーに高く、脳を養うために食欲を我慢しない。![]() 大脳サイズ比較 |
||||
ヒトは食べ物が不足する環境で進化したため ⇩
| 脳は貴重なエネルギーをなるべく節約しようと、頭が回らないほど疲労してしまう前に活動をセーブしようと自重する(自動ブレーキ)。 | 主観的には ➡ |
ボトムアップ思考で仕事(や作業)すると、脳をあまり疲れさせなくても「ほどほどの達成感」を得られるように脳内で化学反応が起きる仕組みを備えている。 |
「ボトムアップ思考」の罠
| ボトムアップ症候群 | ボトムアップ思考で作業すると、脳をあまり疲れさせずに「ほどほどの達成感」を得られる麻薬的な魅力があり、なかなか抜け出せない。 |
ソフトウエア開発業界で見られるボトムアップ症候群 ⇩
| 適当に使おう症候群 | 「GitHub」などで公開されている手頃な部品を拾ってきては、設定だけ変えて「適当に使おう」と試行錯誤し、「あり合わせのモノ」で間に合わせることばかり考えるようになる。 |
次の発言が多いタイプはボトムアップ思考の罠に陥りやすい。
| 典型的な発言 | ⇦ | 結論から得る「ほどほどの達成感」で思考を終わらせようと、ヒトの脳が進化する過程で獲得した思考の処世術。 |
| 理屈は要らんから結論を簡潔に述べろ。 | ||
| 回りくどい説明は時間の無駄だからやめろ。 | ||
| 自分の身体は難しい説明は受付けない/嫌いだ。 |
思考の処世術の支配が強い脳は ⇩
| 価値観 | ➡ |
信仰傾向 | ➡ | 信じる陰謀論の例 |
| シンプルな理由ほど真実に近いと見做す。 |
モノゴトを単純化した「陰謀論」を信じる。 |
「左翼」のせいで国が滅びる。 | ||
| 「ネトウヨ」が戦争を起こす。 |
| 利点 | ⇔ | 欠点 | |
|---|---|---|---|
| 既存の部品を探す「再利用技術」が向上して生産性が向上する。 | 全体を俯瞰する「構想力」が向上しない。 | ||
| 欠点の方が強く出ると ⇩ | |||
| ボトムアップ思考は、末端に注目する副作用で「木を見て森を見ない」状態に陥って全体を見通せなくなる。 | |||
| たとえば大企業の標準的な社員は、自分が所属する「課」「係」などの末端組織しか見ず、会社を俯瞰できない人が多い。 | |||
| この症候群が引き起こす症状は ⇩ | |||
| 目的を見失い、モノ作りなどの仕事の本来のニーズに応えられなくなる。 | |||
| 本人は、森が見えてないとの認識も弱い。 | |||
「トップダウン思考」の必要性
| モノ作りの本来の目的を見失わないためには、末端部品のことは忘れ、そもそも「何を作りたいのか」「何が求められているか」を強く意識する必要がある。 |
| そのためには ⇩ |
| 製品の最終ゴールの明確なイメージを意識に上げ、そのゴールに向かって常に「必要な要素(やメカニズム)を考える」という思考様式を持つ。 |
| そして ⇩ |
| 分解した要素のひとつに着目し、その要素を実現するために必要な要素(やメカニズム)を考える。 |
| これを繰り返して ⇩ |
| 考える要素のサイズを段々小さくしていく。 |
⇩
この思考様式を「トップダウン思考」と呼ぶ
トップダウン思考は、本来「こうありたい」という理想論から出発し、理想を実現する過程で現れてくる課題の解決方法を探る(演繹的にアプローチする)思考方法。
トップダウン思考は、脳にある抽象的な事象・現象の記憶を繋ぎ合わせて全体像を構想する思考方法。
| トップダウン思考(上の階層から分割式に考える)のイメージ ※思考順序欄が上(トップ)から下へダウンする点に注目 |
|||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 思考順序 | 思考の対象(設計の段階) | 思考難度 | |||||||||||
| ↓ | ① | 課題の定義 | ![]() |
難 | |||||||||
| ↓ | 近眼の人の生活を改善したい。 |
||||||||||||
| ↓ | |||||||||||||
| ↓ | 解決したい課題 | ⇧ | |||||||||||
| ↓ | ⇩ | ・ | |||||||||||
| ↓ | ② |
原因分析 | ![]() |
・ | |||||||||
| ↓ | 近視の人は眼球内のレンズ(水晶体)が厚く、網膜の投影像のピントが合ってない。 | ・ | |||||||||||
| ↓ | ・ | ||||||||||||
| ↓ | ・ | ||||||||||||
| ↓ | 課題の原因分析 | ・ | |||||||||||
| ↓ | ⇩ | ・ | |||||||||||
| ↓ | ③ | 解決策の構想 | ![]() |
・ | |||||||||
| ↓ | 眼の前に光の角度を矯正するレンズを置いて、網膜に映る像のピントを強引に合わせる。 | ・ | |||||||||||
| ↓ | ・ | ||||||||||||
| ↓ | ・ | ||||||||||||
| ↓ | 構想設計 | ・ | |||||||||||
| ↓ | ⇩ | ・ | |||||||||||
| ↓ | ④ | 新しい概念の想起 | ![]() |
・ | |||||||||
| ↓ | 耳に引っ掛けて固定すれば、レンズを手で支え続ける必要がない。 | ・ | |||||||||||
| ↓ | ・ | ||||||||||||
| ↓ | 概念設計 | ・ | |||||||||||
| ↓ | ⇩ | ⇩ | |||||||||||
| ↓ | ⑤ | 仕様の設計 | ![]() |
中 | |||||||||
| ↓ | 作るモノのイメージをスケッチする。 | ||||||||||||
| ↓ | |||||||||||||
| ↓ | ⇧ | ||||||||||||
| ↓ | 完成品のイメージ | ・ | |||||||||||
| ↓ | ⇩ | ・ | |||||||||||
| ↓ | ⑥ | 機能の設計 | ![]() |
・ | |||||||||
| ↓ | どんな部品が必要になるか考える。 | ・ | |||||||||||
| ↓ | ・ | ||||||||||||
| ↓ | ⇩ | ・ | |||||||||||
| ↓ | ⑦ |
構成の設計 | ![]() |
・ | |||||||||
| ↓ | 部品を作る上で必要な要素を考える。 | ・ | |||||||||||
| ↓ | ・ | ||||||||||||
| ↓ | ・ | ||||||||||||
| ↓ | ⇩ | ⇩ | |||||||||||
| ↓ | ⑧ | ![]() |
内部の設計 | 易 | |||||||||
| ↓ | 製品を作る上で必要になる末端部品を考える。 | ||||||||||||
| ↓ | |||||||||||||
| ↓ | |||||||||||||
| トップダウン思考では、すでにある部品を効果的に使うアイディアよりも、「こんな機能の部品が欲しい」が思考のアウトプットになる。 |
| つまり ⇩ |
| トップダウン思考を支える知的能力は、未だ存在しないモノを思考する「想像力」になる。 |











コメント