mei_13のPython講座 ロゴ

【解説】Pythonの美しさと優しさ:読みやすいコードを書くための「可読性」の基本




Pythonの美しさと優しさ:読みやすいコードを書くための「可読性」の基本


Yukiのアイコン
【Yuki】 ひろきくん、こんにちは。今日はPythonというプログラミング言語の大きな特徴の一つである、「可読性(かどくせい)」について、一緒にお話ししてみたいと思います……。 「可読性」というのは、簡単に言うと「コードがどれだけ読みやすいか」という意味です。Pythonは、数あるプログラミング言語の中でも、特にこの可読性を大切にしている言語なんですよ。


Hirokiのアイコン
【Hiroki】 Yukiさん、こんにちは!可読性、ですね。 僕、プログラミングって「コンピュータに命令を出すためのもの」だと思っていました。だから、コンピュータさえ理解できれば、人間にとって読みやすいかどうかは、あまり関係ないのかな……なんて思っていたんですけど、違うんでしょうか?


Yukiのアイコン
【Yuki】 ふふ、そう思うのも無理はないかもしれませんね。でも、実はプログラムって、書いている時間よりも、後から誰かが「読む」時間のほうがずっと長いと言われているんです。 自分が書いたコードを数ヶ月後の自分が読み直すこともありますし、チームで開発をするときは、他の人が書いたコードを理解しなければいけません。その時に、何が書いてあるか分からないと、修正も改良もできなくなってしまいます……。 Pythonは「誰が書いても同じような、読みやすいコードになる」ことを目指して設計された、とても優しい言語なのだと思います。

Pythonの代名詞「インデント」がもたらす強制的な美しさ


Hirokiのアイコン
【Hiroki】 「誰が書いても同じようになる」って、すごいですね。具体的に、どうしてPythonは読みやすいと言われているんですか?


Yukiのアイコン
【Yuki】 一番の特徴は、「インデント(字下げ)」が言語のルールとして組み込まれていることかもしれません。 他の多くの言語、例えばC言語やJavaなどは、処理のまとまりを { }(波括弧)で囲むことが多いのですが、Pythonはスペース4つのインデントで表現します。

# Pythonの例
def greeting(name):
    if name == "Hiroki":
        print("こんにちは、ひろきくん。")
    else:
        print("はじめまして。")


Hirokiのアイコン
【Hiroki】 あ、確かに。段落が下がっているから、どこからどこまでが if の中身なのか、パッと見て分かります。


Yukiのアイコン
【Yuki】 そうなんです。Pythonでは、このインデントを正しく入れないとエラーになって動かないようになっています。 これによって、誰が書いても構造がはっきりした、整理された見た目になります。書き手の好みに左右されず、視覚的に構造が理解できる……。これは、小さなツールであっても、誰かの助けになるために作られたプログラムにとって、とても大切なことだと思うんです。

共通のルール、PEP 8という「優しさ」


Hirokiのアイコン
【Hiroki】 なるほど、ルールとして決まっているから、自然と綺麗になるんですね。他にも何かルールがあるんでしょうか?


Yukiのアイコン
【Yuki】 はい。Pythonには 「PEP 8(ペップ・エイト)」 という、公式のスタイルガイドが存在します。 これは「Pythonのコードをどう書けば美しく、読みやすくなるか」をまとめた、いわば憲法のようなものです。例えば、こんなことが書かれています。

  • インデントは、スペース4つで行う。
  • 1行の長さは最大79文字に抑える。
  • 関数の定義の前には、2行の空行を入れる。
  • 演算子の前後には、スペースを1つ入れる(例: x = 1 + 2)。

PEP 8 – Style Guide for Python Code


Hirokiのアイコン
【Hiroki】 スペースの数まで決まっているんですね!ちょっと細かい気もしますが……。


Yukiのアイコン
【Yuki】 そうですね……。少し窮屈に感じることもあるかもしれません。でも、みんながこのルールを守ることで、初めて見るコードでも「あ、ここは関数だな」とか「ここは計算をしているな」と、迷わずに読み進めることができるようになるんです。 統一されたフォントのように、整然としたコードは読んでいる人のストレスを減らしてくれます。それは、コードを読む人への一つの「思いやり」の形なのかもしれません。

コードに「意味」を宿す、変数と関数の命名規則


Hirokiのアイコン
【Hiroki】 思いやり、ですか……。そう考えると、ルールを守るのも大切なことだと思えてきました。 他には、どんなことに気をつければ「可読性」が上がるんでしょうか?


Yukiのアイコン
【Yuki】 とても大切なのが、「名前の付け方」です。変数や関数に、どんな名前をつけるか……。これが可読性の半分以上を決めると言ってもいいかもしれません。 例えば、ひろきくん、次の二つのコードを見比べてみてください。

# Aのパターン
a = 10
b = 5
c = a * b
print(c)

# Bのパターン
apple_price = 10
quantity = 5
total_price = apple_price * quantity
print(total_price)


Hirokiのアイコン
【Hiroki】 あ、断然Bのほうが分かりやすいです! Aは何を計算しているのか分からないけど、Bは「リンゴの合計金額」を出しているんだってすぐに分かります。


Yukiのアイコン
【Yuki】 その通りです。変数名には、そのデータが「何であるか」を表す名前をつけるのが基本です。 Pythonでは、変数や関数には 「スネークケース(snake_case)」 という形式を使うのが一般的です。単語の間をアンダースコア _ でつなぎ、すべて小文字で書くスタイルですね。 逆に、クラス名には 「キャメルケース(CamelCase)」 と言って、各単語の先頭を大文字にするスタイルを使います。


Hirokiのアイコン
【Hiroki】 名前を見ただけで、それが変数なのかクラスなのか分かるようになるんですね。


Yukiのアイコン
【Yuki】 はい。名前を丁寧に考えるのは、少し時間がかかる作業かもしれません。でも、適切な名前をつけることで、コメントで説明しなくても「コードそのものが内容を語る」ようになります。これを自己文書化(Self-documenting)と呼んだりします。 名前選びに迷った時は、「半年後の自分が見て、1秒で理解できるか」を考えてみるといいかもしれませんね。

Pythonの哲学を覗く:The Zen of Python(PEP 20)


Hirokiのアイコン
【Hiroki】 自己文書化、かっこいい言葉ですね。Pythonを作った人たちは、本当に「読みやすさ」を大事にしていたんですね。


Yukiのアイコン
【Yuki】 そうですね。それを象徴する言葉が、Pythonの中に隠されているんですよ。 Pythonの対話型シェルで import this と入力すると表示される、「The Zen of Python(PEP 20)」 という20の格言があります。

PEP 20 – The Zen of Python


Hirokiのアイコン
【Hiroki】 「Pythonの禅」……? なんだか、深い意味がありそうです。


Yukiのアイコン
【Yuki】 いくつか、可読性に関係するものを紹介しますね。

  • Beautiful is better than ugly.(醜いより、美しいほうがいい。)
  • Explicit is better than implicit.(暗示するより、明示するほうがいい。)
  • Simple is better than complex.(複雑であるより、シンプルであるほうがいい。)
  • Readability counts.(可読性は、重要である。)


Hirokiのアイコン
【Hiroki】 「可読性は重要である」って、はっきり書いてあるんですね。


Yukiのアイコン
【Yuki】 はい。特に2番目の「明示するほうがいい」というのは、Pythonらしい考え方だと思います。 「たぶんこう動くだろう」という魔法のような処理よりも、誰が見ても「こう動く」と明確に分かる書き方を好む……。そんな、真っ直ぐで誠実な姿勢が、Pythonのコードには流れているような気がします。

コードの中に「説明書」を書く、Docstringの重要性


Hirokiのアイコン
【Hiroki】 誠実なコード、素敵ですね。 でも、名前を工夫したりルールを守ったりしても、どうしても処理が複雑になってしまうことはありませんか? そういう時はどうすればいいんでしょう。


Yukiのアイコン
【Yuki】 どうしても説明が必要な場合は、「コメント」「Docstring(ドックストリング)」を活用します。 コメントは # を使って書きますが、関数の説明などには """(ダブルクォーテーション3つ)で囲む Docstring を使うのがPythonの慣習です。

def calculate_area(radius):
    """
    円の面積を計算します。

    Args:
        radius (float): 円の半径

    Returns:
        float: 計算された面積
    """
    import math
    return math.pi * radius ** 2


Hirokiのアイコン
【Hiroki】 あ、これなら関数の使い方が一目で分かりますね。


Yukiのアイコン
【Yuki】 そうなんです。特に「この関数は何を受け取って、何を返すのか」を書いておくと、他の人がその関数を使おうとした時に、中身の計算式まで読み込まなくて済むようになります。 ただし、何でもかんでもコメントを書けばいいというわけではありません。 「何をしているか(What)」はコードそのものが語るように書き、「なぜそうしているか(Why)」という、コードからは読み取れない意図をコメントに残すのが、良い書き方だと言われています。


Hirokiのアイコン
【Hiroki】 「何を」はコードで、「なぜ」をコメントで……。意識してみます。

読みやすさを支えるツールたち


Hirokiのアイコン
【Hiroki】 Yukiさん、PEP 8とか命名規則とか、全部自分で完璧に守るのは、最初は少し大変そうです……。何か助けてくれるものはないんでしょうか?


Yukiのアイコン
【Yuki】 ふふ、安心してください。Pythonには、コードを自動でチェックしたり、綺麗に整えてくれたりする便利なツールがたくさんあります。 代表的なものをいくつか紹介しますね。

  • Linter(リンター): コードに間違いがないか、ルールに違反していないかをチェックしてくれるツールです。 Flake8 などが有名です。
  • Formatter(フォーマッター): コードを自動で PEP 8 などのルールに合わせて整形してくれるツールです。 Blackautopep8 というツールがよく使われます。


Hirokiのアイコン
【Hiroki】 自動で直してくれるんですか? それは心強いです!


Yukiのアイコン
【Yuki】 はい。特に Black というフォーマッターは、「妥協のないコード整形」を掲げていて、誰が使っても全く同じスタイルに整えてくれます。 こうしたツールをエディタに設定しておけば、コードを保存した瞬間に魔法のように綺麗になるんです。 機械に任せられるところは任せて、私たちは「より分かりやすいロジック」や「適切な名前選び」に集中する……。それが、現代的なプログラミングのスタイルなのかもしれませんね。

最後に:可読性は、次にコードを読む人へのプレゼント


Hirokiのアイコン
【Hiroki】 今日はありがとうございました。可読性って、単に見た目が綺麗なだけじゃなくて、自分や他の人への思いやりなんだってことがよく分かりました。


Yukiのアイコン
【Yuki】 そう言ってもらえると、わたしも嬉しいです。 プログラミングは、一人で黙々と作業をしているように見えますが、実はコードを通じて誰かと対話をしているようなものかもしれません……。 読みやすいコードを書くことは、「次にこのコードを読む人への、心のこもったプレゼント」のようなものだと、わたしは思っています。


Hirokiのアイコン
【Hiroki】 プレゼント、ですか。僕も、次に読む人が笑顔になれるような、そんな優しいコードを書けるようになりたいです!


Yukiのアイコン
【Yuki】 ひろきくんなら、きっと素敵なコードを書けるようになると思いますよ。 最初は慣れないかもしれませんが、少しずつ、楽しみながら学んでいってくださいね。 もし分からないことがあれば、またいつでも聞いてください……。夜の静かな時間なら、わたしもゆっくりお話しできると思いますから。


Hirokiのアイコン
【Hiroki】 はい! またよろしくお願いします、Yukiさん!



< API
コラム一覧に戻る
デバッグ >

この記事では基礎を解説しましたが、実務においては「もっと複雑なデータを扱いたい」「独自のシステムに組み込みたい」といった、個別の課題に直面することも多いはずです。

「自分で書く時間は最小限に抑え、プロの品質でツールを完成させたい」という方は、ぜひ一度ご相談ください。

「教わる」だけでなく「形にする」パートナーとして、フリーランスエンジニアのmei_13が最短ルートでの解決をサポートします。

➡ ココナラで制作・相談を依頼する(見積もり無料)


初心者から始められるPythonレッスン

プログラミング未経験者・初心者歓迎!
月額4,000円で質問し放題!!
● 完全オンライン
● 翌日までには必ず返信
● 挫折しない独自の学習メソッド
● 圧倒的高評価!!
テキストベースで時間を選ばない
● 高品質なサンプルコード
詳細はこちら
興味がある方はまず質問だけでもどうぞ!



AIアシスタント Yuki