先日、開いたcsvが文字化けしていた。最初「ん?」と思ったけど、「あ、Shift JISか」と思って変換した。Shift JISだった。
文字コードでわかること
現状、csvはITリテラシーの高い人が扱うことが多い。すると、文字コードの事情は当然知っているので、csvも自然UTF-8が多くなる。一方で、文字コードなんのこっちゃという人は、csvなんか使わずxlsxでそのまんま渡してくる。
しかしこれはプログラマにとってけっこう有り難いことだ。文字コードの観点では、Shift JISかもしれないcsvよりExcelデータのほうが明確だし、そのExcelデータが純粋にcsv的なデータの羅列として使われている限りは、特に問題がない。そのまんま読み込める。
なので、Shift JISなCSVをプラグラマが見る機会はめっきり減った。しかしそれはShift JISが滅んだことを意味しないし、これから滅びることも意味しない。Shift JISは生き続ける。なぜならば、Shift JISはExcelという巨大帝国の臣民だからだ。なので、少なくともExcelが生きている間は生き続ける。
MS帝国も最初から帝国ではなかった
ここからわかることは、後方互換性の重要性を、MSは今なお理解している、ということだ。MSはやろうと思えば「新バージョンではShift JISは滅ぼします。モダンではないので。クールなUnicodeを使おう!Shift JISを使う奴はイケてないし意識低い!」と業界でいつもプログラマが言われるような感じで強権発動できるはずだけれど、しない。そんなことすれば誰もついてこないことは目に見えている。わざわざ今使えるものを使えなくするメリットはない。
わかっているはずなのだが、対プログラマになると、なんだかスナック菓子感覚でAPIやらライブラリのインタフェースやらどんどこ変わる。まぁTypeScript自体は比較的控えめかもしれんけど、周りがね。そしてTypeScriptの厳密な要求とぶつかって、悲しい型バリデートの作業が発生する。それはあまりイノベーティブともクリエイティブとも言えない作業に思えるが、まぁある。しかも地味にAIもこれ苦手である。俺、AIに奪われない仕事見つけちゃいました?
いやまぁ現実的には、「csvを読み込む」がワークフローとしてあるならば、それは多分AIも対応できるんだけれど、現実の作業は定型的ではないので、型を検証したりShift JISをUTF-8に変換したりするのが末端エンジニアの仕事、ということになるようだ。いったいそれはエンジニアリングなのか疑問だが、もしかするとそもそもお前なんかエンジニアじゃないね、と思われているのかもしれない。じゃあなんなんだろう?トランスフォーマー?え、カッコいい。AIではなく俺がtransformerだったのか。
まぁもうちょっと正確に言えば、定型ではない入出力の最初と終わりを整えて、定型に変換する、インピーダンスマッチングのようなものが末端エンジニアの仕事、になるのかもしれない。うーんこれはトランスフォーマーというよりバッファー。いずれにせよあまり楽しそうではない。
金の流れに身を任せ
どうしてこうなるかと言うと、これは金の流れに帰結するのだろうと思う。MSも直接金を払う人に「文字コードをクールにします」とは言えないが、別に金を払うわけではないバッファに対しては、VS Codeで「deprecated」と表示しといてやれば、いつでも変えてよい。むしろメンテナンスコストを請求する言い訳を与えてやっている。
ただ同じく別に有料ライセンスではないWin32 API——僕は使っていないのだが——は、先輩方の話では非常に高い互換性、というか今も使われているわけで、なんだかここしばらくでソフトウェアの常識は随分と変わったのか、それとも、金の流れとして末端の開発者もまた重要だと思われていたのか。
冷静に考えて末端だろうがなんだろうが開発者が重要でないはずはない。一方、機能的ではない頻繁な変更は重要ではないと思うが、現実にあちこちで起きている。そしてその対応コストは莫大だし、なんだかそれに対応し続けることが成長とすら言われていた気もする。
しかし振り返ると、手元に残ってなお動いているのは、大昔書いたbashのコードと、昔趣味の仮想通貨取引で使っているLambdaなシステムくらいで、なんだかこれというものがない。しかしこんなことを迂闊に嘆けば、同じエンジニアから同情ではなくお前が本質的なことを学んでいないだけと軽侮と悪罵が飛んできかねない。もはや僕自身がdeprecated扱いな気がする。一応まだ使える、はず。
何か深刻に間違えている、という気分はあるが、間違えているのは社会なのか僕なのか。きっと両方なんだろう。Warningの間に、修正できればいいんだが。

コメント