もうすぐ4月、入学・新学期の季節。例のウイルスのせいで節目の儀式は寂しい状況になっているが、嘆いてばかりもいられない、これからのことに目を向け準備万端整えたいもの。持て余すほど時間があるのなら、この際PCに慣れておくのも悪くないだろう。
現在、多くの大学では情報教育に力を入れており、さまざまなカリキュラムが用意されている。ワープロやスプレッドシートといったアプリケーションの使いかたもあれば、JavaScriptやPythonを利用してちょっとしたゲームを作る、といったものまである。教材もよく考えられていて、生徒がつまずきやすそうなところを先回りするかのような配慮も見かける。真面目に取り組めば、それなりの力がつくはずだ。
しかし、全体的な傾向として"いきなり本題に入る"教材が多いような気がする。ある程度の経験を積んだ者同士であれば、暗黙の了解事項は端折って話をするものだが、まったくの未経験者、断片的な知識しか持たない初心者にとっては、記号ひとつにしても疑問に感じるもの。
たとえば、「.」(ドット)。プレーンテキストでピリオド/句点を意味することは、さすがに改めて説明するまでもないだろうが、ブジェクト指向の開発言語で「変数名.プロパティ名」のような形で登場すると話は変わってくる。いきなりドット演算子だと説明されてもピンとこないのは当然で、なぜ「.」なのかというところから話をはじめないと、いつまでも澱のように疑問として残ることになるからだ。
macOSもまた然り、周りを見渡せば"よく考えると意味不明"な記号で溢れかえっている。今回はその「.」を取り上げ、しっかり解説してみよう。
状況によって変わる「.」の役割
macOSにおいて「.」は、大きく3つの意味がある。ひとつは拡張子 -- ファイル種を識別すべく設けられたファイル名の末尾に付けられる文字列、3文字が一般的 -- を区切るための記号で、プレインテキストであれば「.txt」、PNG画像であれば「.png」のように、拡張子を見ただけでどのようなファイルか推測できる。
Finderでファイル名を変更する場合、対象のファイルを選択した状態でEnterキーを押す。このとき、拡張子が表示されている(情報ウインドウで「拡張子を非表示」がチェックされていない)ファイルは、拡張子を含まないファイル名部分だけが編集状態になり、キーボードで入力した文字にそのまま置き換えることができる。拡張子を変更したい場合は、その部分を編集状態にして他の文字列を入力するだけのこと、実にシンプルかつ合理的だ。
もうひとつの「.」は、ファイル/フォルダに"不可視属性"を与えるもの。UNIX系OSに必ず収録されている「ls」コマンドは、デフォルトでは先頭が「.」で始まる項目は表示しない仕様のため、なんらかの事情で存在を知られたくない/見せたくないファイル/フォルダの先頭に「.」を付けるようになったのだ(通称ドットファイル)。
逆にいえば、意図せずドットファイルを作成すると"あるはずが表示されない"ことになる。それではユーザが混乱するため、Finderでは既存のファイル名の先頭に「.」を追加できない仕様になっているのだ。ドットファイルを作成する場合は、そのような成約がないTerminal(シェル)を利用することになる。
Finderにドットファイルを表示する手段も用意されている。対象のフォルダを開いた状態でCommand-SHIFT-「.」を押せばOK、これまで隠されていたファイル/フォルダが現れる(もう一度押せば隠される)。ホームフォルダでこのショートカットキーを押せば、ドットファイルの意味を実感できることだろう。
もうひとつの「.」は、シェル(Terminalでコマンド入力待ちのときに使われるプログラム)とファイルシステムの構造を表現するときに使われる記号。「.」は"現在作業している場所(フォルダ/ディレクトリ)"を意味し、いろいろな場面で登場する欠かせない存在だ。
たとえば、ホームフォルダ直下にある「123.txt」というテキストファイルを現在作業中の領域(カレントディレクトリ)にコピーしたいときには、コピー先に「.」を指定する。これで、カレントディレクトリのパス(ファイルシステムにおけるディレクトリの位置)を長々と記述する必要はなくなる。
$ cp ~/123.txt .
ファイル/フォルダを削除するときの"転ばぬ先の杖"としても役に立つ。たとえば、カレントディレクトリにある「tmp」というディレクトリ全体を再帰的に削除するときは、以下の要領でパスを表現する。ここで「tmp」としても構わないが、対象がカレントディレクトリ直下にあることを明示したほうが事故防止になるのだ(事故の例はまた別の回に)。
$ rm -rf ./tmp
そしてもうひとつ、「.」は「..」と2つ続けて記述することで、1つ上位のディレクトリを意味する。シェルでは「cd」コマンドでディレクトリ間を移動しつつ作業することがよくあるが、この「..」を引数に使えば、1つ上位の階層へかんたんに移動できる。「cd /Users/shinobu/Library」などと冗長なパスを記述せずに済むのだ。