プログラミングの用語一覧へ
このページの目次

エッジケースとは?

読み方:エッジケース

最終更新:2026/08/18

3秒でわかる

空の入力や 1 件だけ、上限ぎりぎりの値など、想定の端にある入力のこと。普通の値では動くコードが落ちる場所で、テストで真っ先に確かめる対象になる。

もう少し詳しく

どういうものか

想定している入力の範囲の、端やそのすぐ外側にあたる入力や状態のことです。空の配列、要素が 1 件だけの配列、0 や負の数、扱える最大値、空文字列、null や undefined などが代表例です。

真ん中あたりの値では素直に動くコードが、端の入力だけで落ちる、という形で表面化します。書いた本人は真ん中の値しか試していないことが多いため、テストや他人のレビューで初めて見つかることも珍しくありません。

なぜ必要か

実際の障害の多くがここで起きるからです。商品が 1 件も無い日、まだ注文したことがない新規ユーザー、名前が空欄のまま送られたフォーム。開発中のテストデータには出てこないのに、本番では必ず現れる状況です。

境界を先に洗い出しておくと、コードを書く前に必要な分岐が決まるという効果もあります。「空のときは何を返すのか」を実装前に決めておけば、後から例外処理を継ぎ足して複雑になるのを避けられます。テストケースを作るときも、端の値を並べるだけで有効なケースが揃います。

具体例

平均点を出す関数を素直に書くと、要素が 0 件のときに壊れます。

def average(scores): return sum(scores) / len(scores) print(average([80, 60, 70])) # 70.0 print(average([])) # ZeroDivisionError

端の入力を先に決めてから書き直すと次のようになります。

def average(scores): if not scores: return 0.0 return sum(scores) / len(scores) # 端の入力を並べて確かめる print(average([])) # 0.0 空 print(average([50])) # 50.0 1 件だけ print(average([0, 0])) # 0.0 全部ゼロ print(average([-10, 10])) # 0.0 負の数を含む

空のときに 0 を返すのか、None を返すのか、例外を投げるのかは仕様の判断です。大事なのは、書く前にどれかを決めておくことです。

つまずきやすいところ

  • 検索結果が 0 件のときの表示を作り忘れ、真っ白な画面になる。「該当なし」と出すところまでが実装です

  • 配列の最後の要素にアクセスするつもりで長さと同じ添字を使う。要素が n 個なら添字は n-1 までで、この 1 つのずれが端でだけ落ちる原因になります

  • 空文字と null を同じものとして扱う。未入力なのか、入力欄そのものが送られていないのかは別の状態です

  • 日付の月末や閏日を考えない。「1 か月後」を 30 日後として計算すると、月によって答えが変わります

  • 全角スペースだけが入力された文字列を空とみなさない。空欄チェックが素通りします
  • 覚え方

    「無い、1 つ、いっぱい」の 3 つを口癖にすると漏れが減ります。ここに「マイナス」と「未入力」を足せば、日常のコードで踏む端はおおむね網羅できます。

    知識のつながり

    サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

    現在地エッジケースプログラミング

    LEARN BY DOING

    この用語を、教材で使ってみる

    直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

    このコースが入っている学習分野

    この用語を扱うコース

    コース

    アルゴリズム道場 カメ師範の十の巻

    10レッスン
    コース

    Python入門:基礎文法編

    74レッスン
    コース

    コンピューターサイエンス:アルゴリズム / OS / ネットワーク / DB

    135レッスン
    コンピュータサイエンスコースの全編を見る