概要
- Medium で発生したポーランド語「Ś」入力バグの発見
- 歴史的・技術的要因 が重なった複雑なバグの背景
- ポーランド語特有のキーボード事情 とWindowsの内部仕様
- Ctrl+Sショートカットの衝突 による問題発生
- 簡単な修正 で解決したが、多言語対応の難しさを示唆
30年越しのキーボードバグ
- Mediumで ポーランド語入力中、「Ś」だけが入力できない という報告
- 他の32文字は問題なく入力可能、 「Ś」だけが例外 という不可解な現象
- バグの背後には 4つの歴史的・技術的要素 が絡み合う
要素1:ポーランド語の特殊性
- ポーランド語は ロシア語に次ぐスラブ語圏2位の使用者数
- 英語のアルファベットを基盤 に、9つのダイアクリティカル記号付き文字を追加
- タイプライター時代 から特殊文字対応の工夫
- 一部記号を犠牲にして9文字分を配置
- 大文字は 手動で合成 する運用
- 句読点やカッコの省略 など独自のレイアウト
要素2:共産主義時代の影響
- 1980年代ポーランド では西側PCの商用輸入が禁止
- 個人輸入PCは 英語配列キーボード が主流
- ダイアクリティカル記号入力のための独自配列
- Ctrlは既にショートカットで多用、 Altキーを活用
- 8文字はラテン文字+Alt、1文字は近いキーに割り当て
- タイピスト配列 vs プログラマ配列 の誕生
- プログラマ配列は記号が多く残り、プログラミングに便利
- エルゴノミクスは悪いが普及
要素3:保存習慣とショートカット
- 自動保存機能が普及前 は手動保存が必須
- Ctrl+S(Command+S) が「保存」の定番ショートカットに
- ウェブエディタ ではCtrl+Sでブラウザの「ページ保存」ダイアログが開く
- Mediumは この挙動を防ぐため、Ctrl+Sを独自処理+イベントキャンセル
- これが後のバグの伏線
要素4:Microsoft Windowsの仕様
- WindowsではAltキー がメニューショートカットで多用
- ポーランド語入力では 右Alt(AltGr) がダイアクリティカル記号入力用
- 英語キーボードでは右Altがない場合、Ctrl+Altの組み合わせで代用
- 右Alt+S(=Ctrl+Alt+S)で「Ś」を入力
- 結果として、 Ctrl+Sの処理と衝突
バグの正体と修正
- MediumのCtrl+Sブロック処理が「Ctrl+Alt+S」も巻き込む
- そのため「Ś」が入力できなくなる
- 修正は Altキーが押されていない場合のみCtrl+Sをブロック する条件に変更
- 例: if ((e.metaKey || (e.ctrlKey && !e.altKey)) && e.keyCode === goog.events.KeyCodes.S) { ... }
- 数行の修正で解決、だが背景には複雑な歴史と仕様
多言語対応の難しさと教訓
- アメリカ英語中心の設計 が他言語ユーザーの不便を生む実例
- ポーランド語や他の言語 のための地道な工夫と開発者の努力
- プログラマ配列が今も主流、歴史的経緯が現代にも影響
- 一見些細なバグ でも、多層的な背景があることを示す事例