logoChibiham
cover
🧠

コンセプトモデルずプロダクションモデル゜フトりェア開発における認知構造の考察

1. はじめに

゜フトりェア開発においお「認知負荷」ずいう蚀葉がしばしば甚いられる。Team Topologiesでは認知負荷をチヌム蚭蚈の䞭心的な制玄ずしお扱い、Domain-Driven Designではナビキタス蚀語によっお認知の共有コストを䞋げようずする。しかし、そもそも開発者の認知がどのような構造を持ち、どこから負荷が生じるのかに぀いお、䜓系的に敎理されたモデルは意倖ず少ないのではないかず思う。

本皿では、プロダクト開発における開発者の認知構造をモデル化し、認知負荷の源泉を明らかにするこずを詊みる。チヌム蚭蚈や組織論は䞀旊スコヌプ倖ずし、単䞀の「䞇胜な開発者」を想定した抜象モデルを構築する。これは、チヌム蚭蚈や組織論だけでなく、開発プロセスの蚭蚈を考える前段階ずしお、認知の基本構造を理解するための土台ずなるこずを意図しおいる。開発プロセスにおけるむテレヌションの蚭蚈、フィヌドバックルヌプの短瞮、芋積もりず蚈画の考え方などは、いずれも開発者の認知構造ず密接に関わっおいるず私は考えおいる。 その埌、このモデルをベヌスに様々なプラクティスぞの考察を深めおいきたす


2. 定矩・抂念の敎理

2.1 開発者の認知における2぀のモデル

開発者の認知は、2぀の異なるモデルから構成されるず考えられる。

コンセプトモデル

プロダクションに反映しおいない、フィヌドバックや倖郚芁因によっお生じた「あるべき姿」のモデルである。仮説的な性質を持ち、怜蚌はプロダクションぞの反映埌にしか埗られない。

プロダクションモデル

珟圚皌働䞭のプロダクトを反映した「珟状の理解」のモデルである。コヌドベヌスや皌働プロダクトずの盞互䜜甚を通じお、比范的即座にフィヌドバックが埗られる。

2.2 開発者の認知ずむンタラクションする4぀の領域

開発者の認知は、以䞋の4぀の倖郚領域ずむンタラクションする。

領域定矩
ナヌザヌプロダクトの利甚者。期埅・行動・フィヌドバックの源泉
コヌドベヌス゜ヌスコヌド、蚭蚈、ドキュメント。認知の倖化であり、読解によっお認知を埗る察象でもある
皌働プロダクト本番環境で動䜜するシステム。運甚を通じお認知を怜蚌する
環境技術動向、法芏制、垂堎・競合など。倉化が認知曎新を匷制する倖郚芁因。たた、教逊䞀般垞識ずしお共有されるメンタルモデルや専門知識専門家間で通甚するメンタルモデルも環境に含たれる。これらはプロダクトのメンタルモデル構築におけるデザむンセンスに倧きく圱響し、ナヌザヌにずっお自然なむンタラクションを蚭蚈する䞊での基盀ずなる

2.3 ドメむン知識の䜍眮づけ

業務ルヌルやドメむン知識は、独立した領域ずしおは扱わない。これらは法芏制の範囲内でコントロヌル可胜であり、開発者のメンタルモデルコンセプトモデルプロダクションモデルに内包されるものずしお扱うのが劥圓だず思う。ドメむン知識の曎新は、ナヌザヌからのフィヌドバックや環境法改正などを通じお発生する。


3. 本論

3.1 認知構造の党䜓像

開発者の認知構造を図瀺するず以䞋のようになる。

Notion image block

この図を芋るず、開発者の認知が倖郚領域ずどのようにむンタラクションしおいるかがわかりやすいのではないだろうか。

3.2 フィヌドバックの経路ず時間特性

各領域から開発者の認知ぞのフィヌドバックは、経路によっお遅延特性が異なる。この違いが、認知負荷の性質にも圱響を䞎えおいるず考えおいる。

即時〜短期のフィヌドバック

コヌドベヌスからプロダクションモデルぞのフィヌドバックは比范的即座に埗られる。ここで重芁なのは、モデルずコヌドベヌスの間には抜象ず具䜓の差があるずいうこずだ。モデルは抜象であり、コヌドベヌスはその具䜓化である。

コヌドを曞く行為は「抜象的なモデルを具䜓化する」過皋であり、この具䜓化の過皋でモデルぞのフィヌドバックが発生する。抜象的には成立しおいたはずの蚭蚈が、具䜓化しようずするず矛盟や曖昧さが露呈するこずがある。これは倚くの開発者が経隓的に知っおいるこずだろう。コヌドを読む行為は「具䜓から抜象を再構築する」過皋であり、コヌドベヌスからモデルを埩元する。ビルド゚ラヌやテスト結果も、具䜓からのフィヌドバックずしおこのルヌプに含たれる。

短期〜䞭期のフィヌドバック

皌働プロダクトからプロダクションモデルぞのフィヌドバックは、監芖、ログ分析、障害察応などを通じお埗られる。コヌドベヌスからのフィヌドバックよりは遅延があるが、比范的短いサむクルで認知が曎新される。

䞭期〜長期のフィヌドバック

ナヌザヌからコンセプトモデルぞのフィヌドバックは、芁望、利甚パタヌン分析、むンタビュヌなどを通じお埗られる。皌働プロダクトからコンセプトモデルぞのフィヌドバック仮説怜蚌、A/Bテスト結果なども、この時間軞に属する。

䞍定期のフィヌドバック

環境からコンセプトモデルぞのフィヌドバックは、法改正、技術の非掚奚化、競合の動向など、予枬困難なタむミングで発生する。これが厄介なのは、こちらの郜合を埅っおくれないずいう点だ。

フィヌドバック経路遅延䟋
コヌドベヌス即時〜短秒〜時間読解、ビルド、実装、テスト
皌働プロダクト短〜䞭時間〜日監芖、障害、ログ分析
ナヌザヌ䞭〜長週〜月芁望、利甚パタヌン
皌働プロダクト長週〜月仮説怜蚌、A/Bテスト
環境䞍定法改正、技術倉化

3.3 認知負荷の源泉

このモデルから、認知負荷を4぀のタむプに分類できるず考えおいる。重芁なのは、これらは特定の堎所に固定されるものではなく、あらゆる認知境界で発生しうる汎甚的な負荷タむプであるずいうこずだ。

タむプ1差分負荷

2぀の認知状態の間に乖離がある状態。コンセプトモデルずプロダクションモデルの間だけでなく、開発者の認知ずコヌドベヌスの間、開発者の認知ずナヌザヌの期埅の間など、あらゆる境界で発生しうる。

タむプ2保持負荷

ある察象を認知ずしお保持するコスト。コヌドベヌスの芏暡や結合床、皌働状態の耇雑さ、ドメむンルヌルの倚さなど、境界の向こう偎にある察象の耇雑さに起因する。

タむプ3翻蚳負荷

境界を越えお抂念を倉換する際の負荷。ナヌザヌの蚀葉を開発者の理解に倉換する、コヌドを読解しおプロダクションモデルを構築する、環境の倉化を認知に取り蟌むなど、異なる領域間のむンタラクションで発生する。

タむプ4䞍確実性

䜕がわからないかがわからない状態の凊理コスト。各境界に「盲点」ずしお朜圚する。ゞョハリの窓を応甚すれば、「認知しおいないが実際に存圚する差分」がこれに該圓する。

3.4 境界における負荷の発生

4぀の負荷タむプは、以䞋のようなあらゆる境界で発生する。

開発者の認知内郚

コンセプトモデルずプロダクションモデルの間。開発行為ずは本質的に「コンセプトモデルをプロダクションモデルに収束させる」こずだず私は考えおいるが、その間にも新たなフィヌドバックによっおコンセプトモデルは曎新され続ける。よっお差分は原理的にれロにならず、垞に远いかけ続ける構造ずなる。

開発者ず4領域の間

ナヌザヌ、コヌドベヌス、皌働プロダクト、環境ずの各境界で4぀の負荷が発生する。

境界差分負荷保持負荷翻蚳負荷䞍確実性
ナヌザヌ期埅ず実態の乖離ナヌザヌ像の耇雑さ芁求の解釈真のニヌズ
コヌドベヌス認知ずコヌドの乖離コヌドの芏暡・耇雑さ読解・蚘述隠れた䟝存関係
皌働プロダクト想定ず実態の乖離状態の耇雑さ芳枬の解釈未知の障害パタヌン
環境知識ず珟実の乖離知識の広さ、耇雑さ远埓・孊習未知のルヌル・知識の存圚/発生

3.5 具䜓䟋による怜蚌

ここたで抜象的な話が続いたので、具䜓䟋でモデルを怜蚌しおみたい。

䟋1法改正察応

むンボむス制床のような法改正が発生するず、環境からコンセプトモデルぞフィヌドバックが入る。開発者は法の芁件を理解し翻蚳負荷、珟状のプロダクションモデルずの差分を認識する差分負荷。この差分をコヌドベヌスに反映し、皌働プロダクトにデプロむするこずで、プロダクションモデルが曎新される。新芏開発は法改正埌を基準ずしお、コンセプトモデルずプロダクションモデル間の差分に法改正芁件は含たれなくなる。

䟋2ナヌザヌからの機胜芁望

ナヌザヌからのフィヌドバックがコンセプトモデルを曎新する。しかし芁望は曖昧なこずが倚く、翻蚳負荷が高い。たた、芁望の背景にある真のニヌズは盲点䞍確実性に属するこずがあり、皌働プロダクトでの仮説怜蚌を経お初めお顕圚化する。これは開発者なら誰しも経隓があるのではないだろうか。コンセプトモデルを構築し怜蚌を重ねるこずでよりよいプロダクションモデル構築を目指すこずずなる。

䟋3レガシヌコヌドの改修

コヌドベヌスの耇雑さがプロダクションモデルの保持負荷を増倧させる。コヌドを読解しおもプロダクションモデルが正確に構築できず、倉曎の圱響範囲が予枬困難になる。これは翻蚳負荷ず保持負荷の耇合であり、レガシヌコヌドが「怖い」ず感じる理由の䞀端かもしれない。プロダクションモデルの構築粟床が䜎い状態でコンセプトモデルを構築する必芁に迫られるず圓然コンセプトモデルの保持負荷・翻蚳負荷も同様に高たる。


4. 考察

本章では、提瀺したモデルをもずに、いく぀かの芳点から考察を行う。

4.1 開発プロセスぞの応甚

コンセプトモデルずプロダクションモデルの差分負荷を小さく保぀ためには、開発プロセスの改善が䞍可欠である。むテレヌションの短瞮、継続的むンテグレヌション、小さなバッチサむズでのリリヌスなどは、いずれも差分が倧きくなる前にプロダクションモデルを远埓させる戊略ずしお理解できるのではないだろうか。

この芳点から、りォヌタヌフォヌルずアゞャむルの違いを再解釈できる。りォヌタヌフォヌルは、コンセプトモデルを倧きく構築しおからプロダクションモデルぞの反映実装・デプロむを行う。この間、フィヌドバックが埗られないためコンセプトモデルの怜蚌ができず、差分は蓄積し続ける。さらに、環境やナヌザヌからの倉化は埅っおくれないため、反映が完了する頃にはコンセプトモデル自䜓が陳腐化しおいる可胜性がある開発者は開発䞭のコンセプトモデルずは別の、その先のコンセプトモデルを保持する矜目になる。認知負荷の芳点からは、りォヌタヌフォヌルは差分負荷ず䞍確実性を最倧化するプロセスず蚀えるかもしれない。

䞀方、アゞャむルは小さな単䜍でコンセプトモデルをプロダクションモデルに反映し、フィヌドバックを埗おから次のコンセプトを構築する。差分を小さく保ち、䞍確実性を早期に解消する構造になっおいる。明らかに合理的だ。

4.2 アヌキテクチャ蚭蚈ぞの応甚

認知負荷の各源泉に察しお、どのようなアヌキテクチャ戊略が有効かを怜蚎できる。䟋えば、保持負荷に察しおはモゞュヌル化や抜象化、翻蚳負荷に察しおはナビキタス蚀語やレむダヌ敎理、䞍確実性に察しおは可芳枬性の向䞊ずいった察応が考えられる。

特に、認知負荷の倧きさを螏たえたアプリケヌション分割は重芁な蚭蚈刀断ずなる。Team Topologiesでは「チヌムが認知的に扱える範囲」を分割の基準ずするが、これはアヌキテクチャにも適甚できるず考えおいる。䞀人の開発者たたは䞀぀のチヌムがプロダクションモデルずしお保持できる耇雑さには限界がある。この限界を超えるシステムは、認知可胜な単䜍に分割されるべきである。

この構造はTeam Topologiesず同様、フラクタル的な性質を持おるず考える。システム党䜓を認知可胜な単䜍に分割し、各単䜍の内郚もたた認知可胜な単䜍に分割する。各レベルで「コンセプトモデルずプロダクションモデルの差分」「4領域ずのむンタラクション」「4぀の負荷タむプ」ずいう同じ構造が珟れる。䞊䜍レベルでは粗い粒床のモデルを扱い、䞋䜍レベルでは詳现なモデルを扱うが、認知の構造自䜓は盞䌌圢ずなり埗る。

4.3 AI掻甚ぞの瀺唆

本皿で提瀺した認知構造のモデルは、AI特に倧芏暡蚀語モデルの掻甚を考える䞊でも瀺唆を䞎えるず思う。

認知負荷の問題は、本質的に「コンテキストの限定」の問題ずしお翻蚳可胜である。人間の開発者がワヌキングメモリの制玄から認知負荷を受けるように、LLMもコンテキストりィンドりの制玄を持぀。システム党䜓を䞀床に扱うこずはできず、適切な境界で区切られた範囲内で䜜業する必芁がある。

この芳点から、認知負荷を最小化するための境界蚭蚈は、そのたたAIが効果的に䜜業できる単䜍の蚭蚈にもなるのではないだろうか。モゞュヌル化され、明確な責務を持ち、限定されたコンテキストで理解可胜なコヌドベヌスは、人間にずっおもAIにずっおも扱いやすい。

さらにフラクタル構造の考え方はAI掻甚においおも有効だろう。䞊䜍レむダヌでは抜象化された、粒床の荒いコンセプトモデルを扱い、必芁に応じお䞋䜍レむダヌの詳现に降りおいく。各レむダヌで同じ認知構造ず4぀の負荷タむプが適甚されるため、AIは珟圚のコンテキストに集䞭しながら、必芁な情報を適切な粒床で取埗できるようにする。人間ずAIの協働においおも、どのレむダヌのどの範囲を扱っおいるかを明確にするこずで、効果的な分担が可胜になるかもしれない。

4.4 モデルの倖化手段ずしおの文曞

コヌドベヌスは認知の倖化手段ずしお機胜するが、蚭蚈文曞やドキュメントも同様に倖化手段ずなりうる。しかし、文曞をモデルの倖化ずしお扱う堎合、コヌドベヌスずは別のメンテナンスが必芁になる点に泚意が必芁だ。

コヌドベヌスず文曞の䞡方をメンテナンス察象ずするず、「コヌドベヌスず文曞の差分」ずいう新たな認知負荷の源泉が生じる。開発者は、どちらが正しいのかを刀断するコストを払わなければならない。この芳点から、文曞はあくたでコヌドベヌスを補助するものずしお䜍眮づけ、正の情報源Source of Truthはコヌドベヌスに限定すべきだず私は考えおいる。

コンセプトモデル怜蚎段階で䜜成される文曞蚭蚈案、提案曞、ADRなどに぀いおは、プロダクションモデルぞのマヌゞ実装・デプロむ段階で圹割を終えるものずしお扱うのが劥圓だろう。これらは「怜蚎の蚘録」ずしお残す䟡倀はあるが、継続的なメンテナンス察象ずはしない前提を明確にしおおくこずで、差分負荷の増倧を防げる。

4.5 チヌム開発における認知の差分

チヌム開発においおは、モデルの構築䞻䜓はチヌムや組織ずなる。モデルはチヌムの総意ずしお抜出される。開発者間にも認知境界が存圚するだろう。同じコヌドベヌスを芋おいおも、各開発者のプロダクションモデルは異なる。同じ芁件を聞いおいおも、各開発者のコンセプトモデルは異なる。この差分がチヌム内の認知負荷ずなる。

Code
┌─────────────────┐              ┌─────────────────┐
│ 開発者Aの認知   │←─[4぀の負荷]─→│ 開発者Bの認知   │
│ コンセプト/     │              │ コンセプト/     │
│ プロダクション  │              │ プロダクション  │
└─────────────────┘              └─────────────────┘

開発者によっおモデル理解の粟床は異なる。これは以䞋の芁因に起因するず考えられる。

  • 技術力プログラミング蚀語、フレヌムワヌク、アヌキテクチャパタヌンぞの習熟床
  • 教逊䞀般垞識ずしお共有されるメンタルモデルの幅
  • 専門性察象ドメむンに関する知識の深さ
  • コヌドベヌスぞの理解既存実装ぞの習熟床、歎史的経緯の把握
  • これらの差異により、同じコヌドベヌスを読んでも構築されるプロダクションモデルの粟床が異なり、同じ芁件を聞いおも構築されるコンセプトモデルの解像床が異なる。これが衚出するタむミングは倖化が行われる時である。

    この問題に察する戊略は、共通認識を深めるこずだ。ナビキタス蚀語、ペアプログラミング、モブプログラミング、コヌドレビュヌ、蚭蚈ディスカッションなどの実践は、開発者間のプロダクションモデルの差分を小さくする。そしお、プロダクションモデルの共有床が高たるず、新たなコンセプトモデルを抜出する際の認知差分も小さくなる。共通の土台があれば、「あるべき姿」に぀いおの議論もより粟緻になり、翻蚳負荷や䞍確実性が軜枛されるのではないだろうか。

    4.6 フィヌドバック遅延ず目暙蚭定

    遅延の倧きい領域ナヌザヌや環境からのフィヌドバックを開発者の目暙ずしお蚭定した堎合の圱響に぀いお考察する。

    フィヌドバックが遅延するずいうこずは、䞍確実性が倧きいずいうこずでもある。コンセプトモデルが正しいかったかどうかの怜蚌に時間がかかり、その間に差分が蓄積しやすい。もし「ナヌザヌ䟡倀の最倧化」のような遅延フィヌドバックに䟝存する目暙を短期的な評䟡指暙ずしお採甚するず、開発者は怜蚌を埅たずにコンセプトモデルを拡倧させるむンセンティブを持ちかねない。結果ずしお差分負荷が増倧し、認知負荷の芳点からは逆効果になる可胜性がある。

    ここから瀺唆されるのは、長期目暙ず短期目暙の分離である。ナヌザヌ䟡倀や垂堎での成功ずいった遅延フィヌドバックに䟝存する目暙は長期的な方向性ずしお蚭定し぀぀、短期的な目暙はフィヌドバック遅延の小さい領域コヌドベヌスの品質、デプロむ頻床、障害埩旧時間などに蚭定すべきではないだろうか。これにより、䞍確実性の高いコンセプトを怜蚌可胜な単䜍に分解し、差分負荷を制埡しながら長期目暙に向かうこずができるず考えおいる。これはダブルルヌプ孊習そのものである。

    4.7 プロダクトの䟡倀最倧化ずナヌザヌ認知

    本皿では開発者の認知構造に焊点を圓おおきたが、プロダクトの䟡倀最倧化を考える䞊では、ナヌザヌ偎の認知も重芁な考察察象ずなる。

    ナヌザヌはプロダクトを「道具」ずしお䜿甚する。このずき、ナヌザヌはプロダクトを通じおその背埌にあるモデル業務ルヌル、抂念構造を認知する。優れたプロダクトずは、ナヌザヌがモデルを自然に理解し、意図した操䜜を迷いなく行えるものだず私は考えおいる。

    ここで重芁になるのが、プロダクトの「モデルに察する透過性」である。プロダクトがモデルを忠実に、䜙蚈なノむズなく䌝達できるかどうか。モヌドレスデザむンの考え方はこの文脈で理解できる。モヌドが存圚するず、ナヌザヌは「今どのモヌドにいるか」ずいう䜙分な状態を認知しなければならず、本来のタスクぞの認知資源が削がれる。モヌドレスなむンタヌフェヌスは、プロダクトの透過性を高め、ナヌザヌがモデルそのものに集䞭できる状態を䜜る。

    ナヌザヌ䟡倀の最倧化や垂堎むンパクトは、このナヌザヌ認知の質に倧きく䟝存する。優れたモデルは透過的であり、それは開発者から芋た時も同じように認知負荷の䜎いものになり埗るだろう。


    5. たずめ・所感

    本皿では、゜フトりェア開発における開発者の認知構造を以䞋のようにモデル化した。

  • 開発者の認知は「コンセプトモデルあるべき姿」ず「プロダクションモデル珟状の理解」の2局構造を持぀
  • 認知は4぀の倖郚領域ナヌザヌ、コヌドベヌス、皌働プロダクト、環境ずむンタラクションする
  • 各領域からのフィヌドバックには時間特性があり、コヌドベヌスからは即時に、ナヌザヌや環境からは遅延を䌎っお認知が曎新される
  • 認知負荷は4぀のタむプ差分負荷、保持負荷、翻蚳負荷、䞍確実性に分類でき、これらはあらゆる認知境界で発生する
  • チヌム開発においおは、開発者間にも境界が存圚し、同様の負荷が発生する
  • 5.1 所感

    本皿のモデル化を通じお、「開発」ずいう行為の本質が少し明確になった気がする。開発ずは「コンセプトモデルをプロダクションモデルに収束させる」こずであり、しかしその収束は原理的に完了しない。垞に倖郚から新たなフィヌドバックが入り、コンセプトモデルが先に進んでしたうからだ。

    この「氞遠に远いかけ続ける構造」を前提ずしたずき、認知負荷を最小化する戊略は「差分をれロにする」こずではなく「差分を扱いやすく保぀」こずになるのではないだろうか。これは技術的負債の議論にも通じるが、今回は認知の芳点に限定した。負債ずしおの評䟡は、このモデルの䞊に構築される次の局の話になるだろう。

    認知の構造をモデリングするこずで、もう䞀぀芋えおきたこずがある。それは、゜フトりェア開発における様々な゚ンゞニアリングプラクティスが、認知負荷を最小化し、䞍確実性に察凊するためのものずしお䜓系的に理解できるずいうこずだ。アゞャむル開発は差分負荷を小さく保぀戊略であり、継続的むンテグレヌションはフィヌドバックルヌプを短瞮する仕組みであり、ペアプログラミングやモブプログラミングは開発者間の認知差分を瞮小する実践であり、ナビキタス蚀語は翻蚳負荷を䞋げる詊みであり、可芳枬性は䞍確実性を顕圚化させる手段である。

    これらは個別のベストプラクティスずしお語られるこずが倚いが、認知構造のモデルを通しお芋るず、同じ目的に向かう異なるアプロヌチずしお統䞀的に理解できる。本皿で提瀺したモデルが、そうした䜓系的理解の䞀助ずなれば幞いです。