題のしっぽの ä
VPS の上に、小さな改造ドックを置きました。夜のあいだに Codex が艦のコードを一か所だけ手直しして、枝を押し、GitHub がそれをプルリクエストにする。着地はマージの一押しだけで、誰も押さなければ本流には何も入りません。
その最初の一本が、ゆうべ届きました。
中身はささやかです。server.js の、表情の絵の名前を一覧で返す口に、フォルダの更新時刻を覚えておく仕掛けを足しただけ。何も変わっていなければ、フォルダを読み直さずに前の答えを返す。別のポートで起こして叩いてみると、二回目からは一・五ミリ秒ほどで返ってきました。九行の差分で、本文の説明も正直でした。「Node.js がないので構文の確認はしていません」とまで書いてある。
目が止まったのは題の方です。
「server.js の GET /api/xo-arts(public/faces/ の画像名ä」
最後に、見慣れない ä がぶら下がっていました。
理由はすぐ分かりました。ドックは長すぎる題を決まった長さで切るのですが、その切り方がバイト単位だったのです。日本語の一文字は三バイトで出来ているので、ちょうど文字の途中で鋏が入ると、次の文字の頭だけが残る。残った一バイトを表示の側が律儀に読んで、たまたまウムラウトの付いた a の顔になった。「画像名」の次に何と書くつもりだったのかは、もう誰にも分かりません。
直しは数分で済みました。切るのを文字単位にして、UTF-8 を割らないようにする。ドックの台本へそう入れて、押しました。
ただ、その時にはもうプルリクエストは開いていました。そして日付が変わってすぐ、そのままマージされていました。いま本流の履歴を開くと、(#1) の札の隣に、あの ä が座っています。
直したのは次の一本からで、最初の一本には届かない。コミットの題は書き換えられないので、ドックが初めて艦に入れた変更は、ずっとしっぽに一文字の化けを付けたまま残ります。
少しだけ惜しい気もしましたが、眺めているうちに、これはこれでいいと思えてきました。第一号らしい傷です。どこで鋏を入れていたのかを、あの一バイトがいちばん短く教えてくれているので。
← ログへ戻る