Eseo Programada: 氾濫する“設定”

Elfinita en 2000.10.24



 表題の「Eseo Programada」とは、「プログラミングについてのエッ セイ」といった意味のエスペラント語(のつもり)です。日本風に言え ば、「作譜随想」でしょうか(^^)

 わざわざエスペラント語を使ったのは、いま勉強中なのでなるべく使 う機会を増やしたいからで、それだけです。表題をみて腰が引けてしまっ た人がいたなら、お気の毒です。

 「作譜随想」という題は後になって思いついたのだけど、こっちの方 がよかったかも知れません。(同じかな?)

 プログラミング(の周辺)のあれこれを綴っていきたいと思っています。




文書化の憂鬱

 プログラミング、ソフトウェアの開発というのは、楽しくもあり、辛 くもある仕事です。これは一本のプログラムから大規模の開発まで変わ りません。

 楽しいことは、それが何であれ「意匠」「工夫」「創造」の側面を持っ ていること。

 ものを〈創る〉のがつまらないとか苦しいとか思った人はいないので はないでしょうか。図画工作はいつも2だったし、美術の授業は毎回提 出が遅れて怒られてたし、技術や家庭科の授業も苦痛でならなかった人 でも、授業を離れれば、お菓子を作るのが好きだったり、部屋の模様替 えに情熱を燃やしたり、ビデオの編集に熱くなったり、フラワー・アレ ンジメントとやらに凝ってみたり、キャンプ場では率先してテントを張っ たりたき火の準備をしたり、――しているのでは?

とはいえこの数年、プログラミングの現場から「創造」「工夫」の楽し みはどんどん奪われているような気もして、さびしい限りです。

 辛いことは、言うまでもなく、それに関して文書を書かなければなら ないことです。

 プログラミングというから――

そうそう、ぼくは「プログラミング」ということを、一般の人 とは違ってかなり広く捉えています。
一般にはせいぜいプログラムをデザインすること、コードをデ ザインすること、コードを書くこと(コーディング)、デバッ グすることくらいをプログラミングの範囲としているのだと思 いますが、ぼくにとってはもっと広く、基本デザインからテス トまで、場合によっては要件定義から運用のデザインまでを 「プログラミング」の範疇に含めています。
「(目的に合わせて)コンピューターをプログラムすること」 ならなんでもプログラミングだというわけです。つまり、「プ ログラム」ということば自体をかなり意味の広いものだと思っ ているのでしょう。
プログラムのことだけ考えていればいいかというとそうでもなくて、職 業としてのプログラミングは、文書を書くということも重要な仕事とさ れています。

 ところがそうと知って職業プログラマーになる人はあまりいません。 就職してから何だこれは、こんなに文章を書かなければならないとは知 らなかった、と呆然とする例をしばしば見かけます。

 そもそも学校ではプログラミング関連の授業で文書化ということをあ まり教えないらしい。しかも企業でも新入社員教育で文書化の技術をき ちんと教えることは少いと思われます。仕事に就いてイキナリ「技術的 な文章」という、高い専門能力に加えて文章能力を要求されるものを書 かなければならないのは、辛いに決まっています。辛いことを好きにな る人はそうはいないわけで、しかも辛いことに打ち込むよりは好きなこ とに打ち込む方がずっと気持がいい。かくして「文章ぎらいのプログラ マー」が拡大再生産される構造になっております。

 もっとも、それ以前にこの国の教育では文章を書く技術をろくに教え ませんから、問題は実はけっこー根の深いものだという気がします。が、 この点についてはここでは触れません。

それにしても

 いったいいつごろからなのでしょうか、設計資料を読んでいてやたら と目にすることばというのがあって、たとえば「設定」というのがそう です。

 ほんの数ページのプログラム仕様書の中に、この用語が何十回となく 出てきたのを見たことがあります。それどころか、たったA4一枚の関数 リファレンス(関数の説明書)にすら、このことばが十回も現れていた こともあります。

 「文章作法」といった本を読めば、真中あたりかおしまいの方で(初 めの方かも知れませんが)、「同じことば、同じ表現の濫用や際限のな い繰り返しは、文章を平板にするので避ける」という〈原則〉が出てく ると思います。もちろん、この「作法」は文章一般について述べている もので、技術文書や設計文書は特殊な文章ですから、この〈原則〉を無 邪気かつ無闇に適用するのは考えものです。が、それにしても、どーに かならないのでしょうか。

「設定」は汎用語か?

 システムやプログラムやモジュールをある状態にしておくことは「設 定」というのが自然ですが、それに留まらず、変数に値を書き込むのも 「設定」、変数の領域を割り当てるのも「設定」。値を求めるとか計算 するとか算出するとかといえば済むようなところなのにわざわざ「設定」 ということばを使っている例もあります。「戻り値を(に)××に(を) 設定する」「引数に○○を設定する」という用法も見かけました。

 この伝で行けば、なんでもかんでも「設定」と言えそうです。

……失敬、最後の例はあまりにもおかしいですね。(みんなおかしいっ て? ありがとう)

 囲碁なんかにも容易に拡張設定できそうです。「小目に黒が設定され た」「コウ材がないのにコウを設定してしまった」「ヨセの設定で読み 違えた」……いやいや、碁にはすでに専門用語や隠語がたわわに実って いますから、今さら設定という語を設定するのはちょっと無理があるよ うです。

 たしかに、「よるべきものとして、新たに取り決める」(新明解国語 辞典)という意味ですから、変数に値を書き込むことも設定と言って言 えなくはありません。しかしふつうの感覚では「設定」というと全域的 で静的なものごとを置く、という意味合いで使われるものです(状況を 設定する、場面を設定する、問題を設定する。環境を設定する、プリン ターを設定する、エディターの設定ファイルを書く……)。

また寄り道ですが、「全域(的)」というのは、globalに対する自分な りの訳語です。
プログラミングの世界ではこのことばはよく使われ、カタカナで「グロー バル」というのが一般的です。「大域(的)」という〈訳〉を見かける ことがありますが、手持ちの国語辞典には載っていないし、ちょっと違 う感じがするのでこう訳しています。「広域(的)」という時もあり、 使い分けは気分次第です。

 そういう感覚(を持っているのは自分だけなのかも知れませんが)か らすると、設計文書でしばしば、非常にしばしば見かける「設定」は、 違和感ありありなのです。少くとも確かに言えるのは、「設定」という ことばが使われている文脈では、多くの場合、設定ということばを使わ なくても充分書けるし、またそうした方が文章として収まりがいい、と いうことです。

「設定」の〈真実〉は如何に

 このことばの使われ方を見ると、まず、「取得」と対で(そういうつ もりで)使われることが多い、ようです。「環境変数の取得と設定」と いったように。あるいは「参照」の対としてでしょうか。なるほど、 「取得」が取ってくるのに対し、それと対である動作や操作を表すいい ことば(それもできれば漢字二文字の)がないのは確かです。英語でも (ぼくが見知っている範囲では) get と set を対にして使っていたり して、そういえば、「設定」は英語の set に音が似ているというのも、 「設定」に頼る理由のひとつかも知れません。

またまた脇道に逸れます。
get と set といえば、昔あるところで、こんなことがありま した。
プログラマーたちが勝手に(無軌道に……)関数名をつける。 get と set を対にするヤツもいれば、get と put を対にする ヤツもいる。これではいかん、「対義語表」のようなものを作 ろうじゃないか……
けっきょくそれは完成しなかったようですが、まーそれはそう でしょう。対義語辞典というものもあるにはありますが、本来、 対義関係を一意に定める、しかも固定的な関係として定める ことには無理があるからです。

 上でぼくが戯れに挙げてみた「設定」の例を見てみると、「書き込む」 とか「保存する」とか「表示する」とか「発行する」とか、もっと適切 なことばが存在します。そして、ぼくがおかしいと感じた例も、「書き 込む」「記録する」「割り当てる」「値を求める」「計算する、算出す る」「××を戻り値とする」「○○を引数として渡す」など、もっとふ さわしい(と、自分には思える)ことば、表現があります。

 もう少し検討すると、「設定」が使われているのは多くの場合、変数 やらメモリ上の領域やらに何かしらを置くという行為(操作)、または それに関連する行為(操作)についてであるようだ、というのがオボロ ゲに見えてきます。

 ファイルになら「読み書き」という立派なことばがありますが、メモ リ上の、あるんだかないんだか判らないあやふやな「変数」とか「記憶 領域」とかいうものにどんなことばを使っていいのか、判らないのかも 知れません。そして、そういうことを表すいいことばがないので「設定」 ということばで逃げている……案外これが真相というか実態に近いのか も知れません。

 それにしても、「ひとつの概念にひとつのことば」というのは行き過 ぎですが、だからって「ひとつのことばであらゆる概念」というのも考 えものでしょう。すくなくとも、変数に値を代入することと、変数のた めの領域を割り当てることが、ひとつの文章の中で同じ「設定」という ことばで説明されるのは、ちょっと大雑把に過ぎるのではないでしょう か。

ふさわしいことばを見つけるのは難しい、だけど

 ぼくが考えた「『設定』の言い換え」の例が「もっとも適切な表現」 だと言うつもりはありません。不適切だとも思いませんが。

 「“書き込む”といったらファイルにデータを書くことだろ う。変数に値を代入するのは“書く”とは言わない」と怒る人がいます。 こーゆー類の人は「意味硬直病」といって、この病については次回(次 回があるらしいぞ)で取り上げる予定です。

 「変数から値を読み出す」「変数に値を書き込む」という表現を、ぼ くは平気でします。この表現がプログラムの振舞いとしてふさわしいの かおかしいのか、その判断は人それぞれでしょう。できれば大多数のプ ログラマーが無理なく受け入れることのできることばを見つけるのが望 ましい――って、これは判りきったことですね。

「設定」の話ではありませんが、プログラムやプロセスの振舞いを擬人 化して表現するのは好ましくないとして却下されたという話があります。
今どきそんなことを言う人もいるのかと驚いちゃいました。
擬人化して考えたり表現したりすると、考えやすかったり説明しやすかっ たりすることがあるものなのですが……(もちろん、過ぎたるはなお及 ばざるがごとし、です)
思うに〈モデル〉というのも、まったく自由な立場、自由な発想で選べ るものではどうやらなくて、その人の「……観」に束縛されてしまうも ののように感じられます。却下したその人の頭の中は、擬人化するとい うある意味もっとも単純なモデルが存在できない世界なのかも知れませ ん。

 ふさわしいことばをいつもいつも見つけるのは難しいことだけれど、 その努力は怠ってはいけないのだと思います。

 ソフトウェアの世界、コンピューターの世界は、ハードウェアと違っ て「これ」と実物を見せることができません。設計書といいますが、ハー ドウェアの設計図と違ってそれを見れば出来上がりがたやすく想像でき るというものでもありません。

 であれば、ことば使いには細心の注意が必要でしょう。

そのほか

 「行なう」というのもやたらと目にします。

 「〜する」といえばいいだけのところで、なぜか「〜を行なう」とい う。「取得する」と書けばいいのに、「取得を行なう」と書いてしまう。
 「初期化する」と言えばそれで済む筈なのに、なぜか「初期化を行な」っ てしまうのです。どういうことでしょう?

 「設計文書の類は〈「文語」的〉でなければならない」と、むかし言 われたことがあります。たとえば「やまとことば」的な動詞よりは漢語 的な「名詞+する」の方がよい、とか、そういうことです。「選ぶ」よ りは「選択する」。「読み出せる」でなくて「読み出し可能」、などな ど。どういう理由でだかは忘れましたが、〈口語的〉な言い回しは好ま しくないのだそうです。当時のぼくは設計書でも口語的な文章を好んで 書いていたので、かなり反発しましたが、親分の言うことですから仕方 ありません。〈「文語」的文体〉も頑張って開発しました。

 そういう発想の延長線上で、「行なう」と言っておけば「ぶんごっぽ くて、あ〜んしん」なのでせうか。

がんばれプログラマー

 語彙の貧しい職業プログラマー、というのが確実に実在します。アマ チュアだって文章力はあった方がいいに決まってますが、そういう人の 書いた文書やソースプログラムを見ると、ときどき目を瞠る(正直にい えば、げんなりする)ことがあります。

 本稿で挙げた「設定」「行なう」は、語彙の貧しいプログラマーの産 物に違いありません。と、ちょっと弱気なものいいになっているのは、 その文書を書いた人を直接には知らないからです。

 語彙の貧しさはその人の抱えている(ないしは、扱える)概念の貧し さだ、というのは明らかに言い過ぎなのだとしても、プログラミングと いうのは(デザインから実装、デバッグに至るまで)ある面概念操作に 他ならないのだから、それが軽やかにとはいわないまでも的確にできな ければなりません。できていても他人がそれを判ってくれなければ意味 がありません。

 語彙の貧しいプログラマーを見ると、その人の腕まで窺い知れる気が します。それが事実かどうかにはかかわらず。

 もう少し勉強――文章作法だけではありません。表現を豊かにするに は綴り方だけ知っていても駄目なので、専門分野であるプログラミング も絶えず勉強する必要があるでしょうし、コンピューター全般、それ以 外に文芸とか人文科学とか自然科学とか、なんでも――したらどうか、 なんて思っちゃうんです。

ごめんね

 ある仕事で読んだ設計資料(大量)の文章がアンマリひどいので、つ い書いてしまいました。

 問題は、ぼくが評論家ではなく、どちらかといえば実作者に属する方 だということです。つまり、自分の書いたことは自分に跳ね返ってくる。 これをウェブに載せた日から、自分もまた針のムシロに坐ることになる わけです。





目次へ


(C) Copyright nulpleno. All rights reserved.