4−2: 内省
昼食から戻った私は、計算機の前の椅子に座り、食事中に思いついた一連の作業をした。
不定期だが一週間を目途に行なっている、バックアップ。 “rsync” を使い、変更のあったファイル、あるいは新らしいファイルをバックアップ用ハードディスクにコピーをし、また作業用ハードディスクから消されているファイルは、そちらからも削除する。ほとんどは、システムやブラウザのキャッシュが対象となる。その部分についてはバックアップの対象とする必要はないのだが、どうせだからという程度のものとしてやっている。
「前に全体をバックアップしたのは……」流れていく画面を見ながら、別のコンソールを立ち上げ、別のバックアップのファイル群を表示した。それらは三週間前に行なっており、まだそちらのバックアップをする時期にはすこし早かった。これらのバックアップの二次バックアップを先に行なった時期も確認した。それらは二ヶ月ほど前であり、そろそろバックアップをしてもいい時期だった。
「X月Y日: 定期全バックアップ」
私はジャケットから情報カードのホルダとボールペンを取り出すと、一週間後の日付でそう書き、そのカードをカード・ボックスに入れた。
それらを行なっている間に、バックアップは終った。
私は次に思いついていた作業に入った。エディタでファイルを開き、修正が必要と思われた文字列を置換すると、それをセーブした。
ここからはすこし面倒な作業に入ることになる。足し算の概念を示すためのスクリプトを書く必要があった。 “sed” の全体のマニュアルには、もっと凝ったスクリプトが提示されているが、それは今必要とされている事柄の説明には複雑すぎた。それよりも単純なものが必要だった。機能が制限されているとしても、定めた仕様の範囲内においては正しく動作し、かつ足し算の過程そのものに、あるいは計算機による足し算の過程そのものに考えを巡らすことが可能なものが必要だった。
“1” を “I” に。 “2” を “II” に。そのように置換し、かつ足される数、足す数は一桁に。追加として、 “0” は扱わない。これであれば、 “1 + 2” は “I + II” となり、あとは間にある “ + ” を削除すればいい。
「だけど、それじゃぁなぁ」スクリプトを書くためにエディタを立ち上げ、文字コード指定の部分、そして数字の置換の部分を書きながら思った。
だが、それはさして難しいことでもなかった。スクリプトとしては無駄な処理になるが、右にある “I” を一つ、左の “I” の並びに移動する。それを右の “I” がなくなるまで繰り返せばいい。あとは結果の読み易さのために、“IIIII” を “V” に、 “IIIIIIIIII” を “X” に置換してやれば充分だろう。
そのスクリプトをセーブすると、新にそのスクリプトに入力する足し算をいくつか書き、そしてセーブした。
「さてと……」
私はコンソールにフォーカスを戻すと、スクリプトのテストを始めた。だが、返って来たのはエラーメッセージだった。
「あぁ、オプションは “-e” じゃなくて “-f” だったか。ファイルだからな」
そう呟きながら、もう一度テストのために “sed” でスクリプトの実行を試みた。だが、それでも返って来たのはエラーメッセージだった。
「“無効な参照 \1”…… そうだっか?」
私は “sed” のオンライン・マニュアルを確認した。正規表現の指定が必要だっただろうか。マニュアルを確認すると、該当しそうなのはその部分のように思えた。 “sed” でやればいいとは思ったものの、つまりは足し算そのものの機能を持たない環境だからこそ足し算の概念を示すのに使えるだろうとは思ったものの、 “sed” を使うのは一年ぶりくらいだったかもしれない。
私は正規表現のオプションも指定して、スクリプトの実行を三度試みた。それはうまく動いたように思えた。私は出力の “I” の数、 “V” の数、 “X” の数を数えた。すくなくとも、ここでは意図のとおりに機能しているようだった。
私はもう一度スクリプトを書いているエディタにフォーカスし、 “I” を右から左に移動するループを確認した。ブロックに入る箇所の、そしてブロックの中の “ +” という表記は、ここでは無駄だ。ループの前に “ +” という内容を “ ” にしておくほうがいい。ここは直すほうがいいだろうか。どうせループを使っている時点で無駄はある。なら、なぜこれを読む人をわざと混乱させるような、つまりは “+” という記号をわざと残しておいてはいけないのだろう。その混乱は、スクリプトを読む人の楽しみにもなるように思えた。それは、本来必要な混乱でも楽しみでもない。ただ、 “+” という、足し算と共通した記号だからという混乱であり楽しみでしかない。
「だったら、整理したスクリプトも用意しておけばいいだろう」
私は情報カードに「整理したスクリプトも用意」と書き、その情報カードをカード・ボックスに入れた。