良いコ-ドへの道―普通のプログラマのためのステップアップガイド

第1回 良いコードを書くための5つの習慣[前編]

この記事を読むのに必要な時間:およそ 6 分

画像

本連載が書籍化されました。

良いコードを書く技術 ─ 読みやすく保守しやすいプログラミング作法

縣俊貴 著/A5判・240ページ
価格2394円(本体2280円)
ISBN 978-4-7741-4596-9

はじめに

この連載は,「良いコードの書き方」を知ることを目的としています。みなさんの周りにも「良いコード」をものすごいスピードで書き上げて,開発の原動力となっているプログラマがいませんか? 本連載ではそのような「できるプログラマ」たちが「日常的に意識していること」に注目して,彼らの中では常識だけど一般的には気づかれていないような内容を,プログラミング初心者にもわかりやすい言葉で解説していきます。プログラミング言語はJavaを中心に説明しますが,RubyやC#,JavaScriptなどでの例も織り交ぜていく予定です。

第1回の今回はウォーミングアップとして,良いコードを書くために必要な日々の習慣を紹介します。

「良いコード」とは?

「良いコード」とは何でしょう? 一言で良いコードといっても,組織やプロジェクト,プログラマか管理者かなど状況が異なると定義も変わってきます。本連載では「良いコード」を次のように定義します。

正確に動作すること

確実に動作する,信頼できるコードのことです。

素早く効率的に動作すること

似たような実装がいくつかあるときに,あきらかに効率の悪いものを選択する必要はありません。「良いコード」は適切なパフォーマンスで動作します。

防御的でバグを産みだしにくいこと

「防御的プログラミング」という言葉があります。これは「正常な値が来るはず」という決めつけをせずに,不正な値が来ても被害を受けないように防御的にプログラミングを行うことです。「良いコード」は防御的で,不測のバグを生み出しにくい作りになっています。

メンテナンスが行いやすいこと

コードは,私たちが想像するよりも長く利用されることが多いです。メンテナンス性が高いことも「良いコード」には大切です。

他人が見ても理解可能であること

将来の自分は記憶力において他人と同然です。つまり,他人が見て理解できるコードであれば,将来の自分が見ても理解できる「良いコード」であると言えます。

無駄な部分がないこと

無駄がないコードは理解するのも修正するのも簡単で時間がかからないため,「良いコード」と言えます。

「良いコード」を書けると何がうれしいの?

では,私たち開発者が「良いコード」を書けるようになると,具体的にどんなメリットがあるのでしょうか?

プロジェクトを強力に推し進める

「良いコード」はプロジェクトを推し進めて,成功へと導くための基本的な要素となります。

達人たちは,シンプルで,メンテナンス性が高く,安定したコードを,ものすごいスピードで書き上げていきます。場合によっては,単純作業を自作のDSL注1に置き換えたり,テストが難しいようなレガシーなコードをテスト可能で検証できるコードに変更することで,品質や生産性を数百倍に高めることさえあります(おおげさではなく,本当に数百倍の場合もあるのです!)。

これはプロジェクトの成功にとって大きなアドバンテージと言えます。もちろん,「良いコード」があれば必ずプロジェクトが成功するわけではありません。実際は,開発プロセスやマネージメント,コミュニケーションなどほかの要素により左右されることのほうが多いのですが,それを差し引いたとしても,「良いコード」の持つ力は大きいと言えます。

注1)
Domain Specific Language(ドメイン特化言語)のこと。ある特定の問題に対応するための言語のことを指します。詳しくはMartin FowlerのBlikiの記事ドメイン特化言語をご覧ください。

プログラマとしての評価が高まる

「良いコードを書くプログラマ」は,総じてプログラマとして信頼され,評価されます。

「プログラマとしての評価」が組織としての実際の評価や収入に結びつくかどうかは,所属する組織の評価制度やプログラム以外の仕事っぷりも含めて決まるのが現実です。でも,「良いコードが書けること」がマイナス評価につながることはないでしょう。

仕事に満足感や自信が持てるようになる

もう二度と触りたくない,メンテナンスが不可能なコードを書いたことはありませんか? そのような低いクオリティの仕事をしてしまったときは,仕事に対する満足感を得ることは難しいでしょう。

逆に,自分の意志で適切に良いコードを書き,品質の高い安定したソフトウェアを開発したときは,満足感も高く,自信を持って仕事に取り組めたはずです。

長いプログラマ人生を考えると,「良いコードが書ける」レベルを目指すことは合理的なことです。

対象読者

本連載の対象読者は,大きく次の3グループを想定しています。それぞれの代表者にコメントしてもらいましょう。

良い仕事をしたい普通のプログラマ

特段に「達人プログラマ」を目指しているわけではないが,良い仕事と成果を出したいと考えているプログラマの人は,本連載により普段知ることのない新しい概念を知ることができたり,興味関心の対象を広げることができたりするでしょう。

達人プログラマを目指す初級~中級のプログラマ

向上心が高く達人を目指すプログラマにとって,本連載が良いドキュメントとしての役割を果たすはずです。

達人プログラマ

すでに「達人」な人には,「この連載を新人などに見せれば教育に使えるな」という観点で見ていただけるとよいでしょう。

著者プロフィール

縣俊貴(あがたとしたか)

学生時代にMSXで制限された環境でのプログラミングの楽しさを学ぶ。以来,オープンソースのWiki実装「MobWiki」の開発や受託開発などを経て,現在はプロジェクト管理ツール「Backlog」,ドローツール「Cacoo」など,コラボレーション型のWebサービスの企画と製品開発を行う。また,Webアプリケーションフレームワーク「Cubby」のコミッタを務める。福岡在住。株式会社ヌーラボ所属。

ブログ :http://d.hatena.ne.jp/agt

Twitter:@agata

コメント

コメントの記入