Mac における「システムの見せ方」

Finder での表示とコマンドレベルでの表示の相違

ファイルシステム 」節で、Mac全体の階層的なファイル管理の構造を以下のように図示しました。

image-20231226211831872

ところが各種コマンドでの見え方は、必ずしも上のイメージと一致しませんでした。列挙してみます。

このような状態になっているのは主に歴史的な経緯によります。簡単に説明します。

  1. Mac の OS は 1980年代前半に Apple がスクラッチから開発したものであり、当初はこうした不一致はなかった
  2. しかし 2001年リリースのversion 10 (Mac OS X) で Apple はそれまでの実装を捨て、Unix と呼ばれる OS をベースとしたものに完全に再実装された
  3. その際、古い Mac の OS と Unix はシステム構造などが異なっているが、Apple は version 10 で「それまでのMacと同じように見える」ようにした(つまり上記 1. の Mac に「見える」ような OS を、内部的には Unix で作った)
  4. この時、階層的なファイル管理など、似たところはそのまま使ってだいたいうまく行っているが、ときどき「同じように見せかけている」ところもある
  5. ところでターミナルを使ったコマンドによる操作などは古典的 Mac システムではなく、裏で動いている Unix の内部構造がまともに露出している
  6. そのため、コマンド操作での見え方は、Finder での見え方と異なるところが出る(以前の Macintosh システムに「見せかけた」ところの舞台裏が見える)

Apple と「ユーザインタフェイス」

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 のツールに慣れなければなりません。コマンド操作はその入り口だと考えて取り組んで下さい。

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 でも同様です。

Mac の拡張子の表示

ところがファイルを保存する時には以下のようにファイル名の候補に拡張子などは表示されません。

image-20240305132429386

実際に「お試しファイル」と名前をつけて保存しても、拡張子はついているようには見えません。

image-20240305132914741

しかしこのファイルを ls コマンドで確認すると、拡張子が確認できます。

yasuda@Hex Desktop % ls  
お試しファイル.rtf                 <<< 拡張子が rtf であることがわかる
yasuda@Hex Desktop % 

つまり拡張子はあるのですが、しかし Finder では表示しないのです。これもまた Mac のユーザインタフェイスが隠しているわけです。ユーザに拡張子などというシステムの動作を助けるための仕組みを意識させるべきではない、ということでしょう。実際、通常の利用では拡張子などは無い方が自然に操作できるものと思います。

Finderで拡張子を表示する

しかし Finder でもファイルの拡張子が見えている場合もあります。以下の sample1.txt では見えていましたね。

image-20240305134335661

Finder で拡張子を表示するか、表示しないかは、Finder での操作によってファイルごとに設定します。Finder でファイルを選択した状態で、「ファイル」メニューの「情報を見る」を実行してください。キーボードショートカットは Command - I (アイ)です。以下のようなウィンドウが開くでしょう。

image-20240305135050288

そこの「拡張子を非表示」がその設定です。このチェックを外すと、Finder 上でもこのファイルは拡張子付きで表示されます。

上の設定はファイル個別のものでしたが、システムワイドに設定することもできます。「Finder」メニューの「設定…」を実行してください。以下のようなウィンドウが開くでしょう。

image-20240305135334523

そこの「すべてのファイル名拡張子を表示」にチェックをつけると、それ以降すべてのファイルの拡張子が表示されるようになります。

参考:オリジナルの Mac の設計

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とバイトストリームファイルに収束しているのは残念な限りですが、これからもそうしたチャレンジは肯定的に見ていくと良いでしょう。