見えない前提が、コードと商売を腐らせる
Hatched by naoya
Aug 29, 2026
1 min read
3 views
91%
「便利な仕組み」を作ったはずなのに、なぜか後から身動きが取れなくなる。コードは複雑になり、利用者は判断を誤り、運営者は説明に追われる。両者は別々の問題に見えるが、根には同じ失敗がある。まだ確かめていない前提を、見えない形で固定してしまうことだ。
将来の変更を予測できないまま抽象化を重ねると、ソフトウェアには余分な層が増える。一方、広告であることを明かさず商品を勧めると、利用者は純粋な推薦だと思い込む。片方は開発者から見えにくい複雑さを生み、もう片方は利用者から見えにくい利害関係を生む。
この二つをつなぐ鍵は、透明性を単なる倫理や説明責任の問題としてではなく、不確実性を扱うための設計技術として捉えることにある。
抽象化は、未来を予言する行為である
抽象化とは、細部を隠して重要な構造だけを取り出すことだ。関数、API、レイヤー、共通コンポーネントは、うまく働けば変更の影響範囲を狭めてくれる。しかし、何を隠し、何を残すべきかは、未来にどのような変更が起きるかという予測に依存している。
たとえば、二つの画面で同じような処理があるからといって、すぐに共通化するとする。ところが一方は数週間後に例外的な入力を受け付け、もう一方は監査ログを必要とするかもしれない。見た目が似ているという現在の事実を、将来も同じであるという仮説に変えてしまった瞬間、抽象化は便利な道具ではなく制約になる。
料理にたとえるなら、まだ味の方向性も決まっていない段階で、すべての料理を同じ鍋で作るようなものだ。洗い物は減るが、酸味を足したい料理と甘味を足したい料理の自由が失われる。共通化によって節約した数行のコードの代わりに、後から例外処理や設定項目が増え、結局は誰にも理解しにくい巨大な鍋が残る。
ここで重要なのは、抽象化の是非を一般論で決めないことだ。判断すべきなのは、未来の変化をどれほど正確に予測できるかである。予測の精度が低いなら、最初は具体的な実装を残したほうがよい。具体的な実装は重複して見えるが、現実の差異を観察するための記録でもある。
良い抽象化とは、細部を早く消すことではない。何度も同じ差異を観察した後で、差異の背後にある安定した構造だけを残すことだ。
この原則はコードに限らない。組織の規則、商品説明、広告の表示、推薦の仕方にも同じことが当てはまる。
隠すことは、単純化ではなく前提の固定である
広告であることを明かさずに商品を勧める行為は、利用者の意思決定に一つの前提を埋め込む。利用者は「この人は自分の経験から、純粋に良いと思って勧めている」と解釈するかもしれない。しかし実際には、販売報酬を受け取る契約がある。その関係が見えなければ、利用者は価格や品質だけでなく、推薦者の動機まで誤って評価する。
これは単なる情報不足ではない。意思決定に必要な変数が、意図的に画面の外へ置かれているのである。約10%のアフィリエイト広告コンテンツで広告であることが開示されていないという事実は、個々の投稿の問題を超えている。市場全体で、推薦と広告を見分けるための手がかりが不足しているということだ。
ソフトウェアの過剰な抽象化にも、よく似た構造がある。レイヤーを増やすと、実装の細部は利用者から隠れる。しかし、隠れた細部は消滅したのではない。どこか別の場所に移動している。データ変換の規則、エラーの扱い、状態の持ち方が複数の層に分散し、後から来た開発者には見えなくなる。
広告の非開示では、利害関係が隠される。過剰な抽象化では、変更のコストと設計上の仮定が隠される。どちらも表面上は「簡潔で使いやすい」状態を作るが、実際には判断の前提を見えない場所へ移している。
この状態を、ここでは前提の密輸と呼びたい。密輸された前提は、誰も明示的に承認していないのに、システムの動作を決める。「この二つの処理は今後も同じだろう」「この推薦は広告ではなく本音だろう」といった仮説が、説明なしに意思決定へ入り込むのである。
透明性には、二つの種類がある
透明性という言葉を使うと、すべてを公開し、すべてを説明すべきだという極端な議論になりやすい。しかし実務で必要なのは、情報の総量を増やすことではない。判断を変えうる前提を、判断の近くに置くことである。
この考え方を、二つの透明性に分けると理解しやすい。
第一は、動機の透明性だ。誰が利益を得るのか、誰がリスクを負うのか、どのような目的で情報が提示されているのかを示す。広告であることの表示は、この透明性に属する。表示が小さすぎたり、文章の最後に埋め込まれたりすれば、形式的には開示していても、判断には届かない。
第二は、変更の透明性だ。何を変えるとどこに影響するのか、どの仮定の上に仕組みが成り立っているのかを示す。ソフトウェアなら、抽象化されたAPIの裏側にどのような制約があるのか、例外がどこで処理されるのか、なぜこの層が存在するのかを理解できる状態である。
両者には共通の設計基準がある。それは、情報が存在するかではなく、利用者や開発者が適切なタイミングで発見できるかだ。
たとえば、ECサイトに「このリンク経由で購入されると紹介者に報酬が入ります」と書いてあっても、画面を何度もスクロールした末にしか見つからないなら、実質的な透明性は低い。同様に、コードの設計意図がドキュメントに書かれていても、変更するファイルから一時間離れた場所にあるなら、実務上は見えない。
透明性は、百科事典のような完全公開ではない。重要な前提の発見可能性を高めることである。
不確実性が高いほど、可逆性と可視性を優先する
ここから、開発と商取引に共通する実践的な原則を導ける。将来を正確に予測できないときは、固定化を遅らせ、観察可能性を高めるべきだ。
ソフトウェアでは、最初から汎用的なフレームワークを作る代わりに、まず具体的なケースを二つか三つ実装する。その過程で、どの差異が偶然で、どの差異が本質的かを記録する。三回似た問題が現れたとき、初めて共通化を検討する。この方法は、単純な「三回繰り返すまで待つ」という規則ではない。共通化の前に、差異を十分に観察するという姿勢である。
広告や推薦では、まず利害関係を明示し、その表示が実際に見られ、理解されているかを検証する。短い表記、目立つ位置、明確な言葉を使い、推薦者の個人的な評価と報酬契約が同時に存在することを利用者が把握できるようにする。ここでも、目的は情報を増やすことではなく、誤った推測を減らすことだ。
両者を一つのモデルにまとめると、設計判断は次の四つの軸で考えられる。
- 予測精度: 将来の変化をどれほど確かに見積もれているか。
- 不可逆性: 間違えた場合、元に戻すためのコストはどれほど大きいか。
- 発見可能性: 隠れた前提や利害関係を、関係者が見つけられるか。
- 観察速度: 仮説が正しいかどうかを、どれほど早く現実から学べるか。
予測精度が高く、変更コストも低いなら、早い抽象化や簡潔な表示でも問題は少ない。反対に、予測精度が低く、間違いが高価で、前提が見えないなら、具体的な実装、明示的な開示、小さな実験を選ぶべきだ。
たとえば、社内ツールの一時的な画面では、多少の重複コードは許容できるかもしれない。一方、決済や個人情報を扱う仕組みでは、抽象化の不足よりも、隠れた副作用のほうが危険になる。商品推薦でも、数百円の商品と、高額な金融商品では、開示の目立たせ方と検証の厳しさを同じにしてはいけない。
明日から使える「前提監査」
この考え方を実務に落とすには、機能やキャンペーンを作る前に、前提を短く書き出すとよい。たとえば次のような項目である。
「この設計は、利用者が何を知っていると仮定しているか」 「この推薦や提案によって、誰が利益を得るか」 「半年後に変わる可能性が高い部分はどこか」 「この判断を誤ったとき、誰がコストを負担するか」 「前提が間違っていることを、どの観測によって知るか」
この質問に答えられない抽象化は、まだ抽象化の段階に達していない可能性が高い。また、答えられない広告表示は、利用者に判断材料を提供しているのではなく、判断を誘導している可能性がある。
Key Takeaways
- 抽象化の前に、将来の変化を予測できているか確認する。 予測に自信がなければ、具体的な実装を残し、差異を観察する。
- 隠した情報が消えたわけではないと考える。 複雑さ、利害関係、例外処理は、見えない場所へ移動しただけかもしれない。
- 透明性を情報量ではなく発見可能性で評価する。 判断を変えうる前提を、判断する場所とタイミングの近くに置く。
- 不可逆な決定ほど、小さく試してから固定する。 共通APIの設計でも広告の表示でも、早い検証が将来の負債を減らす。
- 前提の所有者を明確にする。 誰が利益を得、誰が変更コストや誤判断のリスクを負うのかを記録する。
私たちはしばしば、良い設計を「複雑さを隠すこと」と考える。しかし本当に優れた設計は、必要な複雑さを消して見せるのではなく、どの複雑さを今は隠してよく、どの前提は必ず見せるべきかを判断する。
コードの抽象化も、商品の推薦も、未来に対する賭けである。賭けること自体が問題なのではない。問題は、賭けを事実のように見せ、外れたときの負担を別の誰かに押しつけることだ。
だから次に「これを共通化できないか」「この表示は目立ちすぎないか」と考えるとき、別の問いを加えたい。
私たちは、何を簡単にしたのか。それとも、誰かが見るべき前提を、ただ見えなくしただけなのか。
この問いを習慣にできれば、技術的負債も、信頼の負債も、発生してから返済するのではなく、設計の段階で減らせるようになる。
Sources
Hatch New Ideas with Glasp AI 🐣
Glasp AI allows you to hatch new ideas based on your curated content. Let's curate and create with Glasp AI :)
Start Hatching 🐣