【プログラミング】方言
── 移植性のある表現
最近、若者の間で「ら抜き言葉」がはやっている。本来「見られる」「食べられる」と言うべきところを“ら”を抜いて「見れる」「食べれる」などと表現するあれである。新聞・雑誌などの誌上でも賛否両論が展開されていたが、最近では公式に認められる表現となりつつある。言語の発音は時代とともに変遷していくものであるから、結局は時間が結論を出すことであろう。しかし私は部下の書いた会社の書類等でら抜きの表現を発見すると、誤りであると指摘して必ず直させることにしている。
部下の誤りを指摘するということでは私には特別な思い出がある。以前NTIS社に出向していたとき、一緒に仕事をしていたNECが主催する技術講演会に出席させてもらったことがあった。講演者は、名前は忘れたが確か米国情報処理学会の副会長であったと記憶している。会場は、NECのコンピュータ関係の幹部とNECの誇る第一線の技術者達で一杯であった。私は東芝出身者10数名と一緒に後の方の座席でおとなしく座って話を聞いていた。講演も後半になり質疑応答の時間となった。すると、前の方から小さなメモ用紙が我々東芝出身者のところへ回されてきた。前の方の席に座っていた同じく東芝から出向していた御大のY氏の筆跡で「何か質問せよ」と記されていた。
Y氏は講演会などに出席したら必ず質問をするのが講演者に対する礼儀であると日頃から言われており自ら実践されている。当然予想された指示であった(実は誰も予想などしていなかったのだが)。しかし、指示の本当の意味は「NECの技術者に負けないような内容の質問をせよ」と言っているのは明らかであった。メモを渡された者は、後ろにメモを回すことでお役御免となったような顔をしている(実際には背中しか見えなかったが)。私も後ろにメモを渡しながら、皆で顔を見合わせつつ無言のままどうしたものかと思案した。何か質問をしなければならない。ゆっくりと考えている時間はなかった。とにかく自分で何か質問をしたことを覚えている。別に目立とうと思ったからではなく、Y氏が本気で雷を落としたときの怖さを知っていたからである。質問の内容は“compilation”という単語を使ったこと以外は一切覚えていない。
講演の内容は、当時話題になっていたプログラム言語のAdaについて触れていたので分離コンパイル(separate compilation)に関連する質問をしたのかもしれない。後にY氏からは「“compilation”の発音は“コンパイレイション”ではなく“コンピレイション”( kompile'i∫en )である」というご注意をいただいた。発音の誤りをこのように指摘していただけるのは有り難いことで、二度と間違えないようになる。以来(この話を紹介するとき以外は)自分の口から“コンパイレイション”という発音が発せられたことはない。
娘にときどき英語力を試されることがある。英文の誤りを正せというような問題で、受験英語であるからかなり難しい。このとき、その英文を声を出して読もうとすると「誤った文は声を出して読んではいけない」とたしなめられたりする。どうもそういうものであるらしい。そういえば昔、ある大学とAlgol言語の共同研究をしていたとき、begin というキーワードのつづりを間違えないようにするには(これは決して口に出して発音してはならないのだが)「ベギン」と心の中で唱えながらつづるとよい、とある高名な大学教授に教わったことがある。今でもあの教授は「ベギン」と唱えながらプログラムを書いているのだろうか?
間違った発音や間違った表現は、絶対に口に出して言ってはならないのである。非公式の場だからといって気安く間違った言葉を使っていると、つい公式の時にもそれが口に出てしまうからである。ら抜き言葉も普段何気なく使っていると、会社関係の公式の文書を書くときについ使ってしまい恥をかくことになる。どんなに立派な技術報告書でも、読んでいる途中でら抜き言葉などが出てきたりすると途端に全体の印象が悪くなり、報告者に対する技術的な信頼度まで落ちてしまうものである。我々は会話の中でら抜き言葉が使われたとき、その場で注意するのは難しいが、せめて文章の中で出くわしたときくらいは注意して正してあげるべきであろう。
ソフトウェアの世界でも誤った表現や方言などが使われて問題になることが多い。プログラムの記述では、慣習で使われてきた誤った表現や特定のコンパイラに依存する方言などはできるだけ使わないようにすることが重要である。先の、ら抜き言葉は誤った表現である。しかし一部に賛同者がいるということは、これが一般に認知され若者の間で使われる一種の方言となる可能性もある。方言とは、それを使うことによって地域の生活環境にスムーズに入っていける性質のものであろう。コンピュータの世界ではこの方言が怖いのである。
プログラムを他の機種に移植する場合、以前から慣習でよく使っていた言葉に誤った表現が含まれていたり、あるいは方言として機種に依存する表現やライブラリが使われていたりすると新機種ではうまく動作しないことがある。その結果、通訳が必要となり、プログラム移植という大変な変換作業をしなければならなくなる。しかも機種が変わるごとにこの無駄なプログラム変換作業を繰り返えさねばならない。
コンパイラが検出できないような種類の誤った使い方は新しい機種の上では修正すればよいが、方言の方は必ずしもそうはいかない。方言は使わないようにすればよいと考える人がいるかもしれない。しかし最近のように郷土の方言が見直されているのと同じように、コンピュータのソフトウェアで使われる方言にもそれなりの利点があり、それを使わないとその機種での生活環境にスムーズに入っていけないことがある。つまり個々のシステムの特徴を引き出すには方言が必要になる場合があるからである。したがって、方言を使っているのでうまく移植できないとぼやきながらも、また新たな方言を使って書き換え作業を行っている場合が多い。機種が変わるたびにこの非生産的な移植のための書き換え作業を行っているのが現状である。
できるだけ機種に依存する方言は使わないようにすることが大切であるが、どうしても方言を使わざるをえない場合にはそれを一か所に集めて公式の場からはできるだけ見えない様にカプセル化してしまうことが重要である。
しかし結局のところ、移植しやすい良いプログラムを作るには、移植してでも使いたいと思うような魅力的なプログラムを作ることが一番大切であろう。いくら方言を使わないで移植性の高い記述をしても、振り返ってもらえないようなプログラムでは、結局は忘れ去られてしまうに違いないからである。■