新・闘わないプログラマ No.97

美的センス


コンピュータシステムの構築には美的センスが必要だ、とよく言われます。これはシステム全体の設計段階にも言えますし、詳細な設計の段階でもそうですし、プログラミングにおいては言うまでもありません。

タコなプログラマの作った、美的センスのかけらも無いプログラムは、よく笑い話に出てきますね。有名な「Cプログラミング診断室」あたりにそのあたりのことが詳しく書いてあります。
私もよくこれには泣かされましたですねえ。何千行もある関数とか、内部変数の一切使っていないプログラムとか、変数名が全部1文字とか、関数名が通し番号になっていて「いったいこれは何の関数なの?」なんてプログラムとか(あ、全部C言語の用語を使いましたが、実際には言語はいろいろです)。
ある外注のプログラマが作ったプログラムは、変数が全部グローバルで、forのインデックスに使う変数までグローバルにしてありました。
「おいおい、このプログラム、一切内部変数を使っていないけど、なんで?」
「うちの会社では内部変数は使っては行けない、という規則になっているんです」
「はあ? んなアホな。それってもしかして逆じゃないの?」
よくよく調べてみると、件の外注プログラマの上司が、COBOLプログラマだったそうなのですが、内部変数などというわけの分からない(本人にとっては)ものは使用禁止にする、自分が読めないプログラムは作るな、と指導していたことが判明しました。COBOLって、私は全然知らないのですが、ローカルな変数って取れないのでしょうか??
まあ、こんなのは美的センス以前の問題のような気もしますけど、なんかこういう上司の下に付くと不幸ですねえ。
それから、これは別のプログラマのお話なのですが、数千行もある関数を書いてきたので、「こんなのだめだから書き直せ」と突っ返したことがありますが、直してきた結果を見て愕然としました。

    /*** 修正前 ***/

    void foo()
    {
          ・
          ・ [数千行]
          ・
    }

    /*** 修正後 ***/

    void foo()
    {
          ・
          ・ [100行くらい]
          ・
        foo_sub1();
    }

    void foo_sub1()
    {
          ・
          ・ [100行くらい]
          ・
        foo_sub2();
    }

    void foo_sub2()
    {
          ・
          ・ [100行くらい]
          ・
        foo_sub3();
    }

        [以下延々と続く]

そりゃあまあ確かに、1関数の行数を100行程度以下にしろ、と言ったよ。でも、これは無いだろ、これは。しかも、修正前のfoo関数の内部変数は、そのままじゃ分割した関数で使えないものだから、全部グローバル(当然static無し)にしちゃっていたし。
私も、本当にいろんな人のプログラムを見てきましたけど、「うわあ、これは美しい」というプログラムにはほとんど出会えませんですね。特に、仕事で出会ったプログラムのほとんどは、美的センスというものからもっともかけ離れたところにあるのが多かったです。
世の中のコンピュータシステムの大半はそういうプログラムで動いているのだ、と思うとなかなか怖かったりします。

コンピュータシステムの美的センス、という面で、ユーザが一番目にする機会が多いのが、画面のデザインでしょうか。特に全体的な配色とか、ロゴやアイコンのデザインあたりになると、素人にはなかなか手が出せない分野だったりするかも知れません。
最近では、お金のふんだんにある(顧客からふんだんにお金をむしり取った、とも言う)システムの場合にはデザイナに依頼することもありますけど、ビンボなシステムの場合には、自分たちでデザインしたりすることもあります。
こういうときのために、普段から社内の絵心のある人間をチェックしておく、という努力も欠かせません。何せ、私は小さいときから美術の成績が……いやいやそんなことはどうでもいいのですが、とにかく、普段から目をつけていた人間をさんざんおだてて、ロゴやアイコンのデザインを(昼飯一回分くらいで)頼んだりします。
ただまあ問題は、この手の人間によくありがちなのですが、すぐに自分のシュミに走る。いくらなんでも、二頭身のアニメ絵の女の子のアイコンは、このシステムにはまずいんだけどなあ。
ところで、素人が画面のデザインをすると、よくありがちなのに、やたら原色系のいろをふんだんに使ったド派手というか美的センスのカケラも無いデザインにしてしまう、という失敗があります。
これは、私が絡んだシステムじゃなくて、出来あがったシステムのデモを見ただけのやつなのですが、結構インパクトはありましたねえ。なんたって、ボタンの色が全部原色系の違った色になっている。赤、青、緑、黄色、水色、紫、……
表示する文字も、別に全部、白なり黒なり統一すればいいものを、やっぱり原色系のいろいろな色を使っている。もちろん開くウィンドウによって背景の色(当然、原色系)も違っている。しかも、それぞれの色に意味付けしているわけでもなく、全然脈絡無し。
あ、でも、webページにも、そういうところ結構ありますよねー、何処とは言わないけど。そう言う意味では、そのシステムの画面を設計した人も、同じような「美的センス」を持っているんでしょうねー。

ところで、私のwebページ、文字だけの地味なページ(いや、実はGIFの画像が2枚だけあるんですけどね、さてどのページでしょう?)なのですが、一応、表の理由は「ごちゃごちゃしたレイアウトやら、鬱陶しいGIFアニメーションは嫌いだ」ということになっているらしいですが、実は本人に美的センスがからきし無くて、きれいなレイアウトをすることが出来ないらしい、というのは極秘事項です。

[前へ] [次へ]

[Home] [戻る]


mailto:lepton@amy.hi-ho.ne.jp