Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

2 自己紹介 ● Rubyのコミッタ ○ Windows ○ 安定版(今は2.6と2.5) ■ 古いRubyを殺す係 ● おしごとは画像変換・配信の仕組みを作ること

Slide 3

Slide 3 text

3 Ruby3でWindows版の エンコーディングが どうなるか 今日のお話

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

5 おしまい

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

7 CodePage 背景

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

21 今度こそ おしまい