土曜日, 7月 12, 2025
土曜日, 7月 12, 2025
- Advertisment -
ホームニューステックニュース真説 Windowsでディレクトリ区切りのスラッシュ / がバックスラッシュ ⧵ で円マーク ¥ な理由 #Windows

真説 Windowsでディレクトリ区切りのスラッシュ / がバックスラッシュ ⧵ で円マーク ¥ な理由 #Windows



真説 Windowsでディレクトリ区切りのスラッシュ / がバックスラッシュ ⧵ で円マーク ¥ な理由 #Windows

はじめに

Windows ではディレクトリ区切りに Unix 系 OS の / ではなくバックスラッシュ を使い、しかも 日本語フォントでは 円マーク ¥ で表示されます。なぜこうなったかは次の独立した 2 つの理由からです。

  • はるか昔に JIS の文字コードの標準規格はあまり使わない を必須の ¥ に置き換えた
  • はるか昔にコマンドのオプション(スイッチ)としてすでに / を使っていた

Microsoft は他の OS のやり方を真似するのが嫌だからとか権利侵害になりそうだから / に変更したなどという根も葉もない噂がありますが、そうではありません。むしろ Microsoft は他の OS のやり方を取り込んだんです。なお、後で解説しますが、Windows は昔からディレクトリ区切りに「/」と「 ¥ 」の両方を使えるので Unix 系 OS と互換性がないわけではありません(どっちかと言えばドライブレターのほうが扱いが面倒)。

前提知識として、Microsoft は Windows の前に MS-DOS という CLI ベースの 16 ビット OS を作っていました。初期の Windows 1.0~3.x は MS-DOS 上に GUI を被せただけのもの。Windows 95~Me は MS-DOS の制御を奪って動作する 32 ビット OS(MS-DOS を使うのは起動時と互換機能のみ)。Windows NT 3.1~最新版は MS-DOS を全く使用しない OS で、OS の標準文字コードに Unicode を使うようになったという違いがあります。

文字 ¥ に置き換えられた理由

¥ に置き換えたのは、1969 年の JIS C 6220(現在の JIS X 0201)です。JIS (Japanese Industrial Standards) は日本産業規格のことで、他でもない日本が ¥ に置き換えたのです。MS-DOS の誕生は 1981 年、Microsoft の設立でさえ 1975 年なので、¥ と表示されるのを Microsoft のせいにするのはお門違いです。JIS 規格に準拠していれば ¥ と表示するのが正しいことで、当時は他に半角の ¥ はありません。

¥ に置き換えた理由は、日本にとって よりも ¥ が重要な文字だったからです。コンピュータの用途としてお金を扱うことは多くあるわけで「¥12,345」と表示または印字できなければ困るでしょう? ただその前に文字の置き換えは日本が独断で勝手にやったことではありません。これは国際標準規格で「置き換えて良い」と決まっていたからやったことなのです。

ASCII と 国際規格 ISO/IEC 646

国際標準規格の前にまず ASCII という標準規格があります。ASCII は ANSI (American Standard Code for Information Interchange) によって標準化されている文字コードで 1963 年に標準化されました。ANSI はその名の通り米国の標準規格ですが、ASCII を元に作られた国際標準規格が 1967 年の ISO/IEC 646 です。ISO/IEC 646 は特定の文字コードを定めたものではなく、ASCII をベースにして「独自の文字集合を定義するための決まり事」を定めたものです。

1963 年の ASCII と 1967 年の ISO/IEC 646 は共に 7 ビットの文字コードです。当時の通信技術の制限からなるべくビット数を少なくすることが求められており、過去には 5 ビットの Baudot コードさえありました。当時のコンピュータは 1 バイトが 8 ビットとは限らず、それよりも少ないビット数のコンピュータもあったため 8 ビットは最小単位というわけではありません。7 ビットで表現できる文字数には限りがあり文字を追加する余裕はありませんが、国際標準規格というからには各国独自の要求に対応できなければいけません。そこでISO/IEC 646 は次の 12 文字を各国の事情で変更しても良いと定義しました。

ISO/IEC 646 で置き換えても良い文字

# $ @ [ ∖ ] ^ ` { | } ~

日本は国際標準規格のルールに従って、¥ に、~ に変更しました。~ に変更したのは似ている文字だからとして、なぜ置き換える文字に が選ばれたかと言うと、あまり使われていない文字だからです。現在の多くのプログラミング言語の祖先となる言語に ALGOL という言語がありますが、 は ALGOL で論理積と論理和をそれぞれ /⧵⧵/ と書くために追加されたそうです。つまり元より一般には使われていないプログラミングのための文字でした。日本語版の ISO/IEC 646 に準拠した文字コードは ISO 646-JP と呼ばれています。1969 年の JIS C 6220 では日本語で扱う文字集合として ISO 646-JP が含まれています。ちなみに JIS C 6220 で扱える文字は 1 バイトで表現できる ISO 646-JP と半角カナのみで漢字はまだ含まれていません。JIS C 6220 は ISO/IEC 2022 で定められた枠組みに従って定義されています。ISO/IEC 2022 とは「複数の文字集合を切り替えて使うための決まり事」で、7ビット構造と 8 ビット構造の 2 つが定義されています。7 ビット構造で ISO 646-JP と半角カナ を扱う場合、制御文字の SO/SI を使って使用する文字集合を切り替えます。8 ビット構造では拡張された 8 ビットの領域に半角カタカナを配置します。これが漢字がまだ使えなかった初期の日本のコンピュータでのやり方です。

JIS C 6220(7ビット構造)の文字の扱い方

【文字コード表】
00   10    20   30   40   50   60   70
|----|----|----|----|----|----|----|----|
|         |                             |  
| 制御文字 |     英数 または 半角カナ       |
|         |   (SO/SIで切り替えて使う)    |  

参考: バイト列は共に \x31\x32\x33 だが SO/SI で文字集合を切り替えているため文字が異なる
             英数         SO     半角カナ   SI      英数          JIS から UTF-8 へ変換
$ printf '\x31\x32\x33 \x0E \x31\x32\x33 \x0F \x31\x32\x33 \n' | nkf -Jwx
123  アイウ  123

JIS C 6220(8 ビット構造)の文字の扱い方

【文字コード表】
00   10   20   3  0 40   50   60   70      80   90   A0   B0   C0   D0   E0   F0
|----|----|----|----|----|----|----|----|  |----|----|----|----|----|----|----|----|
|         |                             |  |         |                             |
| 制御文字 |           英数               |  |         |          半角カナ            |
|         |                             |  |         |                             |

補足: 半角カナは 1 バイトの後半部分に配置するため切り替えが不要

漢字は 1978 年の JIS C 6226(現在の JIS X 208)で使えるようになりますが、今回のテーマの範囲外でしょう。ただ一つ言えるのは JIS で漢字が使えるようになったさらに後の 1981 年に MS-DOS がしたということです。

コンピュータに搭載された漢字 ROM

初期のコンピュータは性能が低く、MS-DOS はフォントを持っていませんでした。フォントはコンピュータに「漢字ROM」として実装され、特定のメモリアドレスに JIS コードを書き込むだけで文字を表示できました。ハードウェアで文字を描画することで高速に処理できたことが日本のコンピュータの特徴で、NEC の PC98シリーズが長らく国民機と呼ばれ大きなシェアを持っていた理由の一つです。これは ¥ と表示される理由は日本のコンピュータに原因があるとも言えます。

コンピュータに搭載されたフォントを使う状況は、OS にフォントが内蔵される Windows が普及する 1990 年代まで続きました。しかし、Windows が普及したからと言って ¥ と表示して良いかと言ったらそうではありません。Shift JIS を使う Windows 9x 系では、JIS 規格に準拠するならば ¥ と表示するのが正しい表示だからです。そして Windows が登場する前から、現在のパソコンの祖先となる IBM PC と MS-DOS (IBM PC 版の MS-DOS は PC-DOS といいます)は使われており、ワープロや表計算ソフトもあったわけですから。それまでアプリケーションやデータでは ¥ を使ってました。

OS を更新したら「価格: ⧵12,345」に文字化けする!?

¥ と表示するのは間違いで、正しく に修正しろという人がいますが、本当にそれは正しいことでしょうか? たしかに ¥ と表示するのは間違いですが ¥ を使って商売をしている人のことを考えたことはありますか? OS をアップデートしたときに ¥12,345⧵12,345 と文字化けしても困らないのは ¥ と同一であることを知っているコンピュータに詳しい人のみです。知らない人は困ってしまいます。

Windows が今も日本語フォントで ¥ と表示するのは互換性のためです。「英数字は半角で書け」とはしばしば聞きますが、「¥ だけは例外だ、全角で書け」とはあまり聞かないように思えます。みんな Shift JIS の時代に半角の ¥(= バックスラッシュ)を使ってきたでしょう? 本物(?)の半角の ¥ が使えるようになったのは Unicode 対応になった 1993 年発売の Windows NT 3.1 からですが、これはビジネス向けの OS なので、一般ユーザー的には 2001 年の Windows XP からでしょう。もうそろそろ 25 年経過しますが、一般ユーザーは OS のアップデートで今まで使っていた ¥ に文字化けしても文句を言わない世界になったのでしょうか?

¥ で表示して欲しいならフォントを変えればすむ話です。どうせ困っているのはプログラマだけです。それならプログラマがプログラミング向けのフォントを使えばこの問題は解決です。まあキーボードの右上の ¥ と右下の で簡単に使い分けられるようにしてくれとは思いますが。

時系列

出来事
1963 年 ASCII コードの標準化
1967 年 ISO/IEC 646(国際版 ASCII)の標準化
1969 年 JIS C 6220(JIS X 0201)で ⧵ が ¥ に置き換えられる
1975 年 Microsoft の設立
1981 年 IBM PC と MS-DOS (PC-DOS) の誕生
1982 年 PC-98シリーズの誕生(日本で大きなシェアを達成したコンピュータ)
1985 年 Windows 1.0 の誕生
1993 年 日本語版 Windows 3.1 の誕生(フォントに本格的に対応)
1993 年 Windows NT 3.1 の誕生(Unicode 移行で ⧵ と ¥ が別の文字に)
1995 年 Windows 95 の誕生(多くの人が使った OS。⧵ と ¥ は同一文字)
2001 年 Windows XP の誕生(多くの人がやっと ⧵ と ¥ を使い分けられるように)

ディレクトリ区切りが/から⧵になった理由

ディレクトリの区切りが の理由は、コマンドプロンプトで使う OS 標準のコマンドがオプション(スイッチ)を識別する文字として / を使っているからです。例えば dir /ash と入力した場合、これは dir コマンドのスイッチなわけで、ディレクトリの区切り記号を / に変更するわけにはいきません。ただしこれはコマンドの仕様なので、/ をディレクトリの区切りとして扱いたければそのようなコマンドを作っても構いません。なぜなら Windows は / をディレクトリの区切りとして扱うからです。例えばエクスプローラーのアドレスバーに C:/Program Files/Microsoft と入力したら正しく動作しますよね? メモ帳だってコマンドプロンプトから notepad /temp/file.txt と書いてファイルを開けます。

あまり関係ない CP/M と MS-DOS の話

さて Windows の仕様の誤解を解いたところで本題と行きたいところなのですが、その前に Windows の前身である MS-DOS の話をしましょう。MS-DOS は Microsoft が一から作ったものではなくシアトル・コンピュータ・プロダクツ (SCP: Seattle Computer Products) が所有していた 86-DOS の権利を買って手に入れたものを IBM PC 向けに修正したのが始まりです。Microsoft は後述するとある事情から、急遽 OS を作らなければならなくなりました。当時 Microsoft は BASIC などの開発と販売を手掛けていましたが、OS は持っていませんでした。短期間で一から OS を作るのは大変なので 86-DOS を買ったわけです。なお 86-DOS だけではなく SCP で 86-DOS を開発したティム・パターソンを引き抜いており、後にパターソンは MS-DOS や MSX-DOS の開発を手掛けます。それではなぜ Microsoft が OS を作ることになったのかと言うと、IBM との取引が関係します。IBM は 1981 年に発売することになる新しいアーキテクチャのコンピュータ IBM PC (現在の PC の祖先)の開発を計画していました。IBM は IBM PC のために OS が必要だと気づきますが開発時間はあまりありません。そこで BASIC などを開発していた Microsoft が OS を持っているのではないかと考えビル・ゲイツに打診します。しかし Microsoft も OS を持っていなかったため、代わりに ビル・ゲイツは IBM に 8 ビットコンピュータの OS として有名だった CP/M の採用を提案します

CP/M は 1974 年に開発された DOS(ディスクオペレーティングシステム)で、MS-DOS と同じように主にディスクを扱うための、シングルタスクでシングルユーザーの軽量ながら簡易の OS です。ちなみに Unix は 1969 年に誕生しましたが、ベル研究所の外に広まったのは 1975 年、BSD Unix の誕生は 1977 年なので、CP/M と Unix の開発はほぼ同時期と言えます。Unix を参考にした部分はあったかもしれませんが真似をしたと言うほどでもなく、高価なミニコンピュータ向けの Unix と安価なマイクロコンピュータ向けの CP/M とでは、そもそもできることが違うため OS として比較できるようなものではありません。ちなみに CP/M の開発者でありデジタルリサーチ社の創業者でもあるゲイリー・キルドールは、ディジタル・イクイップメント・コーポレーション (DEC: Digital Equipment Corporation) が開発したコンピュータ PDP-10 (DECsystem-10) と DEC が開発した TOPS-10 という OS を開発環境として使用しており、CP/M は(Unix ではなく)TOPS-10 の影響を受けています。TOPS-10 の開発は 1970 年で、事実上 Unix よりも前に使われていた OS ということになります。

ビル・ゲイツの提案で IBM は CP/M を開発したキルドールと交渉することにしましたが、交渉にあたっていた弁護士でもあるゲイリー・キルドール夫人は、IBM と秘密保持契約を結ぶことを拒みました。秘密保持契約を結ぶことを拒んだのは、もしキルドールが IBM と同じことをやろうとしていた場合に困るなどの理由だと言われていますが、いずれにしろ交渉は失敗に終わりました。困った IBM は Microsoft に相談し、その結果 Microsoft が OS を開発することになります。しかし与えられた時間は僅かだったため 86−DOS を目につけます。実は 86-DOS は CP/M のクローンです。ソースコードをコピーしたわけではないので盗用には当たりませんが、インターフェースやコマンドが似ていたため、後にキルドールに盗用しただろと文句を言われ、パターソンはマニュアルを元に同じような機能を実装しただけだと言い返します。実際 86-DOS が CP/M の盗用したという証拠は見つかっておらず、86-DOS が CP/M のクローンであることは事実ですが、それは Linux が Unix のクローンであるのと同じ話です。

ちなみになぜパターソンが 86-DOS を作ることになったのかと言うと、CP/M の 16 ビット版(後に CP/M-86 としてリリース)の完成が遅れており、コンピュータキットの販売を行っていた SCP が困り、当時 24 歳のパターソンに CP/M の代替品として作らせたためです。急いで作った OS なので内部的には QDOS (Quick and Dirty Operating System) と呼ばれています。結局の所ここでもキルドールは失敗していたことになります。86-DOS は CP/M の代替品として作ったもので、OS 単体として広く売ろうとしていたのかは定かではありませんが、Microsoft がそれに目をつけて、最終的にすべての権利を買い取ります。このときに(秘密保持契約のために)IBM PC 用の OS として使用することを伝えておらず、そのことを SCP は OS を安く手に入れようと隠していたと裁判を起こすわけですが、最終的に SCP は およそ 100万ドルの和解金を受け取ることで和解しました。

TOPS-10 がスイッチ「/」のルーツ

さてここまでの話を整理すると、MS-DOS は 1981 年に CP/M のクローンとして開発された 86-DOS を買って修正したものです。それではコマンドのスイッチとして / を使っていたルーツは CP/M にあるのかというと、どうも違うようです。OS/2 Museum によると CP/M にも 86-DOS にもスイッチを使っていたコマンドはないとのことです。このページを鵜呑みにするわけではありませんが、確かに以下の CP/M コマンド一覧を見てもスイッチらしきものはありません。

それでは / のルーツはどこにあるのかというと、先のページによると(キルドールが開発マシンとして使っていた)DEC の TOPS-10 がスイッチ / のルーツであるようです(同社の RT-11 も候補の一つでしょう)。確かにコマンドを調べてみると同じようなスタイルが使われていますし、スイッチという用語も使われています。以下のドキュメントを「Switch」で検索してみてください。

ちなみに / をスイッチと呼ぶのは機能を ON/OFF するスイッチの形状(_。/ 。_)からだと思われます。そう説明しているところを見たことがあるわけではありませんが、私はそれが自然な考えに思えます。なお、オプションは「選択肢」という意味であり、オプションを指定しないときはデフォルトの動作、オプションはその動作を変える選択肢というわけです。

1970 年代は Unix のオプション「-」よりもスイッチ「/」が主流?

1970 年に発売された TOPS-10 は CP/M の開発者が使っていたぐらいですから、MS-DOS 開発の関係者が使っていても不思議ではありません。もう一つ Hacker News のコメントを読んで気づいたのは、CP/M 自体では / を使っていなかったとしても、CP/M 向けに作成されたサードパーティのプログラムは / を使っていたということです。

当時はまだ Unix は広く配布されていなかったわけで、Unix よりも TOPS-10 を使っていた開発者が多かったという考えは否定できません。そして TOPS-10 のユーザーが慣れていた / を CP/M に持ち込むのも当然の話でしょう。つまり当時は Unix のオプション - よりも TOPS-10 のスイッチ / が主流で、CP/M は直接 / を使っていなかったとしても TOPS-10 から CP/M に受け継がれ、それが MS-DOS にも受け継がれた という可能性は十分あります。

Microsoft はディレクトリ区切りをスラッシュ「/」にしたかった

現在だけを見るとコマンドのオプション(スイッチ)を示す記号に - ではなく / を使っているのは、Windows だけが変な方法を採用したんだと思うかもしれませんが、1970 年代から 1980 年代ではむしろ / を使うほうが多かったと言えるかもしれません。Unix が誕生したのは 1969 年ですが開発したベル研究所の外に広く広まったのは 1975 年です。当時は - 派と / 派があり、 / 派で生き残っているのが Windows だけという話なわけです。余談ですが改行コードに LF ではなく CR LF を使っているのも同じような理由です。当時は CR LF 派も多く、その証拠に通信関連のプロトコル(HTTPTELNEL など)も CR LF を使います。これも Windows が他と違う方法を採用したのではなく CR LF 派で生き残っているのが Windows だけしかないということです。CR 派だった Mac は、自社独自の Mac OS を捨てて Unix ベースの macOS に移行しました。かつての Mac (Classic Mac OS) ではディレクトリの区切り記号は : でしたし、Unix の開発が行なわれる前にベル研究所が関わっていた Multics という OS ではディレクトリの区切り記号は > でした。Unix でさえディレクトリの区切り記号に Multics とは異なる文字 / を採用していたのです。Unix が普及するのか MS-DOS が普及するのかなんて当時はわからなかったわけで、ディレクトリの区切り記号は、標準的な記号がない中で各 OS がそうすべきだと考えて選んだものです。真似したかったとか真似したくなかったとか馬鹿らしい話です。

さて昔の MS-DOS から現在の Windows に至るまで、ディレクトリの区切り記号には / の両方に対応しています。なぜ / にも対応しているのかと言うと、Microsoft は MS-DOS にディレクトリ機能を追加するときに Unix と互換性を持たせたかったからです(誰が Unix の真似をしたくなかったと言いました?)。初期の MS-DOS にディレクトリ機能がなかったのは CP/M にもなく 86-DOS にもなかったからです。ただしドライブレターはありました(これがなければ複数のドライブを扱えません)。MS-DOS が誕生した 1981 年、Microsoft は Unix (Xenix) も誕生させていました(誰が Microsoft は Unix が嫌いだと言いました?)。Xenix は Unix を開発した AT&T から正式なライセンスを受け発売した Unix で、1980 年代に Xenix は大きなシェアを持っていた Unix でした。ただし、1984 年にベルシステムが解体され AT&T が Unix の提供を始めたため、Micosoft は本家には敵わないと考えて Unix の開発から撤退しました。それまでは Microsoft は MS-DOS を個人向けの OS と位置づけ、Xenix をマルチユーザーのサーバー向け OS と位置づけていました。Microsoft は MS-DOS と Xenix の互換性を重視しており、ディレクトリの区切り記号に / を使えるようにしたいと考えていたのは当然と言えるでしょう。MS-DOS も Unix も自社の OS なわけですから。はっきりした証拠は見つけられていませんが、実はスイッチの記号に / の使用を押し通したのは IBM と言われています。これは IBM が PC-DOS 1.1 多数のスイッチを使うコマンドを作っており、既存のツールとの互換性を維持したかったためと言われています。

スイッチを「-」に変更する隠し機能 SWITCHAR

一方で Microsoft はスイッチの記号を - に変更したいと思っており、変更するための隠し機能 SWITCHAR を実装していたくらいです。余談ですが SWITCHAR は隠し機能でないという説を見かけましたが、私はこれは隠し機能だと思っています。ポイントは「誰に対する隠し機能なのか?」です。もしあなたが非公開の MS-DOS のソースコードやドキュメントにアクセスできる立場だったとして「非公開機能、外部に漏らすな」なんて書かれている項目を見つけたとしたら、真っ先に読みますよね? SWITCHAR 機能の存在を隠したい相手は IBM です。- に変更できる機能が見つかったら削除されてしまうかもしれないからです。IBM から隠そうとするなら、誰もが真っ先に読むような非公開機能にするわけがありません。「木を隠すなら森の中」というように、しれっと MS-DOS の一機能として、わかりにくい文言で公開するのが一番です。だってユーザーには見つけて使って欲しいからです。リリースしてしまえば勝ちです。分かりづらい機能でも世界の誰かが見つけて広めてくれるでしょう。かつてマイクロソフトのコンパイラを開発したハンススピラーは SWITCHAR を隠すために多大な努力をしたと語っており、この機能が削除されたのは IBM にバレたからのようです(参照)。

ディレクトリの Shift JIS (0x5C) 問題

日本においてはディレクトリの区切り記号の は Shift JIS と相性が悪いという問題があります。知っている人も多いと思いますが、Shift JIS は文字の 2 バイト目にバックスラッシュ (0x5C) が含まれることがあります。例えば漢字の「表」などが一例です。例えば Shift JIS で「一覧表.doc」という文字列には隠されたディレクトリ区切りが含まれていることになるわけです。現在の Windows(1993 年の Windows NT 3.1 以降)は ファイルシステムに Unicode (UTF-16) を使いますが、日本語版の Windows 9x 系や MS-DOS ではファイルシステムに Shift JIS を使っていました。Shift JIS を開発しているときに、なぜこの問題に気づかなかったのか?と思うかもしれませんが、そもそも Shift JIS は MS-DOS 用ではなく、CP/M 用に提供されていた Microsoft の M-BASIC86 で使うために山下良蔵さんによって設計された文字コードだからです(参考: 山下良蔵さん本人による証言・・・はリンク先ページの下のコメントから)。Shift JIS を最初に採用したコンピュータは三菱電機が 1982年4月 に発売した MULTI16 というコンピュータで、OS には 1981年11月に完成していた CP/M-86 を日本語化したものが使われました。MULTI16 の開発には M-BASIC86 や表計算ソフトの Multiplan(Excel の前身)を提供するために Microsoft も関わっていましたが、IBM との秘密保持契約のために MS-DOS を開発していることを伝えることはできず、代わりに日本語対応として Shift JIS の採用を提案していました。その頃には MS-DOS にディレクトリはなく、(C 言語ではなく)M-BASIC86 用に文字コードを作っていたため、残念ながら 0x5C 問題は見落とされてしまったのでしょう。後で気づいた時大いに反省したそうです(参考: 古川享さんによる証言)。

5Chの問題に関しては、クリス・ラーソンも山下さんも気がつかずにおおきなドジをこいたと皆で反省していました。元来円マークの5Chにあまり注意を払わなかったのが、後で大問題になったのは、MS-DOS1.25まではデイテクトリ・パスのセパレータは、サブディレクトリのハンドリングが無く、初期のMS-DOS2.00開発段階でUNIXと同じ/にしていたものを、英語のバックスラッシュ、日本語の円マーク¥にしたために、2バイトに5Chをもつ漢字コードとバッティングを起こして、みんなであわてたのでした。

さて、この証言から MS-DOS 1.25 まではディレクトリ機能がなく、MS-DOS 2.0 の開発段階ではディレクトリの区切りに Unix と同じ / を使っていたこともはっきりしました。

互換性のために直前で変更されたパス区切りとスイッチ文字

ディレクトリの区切り記号が / から へと急に変更されたことは、MS-DOS 2.0 の README.txt からもわかります。以下の文章には IBM 版の MS-DOS (PC-DOS) との互換性のために、「パス区切り文字が / から 」に、「スイッチ文字が - から/」に、直前で変更 (last minute) されたことで、マニュアルに重大なエラーが発生していることが記述されています。

  1. Documentation. Features of 2.0 are documented on this disk.

The user manual contains some significant errors. Most of these are
due to last minute changes to achieve a greater degree of compatibility
with IBM’s implementation of MS-DOS (PC DOS). This includes the use
of “” instead of “https://qiita.com/” as the path separator, and “https://qiita.com/” instead of “-“
as the switch character. For transporting of batch files across
machines, Microsoft encourages the use of “” and “https://qiita.com/” respectively
in the U.S. market. (See DOSPATCH.TXT for how you can overide this.
The user guide explains how the end-user can override this in CONFIG.SYS).
Both the printer echo keys and insert mode keys have now been made to
toggle. The default prompt (this may also be changed by the user
with the PROMPT command) has been changed from “A:” to “A>”.
We apologize for any inconveniences these changes may have caused
your technical publications staff.

所で最後にですが、Microsoft もなぜ Windows はバックスラッシュをスラッシュの代わりに使うのかという動画「Why does Windows use backslash instead of forward slash | One Dev Question」を公開しています。中身は大してありません。

時系列

出来事
1969 年 Unix の誕生だがまだ内部使用(名前すらない)
1970 年 TOPS-10 の誕生(おそらくスイッチ / のルーツ)
1974 年 A Unix Timesharing System(Unix 初の公開論文)
1974 年 8 ビットコンピュータ向けの CP/M の誕生
1975 年 Version 6 Unix (ベル研究所の外へ広く配布)
1977 年 BSD Unix の誕生
1978 年 Apple DOS の誕生
1981 年 IBM PC と MS-DOS (PC-DOS)、Xenix(MS 版 Unix) の誕生
1982 年 MULTI16 の誕生(Shift JISの誕生)
1982 年 PC-DOS 1.1(スイッチの利用が増加)
1983 年 MS-DOS 2.0(ディレクトリの追加、日本語版)
1984 年 Xenix から手を引く(SCO へ売却)
1984 年 Classic Mac OS の誕生
1985 年 Windows 1.0 の誕生

余談

Unix の前に Multics という OS がありました。Multics は野心的な OS で多くの革新的なことをしようとしていましたが、大きすぎるシステムのせいで開発は順調ではありませんでした。Multics は ここ に書いてあるように(失敗したのではなく)最終的に完成しますが、それを待たずして、Unix を開発した AT&T ベル研究所は Multics 開発から撤退します。それが Unix の開発へとつながります。Unix という名前は Multics へのアンチテーゼではなく、Multics に比べて一つのことしかできない(貧弱な)OS という意味で、当初 Unics と名付けられました。Unix がシンプルだった理由は単に Multics が巨大なメインフレーム用 OS だったのに対して、Unix は性能の低いミニコンピュータ用だったからです。Multics を真似たくてもできなかったのです。Multics の開発から手を引いたベル研究所は OS の開発に興味を失っており高価なコンピュータの購入申請を拒否されました。しかしそれでも Multics の快適な開発環境を手放したくなかったトンプソンらを始めとするベル研究所の研究員は、使われていなかったミニコンピュータを見つけ OS の研究を続けることになります。

Unix 系 OS で管理者権限のことをルート (root) と呼びますが、これは初期の Unix では管理者のホームディレクトリはルートディレクトリ / で、ファイルシステム全体を扱えるユーザーだったからです。Unix はもともとケン・トンプソンが(ゲームで遊ぶためとかではなく)ファイルシステムの開発を行っていたことから始まりました。はじめにファイルシステムがあったのです。トンプソンはファイルシステムの対話的なテスト環境を作るうちに、あと少しの要素(カーネルやシェルなど)を追加すると OS になると気づいたことで生まれました。そのことは動画「“The early days of Unix at Bell Labs” – Brian Kernighan (LCA 2022 Online)」や UNIX: A History and a Memoir に記されています。

unix was a file system implementation to test thruput and the like. once implemented, it was hard to get data to it to load it up. i could put read/write calls in loops, but anything more sophisticated was near impossible. that was the state when bonnie went to visit my parents in san diego.

i decided that it was close to a time sharing system, just lacking an exec call, a shell, an editor, and an assembler. (no compilers) the exec call was trivial and the other 3 were done in 1-week each – exactly bonnie’s stay.

the machine was 8k x 18bits. 4k was kernel and 4k was swapped user.

ken

当初 AT&T は独占禁止法の関係で、OS ビジネスに参入できませんでした。そのため大学や企業などにメディア代程度の安価な価格、サポート無しで Unix をソースコードとともに提供していました。そこから分岐して BSD Unix が誕生します。Microsoft は Xenix として、AT&T の代わりに Unix の販売を始めした。1984 年にベルシステムが解体されたことで、AT&T が Unix のライセンスビジネスができるようになりました。そこで作られたのが UNIX System V(やその前身となる System III)です。AT&T はコンピュータメーカーに UNIX System V を提供し、そこから多くの種類の商用 Unix に分岐しました。当時は多くの独自のアーキテクチャを持つコンピュータメーカーが存在しており「自社のコンピュータ向けに Unix を移植」する必要があったからです。現在の Linux のように一箇所でカーネルを作っていたという世界ではなかったのです。AT&T が Unix ビジネスを開始すると、BSD Unix に対して権利を主張し始めました。Unix は自由に使える OS ではなくなりつつあり、それに危機感を覚えたリチャード・ストールマンが、1984 年に 自由な OS を作る GNU プロジェクトを開始しました。そこからオープンソースの時代へと移行しました。なおケン・トンプソンが始めた研究用の Unix (Research Unix) は、1989 年まで Version 10 Unix として開発され、1992 年には Unix 後継の Plan 9 へと移行しましたが、作業はほぼ停止した状態です。

Windows ではディレクトリという用語の他にフォルダという用語が使われています。Windows ではこの2つは厳密には異なっており、ディレクトリはファイルシステムに直接作成されているものです。一方でフォルダとはディレクトリの他に仮想的なオブジェクトが含まれ、例えばコントロールパネルやネットワークフォルダです。フォルダはエクスプローラによって提供されているものであり、雑に言えば GUI から扱うものはフォルダと考えて構いません。フォルダという用語は Mac で使用されていた用語を拝借したものです。Windows は他の OS を真似したら真似したと非難され、真似しなかったら真似したくなかったから変更したんだと非難されています。Windows が嫌いな人は何をやっても非難するのでしょう。

まとめ

Windowsでディレクトリ区切りスラッシュ / がバックスラッシュ となり、日本で円マーク ¥ で表示され、Shift JIS と相性が悪いのは歴史的な理由からです。

日本は自国の都合で ¥ に置き換えました。これは Microsoft や MS-DOS 時代の前のことです。スイッチの記号に / を使うのは TOPS-10 がルーツと見られています。スイッチ / の利用は CP/M や MS-DOS 用の(サードパーティの)プログラムで使われることで広まり当時では一般的な方法でした。Microsoft は自社の Unix (Xenix) との互換性のために当初、スイッチの記号に - を使用し、ディレクトリの区切り記号に / を使用していました。しかし最初の顧客である IBM が互換性を保ちたいからとスイッチの記号に / を使うことに固執しました。Microsoft の最後の抵抗であるディレクトリの区切り記号に / を使えるという仕様は今も残っています。Shift JIS は MS-DOS にディレクトリ機能がなかった時代に M-BASIC86 のために作られたことで 0x5C 問題を見落としていました。

この話が「真実」ですと言いたいところですが、それは当事者でないとわかりません。ただ「真説」ぐらいのものであるとは言えるでしょう。少なくとも ¥ に置き換えた理由は確定です。





Source link

Views: 0

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -