Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WindowsにおけるRubyのエンコーディングの話 Ruby3版/Ruby's encoding on Windows at Ruby3

8cbb39dadafaf2287a83a13ee4981ec9?s=47 usa
April 17, 2020

WindowsにおけるRubyのエンコーディングの話 Ruby3版/Ruby's encoding on Windows at Ruby3

Ruby3サミット(2020-04-17)

8cbb39dadafaf2287a83a13ee4981ec9?s=128

usa

April 17, 2020
Tweet

Transcript

  1. Windowsにおける Rubyのエンコーディングの話 Ruby3版 pixiv Inc. @Ruby3さみっと 2020.4.17

  2. 2 自己紹介 • Rubyのコミッタ ◦ Windows ◦ 安定版(今は2.6と2.5) ▪ 古いRubyを殺す係

    • おしごとは画像変換・配信の仕組みを作ること
  3. 3 Ruby3でWindows版の エンコーディングが どうなるか 今日のお話

  4. 4 Ruby3では 全部UTF-8にするぞ! 結論

  5. 5 おしまい

  6. 6 ……これだけ、というのは あまりにもあんまりなので、 どういう話なのか一応解説

  7. 7 CodePage 背景

  8. 8 MS-DOS(知ってる?) 背景

  9. 9 MS-DOS由来 : OEM CodePage 古き良きコンソール画面用 ハードウェアに依存 背景

  10. 10 16bit Windows由来 : ANSI CodePage グラフィカル画面用 ソフトウェア的に表示 背景

  11. 11 32bit Windows由来 : UTF-16LE (※CodePageではないが) WindowsのAPI(いわゆるW版) 背景

  12. 12 ファイルシステムのエンコーディング MS-DOS時代からの資産を継承 → OEM CodePage 背景

  13. 13 I/Oのエンコーディング WindowsのAPI(いわゆるA版) → ANSI CodePage 背景

  14. 14 Ruby 1.8まで ANSI CodePageベース OEM CodePageとの違いは無視 Rubyでは?

  15. 15 Ruby 1.9から 多言語化の仕組みが入った 互換性を保つため、Windowsでは、 ・I/OはANSI CodePage ・ファイルシステムはOEM CodePage Rubyでは?

  16. 16 Ruby 2.0から スクリプトのエンコーディングの デフォルトがUTF-8になった Rubyでは?

  17. 17 結果、どうなったか? → ANSI CP、OEM CP、UTF-8が 入り乱れた状態 Rubyでは?

  18. 18 「全部UTF-8に統一しろよ!」 いや、わかる、わかるんだが、 今までのコード資産を守るために 互換性を保たないと…… Rubyでは?

  19. 19 202X、殺伐としたRuby界に 颯爽とRuby3が!!! → メジャーバージョン上がるなら 互換性壊しても、いいよね? Rubyでは?

  20. 20 Ruby3では 全部UTF-8にするぞ! 結論

  21. 21 今度こそ おしまい