フォールバックは「代役を立てる」仕組み
フォールバック(fallback)は、本来やりたかった方法がうまくいかなかったときに、あらかじめ決めておいた別の方法に切り替えて処理を続けることを指します。英語の直訳だと「後退する」「頼りにする」といった意味で、日本語なら「代替手段」「予備の受け皿」あたりが近いです。
身近な例で言うと、電車が止まったときのことを想像してみてください。いつもの路線が使えないと分かった瞬間に「じゃあバスで行くか」と切り替えますよね。バスが第一希望だったわけではないけれど、目的地に着くという目的は果たせる。この「バスで行くか」の部分がフォールバックです。ポイントは、止まってから慌てて考えるのではなく、事前に「ダメだったらこうする」と決めてあること。プログラムの世界でも同じで、失敗したときの行き先を先に決めておくのがフォールバックの設計です。
「エラーで止まる」との違い
何かに失敗したとき、取れる態度は大きく2つあります。
エラーで止める
失敗をそのまま利用者に伝えて処理を中断する。原因がはっきり伝わるが、目的は果たせない。
フォールバックする
別の手段に切り替えて処理を続ける。とりあえず結果は出せるが、本来の方法より品質が落ちることもある。
どちらが正しいという話ではなく、場面によります。お金の計算のように「間違った結果を返すくらいなら止まってほしい」処理では、安易なフォールバックはむしろ危険です。一方で、表示の見た目や補助的な情報の取得なら、多少質が落ちても動き続けたほうが利用者にとってありがたい。
よく見かけるフォールバックの例
実は普段使っているソフトの中に、フォールバックはあちこち埋まっています。
- Webページで指定したフォントが端末に入っていなかったとき、別のフォントで表示される
- 設定ファイルに値が書かれていなかったとき、デフォルト値を使う
- ネットワークから最新データを取れなかったとき、前回保存したキャッシュを表示する
- 画像が読み込めなかったとき、代替テキストを表示する
どれも「理想の状態ではないけれど、何も出ないよりはマシ」という共通点があります。
流れとして見るとこうなる
この「失敗を検知する」の部分が地味に大事です。失敗したことに気づけないと、そもそも代役を呼べません。逆に、成功しているのに失敗と誤判定すると、必要もないのに質の低い代替手段に落ちてしまいます。
フォールバックの落とし穴
便利な考え方ですが、雑に使うとトラブルの温床になります。よくあるのが「フォールバックが優秀すぎて、本命が壊れていることに誰も気づかない」パターン。代役がそれなりに仕事をしてしまうので、表面上は動いているように見える。数か月後に代役側まで壊れて、はじめて「え、本命ずっと死んでたの?」と発覚する、というのは現場でわりとある話です。
これを避けるには、フォールバックが発動したことをログや通知で分かるようにしておくのが基本になります。「静かに代役に切り替わる」のではなく「切り替わったことは記録に残す」という設計です。
もう一つの落とし穴は、代替手段の質を利用者に伝えないこと。古いキャッシュを表示しているのに最新データのような顔をしていると、利用者は誤解したまま判断してしまいます。「オフラインのため保存済みのデータを表示中」のような一言があるだけで、印象はまったく変わります。
覚えておきたいこと
フォールバックは「失敗を許容する設計」ではなく、「失敗しても目的を果たすための設計」です。だから、代役を用意する前に「そもそも何を守りたいのか」を決めておく必要があります。守りたいのが正確さなのか、止まらないことなのか。ここが曖昧なまま代役だけ増やすと、動いているのか壊れているのか分からないシステムができあがってしまいます。
このページは役に立ちましたか?