UNIX には限らない, 比較的コンピューティング一般に近いトピックです.

1 「Keep It Simple, Stupid!」

UNIX の思想を表す言葉に「Keep It Simple, Stupid!」というのがあります。 KISS と略記されることもあります。 物事を単純なように扱うように、その単純さ明解さを維持するために労力を割くようにしなさい、ということです。 UNIX 以外にも多くの事に適用できる箴言だと思います。

例えばプログラム。 一つのプログラムで複数の機能を実現するのではなく、単機能に絞り、そして単機能のものを組み合わせて多機能を実現するようにする。

例えばコーディング。 複雑なコードはバグの発生源になりますし、特定も難しくなります。 また後日自分で見る場合も何故そのようなコードになったのか理解しにくくなったりします。

例えばディレクトリ構造。 その場しのぎで適当な場所にディレクトリを作るのではなく、系統だったルールに従って然るべき場所に置くことで自分にも、そしてその後管理を引き継いだ人にも分かり易い構造にするよう努力すべきです。

2 「3日前のソースは他人のソース」

これはプログラマに伝わる箴言なんですが、我々の研究のような日常作業にも当てはまるので紹介しておきます。

大意は「自分が書いたソースでも、3日も経てば『何故そのようなコーディングをしたのか』ということを忘れてしまうものだ」ということ (cf.「他人のソースは汚い」)。 すなわち、3日経った自分は今の作業をまず覚えていないので、その時の自分にとって易しくなるように読み易いコーディング、適切なコメントを心掛けましょう、ということです。 私も「なぜそのような操作をしたのか」ということをすぐ忘れてしまうので、出来る限りメモを残すようにしています。

そして以下はプログラマの友人の言葉。 「一日の最後の作業はコメント付け」。 なかなか趣深いものがあります。

3 コマンドなどの定型句はコピー&ペーストすること!

初心者がターミナルに入力するのを見ていると, ブラウザで見つけたコマンドラインを 「目で見て手で打っている」ことがしばしばあります. これはいけません. 必ずコピー&ペーストで貼り付けるようにしてください.

「なんか動かないんですけど……」と呼ばれて見てみると, 原因の数割はこういうタイプミスだったりします. ラクして失敗が予防できるのならば, どうして使わない理由がありましょうか.

人間の目と手ほど信頼の置けないデバイスはありません. 岸田はタイプする文字が 10文字もあればほぼ必ずコピペを使います. あと, シェルの補完機能もタイプミスを予防する効果があるので 利用できる局面では使うことを心がけましょう.

4 コピーは避けよう

コンピュータの良いところはデータの複製が簡単なことです. だからといって気軽にコピーしていると, 後々面倒なことになります. 以下のような心当たりはありませんか?

プログラマとしては, 「コピーは必要悪でもあるが, 基本的には厭うべきもの」です. コードのコピーによって複数箇所に同じ記述がなされてしまいます. このことは, 「この部分の変更」をする際には「同様の記述をしている箇所全てに 変更を適用する必要がある」ことを意味します. このことによってコードの視認性, 編集し易さは著しく低下します.

彼等が扱うのは主に「コードのコピー」ですが, この議論はそのまま「ファイルのコピー」にも適用できます. 「コピー」する際にはこれらの点に注意し, 然るべきメモを残しながらするように 心掛けるべきです.

5 バックアップとストレージ

ファイル操作についてまとめてみます。

5.1 バックアップ

バックアップとは情報を多重化することであって、メディアの種類には依りません。 例えば同じ HDD にファイルをコピーすることだってバックアップに当たります。 また、外部メディアにデータをコピーすることはバックアップに相当しますが、 そのあと HDD からデータを削除してしまうならばそれはバックアップではなく ストレージに相当するでしょう。

細かく見ると、バックアップの目的は2種類の障害に備えるものと言えます。 1つは機械の故障に備えるもので、この観点から行くとバックアップの頻度は 頻繁にやればやる程良いということになります。

もう1つは人為的な操作ミスに備えるものです。 こちらの方は操作ミスでファイルを消してしまったりした場合に それをバックアップから復元するために使います。 こちらの観点からはバックアップの頻度が高すぎると 失敗した操作の結果もバックアップに反映してしまうことになるため、 必ずしも頻繁にやれば良いというわけはないことになります。

この辺、「自分なりの最適解」は人によって違う筈です。 是非ご一考を。

5.2 ストレージ

ファイルの整理整頓に近いニュアンスの言葉です。 CD-Rなどの外部メディアに保存することも含まれます。

ちなみに「バックアップストレージ」とか「ストレージのバックアップ」とかいう言葉もあります。 私は漠然と「バックアップストレージ」は「バージョンを管理されたバックアップ」、 「ストレージのバックアップ」は「データを整理して、その形態でバックアップを取ること」 だと思っているのですが、どうなんでしょう? うーん、あまり自信がありません。