エンジニアtype - エンジニアのシゴト人生を考えるWebマガジン
  • TOP
  • キーパーソン
  • 旬ネタ
  • コラボ
  • ノウハウ
  • 女子部
  • キャリア

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

タグ : C++, ColdFusion, Java, MIT, Objective-C, Perl, PHP, Python, Ruby, Scala, Silver, Toksy, Tython, ござ先輩, プログラミング, 宮國渡, 山下博巨, 斉藤のり子, 藤川真一, 言語 公開

 

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

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

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

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

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

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

良いソースコードを作るための早道は、他の人の存在を意識し、読みやすい書き方を心がけること。自分だけ分かればいい、動作さえすればいいという独りよがりな考え方は、絶対に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] 和田卓人が投票結果を分析!「主義が貫かれた言語は嫌われにくい」




人気のタグ
業界有名人 スタートアップ 開発 SE 転職 エンジニア プログラマー Web スキルアップ ソーシャル アプリ シリコンバレー キャリア プログラミング Android 起業 えふしん スマートフォン アプリ開発 SIer 技術者 UI btrax Webサービス クラウド Apple スペシャリスト CTO Twitter Brandon K. Hill ギーク 英語 村上福之 Facebook Google デザイン IoT SNS ツイキャス 世良耕太 モイめし IT 30代 採用 赤松洋介 コーディング 20代 UX 勉強会 プロジェクトマネジメント Ruby ITイベント Webエンジニア 中島聡 ビッグデータ 法林浩之 ウエアラブル iOS 五十嵐悠紀 LINE ドワンゴ ひがやすを ロボット 受託開発 モノづくり IT業界 コミュニケーション イノベーション ハードウエア MAKERS tips ゲーム 女性 ソーシャルゲーム Webアプリ SI インフラ iPhone 女性技術者 高須正和 マイクロソフト 研究者 UI/UX トヨタ 自動車 ノウハウ チームラボ 息抜き システム ソニー プラットフォーム Java メイカームーブメント オープンソース 和田卓人 エンジン グローバル 開発者 教育 イベント サイバーエージェント ソフトウェア 女子会 コミュニティ メーカー 家入一真 スーパーギーク 増井雄一郎 GitHub 人工知能 IPA 40代 日産 テスト駆動開発 ソフトウエア 音楽 TDD ニュース モバイル PHP TechLION

タグ一覧を見る