Skip to content

環境独特の注意点

Daisuke YAMAGUCHI edited this page Jun 29, 2014 · 2 revisions

Windows におけるパス区切り文字について

概要

Microsoft Windows では、パスの区切り文字としてバックスラッシュ「\」が用いられています。この文字は、環境によっては「¥」に表示されます。これは、国際ルールによって「その国によって好きな文字を当てはめて良い」という勧告がなされた経緯があります。

また、C言語を初めとする多くのプログラミング言語では、「\」をエスケープ文字の開始文字として利用されており、これにより文字列リテラル中のコーディングにて

"C:\Users\dyama"

といった表現は、

"C:\\Users\\dyama"

といった記述にしないと正しく扱うことができません。この例では、「\U」の部分と「\d」の部分を特殊な解釈をしようとするからです。 C言語よりも後発な Windows ないし MS-DOS が、なぜ特殊扱いされる文字をパスの区切り文字として採用してしまったのかは分かりませんが(MS-DOS 以外でも「\」を当時、パスの区切り文字として採用していたシステムは存在します)、プログラミングに適しているとは必ずしも言えません。

では、パスの区切り文字を「\」とした代わりに、一般的な区切り文字「/」をファイル名やディレクトリ名に利用できるかと言えば「否」です。 また、Windows では「エクスプローラー」で扱える(入力できる)文字、コマンドプロンプトで扱える文字、ファイルシステムがサポートしているパスに使える文字、というのもそれぞれバラバラで非常に厄介なシステムです。

siren スクリプトでの扱い

siren スクリプトにおけるパス文字列の扱いは、mruby の実装に依存しています。mruby は、カーネルに対してシステムコールを呼び出してファイルを扱うため、

igesread "C:\\Users\\dyama\\test.igs"

のように、エスケープ文字「\」をさらにエスケープした表記のほか

igesread "C:/Users/dyama/test.igs"

といった一般的なパス区切り文字「/」を使うこともできます。