勘と経験と読経

略すとKKD。ソフトウェア開発やITプロジェクトマネジメントに関するあれこれ。

「要件最適アーキテクチャ戦略」の前半を読んだ。難しいぞ

読むのがホネな(積みがちな)技術書やビジネス書を取り上げて2週間の読書期限を課して読んでアウトプットする仮想読書会「デッドライン読書会」の第53回。常時、けっこうな量の積読があるのだけれども、知り合いと読書期日を約束することによって消化が捗るという仕組み。過去5回分のログはこんな感じ。

さて、今回取り上げるのは「要件最適アーキテクチャ戦略」である。ちょっと長いので前半と後半に分けて読む予定。というわけで今回は前半の「Part1 転機をもたらす実験による戦略的学習」「Part2 イノベーションを促進する」を取り扱う。

要件最適アーキテクチャ戦略とは

原題は「Strategic Monoliths And Microservices: Driving Innovation Using Purposeful Architecture」である。ストレートに直訳すると「戦略的なモノリスとマイクロサービス: 目的別アーキテクチャによるイノベーションの推進」となる。
そして著者はヴァーノン。前著で翻訳されているのは「実践ドメイン駆動設計」だ。
というわけで、鍵となるのはドメイン駆動設計(DDD)である。

なお本書では、マイクロサービスを礼賛しているというわけではない。

この数年間に、ソフトウェアに対して使われるモノリスやモノリシックという言葉が非常に否定的な含みを持つようになった。たとえそうでも、モノリシックなレガシーシステムの圧倒的多数が大きな泥だんごに分類されるからといって、必ずしもそうなるとは限らない。モノリスが問題なのではなく、泥であることが問題なのである。

「泥であることが問題なのである」強い表現だ(レビューの時などに活用したい。「それは泥ですね」とか言いたい)。ちなみにこういったパンチのある表現がPart1にはよく出ているので楽しい。ソフトウェアの有名なアンチパターンである「大きな泥だんご」が本書において解決したい主要な問題である。

大きな泥だんご

ちなみに、ソフトウェアのアンチパターンである「大きな泥だんご」は、とりあえずWikipediaが詳しい。何かの本で詳しい説明を読んだ気もするのだが思い出せない。
大きな泥だんご - Wikipedia

アンチパターンといえば、まさに「アンチパターン―ソフトウェア危篤患者の救出」という名著(現在は絶版)があったのだけれども、そこには大きな泥だんごは収録されていないようだ。

この「大きな泥だんご」化を防ぐためにアーキテクチャを戦略的に構築していくべきだ、というのが本書の主張である。ただし、それはビジネスの学習と理解を通じて進化的に構築すべきでもある。技術主導ではなくビジネス主導で検討せねばならず、そこで出てくるのがドメイン駆動設計である。

本書の前半を読んで良いとおもった点

  • 「Part1 転機をもたらす実験による戦略的学習」は現代のソフトウェアが直面する課題について論じていて非常に刺激的である。Space Xを引合いに出した説明も面白い。
  • ビジネス分析の手法の中核に「イベントストーミング」を置いている。これは注目していきたい手法である。
    • 近年流行しているビジネス分析手法としては「ユーザーストーリーマッピング」がある。この手法は強力であり有用なものだと思うが、複雑なビジネスをモデリングするという点では取扱いが難しいというのが個人的な意見だ。
    • 「ユーザーストーリーマッピング」を代替もしくは補完する手法として「イベントストーミング」は良さそう。
    • ただし本書で「イベントストーミング」を理解するのは難しそう。私はこちらのページなどを参考にいろいろと調べ始めている:イベントストーミング導入

本書の前半を読んで課題があるとおもった点

  • 難解だ!おそらく翻訳の問題ではなく、原著も難解なのだろうと思われる。
  • そして輪をかけて理解を難しくしているのは書籍がモノクロだという点である。おそらく原著では図表がカラーだったのだと思われるが翻訳はモノクロになっていた、これがわかりにくさを増幅している。
    • 実際のところ、わからないところは自分で手を動かしてカラーで図を書き直してみたりしてる。ちょっとつらい。

というわけで、前半はヒーヒー言いながら読んだ。後半では「イベントファーストアーキテクチャ」が取り扱われるようであり、これはちょっと楽しみである。