【要約】Zennのデプロイが「絵文字1文字」で落ちていた話——異体字セレクタとpre-commitでの再発防止【Zenn】 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
Zennの運用者が、フロントマターの絵文字が原因でデプロイが失敗する問題に直面した。見た目は1文字でも、内部的に複数のコードポイントを持つ絵文字が混入していた。
- ・異体字セレクタ(U+FE0F)により、コードポイント数が想定を超えていた。
- ・エディタ上では判別不能であり、目視での発見が極めて困難であった。
- ・貼り付け元によって挙動が変わり、原因の特定に手間を要した。
// Approach
再発防止のため、絵文字の置換と自動検査体制の構築を並行して行った。まず、問題の絵文字を安全なものへ置き換えた後、以下の自動化を実施した。
- ・異体字セレクタを含む絵文字を、単独で成立する絵文字へ置換した。
- ・Pythonによるバリデーションスクリプトを作成した。
- ・pre-commitフックに接続し、コミット時に自動でフロントマターを検査する仕組みを構築した。
- ・「わざとエラーを発生させて検知できるか」を確認するテスト工程を導入した。
// Result
検査体制の構築により、デプロイ失敗の再発を防止する仕組みが完成した。これにより、不適切なデータがレポジトリに混入するのを未然に防げる。
- ・フロントマターの7項目(emojiのコードポイント数含む)を自動検査可能にした。
- ・14件の記事を検査し、違反0件であることを確認した。
- ・「壊れることを確認する」プロセスにより、検査ロジックの信頼性を担保した。
Senior Engineer Insight
> 非常に実践的な教訓である。不可視な文字による不具合は、大規模開発において「見えないバグ」として深刻化する。単なるスクリプト作成に留まらず、pre-commitによる開発フローへの組み込み、および「正常系だけでなく異常系(わざと壊す)の検証」まで踏み込んでいる点が極めて優秀である。Windows環境のエンコーディング差異まで考慮した実装は、現場の泥臭いトラブルを予見している。