ファイルの命名と整理のルール

2003/03/05 西田顕郎 / 2009/05/12 奈佐原顕郎 / 2010/09/10 奈佐原顕郎

 コンピュータ上の情報のほとんどは「ファイル」という単位で扱われる。そしてどのファイルにも名前がついている。このファイル名は, そのファイルがどのような情報を記述しているか, とか, 欲しい情報はどのファイルに入っているか, などを判断するときに重要な手がかりである。従って, ファイル名の付け方の上手・下手は, コンピュータを使う仕事の効率を大きく左右する。

 ところが, ファイル名の付け方について、一般的な指針や教育文化はほとんど存在しない。我々はそれぞれ独自に試行錯誤しながら良い方法にたどりつこうとする。その結果, 誰もがそのうちファイル名の上手な「名付け親」になるのだが, そうなるまでに多くの失敗や混乱が生じる。それを最小限にするために, 本稿では, ファイル名の付け方(命名規則)に関する問題提起と私なりのポリシーを提示する。本稿の読者のご参考になれば幸いである。


ファイルの命名規則(ポリシー)を持とう

 多くのファイルについて, それらを作るたびに我々は名前をつけるのだが, その場その場で思いついた名前を適当につけると, あとで「どんな名前をつけたっけ?」と思い出せなくなりがちだし, 何よりも, 毎回何か思いつかなければならないので, 頭が疲れる。まず, おおまかでよいので, 自分はこういうポリシーでファイル名をつける, というものを持つとよい。

ファイルの命名規則に必要なこと

簡潔

 ファイル名は、十分な情報を含むならば、なるべく短いほうがよい。それだけでも管理の手間が省ける。長いファイル名は見にくい(醜い)しわかりにくい。間違いも起きやすいし間違いを見付けにくい。コピー・ペースト時に無用の改行などが挿入されてしまったりする。

一意性

 一意性とは、「同じファイルには1つの名前が定まる」ということである。ひとつのファイルに異なる複数のファイル名を考案することはできない、ということだ。そうなっていれば, どの情報がどのようなファイル名のファイルに入っているか, 思い出しやすいし見つけ出しやすい。そのためには, アルファベットの大文字と小文字をどのように使い分けるかなどをきっちり決めておく必要がある。

一義性

 一義性とは、ひとつのファイル名が異なるファイルにつくことがない、ということである。ファイル名を見ただけで、そのデータがどういうものであるか、曖昧さが無く、明瞭に判断できる、ということだ。これがないと、似たような複数のデータファイルが同じ名前を持ってしまい, 一方が他方を上書きしてしまうかもしれない。

配列順

 これは時系列のデータで特に大事なことだが、ファイル名の一覧を出したときに、それが、素直な順番になって現れるようにすることである。そうなっていないと, 例えば年号を西暦の下2桁だけをとると, 1998、1999、2000、2001、2002の各年のデータを時間順に並べた場合、00、01、02、98、99という順になって、2000年以降のデータが2000年より前のデータよりも配列順では前に出てしまう。これはミスや非効率の原因となる。

汎用性

 LinuxやWindows, Macなど, 異なるシステムの間で、しかも多国籍言語間でもトラブル無く扱えるファイル名にすることが重要である。
 多くのシステムで、アルファベットの大文字と小文字をファイル名で区別できるので、大文字/小文字の使い分けは可能だ。しかし漢字やカタカナ、半角カタカナなどは, 異なるシステム間はおろか、同一のシステム内でも面倒が起き得るので避ける方が良い。どうしても必要な場合は、文字コードをUTFに統一するべきだ。
 漢字を避けて英数字を使っても, それが全角の英数字だと意味がない。初心者には、全角と半角の違いを、意味も含めてきちんと教育しなければならない。
 ファイル名の中にスペースを使うのは論外だ。スペースはファイル名の区切りとみなすシステムでは, 1つのファイル名が2つに分割されて解釈されてしまう。ファイル名をわかちがきするには、スペース以外にはハイフンやアンダーバー、ドットなどが使われる。ドットは拡張子のはじまりという特別な意味を持つので、使用に注意が必要である。ハイフンは、データ名を算術演算にも用いるような場合(たとえばGRASSなど)、マイナスの記号と重複してしまい、エラーを起こす。アンダーバーはそういった問題が無く、最も無難であり、適切である。しかし使い慣れていない人には、アンダーバーがキーボードのどこにあるのかを教えなければならない。

慣習

 以上のようなことは、多くの人がそれぞれに考えていることであり、統一的ではないにしても、ある程度は常識的な慣習がある。それらはもちろん完全でないし矛盾も多いが、そういう慣習には敬意を払うほうがよい。というのも, 外部とデータをやりとりするとき, あまりにも他人と違うルールでファイル名をつけていると, お互いに苦労する。それは効率的とは言えない。


提唱ルール(Ver. 0.1)

 以上のことがらは、多くの場合、互いにトレード・オフの関係にある。特に、多くの事柄と対立するのは簡潔性である。従って、「完璧な」ルールは存在しない。それを踏まえた上で、あえて以下のようなルールを提唱しよう:

1. 使用可能な文字:英数半角ASCII文字。記号はハイフン、ドット、アンダーバー、プラスのみ。
2. 時間・場所・項目・バージョン・フォーマットの順に記載し、それぞれをアンダーバーでわかちがきする。
3. 時間は西暦・月・日・時刻の順とし、西暦は4桁、月は2桁の数字、日も2桁の数字とする。お互いの間は、西暦と月の間と日と時刻の間だけをアンダーバーでわかちがきする。日をDOY (day of year; 1月1日からの通算日)で書く場合、123のように、3桁の数で記載。DOY99以下は099のように0で位取りをする。
4. 場所は固有名詞の場合、先頭を大文字、以下を小文字にする。略称は全て大文字で書き、大文字の間に略称を示すドットは入れない。
5. 項目も、略称の場合は全て大文字。略称以外で数語にわたる場合はわかちがきにせず、各語頭を大文字にしてわかちがきの代用とする。略称どうしが連続する場合はアンダーバーでわかちがき。
6. readmeファイル: 命名規則にローカルルールを導入する場合は、そのローカルルールはあるディレクトリ以下のツリーにのみ適用し、そのルートのディレクトリにreadmeファイルを設けて、ローカルルールを記載する。記載は英語で書く。日本語で併記してもよいが、あくまで併記である。
7. 変えないこと: いちど決めたファイル名を後で変更するのは, 大きな混乱の元になる。特に、ドッペルゲンガー症候群(似たような内容のファイルが複数できて, どれが「本物」かわからなくなること)の危険性が大。

* プレゼンスライドは, 他の発表者のスライドと混ざってしまう可能性があるので、あえて発表者名をファイル名に入れるようにしている。

ファイル整理のルール

オリジナルデータと中間データを明確に区別すること。

 実験や観測といった活動から直接的に回収されたデータをオリジナルデータと呼ぶ。ここから様々な処理(補正や単位換算、統計処理等)が行われて, 実際に使えるデータになり、さらにそれが図表になってプレゼン資料や論文になる。そうした一連の処理過程において、オリジナルデータは、全ての根源であり最上流であり、最も重要な存在である。解析処理のどこかに不手際があったら、オリジナルデータまで遡って解析をやり直さねばならないこともある。従って、どのような解析においても、そのオリジナルデータに遡れるように整理しておかねばならない。従って、オリジナルデータは、誰の目から見ても、解析途中のデータ(中間データ)や最終的な図表等(出力データ)と混同しないように工夫しなければならない。それを怠ると, いくつもの中間データとまぎれてしまって、どれがオリジナルデータなのかわからなくなってしまう。

 オリジナルデータを区別する工夫としては, ファイル名にオリジナルデータであることを明記する識別記号を入れるという手もあるだろうが、最も簡単なのは, originalという名前のディレクトリを作って, そこに入れることだ(もちろん, そこにはオリジナルデータとそのreadmeファイル以外を入れてはならない)。