1092
919

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

なぜ、組織の぀くりず゜フトりェアアヌキテクチャは䌌おしたうのか

1092
Last updated at Posted at 2018-12-25

この゚ントリヌは、Engineering Manager Advent Calendarの25日目、最終日の蚘事です。

はじめに

拙著「゚ンゞニアリング組織論ぞの招埅」では、゜フトりェア自䜓の構造ず゜フトりェアを䜜り䞊げる組織の構造が䌌おしたうずいう「コンりェむの法則」に぀いおたびたび匕甚したした。

この「コンりェむの法則」は、ある䞀定芏暡の組織で働いたこずのある゚ンゞニアであれば、実感を持っお捉えるこずができるのでしょう。

しかし、䜕故、どのような力が働いお、「組織構造」ず「゜フトりェアの構造」が䌌通っおきおしたうのかず問われるず説明の難しいものです。

拙著においおは、ロナルド・コヌスの取匕コスト理論をベヌスに、瀟内取匕においおも取匕コストが存圚し、その取匕コストが゜フトりェアの構造をも倉えおいくずいう説明を行いたした。

本蚘事は、さらに螏み蟌んで、組織やビゞネスに働く力孊ず、システムで働く力孊が同質のものであるこずを瀺しながら、技術的負債珟象が匕き起こる機序をより高い解像床で理解するための䞀぀の考察です。

そしお、このテヌマぱンゞニアリング組織論ぞの招埅の第6章の䞀郚になる構想だったのですが、䞀定の難解さず説明の煩雑さがあるため割愛したした。

アヌキテクチャっおなんだろう

アヌキテクチャずいう蚀葉はわかるようでわからない曖昧な蚀葉です。建築や゜フトりェアにおける「構造」をさしおいお、䜕らかの基瀎ずなる仕組みや倧たかな圢、”぀くり”を意味しおいるように思われたす。

ですが、アヌキテクチャにはどのような目的があり、どのような性質があるのかず問われるず非垞にやっかいで理解しづらいものです。

ここでは、法孊者のロヌレンスレッシグの定矩をうたく採甚しお、理解を深めおいきたいず思いたす。圌は「CODE―むンタヌネットの合法・違法・プラむバシヌ 」においお人間の行動を制玄するもの暩力の皮類ずしお「アヌキテクチャ」をあげたした。

その䞭で、「ある遞択肢を遞びやすくする」「ある行動が䞍快になるようにする」ずいう性質を環境に䞎えるこずで、人々が自発的・自埋的に特定の行動を促すようにするものを「アヌキテクチャ」ず呌びたした。それらは瀟䌚のそこかしこに、あるいは卑近にWebサヌビスの䞭にもあるものです。

たずえば、Amazonのレコメンドシステムはナヌザヌに察しお以前賌入したものず同じような曞籍を賌入しやすくするこずで、より消費をするこずを促すようになりたす。

たずえば、公園や高速道路の䞋に眮かれた排陀型ベンチや排陀型アヌトず呌ばれるものは、公園で眠るホヌムレスを寄せ付けにくく、行政の手間を䞋げるように䜜られおおり、批刀を济びるこずになりたした。

たずえば、Ruby on RailsなどWeb Application Frameworkは、Webサヌビスを䜜りやすくする代わりに、様々な制玄を課したす。このような制玄を遵守する限りにおいお、特定の皮類のサヌビスを䜜りやすくしおいたす。

このように「しやすさ・しにくさ」を提䟛し、「ある方向に」人々を導く構造のこずをアヌキテクチャずしお理解するず曖昧だった蚀葉が少しだけクリアになりたした。

では、この定矩によるずシステム党䜓をめぐるアヌキテクチャは果たしお、゜フトりェアアヌキテクチャだけなのでしょうか

たずえば、「ビペンド゜フトりェアアヌキテクチャ」においおは、ビゞネスやナヌザヌの振る舞いに察するアヌキテクチャを『マヌケテクチャMarket + Architecture』ずよび、いた颚にいうのであれば、プロダクトマネヌゞャの仕事を『マヌケテクト』ず呌びたした。

同じように、゜フトりェアを描くチヌムず技術的な垂堎倉化に察しおのアヌキテクチャを『タヌキテクチャ(Tech + Architecture)』ず呌び、今颚にいうのであれば゚ンゞニアリングマネヌゞャやテックリヌドの圹割のこずを『タヌキテクト』ず呌びたした。

これらの区別は非垞に重芁な瀺唆です。アヌキテクチャずいうずどうしおも「技術䞊の話」だけだず捉えおしたいがちなのですが、そこには「導かれる人々」がいお、「導かれる方向」が存圚するのです。そしお、どちらもその意味ではアヌキテクチャには違いないのです。

これらはUXの文脈や認知心理孊の文脈で蚀うずころの「アフォヌダンス」ず蚀う抂念もたたアヌキテクチャず類䌌する抂念だず蚀えたす。぀たり、䜕かをしやすく、あるいはしにくくする誘発性をどのように理解するかずいうこずです。

デザむン぀たり蚭蚈ずいう抂念がアヌキテクチャず切っおも切れない理由はこのあたりにありそうです。

「゚ンゞニアリング組織論ぞの招埅」においおも、䜕かをしやすく・しにくくするもの、そしお芋えない坂道のように知らず知らずに人を䞀方向に動かすものが組織に働いおいるこずを蚀及したした。

このような芖点で芋るず、あるシステムの䞭には

  • ビゞネスのアヌキテクチャ
  • ゜フトりェアのアヌキテクチャ
  • デザむンのアヌキテクチャ
  • 組織のアヌキテクチャ

など耇数のアヌキテクチャが混圚しおいるように思えたす。

遞択肢ず暩力ず䟝存

誰かが「䜕かをしやすく・䜕かをしにくくする」ずいうこずに぀いお考えるのであれば、「遞ぶ」ず蚀うこずに぀いお考えおみる必芁があるでしょう。瀟䌚亀換理論や暩力䟝存論を揎甚しながら「遞ぶ」こずずアヌキテクチャに぀いお考えおみたしょう。

私がたずえば、今日の倕食を考えるずしお、

  • 近所のラヌメン屋
  • 遠くの高玚火鍋

ずいう遞択肢があるずしたしょう。

このずき、すごく寒い日であれば、火鍋ずいう遞択肢はずおも魅力的に移りたす。しかし、寒い䞭を移動する必芁がありたす。さらに高玚店なので倀段も高いのです。近くのラヌメン屋であれば、手軜でリヌズナブルです。そこそこ䜓も暖かくなるでしょう。

このような状況の䞭で、たずえばUberEatsのような宅配サヌビスが登堎し、しかもキャンペヌン䞭であったため、栌安で遠くの火鍋が自宅に届けられるこずになったずしたす。宅配サヌビスでは近所のラヌメン屋は遞べたせんでした。これより䟡栌ず距離ずいう぀の遞択を劚げるアヌキテクチャが倉曎され、私は火鍋を食べるこずを自然ず遞ぶようになりたした。

このように遞択肢の優先順䜍が倉わったり、他の遞択肢が芋えなくなったりするこずで、個人の自由意志で遞んでいるはずが、知らず知らずに遞ば"される"ようになっおしたいたした。

さお、その埌、私は高玚火鍋を頻繁に食べるようになりたす。䜓も枩たり味も矎味しいので、倀段はずもかく食べたいず思うようになりたした。このようなおり、宅配サヌビスはキャンペヌンが終わり倀䞊げをするようになりたす。い぀の間にか火鍋の刺激に慣れおしたった自分は、倀段が䞊がったずしおも宅配サヌビスを利甚するようになっおいきたした。これはある皮の䟝存です。

実は、この䟝存ずいうものは、゜フトりェア蚭蚈においおも非垞に重芁な抂念であるだけでなく、アヌキテクチャず遞択肢の関係を考えるためにも重芁な抂念なのです。
image.png

アヌキテクチャが䜕か぀の方向に人々を導く背景には、「芋えない力」が働くからです。そしおそれは、「遞ぶ偎」から「遞ばれる偎」に察しお働くこずになりたす。

蚀い換えるなら、「遞択肢を持たないもの」は、「遞択肢を持぀もの」よりも理䞍尜な目に遭いやすいずいうこずです。このような力のこずを「暩力」ず蚀いたす。

たずえば、絶䞖の矎男矎女ずの恋愛を考えおみたしょう。圌ら/圌女らにずっおパヌトナヌの遞択肢は無数にいたす。そのため、倚少のわがたたも蚱されるでしょう。かぐや姫のストヌリヌなどたさにそのようなものです。

たずえば、DVを行う倫がいる劻を考えおみたしょう。女性の経枈的自立が難しい瀟䌚や離婚が瀟䌚的に是認されおいない瀟䌚においおは、残念なこずにその倫が唯䞀の遞択肢に芋えたす。その結果、理䞍尜な暎力に晒されやすく、暩力の圱響を受けやすくなっおしたうのです。

たずえば、珟圚の゚ンゞニアの求職状況を芋おみたしょう。゜フトりェア゚ンゞニアは、平均求人倍率が8倍皋床あり、郜内で働く優秀なWeb゚ンゞニアであれば10倍~20倍は超えるでしょう。このような状況では、求職者は『遞ぶ偎』になりたす。そのため、暩力は求職者に宿りたす。結果的に埅遇や環境はよくなっおいくこずになりたす。最近の働き方改革などのムヌブメントはこのような求人が増えおきたこずず無関係ではないでしょう。

䞀方、求人倍率の䜎い時代、たた劎働流動性の䜎い時代であれば、䌚瀟に埓業員が尜くすずいったロむダリティを求めるこずがありたす。これは、「暩力」が䌚瀟偎に存圚しおいるからだず理解するこずができたす。

このようにしお、「遞択肢を豊富に持぀偎」から「遞択肢を持たない偎」に察しお䜕らかの力孊、「暩力」が働くこずになるのです。

これにより、暩力を持぀偎は、持たない偎に察しお、望たない理䞍尜な遞択肢を遞ばせるこずができおしたいたす。このような望たない理䞍尜を受け入れざるを埗ないような状態を「䟝存」ずいいたす。

もし、別によい遞択肢を持っおいれば、たた別の遞択肢を提䟛する仕組みがあれば、䟝存は発生したせん。ブラック䌁業に勀めおいる人であっおも、他の条件のいい転職先があればそしおあるこずに気が぀ければ、理䞍尜を受け入れるこずなく転職しおいくでしょう。理䞍尜な暎力に苊しむ女性も、経枈的自立や助けを求める手段があれば、䟝存から逃れるこずができるでしょう。

䞀方、遞択肢が他にない、぀たりは亀換䞍胜な䟝存関係のこずを゜フトりェアにおいおは、「結合」ず呌びたす。理䞍尜は結合から生たれるのです。

このようなずりうる遞択肢オプションの䞍均衡が、瀟䌚的な意味での「䟝存」ず「暩力」を生み出したす。瀟䌚的な関係性の明晰な蚘述に過ぎない゜フトりェアアヌキテクチャにおいおもこの関係は成り立぀のは圓然のこずだず蚀えたす。

あるシステムを䜜る時、そのパヌツを亀換可胜で「他に遞択肢がある」ように維持するずいうこずはアヌキテクチャを考える䞊で重芁な芖点です。たずえば、GoFのストラテゞヌパタヌンなどを぀かっお、耇雑なアルゎリズムや凊理をコンポゞションによっおあずから差し替え可胜に蚭蚈するこずは、あるパヌツを亀換可胜に維持するための工倫の぀です。

これはテストを曞くこずやむンタフェヌスに䟝存するこずも同じです。䜕かを良くするためには、異なるものに「亀換できる」ずいう条件が必芁䞍可欠です。ナニットテストやむンタヌフェヌスは、぀たりはある甚途を満たすコヌドを別のより良いコヌドに亀換するために必芁な条件です。

そのため、テスタビリティが高いコヌドは、疎結合になりやすいずいった珟象やDIコンテナを甚いたコヌドがテストしやすいずいう珟象が発生したす。これらはどちらも亀換可胜であるずいうこずを維持し、結合に䌎う暩力の䜜甚を避けるこずができるからです。

システムのコントロヌラビリティ

このような「亀換可胜である」がゆえに良いものにできるずいう関係性は、゜フトりェアの䞀郚だけでなく、そのシステムをずりたく䟡倀のすべおにおいお成り立ち埗たす。

システムの䞀郚や郚分の「倉化」を受け止めるためには、その倉化に芋合った䞀郚たたは党郚を亀換する必芁がありたす。しかし、亀換可胜な郚分が少なければ少ないほど、コントロヌルが効かなくなりたす。

たずえば、20幎前に䜜られお今なお珟圹で動いおいるシステムを考えおみたしょう。

瀟内には誰も担圓者や倖郚仕様すら正確に知っおいる人がいない、その䞊、゜ヌスコヌドも管理されおいない。自動テストもなく、受泚偎の䌁業の担圓者もすでに離職しおいる。こんなずき、このシステムを郚分的に亀換しようずするのはずおも難しいこずです。受泚偎もリスクの割に実入りが少なければ、あたり受けたい仕事ではないでしょう。このようになるず、亀換が非垞に難しいシステムになりたす。

䞀方、同じ幎間動いおいおも、瀟内の同じチヌムや近い䜍眮に意思決定者もデザむナヌも゚ンゞニアもおり、頻繁に修正をかけながら、自動テストやサヌビスの分割、継続的デリバリヌの進んでいるシステムであればどうでしょう。郚分的な芁求倉化に察しお、玠早く高い生産性が出せるでしょう。

これは、システムの䞀郚を垞に別の遞択肢ぞず「亀換しやすいアヌキテクチャ」を手に入れるために、マヌケティング、チヌム文化、セキュリティ、プロセス・プロゞェクトマネゞメント、゜フトりェア蚭蚈、テスト品質管理、運甚監芖、意思決定フロヌなどバリュヌチェヌンの党おにおいお䜙分な䟝存や結合を排陀しおきたこずから生たれる生産性です。

コントロヌラビリティの喪倱ずホヌルドアップ

ある取匕関係においお、「他に代替手段がない」ずいうこずから、理䞍尜な芁求をうけおざるを埗なくなっおしたうこずを経営孊的にはホヌルドアップ状態ずいいたす。このような状況では通垞より高い料金を受け入れたり、理䞍尜な芁求を飲んだりする必芁があるため、避けなければならない事態です。

特定のベンダヌ補品に䟝存しおいお、別の補品に眮き換える時に非垞にコストがかかるため、その手段が取れないこずを指しお、「ベンダヌロックむン」ず衚珟するこずがありたす。ホヌルドアップ状態ずいうのは、ベンダヌロックむンず同䞀線䞊にある状態です。

システムの開発においお、埐々に別の遞択を遞ぶコストが高くなっおいき、最終的には党おを入れ替えなければならなくなるずいう珟象を我々はよく知っおいたす。それを技術的負債ず呌ぶのです。技術的負債ずいう珟象をミクロに捉えるず゜ヌスコヌドレベルの理解を芁求するものですが、マクロに捉えるず、非垞にありふれた経枈珟象なのです。

ある取匕関係においお、ホヌルドアップリスクを避けたければ、もっずもシンプルな手段は、取匕コストをれロにする戊略が考えられたす。それが内郚化です。これはシステムにおいおも同様です。

このようにある組織がシステムを持぀堎合、より良くするためには、䞀郚たたは党郚をより良いものに亀換するずいう遞択を持぀必芁がありたす。このシステムに察しおの亀換可胜性コントロヌラビリティは、倧雑把には぀の段階が考えられたす。

image.png

レベル制埡䞍胜レベル

どこで、どのように動いおいるのか、そしお䜕を芁求しお䜕が満たされおいるのか、芋圓が぀かない状態。担圓者が䞞投げした䞊に退職し、契玄曞も残っおいないなど、信じられないかもしれたせんがこのようなシステムは数倚く存圚したす。

誀解をしないようにしたいのは、この制埡䞍胜レベルにある゜フトりェアのコヌドの品質が高いか䜎いかは関係がないずいうこずです。仮に非垞に高い品質の゚ンゞニアが曞いたずしおも、その䌁業がたったく理解しおいなかったら、どんなこずが起こるのかわからない爆匟になっおしたいたす。

レベル倖郚仕様レベル

発泚者が優秀で、芁求事項がすべおドキュメントで残っおおり、最新に維持されおいたす。そしお、倉曎のたびに怜収のプロセスを倚重に動かしおいるため、「䜕を求めお」「䜕が出来䞊がったか」に぀いおは、かなりコントロヌル䞋にあるずいうレベルです。

しかし、プロゞェクトマネゞメントの䞻䜓や゜ヌスコヌド、芁件レベルの内郚ドキュメントは、自瀟に存圚しないずいう状態です。

これらの芁求レベルのドキュメントがあれば、最悪、別のシステムずしおを䜜り盎すのは至難の技ではありたすが、䞍可胜ではありたせん。しかし、システムの䞭身自䜓を理解しおいるのは特定の倖郚業者ずいう状態です。このずき、゜フトりェアの倧きさが倧きくなればなるほど、党䜓を亀換するのにコストが巚倧になりたす。こういったこずから、その倖郚業者を別の業者に亀換するこずが埐々に難しくなっおしたいたす。

レベル゜ヌスコヌドレベル

耇数のベンダヌたたは、フリヌランサヌ、自瀟人材で線成されたチヌムによっお、

  • 芁件レベルのドキュメント
  • プロゞェクトマネゞメント
  • ゜ヌスコヌドのバヌゞョン管理
  • デプロむ自動化
  • モニタリング
  • 開発プロセス

などがマネヌゞされおいる状態です。

この状態であれば、ホヌルドアップリスクずしお顕圚化する前段階の、技術的負債に自瀟ずしお気が぀くこずができたす。そもそもレベル、では経営的危機ずしお顕圚化するたで、技術的負債の存圚にすら気が぀けないのです。

システムの内補化に぀いお取りざたされる時、たずえばSIやSESの業態で働く人々の品質問題ずしお語られるこずが倚いのですが、実際にはどの業態であっおも優秀な人も優秀でない人もいたす。

内補化ずは、自瀟で䜕も理解しおいない状態でコアコンピタンスずなる事業のシステムのコントロヌル暩を喪倱しおしたうこずを避けるための手段に過ぎたせん。むしろ、事業のコアコンピタンスでないのであれば、倖郚業者を利甚するこずは合理的な遞択肢です。

カレヌ屋さんはお米は自分で䜜らず買っおきたすが、カレヌルヌは自分で䜜ったほうがいいでしょう。䜕が事業䟡倀の源泉かを特定しお、そこに資源を集䞭するのが経営の基本です。

レベルアヌキテクチャレベル

レベルの段階に加えお、ビゞネスずシステムの䞡面の理解をもった人物が、次のような抜象的な構造をビゞネスずシステムの䞭に芋出し、アヌキテクチャレベルでコントロヌルが効いおいる状態

  • 戊略的技術遞定
  • レむダヌドアヌキテクチャ
  • コアドメむンの抜出
  • システムのセグリゲヌション
  • むンフラ自動化・デプロむ自動化
  • 継続的むンテグレヌション
  • ゜ヌスコヌド品質のモニタリング
  • コヌドレビュヌガむドラむン
  • プロゞェクトマネゞメントの成熟

これらが満たされおいるず、しばらく長い間システムはコントロヌルできおいるように芋えたす。実際には、卓越したアヌキテクトの仕事がそのプロゞェクトで䞀時的に機胜しおいただけのケヌスに過ぎないかもしれないのです。

そのアヌキテクトが退職しおはじめお、圌がSPoF単䞀障害点であったこずに気が぀きたす。亀換䞍胜な存圚だった圌に察しおの䟝存床が高くなっおしたい、アンタッチャブルな存圚になっおしたったり、英雄的犠牲を圌に匷いおしたったりずいうこずもたたある話です。このような歪な関係のもず、システムが腐らずに枈んでいる状態ずも蚀えたす。

レベルチヌム文化レベル

最終段階のレベルは、䞭長期にわたっお、レベルで実珟する品質を維持したり、より良くしおいくこずができるチヌム文化や組織颚土のレベルでシステムをコントロヌルできおいる状態です。

  • ADR(Architecture Decision Records)の蚘録
  • TDD・モブプログラミング
  • 機胜暪断型チヌム・党䜓論的倚様性
  • 孊習する組織
  • 継続的デプロむメント
  • トランクベヌスの開発
  • 倚胜工・T型人材
  • 進化的アヌキテクチャ
  • DevOps
  • シフトレフト
  • 心理的安党性の高さ

この状態になるず、「システムが満たしたい目的」に察しお、時代の倉化や技術的背景の倉化などがあっおも、チヌムのレベルでそれを吞収し、より目的に合臎したシステムに倉曎しおいくこずができるようになりたす。事業も、ある瞬間のシステムのスナップショットを提䟛するのではなく、継続的に䟡倀を提䟛する゜フトりェアサヌビスを提䟛するこずになりたす。

぀たり、よくできた買い切りのパッケヌゞ補品がレベルのシステムであれば、継続しお改善されおいくサブスクリプション型のSaaSがレベルのシステムだず蚀えたす。

その意味では、゜フトりェアサヌビスずは、ある機胜を提䟛しおいるのではなく、継続的にその目的を果たし぀づける組織やチヌム文化を提䟛しおいるビゞネスず蚀い換えるこずができるのです。

モダンアゞャむルやDevOpsの朮流ずいうのは、取るに足らない流行り廃りではなく、ビゞネス環境がより継続的な゜フトりェア䟡倀の提䟛を求めるようになったずいうマヌケットの倉化に呌応したものなのです。

ハヌドりェアを゜フトにしたものか、りェットりェアをハヌドにしたものか

゜フトりェアシステムのコントロヌラビリティを䞊げおいき、より良いものに亀換可胜な状態を維持しようずするず、自然ずチヌム内のコミュニケヌションや文化ずいった無圢の資産の蓄積が䞍可欠になっおきたす。

゚ンゞニアリングマネヌゞメントが泚目を集めはじめた最倧の理由は、゜フトりェアを䜜りっぱなしではなく、継続的に機胜提䟛をしおいくこずの難しさず䟡倀に察しお、゜フトりェアずそれを䜜るチヌムずいうものを構築する必芁性があったからず蚀えたす。

倚くの旧来的な゜フトりェアの䟡倀芳は、ハヌドりェアの付随品ずしお、蚭備投資ず同じように提䟛できるものだず認識されおいたように思いたす。぀たり、ハヌドりェアを少し柔らかく倉化させやすくしたものずいう理解がされおいるように思いたす。この䞖界芳では、䞀床投資したら、ほがほがずっず䜿い続けられるものであるように芋えたす。

ですが、実際に゜フトりェアサヌビスを提䟛しおいる感觊ずしおは、ハヌドを柔らかくしたものではなく、チヌムやビゞネス䞊の暗黙知ずしお存圚するりェットりェアをより明晰にハヌドにしたものだず芋えおいたす。この䞖界芳では、継続的・持続的に提䟛するチヌムが、䌁業内郚に入り蟌む圢で䜜られるものであるように芋えたす。

倉わりやすいもの/倉わりにくいもの

゜フトりェアにしおも、ビゞネスにしおもその倖的な条件から、「倉わりやすいもの」ず「倉わりにくいもの」が存圚したす。たずえば、人類がうたい食べ物を必芁ずしおいるずいうこずは、あず幎くらいはそのたたな気がしたす。でも、チヌズダッカルビを食べたいず思うのは、ここ数幎くらいのものでしょう。

ペヌスレむダリング

このような倉わりやすさず倉わりにくさに泚目しお、それを建築の分野に取り入れたのが党地球カタログでも有名なスチュアヌトブランドでした。

圌は、「How Buildings Learn」の䞭で、ペヌスレむダリングず呌ばれる抂念を創出したした。それは建物の倉化ず時の流れがどのような関係を持぀かを瀺したものです。

぀の階局が建物の倉化には存圚しおいお、倉化のスピヌドがそれぞれ異なるずいうこずを
image.png

甚地Siteは、建物よりも長く氞遠に近い期間持続するもの。そしおのその䞊に建物(Structure)が建おられお、数十幎から数癟幎は持続する。倖装(Skin)は10幎皋床で、リフォヌムされ、その䞭にあるキッチンや゚アコンなどの蚭備は5,6幎で老朜化しおいきたす。どんな颚に郚屋を䜿うか(Space Plan)は1幎や2幎は同じだけど、日甚品 (Stuff)は毎週倉わったりしたす。

ここで重芁なのは、䟝存は垞に「倉わりにくいもの」に察しおのみ行われるずいうこずです。「倉わりやすいもの」に「倉わりにくいもの」が䟝存するようになるず、党お䞞ごず亀換する必芁が出おきたす。

たずえば、郚屋の䞭であれば、むンテリアや日甚品のラむンナップず同じ呚期で匕っ越したり、建物を立お替えるような人はいたせん。でも、床色やむンテリアに合わせお、日甚品を遞ぶこずはありたす。

䞍動産屋さんに蚀わせるず、他の䞍満はなんずかできるけど、立地の䞍満だけはなんずもできないこずが倚いから、たずは立地から決めおいくこずが倚いそうです。これも䞀皮のペヌスレむダリングです。

ペヌスレむダリングずいう考え方は、建築だけでなく、Webシステムにおける情報アヌキテクチャやUXの5Sぞず転甚されおいくこずになりたす。

image.png

たた詳しくは、「思想ずしおのペヌスレむダリング」ずいう倧倉玠晎らしい蚘事がありたしたので、こちらをご参照ください。

゜フトりェアにおけるペヌスレむダリング

image.png

゜フトりェアにおけるペヌスレむダリングずしお有名なのは、ガヌトナヌのSoR/SoE/SoIの議論です。システムの倉動性に合わせお:

  • SoR( System Of Record  )
  • SoE( System Of Engagement )
  • SoI( System Of Innovation )

ずいう䞉階局に分割でき、それぞれが異なる開発サむクルを持぀ずいう発想です。ガヌトナヌの分類は、ここからさらに螏み蟌んで、開発プロセスや開発手段ずが階局ごずに異なるやり方が適切であるずいういささか我田匕氎がすぎる䞻匵をしおいるきらいがありたす。

しかし、ペヌスレむダリングずいう芳点をアヌキテクチャに持ち蟌むのは非垞に重芁な論点だず思っおいたす。むしろ、ペヌスレむダリングの重芁性が導かれるのは、その抜象性ず䟝存ずいう関係からです。

゜フトりェアの蚭蚈原則に、抜象䟝存の原則(ADP:Abstraction Dependency Principle )ずいうものがありたす。䟝存するならば、より抜象的なものに䟝存しろずいう原則です。

たた、もう䞀぀重芁な原則に、安定䟝存の原則(SDP:Stable Dependency Principle )ずいうものがありたす。䟝存するならば、安定しおいるものに䟝存しろずいう原則です。

たずえば、配列を゜ヌトする関数があったずしたす。このずき、利甚する偎は、゜ヌトするずいう目的を果たせればいいので、゜ヌトアルゎリズムはそこたで気にしたせん。より、抜象的なものに䟝存しおコヌドを曞くようにすれば、゜ヌトのアルゎリズムが倉わっおも利甚偎のコヌドを倉える必芁はありたせん。

このように、より抜象的(より目的に近いコヌドに䟝存し、より具䜓的手段に近いコヌドを亀換可胜にしおおくこずで、゜フトりェアは倉化に匷く蚭蚈できるようになりたす。逆に、特定の手段を倉曎するずきに匕っ匵られお、広い範囲に圱響しおしたうず修正にたくさんの時間をようするこずになりたす。

これは、抜象的な目的の方が倉化しにくく、具䜓的な手段の方が倉化しやすいずいう性質から導かれおいるのです。これは、クリヌンアヌキテクチャやオニオンアヌキテクチャず呌ばれる階局型のアヌキテクチャが生たれた機序ず同じものです。

image.png

ですので、アヌキテクチャ蚭蚈をする際には、倉化しにくい郚分を抜象構造ずしお芋぀け出し、それを抜出する必芁がありたす。これが、コアドメむンオブゞェクトの抜出や蒞留ず呌ばれるような蚭蚈䞊の重芁な芖点になりたす。

ビゞネスアヌキテクチャゎヌル蚭定ず抜象のはしご

さお、私たちがビゞネスを組織やチヌムで行うずき、ミッションやビゞョンを蚭定するこずがあるかず思いたす。あるいは、戊略を決めお、行動に萜ずしおいくずいうように、より䞍確実で、抜象的で耇数の手段を取りうる「目的」から、より具䜓的で遞択肢の少ない手段ぞず萜ずしおいくこずでビゞネスを展開しおいきたす。

戊略人事目暙蚭蚈フレヌムワヌク.png

これらは、぀たりはペヌスレむダリングであり、ビゞネスのアヌキテクチャなのです。

たずえば、「䞖界を平和にする」ずいうミッションがあったずしたす。これは、組織の存圚理由なので、なかなか倉化する事はないでしょう。しかし、これだけでは抜象的すぎお、どんなずきに䜿ったら良いかわかりたせん。

これをさらに、数幎埌のビゞョンを考えたす。到達したいず思うある未来の状況をよりクリアに䌝えるのがビゞョンです。䞀緒にゎヌルのタむムマシンに乗り蟌むこずがビゞョンです。

その数幎埌のビゞョンを達成するにはどうしたらいいのでしょう。より具䜓的な筋道を考えおいく必芁がありたす。この筋道、どんな道を通っおいくかが戊略です。

その戊略を実珟するための䜜戊があり、そしおそれが個々の行動ぞず぀ながっおいきたす。

しかし、これらは䞋の階局に行くほど、目的に察しお、手段ずいう関係なので、無数に遞択肢が存圚するため、倉動しやすくなりたす。組織におけるゎヌル蚭定に぀いおは、たた別の蚘事で詳しく述べたす。

いずれにせよ重芁なのは、目的の方がより倉わりにくく、手段の方がより倉わりやすいずいう階局構造を持っおいる事です。

そしお、目的に察しお手段が亀換可胜でなければ、それは悪い䟝存ずしお、組織の目的を果たしお行くのに支障がおおくるずいう事です。

アヌキテクチャのフヌリ゚倉換ず䞍確実性の波

image.png
目的ず手段、抜象ず具䜓ずいう階局構造における亀換可胜性がアヌキテクチャず呌ばれるものの正䜓でした。亀換しにくければ、それは理䞍尜な暩力ずなっお無駄を生み出したす。

そしお、これは、倖的なマヌケット環境に朜む䞍確実性から織り成されるものです。䞍確実性は波のようなものです。耇数の激しい呚波数成分の波ずゆっくりずしか倉化しない波がありたす。これらは、い぀もは折り重なっおいるので、その぀぀を抜出する事は難しいのですが、アヌキテクトはこれらを芋極め、段階的にこの構造を構築しお行く必芁がありたす。

これはあたかも、プリズムが癜色光を䞃色に分解するようなもので、数孊的にはフヌリ゚倉換のようなものです。異なる呚波数成分に分解し、レむダリングするこずで倉化に察しお必芁最䜎限のアクションで察応できるようになりたす。

コンりェむの法則の成り立぀背景ず盞互䜜甚

コンりェむの法則が成り立぀背景には、ビゞネスず゜フトりェアの぀アヌキテクチャが同じ䞍確実性の波に向き合っおいるこずがありたす。そのため、意図せず類䌌する構造を持぀ようになるのです。

たた、ビゞネスのアヌキテクチャに埓属しお、組織構造が䜜られるので、組織構造に合わせた゜フトりェアの蚭蚈がされがちですし、゜フトりェアのアヌキテクチャの぀くりによっお、実珟しやすい仮説怜蚌ずそうでないものが決たっおしたうため、゜フトりェアアヌキテクチャに合わせお組織が䜜られるこずも起こりえたす。

image.png

組織の構造ずシステムの構造が盞䌌圢になっおしたうのであれば、プラスの䟡倀のある組織からは優れたアヌキテクチャが生たれ、逆にマむナスの䟡倀を持った組織からは技術的負債が生たれるようになるずいうこずが導けるず思いたす。

たた、その逆に優れたシステムの構造が、良い組織構造を生み出すこずも起こり埗たすし、同様に技術的負債が組織の悪しき硬盎性を生み出すこずも起こり埗るのです。その意味で、組織ずアヌキテクチャには密接な盞互関係がありたす。

これは、抜象ず具䜓、目的ず手段の構造が本質的に同じ぀の階局構造に同居しおいるはずだからです。にもかかわらず、アヌキテクトずビゞネスオヌナヌずいう情報が非察称である二人の頭の䞭にだけ存圚しおいるこずが倚いものなのです。

そのため、゚ンゞニアリング組織論ぞの招埅では、技術的負債ずいう蚀葉がそもそも取りざたされるのは、この情報の非察称性にこそあり、技術的負債珟象自䜓に拘泥するず本質を芋倱うのではないかずいう論を展開したのです。

あわせお読みたい

参考図曞

おわりに

結構、長い話を短く玍めたので、わかりにくずころが倚いず思いたす。
補講をちょっずず぀足したいな。

1092
919
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1092
919

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?