0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

なんでVBEはShift-JISなのか考察してみた・・・

0
Posted at

背景

ある日、VBAの編集をVS-Codeでしようと思い、編集中のスクリプトをVBEからエクスポートして、VS-Codeに読み込ませたら文字化けをしていた・・・
エンコードを確認したら、おすすめが Shift-JIS になっているではないか?
「なぜだろう?」と思い、いろいろ調べた内容とわたしの考察を以下に記しています。

🧠 そもそも、UTF-8でコードを書く理由はなんだろうか?

✅1.プログラマーがUTF-8を好む理由

  • UTF-8Unicodeをエンコードする方法の一つ
  • ASCIIをそのまま互換できる ※ 詳細は2. ASCIIとの完全互換性を参照
  • そのうえ日本語、中国語、絵文字なども表現できる
  • 日本語、韓国語、中国語(2バイト)など地域独自の規格に分ける必要がない
  • 1バイトごとにエンコードするので、「リトル/ビックエンディアン問題」の影響を受けない

→世界共通の標準なので、国際化対応・多言語化が圧倒的に楽。

✅2.ASCIIとの完全互換性

  • A+;などの**ASCII文字は1バイトのまま
  • UTF-8やASCIIの0x00~ox7Fをそのまま使うので、**古いツールやプロトコル(HTTP,JSON,C言語の文字列)**でも壊れない

🧩 例:

文字 ASCII UTF-8 バイト数
A 0x41 0x41 1
E3 81 82 3

✅3.エンディアン(バイト順)の影響を受けない

  • UTF-16やUTF-32は「リトル/ビックエンディアン問題」がある
    • ビックエンディアンで保存したデータをリトルエンディアンで読み込むと文字化けする
    • 逆もしかり・・・
  • UTF-8は1文字1バイトなので、上記問題が起こりえない

🧩参考:

文字 Unicodeコードポイント UTF-16BE(ビッグエンディアン) UTF-16LE(リトルエンディアン) 備考
A U+0041 00 41 41 00 英字(1コードユニット)
U+65E5 65 E5 E5 65 漢字(BMP内)
😊(スマイル) U+1F60A D8 3D DE 0A 3D D8 0A DE 顔文字 (※UTF-8:f0-9f-98-8a)

✅4.文字化けが起きにくい

  • Shift-JIS や EUC-JP は「日本語だけの独自規格」なので、日本語非対応環境で開くと「文字化け」しやすい(対応していてもエンコードの設定をいじるのがめんどい・・・)
  • UTF-8はほぼすべてのプラットフォーム・ブラウザ・エディタで標準サポートされている。(サポートされていないエディタを見たことない)

🧠 ではなぜVBE(Visual Basic Editor)はShift-JISを使っているのか?

(結論)技術的負債

  • 「技術的な遺産(レガシー)」と「Microsoftの互換性維持ポリシー」がいまさらUTF-8に変更することを許さないから

✅1.VBEは90年代の日本語Windows文化の上に築かれた

  • VBEは Visal Basic 3.0Base (Excel 5.0;1993年) をベースにした 古い エディタです
  • 当時の日本語Windowsは「Shift-JIS」が標準コードだった
  • そのため、VBAの文字列リテラルやソースファイルもShift-JISで保存される設計。

✅2.Excelの内部構造もShift-JIS依存

  • いまさら、UTF-8に切り替えたら過去30年以上のマクロがすべて文字化けする
    • 変数名とかが日本語になっているコードは漏れなく動かなくなる (笑)
      → Microsoftは後方互換性を最重視しており、Shift-JISを維持せざるを得ないのです。

✅3.VBEは単体アプリではなく「Officeの内臓機能」

  • VBEは単体で更新されるわけではなく、Officeの一部として動作します
  • VBAエディタ内部は古いCOMアーキテクチャ上で動作しており、
    Unicode(UTF-16)変換を前提とした再設計は大がかりすぎる。

→ Microsoftも「壊れないこと」を優先し、
 Shift-JISのまま残していると考えられます。

🧠今後、VBEがUTF-8に対応する可能性はあるのか?

💬 現状:UTF-8対応のVBEは存在しない
💡 将来的にもUTF-8対応になる可能性は低い

理由

  1. VBEが「レガシー技術」で、ほぼ開発停止状態だから(長らく機能面でのアップデートがない)
  2. そもそもMicrosoftは「代替技術」を推しているから(Office Script, Power Automate, Add-in, .NET ...)

🧩参考:代替技術

技術 概要 文字コード
Office Scripts Excel Online / 365用の自動化(TypeScriptベース) UTF-8
Power Automate クラウドフローでOffice操作を自動化 UTF-8(JSONベース)
Add-in(JavaScript API) WebView上でOfficeと連携 UTF-8
.NET / VSTO VB.NETやC#からOfficeを制御 UTF-16(.NET標準)

公式ドキュメント

→VBEに関しては公式が沈黙している・・・

📒まとめ

VBEは1990年代のShift-JIS前提の設計をそのまま引き継いでおり、
Unicode(UTF-8 / UTF-16)化には内部構造の全面改修が必要。
しかしMicrosoftは互換性維持を優先し、
「壊さないために更新しない」 方針を取っている。

📎 一言で言うなら:(chat-GPT5の毒舌)

💬 「VBEは“Shift-JISで止まった時代の産物”。」
文字コードの壁を超えるには、エディタ自体の再設計が必要。
でもMicrosoftは、もうそこに投資しない。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?