表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
クワス (Quus)  作者: 宮沢弘
第四章: 対話: ヒトと計算機
18/25

4−3: 現象学

 私は、計算機の前に座ったまま、ウィンドウのフォーカスを切り替え、今の作業を思い返した。もちろん、一連の作業の発端は食事中の思い付きだった。


 まず思い付いたのがバックアップだった。学会に出かける前にバックアップをしていなかったことを思い出した。それを思い出したなら、バックアップについてはほかに考えることはとくにない。定型のコマンドを入力すればいい。オプションとディレクトリの指定にミスがないかを、その出力の最初の部分で確認する必要があるという程度だった。

 私が計算機に語りかけ、その応答を確認する。その最中にも、計算機は私の語りかけに応える振舞いをする。


 次に思いついたのが、書きかけの文章の一部の修正だった。まず、計算機にエディタを開き、そのファイルを読み込むように語りかける。その後は、エディタに対して置換を行なうように語りかける。エディタはその語りかけに対して、どのような文字列が対象なのかを私に訊ねてくる。その語りかけに対して、私は文字列を答える。どのような文字列に置換するのかも、同様の会話が行なわれる。置換の処理が終われば、私はエディタに、その内容をセーブするように語りかけ、エディタは、そして計算機はそれに応える振舞いをする。


 それから思いついたのが、 “sed” を使った足し算の例だった。まずはスクリプトを書くためにエディタを立ち上げるように計算機に語りかけた。もちろん、計算機はそれに応える。そうして開いたエディタに、キーを一文字ずつ打ち、エディタはそれをバッファに反映させていく。足し算の処理をどうするかは、食事中に思いついたのは “ + ” の部分を削除すればいいというものだった。だが、それが資料として適切であるかどうかには、スクリプトを打ち始めるまで疑問符がついたままだった。

 では、どうしたらいいのか。すこしばかり “succ関数” を意識すればいい。このような数の表現と仕様であれば、スペースの右側にある “I” を一つずつ左側に移動してやれば、それが実現できる。“sed” の全体のマニュアルには、この仕様よりも汎用的なスクリプトも挙げられているが、考えかた自体は同じだ。右側の数字に対して1を引き、左側の数字に対して1を足す。 “lisp” であれば、右側の数に対応するように、 “succ()” を入れ子にした式を構成し、それを評価すればいい。

 打ち込みの作業は、スクリプトに与えるデータのファイルについても同じだ。それぞれにセーブするように語りかけると、その語りかけに応えて、エディタと計算機はそのバッファをセーブする。

 そのスクリプトとデータが用意できれば、そのテストが必要になる。こうだったかと、 “-e” オプションでスクリプトの実行を試みたが、つまり実行するように語りかけてみたが、それに対してはエラーが応えだった。スクリプトをファイルとして与えるのだから、オプションは “-f” だったかと思い、オプションを変えて同様に語りかけてみた。しかし、応えはやはりエラーだった。他のオプション、エラーメッセージから考えると正規表現に関係するオプションだったかとも思うが、マニュアルで確認する必要があるように思えた。“sed” を扱うのは一年ぶりだっただろうか。あまり意識しない箇所については、やはり忘れるものだ。

 オンライン・マニュアルを確認すると、やはり正規表現のオプションが必要なようだった。そのオプションを加えて、三度計算機に語りかけた。応えは、良好であるように思えた。

 出力を見れば、意図のとおりに動いているように思えた。では、スクリプトは実際に意図したとおりに動いているのだろうか。それには、入力と出力を見るだけではなく、意図したとおりに動くのだと論理的に確認する必要がある。スクリプトを確認すると、そのように動くのは間違いなかった。

 同時に、スクリプトの無駄――ループ以外の――に気付いた。正規表現でのマッチを無駄に行なっている。昔であれば、これは修正の対象でしかない。だが、現在はどうだろう。あるいは題材としてはどうだろう。ちょっとした混乱は、面白みでもあるように思えた。念のために、整理したスクリプトを用意しておいたほうが、親切ではあるかもしれない。


 そこで思い付きがあった。かけ算くらいの例も必要だろうかと考えた。それは、やはり同様の仕様であれば、右側の “I” を “i” にでも置換し、その上で “i” を左側の “I” の並びで一つずつ置き換えてやればいいだろう。例を作る必要があるだろうか。それは課題とするのもいいように思えた。引き算、割り算もこの程度の仕様なら難しくなく実装できるだろう。それらは課題としよう。

 このようなパズルは、あるいはパズルについて考えることは、問題についての理解を深める。たとえ今は意味がわからないとしても。それは、学生への、時間を置いての問いかけでもある。どのように応えるかは、学生にまかせるとしよう。


評価をするにはログインしてください。
この作品をシェア
Twitter LINEで送る
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ