flat7th

memo/20111202

created 2011-12-02 modified 2011-12-06 

以前、【+ 日本語コーディングしようぜ】という文書を書きましたが、ちょっと追記します。


ソフトウェアを設計・製造するという作業は、そのほとんどが、「概念に名前をつけて、コトバ(仕様書、設計書)に定着させる」作業です。
よいソフトウェアとは、利用者の要求を満たすのみでなく、その設計においても優れているものです。概念や構造が整頓されていることにより、より高い抽象度で概観することができる、可読性・可変更性が高い、そして可管理性が高いものです。しかし私たちは往々にして、よくないソフトウェアをつくってしまいます。

ソフトウェア上の概念に「適切な名前をつける」ことで、多くの問題が解決します。適切な名前をつけるには、プログラミング言語以前に人間が話す言語のセンスが必要だと思います。私たち末端の開発者が、より高いセンスを持っているのは、英語なのでしょうか、母国語なのでしょうか。
昨今、社内の公用語を英語にする、等の先鋭的な試みをされているIT企業もあると思いますが、それは日本の一部を構成する日本の企業として、日本人の雇用に貢献するのでしょうか。そして、日本の社会の豊かさに貢献するのでしょうか。
私は視野の狭い井の中の蛙かもしれません。しかし私は、ベターな道を探したいのです。


25年以上前の話ですが、あるNHKの番組がありました。案内役として坂村健先生が登場し、当時のコンピュータの状況を説明し、未来のコンピュータの姿を模索する内容でした。
番組の中で坂村健先生は、「人間がコンピュータの言語を学ぶのではなく、コンピュータが全ての人間の言語を学ぶべきだ」とおっしゃいました。
人間がコンピュータを操り、人間の世界を豊かなものにするのか、あるいはコンピュータが人間を操るのか。コンピュータは媒体であって、通信の両端には人間と人間がいます。そのことを坂村先生は強く訴えていたように思います。

坂村先生。先生はその後「超漢字」を開発されたり、コンピュータが扱う文字がユニコード化していく流れの中で、字体の細かな違いが淘汰されてしまうことに対する、文化的な観点からの懸念を発信されていたように解釈しています。25年経って、世界はどうなったでしょうか。貿易はますます盛んになり、情報の往き来も増えましたが、まだ国境はなくなっていませんし、コンピュータが全ての言語を学ぶにも至っていません。それでも、UTF-8には皆が納得できる妥協案としての光明があり、そろそろ成果を収穫できる季節に来ているように思います。


私は日本語コーディングが大好きですが、共通語としての英語の有用性については私も否定しません。
FastDBという、ロシアの方が作成されたオブジェクトDBMSを利用させていただいて、マニュアルの一部を日本語に翻訳させていただいたものをこのサイトで公開していますが、もしFastDBがロシア語で書かれていたら、私にはお手上げでした。英語で書かれていたからこそ、読むことができたのです。
Linuxの開発がフィンランドの言語だけで行われていたら、今のように花開いてはいなかったことでしょうし、私自身もLinuxからの多大な恩恵を、受けることができなかったと思います。
また、日本語で概念を整理した後、英語の識別子を考えるときに、より適切な言葉を思いつくのもよくある話です。複数の言語で考えることで、より一般的な概念に発想が着地することもあるでしょう。
さらに、自分が書いた文書を英語に翻訳することを経験することで、分かりやすい日本語で書くことを心がけるようになる、という作用もあります。


私が問題視しているのは、プログラム上のあるカタマリについて、その名前と実態が乖離していて、それがソフトウェアの「可管理性」の品質(手に負える状況である)を損ねている状況 なのです。そしてそのような状況は、母国語でプログラミングを行うことで、かなり改善されるのではないか、と考えているのです。


私は、インドのプログラマはインドの言語で、タイのプログラマはタイの言語で、日本のプログラマは日本の言語で、プログラムを記述することが、アメリカ シリコンバレーのひとり勝ちに対する小さな反論になり、ソフトウェア文化のさらなる発展、あるいは世界の"グローカル化"(→wikipedia) のきっかけになるのではないかと考えています。
英語以外ではコンパイラがまともに動かなかった10年前なら、日本語の識別子を用いる、なんていう案は、職場の上司のゲンコツ一発で却下されてしまう意見だったと思います。しかし、状況は日々変わっています。

日本人は日本語でコーディングしようぜ。まずは小さなところから。