エンジニアtype - エンジニアのシゴト人生を考えるWebマガジン

[特集:G-1グランプリ 3/3] プログラマーが実践すべきトレーニングのこと

公開

 

ここまで、読者のスキ/キライな言語について分析をしてきた。だが結局のところ、良いソースコードを書くために「最も適した言語」があるわけではない

和田氏の左手首には、常にグリーンバンドがはめられている。テスト駆動開発者の証だ

和田氏の左手首には、常にグリーンバンドがはめられている。テスト駆動開発者の証だ

「ソースコードの質は、どの言語を使うかではなく、どのプログラマーが書くかによって決まります。良いソースコードを書く人はどんな言語を使っても良いソースコードを書くし、悪いソースコードを書く人も同様です。これは僕だけの意見ではなく、多くの先人たちが指摘している事実なのです」

では、「良いソースコード」とは何か? ひとことで言えば、それは「読みやすさ」だという。

「プログラマーなら誰でも、他の人が書いたソースコードの意図がつかめず、悩んだ経験があると思います。下手をすると、何年か前に自分が書いた汚いソースコードを読んで、『オレは何がしたかったんだろう?』と思ったりする(笑)。一方、ファイルの分け方や変数名の付け方がすぐに理解できる、構成が美しくて見やすいといった特徴を持つソースコードは、すんなりと頭に入ってきます。それが、『良いソースコード』なんです」

良いソースコードを作るための早道は、他の人の存在を意識し、読みやすい書き方を心がけること。自分だけ分かればいい、動作さえすればいいという独りよがりな考え方は、絶対にNGだ。

言語ごとの慣習を踏まえて書くことも大切

良いソースコードを書くためには、他人の存在を常に意識することが大切。そのためには、言語ごとに異なる慣習を、きちんと踏まえる必要もある。

「言語には、関数型もあればオブジェクト指向型もあります。また、最初からオブジェクト指向だった言語もあれば、後からオブジェクト指向の概念が追加されたものもある。そうした背景の違いがあるため、各言語には固有の『慣習』というものが存在します」

このあたりの事情は、本物の言語と似ている。例えば、日本語では主語を表示しない文が少なくない。しかし、英語で主語を省いてしまうと、こちらの意図は伝わらなくなってしまう。

「COBOLのような書き方で、Rubyをプログラミングするのも不可能ではありません。でも、言語に固有な文化を無視してソースコードを書くと、読み手は絶対に混乱します。郷に入れば郷に従え、です。その言語にふさわしい変数名、ファイル名を付けるなども、読みやすさを高めるためには欠かせないことです」

キライと回答した人がゼロだったPython。多言語スキと比べ、キライな言語がばらける傾向も見られた
(クリックすると、別ウィンドウで大きな画像が開きます)

アンケートでPythonの人気が高かった理由の一端も、このあたりにあるのかもしれない。

「Pythonは、誰が書いても同じようなコードになりやすいように設計されています。逆に言えば、ほかの人が書いたものを理解するのもたやすい。そこが強みなのです。プログラミング面で制約はありますが、それだけに他人からすれば読みやすく理解しやすい。一方、『オレは好きなようにソースコードを書きたい』という人にとっては、窮屈に感じるかもしれませんね」

言語の好みからプログラマーの性格まで分かる!?

プログラムを書き上げ、ブラッシュアップする段階で最も頻繁に行うのは、重複したコードを削除する作業だ。

「メタプログラミング能力が高い言語の方が、重複をなくし、ソースコードをきれいに仕上げることができます。例えばRubyやLispは、そうした言語の代表格といえるでしょう。人によっては、この強い力を『黒魔法』と表現していますね。ときに強すぎるとも思える魔法の力で、ソースコードの無駄をどんどん排除できるわけです。プログラマーの立場からみれば、万能感を得られる、楽しい言語かもしれません」

キライな言語から見るスキな言語の傾向で、最も特徴的だったのがVisual Basic。全体で2番人気のPHPスキが極端に少なく、代わりに関数型言語スキが多い
(クリックすると、別ウィンドウで大きな画像が開きます)

しかし、強い力を振るうには、相応の責任が発生するのも事実。仮に他人に理解しにくいやり方で重複コードを切り捨ててしまえば、プログラムは非常に分かりづらくなる。

「プログラミングの生産性が上がる代わりに、他人が読みづらいプログラムになる危険性が大きくなります。その点、JavaやPythonなどの言語は、設計思想が正反対ですね。魔法の力は、RubyやLispなどに比べて抑えてあります。その代わり、誰もが同じようなソースコードを書き、互いに理解しやすくなるのです。どちらが正しいということはありません。使い方次第で、一長一短があるのです」

設計思想が明確な言語ほど、プログラマーによっては肌が合わないケースもあるだろう。反対に、心から惚れ込む可能性だってある。

「強力な言語を使って、ノリノリでソースコードを書きたい人もいるでしょう。一方、プログラミングはチームのために書くものだと考える人もいる。好きな言語で、プログラマーの性格はある程度推し量れるのかもしれませんね」

良いプログラマーには「異文化経験」が必要

和田氏は、講演会などを通じて若いプログラマーと話す機会が多い。そこで勧めているのが、さまざまなネットワークを通じて、自分と違う考え方に触れることだ。

例えば

例えば、和田氏肝入りの『TDD Boot Camp』など、エンジニアに向けの異文化交流は数多く存在する

「閉じた世界で暮らすプログラマーは危険です。一つの考え方に凝り固まり、成長が止まってしまいます。それを避けるには、勉強会やセミナーに参加してもいいし、インターネットや本を通じて知識を仕入れてもいいでしょう。月並みな言い方になりますが、『異文化経験』を重ねることが大切です」

和田氏が尊敬する達人プログラマーたちは、年に1つ、新しい言語を学ぼうと提唱しているそうだ。

「若いプログラマーの中には、1つの言語しか知らない人もたくさんいます。しかし、2つ目の言語を学ぶことに、ぜひ挑戦して欲しいですね。例えば、PHPだけしか知らない人と、JavaとPHPを知っている人とでは、世界の広がり方が全く違ってきます。また、Javaを学ぶことで、PHPに対する理解がさらに深まることだってあるのです」

和田氏自身も、日々、新しい知識を吸収しようと努力を重ねている。

「この世界には、毎年新しいプログラマーが入ってきます。その中で現役として活躍し続けるためには、貪欲に学び続けるしかないと思うのです。また、自分より10歳、15歳若い人からも新しいことを学べるか。彼らを尊敬し、頭を下げて教えを請えるか。それが、プログラマーとして長生きしていくための最大のカギなんです」

取材・文/白谷輝英

[特集:G-1グランプリ 1/3] スキな言語⇒PHP、キライな言語⇒PHP。理由は「あと一歩のところで悲しくなる」から

[特集:G-1グランプリ 2/3] 和田卓人が投票結果を分析!「主義が貫かれた言語は嫌われにくい」