不自由さの価値
今回はメカAGさんのブログからご寄稿いただきました。
不自由さの価値
いつの時代にも「原始に戻れ」「自然に帰ろう」というムーブメントがある。1970年代のウッドストックとかヒッピー文化とか。それは人々がその時代に行き詰まりを感じる時に現れる傾向がある。1970年代のアメリカでそういう運動が起きたきっかけはベトナム戦争の敗北だろう。
それまで「正しい」と信じてきた価値観が揺らぐと、こういうものが流行る。でもそのうちもとにもどるんだよね。1980年代「強いアメリカ」を主張したレーガン政権の登場は、その反動だろう。
日本も不況によって「経済大国」の地位が揺らいだ時、こういう方向が流行った。経済発展と金儲けの時代は終わった。これからは慎ましく自然と調和した生き方を目指せ、と。そしてその反動がアベノミクスになるだろうか。
* * *
世の中の仕組みには、素人が直感的に考えると「おかしい」ものがたくさんある。それなりの理由でそうなっているのだが、素人がそれを理解するのは難しい。
たとえばプログラミング言語。プログラミング言語というのは「できない」ことが重視される(もちろんそれだけじゃないけど)。プログラマの自由を制限する。
なんでそんなことするのか?非プログラマの人には理解し難いと思う。そしてプログラマですら初心者の頃は、これが理解できない。
* * *
たとえばグローバル変数というものがある。プログラムのどこからでも自由に読み書きできる。ある意味非常に便利。見たい時に見て変えたい時に変えられる。
でもプログラムの勉強の中で初心者は上級者から、かなり最初の方で、「グローバル変数は使うな」と教えられる。グローバル変数は便利だから、初心者は放っておくと、ついつい多用してしまうんだよね。
でも、初心者はなぜダメなのか理解できない。
* * *
プログラムがすべて期待通り動いている時はいいんだけど、上手く動かない時にその原因を調査しなければならない。いわゆるデバッグですな。その時、どこからでも書き換えられるグローバル変数の値がおかしいと、どこでおかしな書き換えが起きているかを探すのが大変。
「この中に犯人がいます!」と名探偵が言っても、「この中」の人数が多いと、そこからが犯人を追い詰めるのが大変。「この中」の人数が少なければ少ないほど、不審なプログラムの特定がやりやすい。
なのでグローバル変数ではなく、なるべくローカル変数を使いましょうと呼びかけられる。美術品の盗難であれば、触れることのできる人間を最初から制限しておけば、誰がそれを盗んだか特定しやすいわけだ。
* * *
でもこういう言葉で説明しても初心者には実感してもらえない。それは初心者はまだ巨大なプログラムをデバッグした経験がないから、その困難さが実感できない。初心者が組むプログラムは小さなものが多いからね。
むしろグローバル変数を使えば簡単にすむのに、持って回った手順を踏まないとやりたいことができない不便さに、初心者はもどかしさを感じる。確かに不便ではある。でもそれはもっと桁違いに大きな不便さを回避するための必要悪。
* * *
行政や会社の組織も、めんどくさい手続きが多い。「これぐら気を利かせてやってくれよ」「なんでこんな簡単なことをやるのに、いちいちしちめんどくさい手順が必要なんだ」と。
イレギュラーなものでも、それが1個や2個なら大したことないと思うんだよね。でもそれが何百にもなると、大変なことになる。でも依頼する方はあくまで自分一人の視点で考えているから「なんでこの程度のことを…」と思ってしまう。自分のような人間が何百人もいるとは考えない。
* * *
やっぱ全体を見ないと、問題の本質はわからないと思うんだよね。上級プログラマなら「グローバル変数は便利だけど使うべきではない」と理解している。でもそういう上級プログラマでもお役所仕事に対しては「なんでもっと気の利いたことができないんだ」と苛立つ(苦笑)。
つまりプログラマはプログラムの動作全体を見てるから、全体として最適な設計が何かを考えられる。でもそのプログラマでも、お役所の窓口に行くと、一人の依頼者でしかなく、役所の作業全体は考えないから、ついつい「もっと気を利かせろ(=グローバル変数を多用してなにが悪い)」と思ってしまう。
* * *
おっと肝心なことを書き忘れるところだった。「自然へ帰れ」ムーブメントの話。ようするに世の中複雑になりすぎた、不自然になりすぎた、初心に帰ろう、自然に帰ろうというのは、まあ気持ちはわかるけど、それって初心者プログラマが感じる感覚に近いんではなかろうか、という話。
初心者が既存の巨大なプログラムを見ると、すごく持って回ったまどろっこしいことをやってるように見えるんだよね。もっとシンプルなやり方があるんじゃないか、と。
上級者であっても他人のプログラムを見た時「あれ?なんでこんな作りになってるんだろう」と違和感を感じることはある。そういう箇所は、相当そのプログラムに熟知した後でないと理由がわからない。「ああ、そういうことか!このためなのね」と。
* * *
もちろんガラッとアーキテクチャを変えることで、いままで面倒な手順でないと処理できなかったことが、すごくエレガントに処理できるようになることもあるにはある。でもそれは初心者が直感で偶然にたどり着けるような場所じゃない。森の奥深く、険しい谷を超え、おびただしい犠牲者を積み上げた先に、ようやく見つかる新天地のようなもの。
執筆: この記事はメカAGさんのブログからご寄稿いただきました。
寄稿いただいた記事は2014年02月17日時点のものです。
ガジェット通信はデジタルガジェット情報・ライフスタイル提案等を提供するウェブ媒体です。シリアスさを排除し、ジョークを交えながら肩の力を抜いて楽しんでいただけるやわらかニュースサイトを目指しています。 こちらのアカウントから記事の寄稿依頼をさせていただいております。
TwitterID: getnews_kiko
- ガジェット通信編集部への情報提供はこちら
- 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。