はじめに
プログラミングを学び始めると、まず「コンピュータを正しく動かす」ことに意識が向かいます。エラーが出ず、プログラムが動けば達成感がありますよね。
しかし、実際に開発現場で求められるのは「動くコード」だけではありません。大切なのは「人間が理解できるコード」、つまり 読みやすいコード を書くことです。
本記事では、書籍『リーダブルコード』第1章「理解しやすいコードを書く」を題材に、読みやすさの重要性と具体的な工夫について解説したいと思います。初心者から中級者の方が一歩上のレベルに進むためのヒントになる内容ですので一緒に成長しましょう。
コードの目的は「コンピュータ」ではなく「人間」
多くの人が「コードはコンピュータに命令するためのもの」と思いがちですが、実はそれ以上に人間に理解されることが大切です。
迷路と看板付きの道路の違い
イメージしてみてください。
• 読みにくいコード:曲がり角が多く、行き止まりだらけの迷路。進むたびに「ここで合ってるかな?」と立ち止まる必要がある。
• 読みやすいコード:分かれ道には必ず「◯◯へはこちら」と看板がある道路。迷わずゴールにたどり着ける。
プログラムを読む人にとっては、後者の「看板付きの道路」のようなコードが理想です。
読みにくいコードと読みやすいコードの対比
では、具体的にどんな違いがあるのでしょうか。例を見てみましょう。
悪い例(読みにくいコード)
def cal(a, b):
return a * 1.08 + b
一見シンプルですが、「何を計算しているのか」が分かりません。a と b が何を意味しているのか、1.08 が何の数字なのかも不明です。
良い例(読みやすいコード)
def calculate_total_with_tax(price_without_tax, shipping_fee):
TAX_RATE = 1.08
return price_without_tax * TAX_RATE + shipping_fee
こちらは「税率をかけた合計金額を計算する関数」だと一目でわかります。変数名や定数名が「看板」の役割を果たしているのです。
変数名や関数名に工夫をする
コードを読みやすくする第一歩は、名前の工夫 です。
悪い例
n = 86400
これでは「n」が何を意味するのかまったくわかりません。
良い例
SECONDS_PER_DAY = 86400
「1日は86400秒」という意味が一瞬で伝わります。
また、関数名も同様です。
• 悪い例: def handle(): → 何を処理するのか不明
• 良い例: def send_email_to_user(): → 「ユーザーにメールを送る」と明確
名前を工夫するだけで、コードはまるで看板が立っているかのようにわかりやすくなりますね。
未来の自分やチームメンバーのために書く
読みやすいコードは、未来の自分やチームメンバーに対する「優しさ」でもあります。
未来の自分は「他人」
意識しないで仕事して、1か月後に自分の書いたコードを読み返すと、「これ、何をやってたんだっけ?」と迷うことがあります。未来の自分は、もはや他人と同じ存在です。そのときに助けになるのが「看板のあるコード」です。
チーム開発ではさらに重要
複数人で開発する場合、読みやすさは生産性に直結します。読みやすいコードなら、他の人が理解にかける時間を大幅に減らせます。逆に読みづらいコードは、バグの温床になり、開発スピードを落とす原因になります。メリットしかありません!
読みやすいコードは「看板のある道路」
改めて例えで整理すると、読みやすいコードは「看板のある道路」 です。
• 看板がない道路(読みにくいコード):道に迷いやすく、たどり着くまで時間がかかる。
• 看板がある道路(読みやすいコード):迷わず進めるので、目的地に早く着ける。
プログラムも同じで、理解に迷うポイントを減らすことが、読みやすさにつながります。
まとめ
『リーダブルコード』第1章から学べる大切なポイントを整理します。
1. コードはコンピュータのためだけではなく、人間が理解するために書く。
2. 読みにくいコードは迷路のようで、読みやすいコードは看板付きの道路のよう。
3. 変数名・関数名に工夫をすることで、コードに「看板」をつけられる。
4. 未来の自分やチームの仲間のために、読みやすいコードを書くことが大切。
読みやすいコードは、単に「美しい」だけでなく、将来の開発を楽にし、チーム全体の力を高める基盤となります。
ぜひ、今日から「看板のある道路」を意識してコードを書いていきましょう。
参考情報
• Dustin Boswell, Trevor Foucher 著 『リーダブルコード ― より良いコードを書くためのシンプルで実践的なテクニック』
• Readable Code 原則まとめ(外部ブログ)
• Python公式スタイルガイド PEP8