JA EN
体系開発プロセス
·★ 会員·11分で読めます

アーキテクチャ設計 — 後から変えられないものを見分ける

設計判断のうち、後から安く取り消せるものと二度と戻せないものをどう見分けるか。可逆性の測り方、ADR(設計決定記録)の書き方、トレードオフを言葉にする型を、前提知識ゼロから解説します。

対象textタスクsystems

壁紙は貼り替えられるが、柱は抜けない

家のリフォームを想像してください。壁紙の色は、気に入らなければ来週貼り替えられます。キッチンの位置を動かすのは一週間と数十万円かかります。しかし建物を支える柱を抜くとなると、間取りの前提そのものを引き直す話になり、そもそもできないこともあります。

ソフトウェアの設計判断も同じ構造をしています。厄介なのは、家と違ってどれが柱でどれが壁紙かが目で見えないことです。しかも作業量の見た目とは相関しません。ログ出力のライブラリを入れ替えるのは、触るファイルは多くても壁紙です。一方、ユーザーIDを連番の整数にするかランダムな文字列にするかは、たった三行で書けるのに柱です。前者は誰も気にしませんが、後者は数年後に「別のシステムと統合したいがIDが衝突する」という形で牙をむきます。

アーキテクチャ設計とは、四角と矢印の図をきれいに描く作業ではありません。目の前の決定が壁紙か柱かを見分け、柱にだけ時間を使う技術のことです。新人がやりがちなのは全部の決定に同じ熱量で悩むことで、ベテランがやっているのは、九割を五分で捨てて残り一割に一週間かける配分です。

直感: 決定の値段は「取り消しコスト」で決まる

ある決定が重いかどうかは、それを間違えたときに払う金額で測ります。ここで大事なのは、間違える確率と、間違いを取り消す費用は別物だということです。よく間違えるが取り消しが安い決定は、気にする必要がありません。むしろ早く間違えたほうがいい。逆に、めったに間違えないが取り消しが破滅的な決定は、時間をかけて調べる価値があります。

この二つを掛け合わせたものが、決定の重さです。

W=P誤り×C取消W = P_{\text{誤り}} \times C_{\text{取消}}
(1)

WW は「その決定にどれだけ時間をかけるべきか」の目安、P誤りP_{\text{誤り}} はその判断が後で間違いだったと分かる確率、C取消C_{\text{取消}} はそのとき元に戻すのにかかる費用(人月・停止時間・失う信頼のすべて)です。つまり「外す見込み」×「外したときの痛さ」が大きい決定だけを慎重に扱えと言っています。

この式の効用は、慎重さを一律に配ってはいけないと分かる点にあります。C取消C_{\text{取消}} が小さければ、P誤りP_{\text{誤り}} がどれだけ高くても WW は小さいまま。だから可逆な決定は、会議で議論するより試したほうが速い。そして C取消C_{\text{取消}} は時間とともに増えます。作った翌日なら誰も使っていないので取り消しはタダですが、外部の三十社が呼んでいるAPIの形は、もう自分だけの持ち物ではありません。同じ決定でも、遅れるほど不可逆に近づいていくわけです。

FIG 1たとえ話として。設計空間を等高線で見たときの、実装が進んでいく経路。モーメンタム(=これまでの決定の慣性)を上げるほど経路は行き過ぎ、いま出てきた谷へ戻れなくなります。可逆性が時間とともに失われる感覚がこれです

仕組み: 不可逆性の三つの発生源

「取り消しが高い」には、原因が三つしかありません。ここを押さえると、初めて見る技術選定でも柱かどうかを判定できます。

一つ目は、自分の外に出てしまった約束です。 公開APIのフィールド名、URLの形、Webhookのペイロード、SDKの関数シグネチャ。これらは他人のコードに焼き付いているので、変えるには他人を動かす必要があります。自分の努力だけでは終わらないものは、すべて不可逆側に倒れます。

二つ目は、蓄積されたデータです。 スキーマそのものより厄介なのは、データに込めた意味のほうです。金額のカラムを「税込」で貯め続けたとして、三年目に「税抜が必要」と言われても過去分は復元できません。捨てた情報は戻ってこない。同じ理屈で、タイムゾーンを落として保存した日時、正規化しすぎて元表記を失った住所、論理削除にしなかったレコードは、すべて取り返しがつきません。

逆に言えば、この三つに当たらないものは基本的に可逆です。使うWebフレームワーク、ログの出力先、CIサービス、キャッシュの実装、デプロイ先のクラウド事業者、コードの分割の仕方。どれも移行は面倒ですが、自分たちの手の中で完結する面倒であって、外部の誰かの同意も、失われたデータの復元も要りません。

この先にあるもの

§

ここから先は会員限定です

解説記事371本・教科書26章・学生モード48単元・論文精読6本が、月額¥490ですべて読み放題になります。新しい解説は毎日3本ずつ増えます。いつでも解約でき、解約後も期間の終わりまで読めます。

会員の方はログインすると続きが表示されます

コメント

コメントにはログインが必要です