Mistake #81 : Hardcoded Limits

1001人目のユーザーが
登録できない日

「そんなにユーザーは来ないだろう」という開発者の予言は外れ、サービスはバズりました。
しかし、歓喜の中でシステムは静かに新規登録ボタンを無効化しました。
コードの中に埋め込まれた「見えない天井」が、成長を物理的に阻んだのです。

📏 限界診断
  • 「IDは4桁もあれば足りる」と言って `SMALLINT` を使っている
  • ファイルアップロードの上限がサーバー初期設定のまま(2MB)である
  • ページネーション(ページ送り)がなく、1画面に全データを表示しようとする
  • 2038年問題(Unix Timeの桁あふれ)について考えたことがない
⚠️ 警告:あなたのシステムは「成功」に耐えられません。
ビジネスが軌道に乗った瞬間に、自壊するようにプログラムされています。

01. 甘いお見積りの代償

配列のサイズ固定 `users[1000]`。DBの `VARCHAR(20)`。ページング処理の欠如。
これらはすべて、「未来の成功」を信じていない証拠です。
特に恐ろしいのは、システムがエラーを出さずに「ただ静かにデータを切り捨てる」ケースです。
気づいた時には、貴重な顧客データがデータベースに入りきらず、電子の藻屑となっています。

スケーラビリティとは、
「明日100倍の客が来ても平気な顔をする」ことだ。

02. マジックナンバーを排除せよ

コードの中に直接数字(マジックナンバー)を書くのはやめましょう。
`if (count > 100)` ではなく、設定ファイルや定数 `MAX_DISPLAY_COUNT` として定義する。
それだけで、「制限の緩和」はコード修正から設定変更へと変わり、ビジネスのスピードに対応できるようになります。

03. ID枯渇問題

Twitter(現X)もInstagramも、初期はIDの桁数不足に苦しみました。
データベースの主キーには、最初から `BIGINT`(あるいはUUID/ULID)を使うべきです。
「40億もデータはいかない」と笑う前に、40億件データが来た時の利益を想像し、それに備えるのがエンジニアの仕事です。

執筆:スケーラビリティエンジニア

限界突破の専門家。
数千万ユーザー規模のサービス設計経験を持ち、システムのボトルネックを事前に破壊する。