サーバを止める手順に、graceful shutdown という言い方があります。処理の途中にあるリクエストは最後まで返し、新しい接続だけを断り、それから終了する。乱暴に電源を切るのと、最終的にプロセスが消えることは変わりません。違うのは終わり方の内側だけです。日本語の技術文書はこの graceful をしばしば「優雅な」と訳します。最初にその対応を見たとき、少し座りが悪かった。装いや所作の側にある語だと思っていたので、停止処理の設計に持ち込まれる理由がすぐには分からなかったのです。
用例を並べてみると、工学がこの形容詞を置く場所は一貫しています。graceful degradation は、一部が壊れても全体を止めず、機能を段階的に落としながら動き続けることを指します。画像が取得できなければ代替テキストを出す。検索が重ければ件数を絞って返す。ほかに graceful restart もある。どれも平常運転の描写ではなく、境界と失敗の描写です。工学がこの語で呼んでいるのは、うまくいっているときの性質ではない。何かが失われる瞬間に、その失われ方を選べているかどうかです。
失われ方の設計を、もう少し細かい層で見ておきます。混雑して応答できないサーバは、503 という状態コードを返し、そこに Retry-After という項目を添えることができます。無言で切るのではなく、いま無理だという事実と、いつなら見込みがあるかを一緒に渡す。受け取った側は待ち方を決められます。画像の符号化にも似た工夫があり、プログレッシブ方式で保存された写真は、まず全体の粗い像が現れ、データが届くにつれて細部が埋まっていきます。途中で回線が切れても、そこまでの絵は意味を持つ。どちらの設計にも共通しているのは、中断が起きる可能性を前提にして、中断した時点の状態を相手にとって使えるものにしておくという構えです。
ここで引っかかります。日本語の側では、この語はむしろ余裕や遊びの側にあるのではないか。水面下で足を動かす白鳥を持ち出すまでもなく、優雅とされる所作は、力んでいないことによって成り立っている。失敗の作法を問う graceful とは、向いている方角が違う気がする。日本語で所作を褒めるとき、その場面はたいてい平時です。茶を出す、階段を下りる、挨拶をする。どれも何かが壊れかけている場面ではありません。訳語が同じでも、当てられている状況の集合が重なっていないのではないか。そう疑うほうが自然に思えました。
並べ直してみると、両者が共有しているのは余力でした。graceful shutdown を実装するには、終了の合図を受けてから実際に落ちるまでの猶予を確保しておかなければなりません。猶予がゼロなら、どれほど丁寧に書いた後処理も——コードとして存在していても——強制終了と区別がつかない。所作についても同じことが言えます。全力を出し切った直後に優雅はありません。使い切っていない分が外から見えているとき、人はそれをこの語で呼んでいる。名指されているのは美しさそのものではなく、余力が観測可能な形で残っている状態だ、ということになります。
余力を量として扱う道具も、この分野は持っています。待ち行列の理論では、窓口が塞がっている時間の割合を利用率と呼び、平均の待ち時間はこの値が一に近づくほど急激に伸びます。九割の利用率と九割五分の利用率のあいだにある差は、五分ではありません。到着のばらつきを吸収する余地が消えるので、同じ行列が桁違いに長くなる。設備を遊ばせないことを目標にした系は、平常時の数字だけ見れば優秀ですが、わずかな揺れで待ち時間が跳ね上がる。余っている分は無駄に見えて、実際には揺れを吸収する部品です。急がずに見える人の動きが、たいてい予定より早く現場に着いていることの結果であるのと、事情はよく似ています。
もっとも、余力を残すことが常に良い設計だとは限りません。異常を検知したら中途半端に粘らず、即座に落として再起動したほうが状態が単純になり、かえって安全だという考え方もあります。粘るための後処理は、それ自体がバグを抱えうる。優雅さは無条件の美徳ではなく、猶予を払える場合にだけ選べる選択肢です。小説でも事情は変わりません。静止した人物をどれだけ丁寧に描写しても、この評価の根拠は出てこない。中断、失敗、急な予定変更——負荷がかかった場面で、その人物がどれだけを使い残しているかが見えたときにだけ、これは測れる量になります。