「 ファイルシステム 」節で、Mac全体の階層的なファイル管理の構造を以下のように図示しました。
ところが各種コマンドでの見え方は、必ずしも上のイメージと一致しませんでした。列挙してみます。
ls での並び順が違う
拡張子表示の有無
「書類」は「 Documents 」
木構造の根が root directory ではなく Mac
このような状態になっているのは主に歴史的な経緯によります。簡単に説明します。
Apple は Macinotsh という製品を通じて、1980年代から延々とバージョン 9 まで「ユーザに対するコンピュータの見せ方・操作のさせ方」をひたすら磨いてきました。今も「ユーザインタフェイス」「ユーザエクスペリエンス」を非常に重視しています。MacOS X (version 10, 2001年リリース) で、Apple は OS の「出来」として優れていた Unix を Mac の「内側」に採用しましたが、しかし自分たちが磨いてきた「Mac というもの」の「ガワ(外側)」は変えたくなかったのですね。
最初の Mac は1984年にリリースされ、完全にコマンドを排除し、画像表示とポインティングデバイス(マウス)による操作系、つまりGUI (Graphical User Interface) を一般に普及させました。それ以前に普及したコンピュータはすべてコマンド(文字)による操作系、CUI (Character User Interface) でした(そう言い切って良いでしょう)。その Apple が Mac の操作系に再びコマンドを導入した、それも GUI と CUI がある程度融合するような形で組み込んだのはなかなか興味深いストーリーです。
参考:“Human Interface Guidelines”, Apple. ( 日本語 版もありますが、用語については英文の方が良いかも)
もちろん一般ユーザはターミナルなど触らず、Apple が用意した「使い方」を把握して使えば良いのです。コンシューマー(消費者)の目線ですね。しかしあなた方は情報系学生、つまり計算機科学 (Computer Science)・情報工学 (Information Technology) に裏打ちされたクリエイター、デベロッパーの目線が必要です。そのためにはシステムの内部構造を(ある程度は)理解せねばならず、そのためには実装に用いた Unix のツールに慣れなければなりません。コマンド操作はその入り口だと考えて取り組んで下さい。
「エッじゃあ次に Apple がまた OS を再構成するとき Unix ベースではないもので Mac を再実装したら、また新しいツールセットに慣れなければならないの?」と思うでしょう。そのとおり、デベロッパーはそれに追随する必要があります。ただ、Unix は(恐らくは Linux の大成功によって)多くの人の想像を超えて長生きしており、今後しばらくはデベロッパーのツールセットとしては主流であり続けます。Unix の言葉(コマンド)に慣れておくのは損では無い、というかデベロッパとしては必須です。
多くのコンピュータシステムではファイル名の末尾に「 . 」を付けて、そのファイルの種類(主にフォーマット)を示す文字列を付けています。これを「拡張子」と呼んでいます。代表的な拡張子を以下に示します。
拡張子 | ファイル名の例 | 拡張子が示すファイルの種類(フォーマット) |
---|---|---|
txt | sample1.txt | テキスト(中身が文字) |
jpg | KSU.jpg | JPEG フォーマットの画像データ( .jpeg を使う時もある) |
png | screenshot.png | PNG フォーマットの画像データ |
html | index.html | HTML フォーマット(Web ページ) |
zip | dRerpot.zip | ZIP 圧縮ファイル |
docx | レポート.docx | Microsoft Word による文書データ |
xlsx | 地域データ.xlsx | Microsoft Excel による表計算データ |
rtf | memo.rtf | テキストエディットによる文書データ(Rich Text Format) |
現在の Mac の OS でもアイコンの表示やダブルクリックした時のアプリケーションの選択などを拡張子に基づいて行なっています。このあたりの挙動は Windows や他の OS でも同様です。
ところがファイルを保存する時には以下のようにファイル名の候補に拡張子などは表示されません。
実際に「お試しファイル」と名前をつけて保存しても、拡張子はついているようには見えません。
しかしこのファイルを ls コマンドで確認すると、拡張子が確認できます。
yasuda@Hex Desktop % ls
お試しファイル.rtf <<< 拡張子が rtf であることがわかる
yasuda@Hex Desktop %
つまり拡張子はあるのですが、しかし Finder では表示しないのです。これもまた Mac のユーザインタフェイスが隠しているわけです。ユーザに拡張子などというシステムの動作を助けるための仕組みを意識させるべきではない、ということでしょう。実際、通常の利用では拡張子などは無い方が自然に操作できるものと思います。
しかし Finder でもファイルの拡張子が見えている場合もあります。以下の sample1.txt では見えていましたね。
Finder で拡張子を表示するか、表示しないかは、Finder での操作によってファイルごとに設定します。Finder でファイルを選択した状態で、「ファイル」メニューの「情報を見る」を実行してください。キーボードショートカットは Command - I (アイ)です。以下のようなウィンドウが開くでしょう。
そこの「拡張子を非表示」がその設定です。このチェックを外すと、Finder 上でもこのファイルは拡張子付きで表示されます。
上の設定はファイル個別のものでしたが、システムワイドに設定することもできます。「Finder」メニューの「設定…」を実行してください。以下のようなウィンドウが開くでしょう。
そこの「すべてのファイル名拡張子を表示」にチェックをつけると、それ以降すべてのファイルの拡張子が表示されるようになります。
1984年にMacを設計した時、それまでのほぼすべてのOSで使われていた、拡張子というアイディアをAppleは導入しませんでした。その代わり、2001年までのMacのOS(Mac OS 9 まで)は拡張子に相当する 4 バイトのデータがすべてのファイルに(ファイル名とは別に)セットされていました。ファイルシステム自体が独自のものでしたから、そういったことが可能でした。(リソースフォークの BNDL リソースがそれです。興味のある人はどうぞ。)
基本的に拡張子はユーザがフォーマットを意識することを意味しています。しかしAppleはこれを嫌い、ファイルのフォーマットの情報などはアプリケーションが正しく設定すれば良い、ユーザが意識して自分で付けるようなものではない、ユーザから隠した方が良い、と考えたようです。
しかしこのMacの独自OSは1980年代の文具がわりのパソコンとしては機能しましたが、より堅牢な「本物の」OSに成長させることができませんでした。結局、Macよりはるかに古い、しかし生まれながらに本物のOSであったUnixをベースとしたもので「Macらしく見える」ように作り直しました。Unixが root directory を頂点にしたのに対して、Macはそのように見せていませんでした。拡張子もまた、そのようなものの一つなのです。
「属性」情報を持つファイルシステム |
---|
Unixのファイルシステムは「バイトストリームファイル」と呼ばれる、単にバイトが並んでいるだけものを基本としています。つまり属性情報的なものを一切もっていません。教材作成者はAppleが従来的なバイトストリームではなく、先進的なファイルシステムを作ったことは合理であり、実際使いやすい設計だったと考えています。十数年を経てバイトストリームファイルに戻ってしまったわけですが、当時新しいファイルシステムへのチャレンジは BeFS, WinFS など幾つもありました。どれもうまくいかずほぼ70年代設計のUnixとバイトストリームファイルに収束しているのは残念な限りですが、これからもそうしたチャレンジは肯定的に見ていくと良いでしょう。 |