YAMLのノルウェー問題が2026年も継続
原題: YAML? That's Norway problem
なぜ重要か
広く使用されるYAMLの既知問題が現在も未解決で、開発者が設定ファイル作成時に注意すべき技術的課題として重要
データシリアル化言語YAMLにおいて、ノルウェーの国コード「NO」がブール値「false」として解析される問題が、2026年現在でも人気ライブラリで発生し続けている。この問題はYAMLが人間に読みやすい設定ファイルを目指し、「no」を否定の意味として解釈する仕様に起因する。
YAMLは人間が読みやすいデータシリアル化言語として設計され、設定ファイルやメタデータで広く使用されている。しかし「ノルウェー問題」と呼ばれる既知の問題が存在する。この問題は、ノルウェーのISO国コード「NO」が、YAMLパーサーによってブール値の「false」として解釈されることで発生する。
問題の原因は、YAMLが自然言語のような読みやすさを重視し、「no」「yes」「true」「false」などを自動的にブール値として認識する仕様にある。例えば「AppleWatch: no」という記述は「AppleWatch: false」として解析される。これは設定ファイルを自然言語のように記述できる利点がある一方で、文字列として扱いたい「NO」が意図しない変換を受ける問題を引き起こす。
2026年現在でも、PythonのPyYAMLライブラリ(バージョン6.0.3)など人気ライブラリでこの問題が継続している。PyYAMLはPythonで最も人気のYAMLライブラリで、PyPI統計によると上位20位以内の人気ライブラリとなっている。
回避策として、「NO」を引用符で囲む方法「"NO"」がある。これにより文字列として正しく解析される。しかし根本的な解決には至っておらず、開発者は注意が必要な状況が続いている。