プログラム言語は外国語か?
少し前に、ケンタッキー州の学校で外国語科目としてプログラム言語も選択できるようになるかも、という話がニュースになっていて、「C言語やJavaを『外国語』として教えるのかよw」と苦笑してしまったものだ。先生がC言語のポインターを説明しながら「ここ、試験出るぞー」とか言っている状況を想像して、ちょっと微笑ましくもなってしまった。しかし、よくよく考えてみたらコミュニケーションの手段であるという点では、確かに共通するものがあると思い至った。
■コミュニケーションの手段としてのプログラム言語
プログラム言語がコミュニケーションの手段であるということについては、少し説明が必要かも知れない。これは、ソースコードの可読性を高めることがチームの生産性を上げるとか、そういうことではない。
完成したサービスや製品は、ユーザーとの間でコミュニケーションするということだ。それは間接的に、あなたとユーザーがコミュニケーションしているということでもある。最近ではユーザーエクスペリエンスという言葉でもてはやされているが、要するにユーザーがシステムと心地よくコミュニケートできるかどうかという話だ。
心地よいコミュニケーションに必要なのは、適切な内容、適切な言葉使い、適切な身だしなみ、適切な表情、適切な場所、適切なタイミングなどだ。これはユーザーに対するシステムの振る舞い方を考える上でもまったく同じだということが分かる。
つまり、ユーザーがシステムを使う状況や背景、あるいはもっと深いところまで考えれば、ユーザーが属する社会や組織の常識や慣習などまでを理解していなければ、円滑なコミュニケーションは望めない場合もある。どんなにプログラム言語の文法に精通していても、それだけではユーザーと円滑にコミュニケーションするプログラムを書くことは不可能なのだ。
■どんな言語もしょせんはツール
このように書くと、自分は設計に関わっていないから関係ないと思うヒトもいるだろう。しかし、自分が携わったシステムが世に出れば、すぐにフィードバックが耳に入る。「使えない!」「最悪!」と言われれば、いくら仕様に関わっていなくても心穏やかではいられないはずだ。
そのような評価を未然に防ぐためには、プログラマもコミュニケーション相手となるユーザーをしっかりと理解するべきなのだ。ユーザーの取りうる行動を予測するだけで、テストケースの幅も深みも変わってくるはずだ。そうすることによって、設計の不備を早い段階であぶり出すことも可能となる。
海外留学経験者は、留学後に「もっと日本の文化慣習を勉強しておけばよかった」と悔やむことが多いという話を聞いたことがある。文法や発音は完璧でも、相手が興味を持って振って来た話題に答えることができなければ会話も弾まないということだ。当然といえば当然すぎることだろう。
結局、自然言語もプログラム言語も単なるツールでしかない。外国語かどうななど、どうでもいいことだ。そのツールを使って話したい内容こそが重要なのだ。