2009年1月、Cyan設計者 林拓人氏とLispの伝道師 竹内郁雄氏との対談「Cyanを設計した高校生、5カ月で5つの言語を習得」が大きな反響を呼んだ。その原因の1つは、竹内氏が発したひと言「わたしの持論ですが、国語ができる(=日本語できちんとした文章が書ける)人じゃないとプログラムは書けない」だ。これについてネットでは同意する意見が多かったものの、記事中で根拠が明らかにされていなかったため議論が紛糾した。そこで編集部は竹内氏に詰め寄り、「わたしの持論」について詳しく説明してもらうべく寄稿をお願いした。国語力とプログラミング力には本当に相関関係があるのだろうか。
Cyan言語で経済産業大臣賞を受けた開成高校の林拓人くんと対談(「Cyanを設計した高校生、5カ月で5つの言語を習得」)しているうちに、つい調子に乗って「わたしの持論ですが、国語ができる(=日本語できちんとした文章が書ける)人じゃないとプログラムは書けない。これは非常に重要です」と発言してしまった。
その場の興に乗って変なことをいうのはわたしの悪い癖なのでご勘弁願いたいのであるが、実は「日本語、より正しくいうなら、人間同士のコミュニケーション手段である自然言語できちんとした文章が書ける人じゃないと、ちゃんとしたプログラムあるいはソフトウェアは書けない」ということを、わたしはかなりまじめに信じていて、つぼにはまるTPOがあると、パブロフのイヌのように条件反射的にそれが口先から飛び出す。そういえばわたしは戌(いぬ)年だ。
余談はさておき、建物を造るのも、車を造るのも、ソフトウェアを作るのも、何かを「つくる」ことにおいては共通している。しかし、ソフトウェアは、ほかのものと違い、工業的生産物としては、言葉との関連が強い。どんな製品を「つくる」にしても、最初期の段階では何らかの形で文章にした企画書を書かなければならない。当然のことながら文章力が要求される。ソフトウェアはその最たるものである。ましてや、その後の要求仕様、詳細設計、コーディング、使用説明書、いずれにおいても文章力、というより、言葉力が必要とされる。ここで「言葉力」と書いたのは、文章のみならず、言葉の使い方のすべての面における能力を指したいがためである。
工業的生産物ではないが、法律は人間社会の仕組みを制御するための、一種のソフトウェアである、とわたしは考えている。法律を「書く」のに言葉力が関係しないと思う人はめったにいまい。「おっと、待った、言葉力とは人に感動・感銘を与える文章が書ける能力のことや」と“文学的”言葉力を引き合いに出す向きもあろう。正確さとは別の次元にかかわるが、もちろん、これも重要な言葉力だ。
日本の学校教育における国語の授業では、情報を正確に伝えるという言葉の重要な側面が少なからず捨象されている。ソフトウェアの企画書を例題として、どの部分の情報がまだ不足しているか、どこに矛盾があるかといった問題がセンター試験の国語で出るようになるのはだいぶ先の話か、あり得ない話だろう。振り返ってみるに、何かを正確に書くという訓練は、高校までは数学の証明問題でしか行われていない。だから、大学や社会に入ってから、「何でこんな分からん文章を書くのや!」と怒られてハッと気付く。もっとも、怒っている方も、それ以前の同じようなタイミングで気付かされていたのだ。なので、日本社会全体が情報伝達手段、あるいは情報構造構築手段としての言葉を使う能力に関しては奥手なのである。そんなの、誰かが指摘すればすぐ改善できるだろうと思われるかもしれないが、日本の教育システムにはトヨタのような戦略的なカイゼンはないのである。
また、言葉を使って自己主張をするという教育もあまりなされていない。わたしは学会などで、中身が薄くても言葉をまくしたてる英語話者を多く見てきたが、それに対して日本人は、英語が苦手ということもあり、必要以上に謙虚な人が多いようである。つまり、国際舞台で中身に見合った(あるいはそれ以上の)主張ができない人が多い。これは巡り巡って、日本発の基本ソフトウェアが世界になかなか出ていけない原因の1つになっていると思う。英語力も言葉力の1つである。
関連して「日本のハードウェアはエクセレント、ソフトウェアはグッド、マニュアルはジョーク」という古くから知られた警句がある。世界に出すとき、日本語からの英訳がひどかったというのが原因の大半だろうが、現在でも元の日本語の品質が悪いために、翻訳者が泣いている例が多いようだ。
さて、わたしの知っているソフトウェア工学の専門家の多くは、「ソフトウェア全体で見ると、コーディング、つまりプログラムを書くこと自体は大したコスト比率ではない、あるいは重要性を持たない」と主張なさる。
昨今、ソフトウェア開発工程では実に多種多様の言葉(図式表現も含む)が使われる。プログラムは、要求仕様定義などから工業生産的にほぼ半自動的に生成されるようなものだというわけである。しかし、わたしはちょっと違う意味で、そうは思わない。形式的な要求仕様定義自体も広い意味でのプログラムなのだ。つまり、何かを正確に指示しないといけないのだから、狭義のプログラムを書くのと同様の言葉力がいる。小さなプログラムですら正しい作法で書けないような人が偉そうにソフトウェア開発全体を管理できるはずがない。
小さなプログラムを正しい作法で書けるかどうかと、たった1つの短い文を正しく書けるかどうかとは同根の問題と思われる。それどころか、ファイル名、モジュール名、手続き名、変数名の良い付け方にすら言葉力が大きくかかわる。
Copyright © ITmedia, Inc. All Rights Reserved.