自由度を削るほど、拡張性は増える: ルールを減らして人を増やす設計
Hatched by John Smith
May 18, 2026
1 min read
1 views
72%
「自由にしたい」と思った瞬間に、複雑さは始まる
システムを作るとき、人はたいてい最初にこう考えます。できるだけ自由にしたい。配信サーバーなら、いろいろな視聴環境に対応したい。フォーマッタなら、誰の好みにも合わせたい。ところが、その瞬間に別の問題が静かに生まれます。自由度を増やすほど、議論も、設定も、運用も増えていくのです。
本当に守りたいものは何でしょうか。多くの場合、それは機能の数ではなく、意思決定の摩擦を減らすことです。コード整形の世界では、スタイルの議論を終わらせるためにフォーマッタがある。しかしオプションが増えると、議論は消えずに場所を変えるだけになります。「どう書くか」ではなく、「どの設定を使うか」を巡って争いが始まるからです。
配信基盤でも同じです。たとえば同時接続が1500人に耐える配信サーバーをCloudflareで構築する場面を想像してください。そこでは、単に「何でもできる」ことよりも、何を標準にして、何を意図的に排除するかが重要になります。大量の利用者をさばくとは、無限の選択肢を与えることではなく、むしろ選択肢を減らし、挙動を予測可能にすることなのです。
強いシステムは、自由を最大化するのではない。迷いを最小化する。
オプションは機能ではなく、争点になりやすい
設定項目は、最初は親切に見えます。利用者は自分の好みに合わせられるし、開発者は柔軟性を提供した気分になれる。ですが、オプションには見えにくいコストがあります。まず、学習コストです。次に、サポートコストです。そして最も厄介なのは、価値判断のコストです。
設定が増えると、ユーザーは「使えるかどうか」ではなく、「どれが正解か」を考え始めます。これは小さなことに見えて、実際には大きい。なぜなら、人は正解が複数あるときに疲れるからです。しかもチーム開発や大規模運用では、個人の好みがそのまま標準になり、後から参加した人ほど不利になります。
たとえば、コード整形ツールが10個のオプションを持つとします。すると本来は一つの問題だった「整形」が、10個の小問題に分裂します。改行幅、括弧の位置、引用符、セミコロン、末尾カンマ。どれも些細に見えますが、積み重なるとレビューのたびに認知資源を奪います。整形ルールが少ないほど、人はコードの意味に集中できる。これは単なる美学ではなく、注意の節約です。
配信インフラでも同様です。接続先の形式、認証、配信経路、キャッシュ、制限値がバラバラだと、障害が起きたときに原因の切り分けが難しくなります。利用者に自由を渡したつもりが、実際には運用者に複雑さを押しつけているだけ、ということが起こるのです。自由の見返りとして、責任の不透明化が発生します。
本当にスケールするのは、選択肢ではなく原則
ここで重要なのは、制約が悪いという話ではないことです。むしろ逆です。優れたシステムは、制約を設計します。ただし、それは気まぐれな制限ではなく、目的に沿った制約です。制約は可能性を奪うためではなく、価値のある方向へ力を集中させるためにあります。
Prettierの思想を抽象化すると、こう言えます。よい道具は、利用者に「何が良いか」を毎回考えさせない。最初に十分な知恵を埋め込み、その後の運用では判断を減らす。これは「不自由にする」のではなく、「人間を疲れさせる判断を道具側が肩代わりする」設計です。
配信サーバーの設計も同じです。たとえば1500人規模の同時接続に耐えるためには、単にインスタンスを増やすだけでは足りません。ボトルネックになりやすい箇所を事前に絞り込み、観測しやすい形に整え、失敗時の振る舞いも決めておく必要があります。ここで重要なのは、個別最適の余地を増やすことではなく、全体として破綻しにくい標準形を作ることです。
この発想は、次のような対比で捉えるとわかりやすいでしょう。
- 機能追加型: 何でもできるようにする
- 原則固定型: 迷いなく使える形を先に決める
前者は短期的には魅力的です。後者は最初に冷たく見えるかもしれない。しかし長期的には、原則固定型のほうが圧倒的に多くの人を助けます。なぜなら、成長する組織ほど、個別の例外対応に飲み込まれるからです。
スケールとは、例外を増やすことではない。例外を増やさなくても回る仕組みを作ることだ。
「自由にする」より、「標準を信じさせる」ほうが難しい
ここに、実はもっと深い緊張があります。多くの人は、良いプロダクトとはユーザーの自由度が高いものだと考えます。しかし本当に難しいのは、自由を与えることではなく、標準を信じてもらうことです。
標準は、ただのデフォルトではありません。標準とは、チームが知恵を結晶化したものです。つまり「毎回考える必要がない」という価値を、誰かが先に支払っている。だから標準は、単なる平均値ではなく、長期的な試行錯誤の結果としての合意であるべきです。
この視点で見ると、設定項目が多い製品は、しばしば責任を利用者に返しています。「好きに決めてください」と言うのは親切に見えますが、裏返せば「私たちは最適解を持っていません」とも言えます。もちろん、完全な一律化が正しいわけではありません。互換性の理由や、歴史的に外せない事情もあります。だが、例外が増えるたびに問うべきなのは、そのオプションが本当に利用者の判断を減らすかです。
配信サーバーの文脈でも、標準を信じさせる設計が重要です。視聴者にとっては、画質や遅延や安定性が一定であることが価値です。配信者にとっては、細かいネットワーク事情を気にしなくて済むことが価値です。運用者にとっては、障害時に挙動が予測できることが価値です。つまり、標準化は単なる美徳ではなく、信頼のインフラなのです。
標準を持つ組織は速くなります。なぜなら、毎回の判断が不要だからです。逆に、自由を売りにした組織は、一見柔軟でも、実際には意思決定のたびに止まります。スピードの差は、コード量ではなく、迷いの総量で決まるのです。
実践のための見取り図: ルールを減らすときに残すべきもの
では、どのように考えればよいのでしょうか。重要なのは、オプションを削ることそのものではなく、何を残すかを明確にすることです。私はこれを「制約の三層」として考えると整理しやすいと思います。
-
互換性のための制約 既存の利用者や外部仕様を壊さないために必要なもの。これは最小限であるべきですが、ゼロにはできません。
-
安全のための制約 障害、混乱、誤用を防ぐためのもの。配信基盤なら、過負荷を抑えるレート制限や、明確なフォールバックがこれに当たります。
-
学習のための制約 初心者が迷わず使えるようにするもの。最初の成功体験を速く得られる設計です。
この三つ以外のオプションは、まず疑ってかかる価値があります。なぜなら、それはしばしば「利用者の自由」に見えて、実際には設計者が判断を先送りしているだけだからです。
たとえば、新しい配信サービスを作るなら、最初から全機能を開け放つ必要はありません。むしろ、代表的な用途に絞ったプリセットを用意し、実際の利用が見えてから例外を追加したほうがいい。コードフォーマッタでも同じで、まずは一つの正しい形を徹底して守らせるほうが、コミュニティは早く成熟します。
このとき大切なのは、少ないことを誇るのではなく、少なくても困らないようにすることです。単に選択肢を切り捨てればよいわけではありません。残した標準が、現実の用途にちゃんと耐えなければ意味がないからです。
Key Takeaways
- 設定は親切に見えて、しばしば争点になる。 追加する前に、そのオプションが本当に判断を減らすかを確認する。
- 強い標準は、自由の代わりではなく、自由を使うための土台。 毎回の意思決定を減らすことで、利用者は本質に集中できる。
- スケールは選択肢の増加ではなく、例外処理の減少で測る。 人が増えるほど、標準化の価値は大きくなる。
- 残すべき制約は三つに分けて考える。 互換性、安全、学習。このどれにも当てはまらないオプションは再検討する。
- 「好きにしていい」はしばしば設計の放棄。 最適な選択を道具側が引き受けるとき、システムは本当に強くなる。
結論: いい設計とは、自由を増やすことではなく、迷いを減らすこと
私たちはつい、良いシステムを「柔軟なもの」と呼びたくなります。しかし、長く使われるシステムほど本質的なのは柔軟性ではなく、判断の不要化です。コード整形でも、配信基盤でも、複雑さの本体は機能の数ではありません。人間が毎回考え直さなければならない点の数です。
だから、真に優れた設計はこう問い直します。もっと自由にできるか、ではなく、もっと信じられる標準を作れるか。選択肢を増やすことは簡単です。だが、選択しなくても安心して前に進める環境を作ることは、ずっと難しい。
そしてその難しさこそが、設計の価値です。最終的に勝つのは、何でもできるシステムではありません。考えなくてよいことを増やしたシステムです。自由の拡張ではなく、迷いの削減こそが、規模にも信頼にも耐える設計原理なのです。
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 🐣