🛳

『ソフトウェアアーキテクチャの基礎』は我々の海図たりえるか

2022/04/10に公開1

こんにちは、クレスウェア株式会社の奥野賢太郎 ( @okunokentaro ) です。今回は、最近噂としてよく耳にしていた書籍『ソフトウェアアーキテクチャの基礎 ― エンジニアリングに基づく体系的アプローチ』(オライリー・ジャパン社、Mark Richards, Neal Ford 著、島田浩二 訳、2022 年 3 月発行)を読了したので、その書評をまとめようかと思います。

この書籍は、アプリケーション・アーキテクチャを構築、維持する「アーキテクト」になるために必要な知識を現代(2020 年代)の視点から整理し、包括的に解説することを目的としているらしく、まさに 2022 年に読むべき内容に仕上がっています。

書評者は何者か

この書籍はよいものでした。ただし、かなり広範囲に包括的に書かれたものであったため、どういう経験や知識を持った人間が読んだかによって、その好みや評価は分かれるだろうと感じています。読者によっては「難解」で片付けられてしまうかもしれません。そのため、まず先に書評者(筆者)の経歴や経験を共有しておきます。

筆者はもともと 2000 年代から HTML, CSS によるウェブページ制作、ウェブデザインの業務に従事しており、そこから WordPress 保守、MySQL 保守、PHP 開発などを経て 2010 年代半ばより Web フロントエンドに進みました。JavaScript 歴は 10 年以上、TypeScript 歴は 9 年という経歴で、複数社の Web サービス設計開発・保守、大手社内システムの Web クライアント設計開発などを手掛けています。1 案件のコード行数は 10 万や 20 万行を超える規模のものもあり、同一案件の開発に携わる人数も 10 人前後と、中規模になりつつあるチームを運営しました。

Web フロントエンドの領域に進んでからは AngularJS, Angular を得意分野として、React や Vue.js の流行も脇で見守りつつ、エンタープライズ向け Web フロントエンドの構築を得意としました。XP およびアジャイル開発、テスト駆動開発 (TDD)、ドメイン駆動設計 (DDD) やクリーンアーキテクチャなどを学び、模倣しつつ、数々の困難を解決してきた自負があります。近年ではアーキテクト、テクニカルディレクター、リードエンジニアとして、React, Next.js を含めたフロントエンド + バックエンド領域の全般に関わるようになり、データベースの特性選定やスキーマ設計、マイクロサービス間のフロー構築、各マイクロサービスの開発案件間のディレクションなども担当しています。

これだけですと壮語を並べるだけなのですが「このような経験値を持った人間が本書を読んでどう感じたか」という部分に今回の書評の意義があるとして、今回述べることとしました。

誰が読むとよい本か

本書はどういった層に書かれているか、これはずばり 2010 年代を乗り越えてきた経験者に向けてです。つまり、自分にはとても刺さりました。

アーキテクチャの書籍はこれまでも数多く出版されましたし、そのうちいくつかは筆者も読了しています。ただしそれらはすべて 2010 年代前半のエコシステム、2010 年代前半の哲学によって書かれた内容です。もちろん非常に有用な知識に富んでいるのですが今では「10 年前の昔話」とも言えてしまいます。本書は、2010 年前後の知識を 2020 年代に備えてアップデートするためのものだと感じます。

本書では冒頭に、数学の公理とソフトウェアアーキテクチャの理論は異なり、ソフトウェアアーキテクチャの理論は変化し続けるという点を強調していました。また、本書中の至るところで「変化」に重きをおいています。2010 年代を走り抜けてきたエンジニアだからこそ共感できる「変化の速さ」と「変化の難しさ」を整理して包括的に言語化したものが本書です。

筆者は「アーキテクチャはビル建築でいう基礎だ」という学びを前提に持ち、まず入念なアーキテクチャ検討や設計を行ってから開発に臨むべきという哲学でこれまでの業務を進めてきました。もちろん昨今のマイクロサービス・アーキテクチャの台頭に伴って「そればかりではない」という肌感覚は持ち合わせていましたが、それらもすべて「アーキテクチャは骨幹たるものである」という前提の上で付加的に整理していました。

しかし本書を読んだ上で、そもそもの前提を疑うべきではないか、根本的な認識のアップデートが欠けているのではないかという気持ちに至りました。アーキテクチャをビル建築とするメタな例え自体がふさわしいのかどうか?ということです。2020 年代においてアーキテクチャをビル建築のようなものと理解したままでいると、今後の時代の変化についていけないかもしれない危機感に気付かされます。

老害化への恐れ

筆者は 34 歳でして、数年前だったら「35 歳定年説」の 1 歳手前というところです。しかし、ここ数年はもはや「35 歳定年説」自体を聞かなくなり、現に 35 歳以上…40 代、50 代で活躍しているエンジニアもとても多いことを理解しています。すでに 35 歳は引退の区切りでは全くなく、34 だろうが 35 だろうがまだまだ先がある時代になりました。それを理解して筆者が今後のキャリアを進める際、老害化というのは気になり始めた話題でもあります。

現在進めている他社受託案件では、データベースの設計から日々の開発のコードレビューまで幅広く手掛けており、様々な経験を持つ、様々な年齢の開発者とコミュニケーションを取りながら案件を進めています。そこでは「自分の発言は常に正解なのだろうか?全員を常に正解に導けているのだろうか?」という悩みが付きまといます。

これは、自分の過去数年間の経験の上では問題なかった手法が「2022 年においてこれは最善手なのだろうか?」という悩みです。もしかしたらこのレビューを聞く相手はもっと優れた現代的な手法や哲学を兼ね備えているかもしれないのに、自分の発言によってその選択を閉ざしてしまっていないだろうか?という不安です。

自分の成功体験がかえって現代においての懸念になる「老害おじさんの戯言」を流してしまっていないだろうか。

20 代の頃と違い、立場上レビューされる経験が大幅に減ってしまいました。叱られることもなくなってしまいました。叱られるうちが華と先輩に諭された頃を懐かしく感じます。自分の判断は決裁として扱われ、若手はそれに従います。しかしそれは「従っている」に過ぎず「正解に導かれている」かどうかまではわかりません。筆者は自分のレビューを誰かにレビューしてほしいと願うほど、近年この点についての不安が増しました。

この不安を埋めるために、誰かのレビューではなくひたすら「理論」に当たり、自分の判断が常に理論に裏打ちされているかどうかのみを気にするようになりました。これは、たしかに学びはあるのですが、一方で頭でっかちになっているだけという懸念もあります。

最近あまりこのようなロールの人間同士で会話することも減ったので、周りがどうなのかは分かりませんが、こういった思考は中堅エンジニアにありがちかもしれません。

本書では、純粋なアーキテクチャのカタログとしての性質以外に、組織運営、組織内政治、ビジネス視点といった人間くさいコンテキストからもアーキテクト、およびアーキテクチャを述べている点がとても興味深いです。読者の成功体験とそれ以外の考え方をリンクさせ、視野を広げる役目を果たします。自分の過去の成功体験のうち、何が現代で通用し何が古臭くなったかという判断に役立ちます。

アーキテクトの海図として携えたい一冊

本書は、筆者のような経験とロールを備えた読者であれば、おそらくそんなに真新しい知識は書かれていません。むしろ日々の業務で飛び交うワード、概念が山のように出てきます。「スペシャリストとはいえないけれど、薄く広くは理解している」みたいな事柄がたくさん出てきます。新しいことが書かれていないことは、そこに学びがないことではありません。

自分の知識は、2010 年代前半の前提をもとに、2010 年代後半、2020 年代の知識の増築を繰り返し違法建築状態だったかもしれません。これを一旦更地にしてから新たに建築し直すことを本書は手助けします。ここ数年の付け焼き刃のキャッチアップがあれば、それに対して整理して言語化されており、読者の改めての理解を助けます。

2010 年代の成功体験に基づいて 2020 年代を戦おうとするアーキテクトにとっては、将来更に広がり続ける概念や手法に埋もれ溺れてしまうことのないように、本書は海図のように何を信じてどこを目指すべきか理解する指標として機能します。ここにこそ学びがあり、本書の価値であると感じます。

本書では知識に対して既知の知、既知の未知、未知の未知に分類することを説いています。未知の未知は「わかっていないとすらわかっていないこと」です。アーキテクトの備えるべき知についてこの語を用いての解説があるのですが、それだけでなく本書全体を通して未知の未知を理解することに役立ちます。

逆に駆け出しが読むべき本ではないと感じます。読んでもよいのですが、想像に及ばない規模の大きさに圧倒されてしまい、おそらく理解が追いつかないことでしょう。しかしある程度経験を積んできて、プログラミングもアプリケーション設計もそれなりに任されるようになり「業務を通じて学びも随分得られたけど、最近なんか学びが少なくなったな」と感じるような方にはうってつけだと思います。筆者も本書からは久々にいい刺激を得られました。

アーキテクチャの名著はこれまでも数多くありますが、本書も 2020 年代の新たなる定番書籍としてそこに連なるだろうと感じます。本書の書評は以上です、最後までありがとうございました。

Discussion