mei_13のPython講座 ロゴ

【解説】Pythonのコードがもっと美しく、読みやすくなる「命名規則」の教科書




🐍 初心者歓迎!月額4,000円で質問し放題のPython講座
(1時間4,000円の伴走型ビデオチャット指導も受付中!)
🚀 講座の詳細を見る 📩 質問・お問い合わせ

Pythonのコードがもっと美しく、読みやすくなる「命名規則」の教科書


Hirokiのアイコン
【Hiroki】 Yukiさん、こんにちは! 最近Pythonの勉強を頑張っているんですけど、変数や関数の名前にいつも迷ってしまうんです。 例えば、「ユーザーの名前」を変数にしたいとき、usernameにするか、user_nameにするか、それともUserNameにするか……。 動けば何でもいいのかもしれないですけど、何か正しい「書き方」みたいなものってあるんでしょうか?


Yukiのアイコン
【Yuki】 Hirokiくん、こんにちは。プログラミングを進めていくと、必ずそこに突き当たりますよね。 実は、Pythonには「PEP 8(ペップ・エイト)」という、コードの書き方に関する公式のスタイルガイドがあるんです。 名前にどのような文字を使うかというルールを「命名規則」と呼びますが、これを守ることで、自分だけでなく他の人が見たときにも読みやすい、美しいコードになるんですよ。 今日はそのあたりを、ゆっくり一緒に見ていけたらいいな、と思います。


Hirokiのアイコン
【Hiroki】 「PEP 8」……。公式のルールがあるんですね! 独学だとなかなかそういう「お作法」に気づけなくて。 ぜひ教えてください。まずは、さっき言った「変数」の名前はどう書くのが正解なんですか?

変数名と関数名は「スネークケース」で書こう


Yukiのアイコン
【Yuki】 そうですね。まずは一番よく使う変数名関数名についてお話しします。 Pythonでは、これらはすべて小文字で書き、単語の間をアンダースコア(_)でつなぐ「スネークケース(snake_case)」という形式を使うのが一般的だと思います。


Hirokiのアイコン
【Hiroki】 スネークケース……。ヘビみたいに繋がっているから、そう呼ぶんですね。 具体的にはどう書くんでしょうか?


Yukiのアイコン
【Yuki】 例えば、こんな感じでしょうか。

# 良い例:スネークケース
user_name = "Hiroki"
max_score = 100

def get_user_data():
    pass

このように、すべて小文字で、単語の区切りをはっきりさせるのがPythonらしい書き方だと言われています。 逆に、userName のように単語の頭を大文字にする「キャメルケース」は、Pythonの変数や関数ではあまり使われないかもしれませんね。


Hirokiのアイコン
【Hiroki】 なるほど、user_nameですね! これなら単語がくっついて読みづらくなることもなさそうです。 でも、どうしてわざわざアンダースコアを入れるんでしょうか?


Yukiのアイコン
【Yuki】 それは、「可読性(読みやすさ)」を一番に考えているからだと思います。 maxscore と書くよりも、max_score と書いたほうが、パッと見た瞬間に「最大」の「スコア」だと理解できますよね。 プログラミングは書く時間よりも「読む時間」のほうがずっと長いと言われているので、こういう小さな気遣いが、後で自分を助けてくれることになるはずですよ。


Hirokiのアイコン
【Hiroki】 「読む時間のほうが長い」……。確かに、昨日の自分のコードを読み返して「これ何だっけ?」ってなることがよくあります(笑)。 関数名も同じルールでいいんですか?


Yukiのアイコン
【Yuki】 はい、関数名も変数名と同様にスネークケースを使います。 ただ、関数は「何かをするもの」なので、calculate_total()print_report() のように、動詞から始めるとより分かりやすくなるかもしれません。

クラス名は「パスカルケース」を使おう


Hirokiのアイコン
【Hiroki】 変数と関数はスネークケース。覚えられました! でも、Pythonには「クラス」もありますよね。クラスも同じスネークケースでいいんでしょうか?


Yukiのアイコン
【Yuki】 いいえ、そこが面白いところで、クラス名にはまた別のルールがあるんです。 クラス名は、各単語の先頭を大文字で始め、アンダースコアは使わない「パスカルケース(PascalCase)」を使うのがルールです。 「アッパーキャメルケース」とも呼ばれますね。


Hirokiのアイコン
【Hiroki】 へぇ、使い分けるんですね。どうしてクラスだけ違う書き方をするんですか?


Yukiのアイコン
【Yuki】 それは、コードの中で「これは変数(または関数)だな」というのと「これはクラスだな」というのを、一目で区別できるようにするためだと思います。 例えば、こんな風に書きます。

# 良い例:クラス名はパスカルケース
class UserProfile:
    def __init__(self, name):
        self.name = name

# インスタンス化するときに区別がつきやすい
my_profile = UserProfile("Hiroki")

もしクラス名もスネークケースで user_profile だったら、それが変数なのかクラスなのか、一瞬迷ってしまうかもしれません。 でも、頭が大文字になっていれば「あ、これはクラスを呼び出しているんだな」とすぐに分かりますよね。


Hirokiのアイコン
【Hiroki】 あ、本当だ! UserProfile と書いてあれば、一目でクラスだと分かりますね。 プログラミングのルールって、ちゃんと理由があって決まっているんだなぁ。

定数は「すべて大文字」で目立たせる


Hirokiのアイコン
【Hiroki】 あともう一つ、一度決めたら変えない値……ええと、「定数」はどうすればいいですか? 例えば、円周率とか、消費税率とか。


Yukiのアイコン
【Yuki】 定数についても、Pythonには特別な慣習があります。 定数は、すべての文字を大文字にして、単語の間をアンダースコアでつなぐ形式を使います。


Hirokiのアイコン
【Hiroki】 全部大文字! かなり目立ちそうですね。


Yukiのアイコン
【Yuki】 そうなんです。あえて目立たせることで、「この値はプログラムの途中で書き換えてはいけない大切なものですよ」というサインを出しているんですね。

# 良い例:定数は大文字のスネークケース
PI = 3.14159
TAX_RATE = 0.1
MAX_RETRY_COUNT = 5

実は、Pythonという言語自体には、変数の書き換えを完全に禁止する機能(厳密な定数)は備わっていないんです。 だからこそ、このように名前の書き方を変えることで、開発者同士の「約束事」として守っているんですよ。


Hirokiのアイコン
【Hiroki】 なるほど……。機能として制限できないから、名前で「これは触るなよ!」ってアピールしているんですね。 なんだか、プログラマー同士の暗黙の了解みたいでかっこいいです。

意味のある名前を付けることの大切さ


Hirokiのアイコン
【Hiroki】 書き方の形式(スネークケースとか)は分かりました。 でも、そもそも「なんて名前にするか」でいつも迷っちゃうんです。 とりあえず a = 10 とか temp = "data" みたいに付けてしまうこともあるんですけど……。


Yukiのアイコン
【Yuki】 ふふ、その気持ち、よく分かります。私も最初はついつい短い名前で済ませてしまいたくなったことがあります。 でも、「良い名前を付けること」は、プログラムを正しく書くことと同じくらい重要だと言われているんですよ。


Hirokiのアイコン
【Hiroki】 そんなに重要なんですか?


Yukiのアイコン
【Yuki】 はい。例えば、半年後のHirokiくんがそのコードを読み返したときを想像してみてください。 a という変数を見て、それが「ユーザーの年齢」なのか、「商品の個数」なのか、すぐに思い出せるでしょうか……?


Hirokiのアイコン
【Hiroki】 うっ、自信がないです……。


Yukiのアイコン
【Yuki】 ですよね。だから、なるべく具体的で、その中身が何であるかを説明するような名前を付けるのが理想的だと思います。 例えば、単に data とするのではなく、user_list とか response_json といった名前にするだけで、情報の解像度がぐっと上がります。


Hirokiのアイコン
【Hiroki】 「情報の解像度」……。すごく分かりやすい表現ですね。 でも、あんまり名前を長くしすぎると、書くのが大変じゃないですか?


Yukiのアイコン
【Yuki】 確かに、あまりに長すぎるのは考えものですね。 list_of_names_of_users_who_logged_in_today みたいな名前だと、コードが読みにくくなってしまいます(笑)。 適度な長さに抑えつつ、その変数の役割を正確に表す単語を選ぶ……。 これはプログラミングの中でも特に難しい「センス」が問われる部分かもしれません。 でも、Hirokiくんなら、きっとコードを書き続けていくうちに、自分なりの良いバランスが見つかると思いますよ。

名前を付けるときのNG例


Hirokiのアイコン
【Hiroki】 頑張ってセンスを磨きます! 他に、「これだけはやっちゃダメ」っていう禁止事項はありますか?


Yukiのアイコン
【Yuki】 そうですね、いくつか注意すべきポイントがあります。 まず、Pythonの予約語(キーワード)を名前に使うことはできません。 例えば、ifforclassdef といった言葉は、Pythonが構文として使っている特別な言葉なので、変数名には使えないんです。


Hirokiのアイコン
【Hiroki】 あ、それはエラーになっちゃいますもんね。


Yukiのアイコン
【Yuki】 その通りです。 あと、ルール上は可能ですが、「紛らわしい文字」を一文字だけで使うのも避けたほうがいいかもしれません。 例えば、小文字の l(エル)と大文字の I(アイ)、数字の 1(いち)。 これらはフォントによっては見分けがつかなくなってしまうことがありますよね。


Hirokiのアイコン
【Hiroki】 確かに、パッと見だと全部同じ棒に見えることがあります! 変数名が l = 1 だったら、何がなんだか分かりませんね。


Yukiのアイコン
【Yuki】 そうなんです。フォントにこだわっている環境ならまだしも、他の人がどんな環境でコードを見るかは分かりませんから、誰にとっても読みやすい名前を心がけるのが優しさかな、と思います。

あとは、「ローマ字」で名前を付けることも、基本的には避けたほうがいいとされています。 namae = "Hiroki" とするよりは、name = "Hiroki" と英語で書くのが、プログラミングの世界では標準的なマナーなんです。


Hirokiのアイコン
【Hiroki】 英語、苦手なんですけど……やっぱり英語じゃないとダメですか?


Yukiのアイコン
【Yuki】 無理に難しい単語を使う必要はありませんよ。 中学生で習うような簡単な単語で十分です。 プログラミングでよく使われる英単語は限られているので、少しずつ覚えていけば大丈夫だと思います。 それに、英語で書いておけば、いつか海外のエンジニアの人とコードを共有する機会があっても、スムーズに意思疎通ができるかもしれません。夢が広がりますよね。

アンダースコアの特別な意味


Hirokiのアイコン
【Hiroki】 少しずつ英語も頑張ってみます。 ところで、たまに _name みたいに、先頭にアンダースコアがついている変数を見かけるんですけど、あれは何ですか?


Yukiのアイコン
【Yuki】 お、よく気づきましたね。 変数や関数の名前をアンダースコア1つで始めるのは、「これはこのプログラム(またはクラス)の内部だけで使うものなので、外からは触らないでくださいね」という、「プライベート(非公開)」な意味を込める習慣なんです。


Hirokiのアイコン
【Hiroki】 外から触っちゃいけない……?


Yukiのアイコン
【Yuki】 はい。Pythonには、Javaなどの他の言語にあるような「厳格なアクセス制限」がありません。 でも、「この変数を勝手に書き換えられると、全体の動きがおかしくなっちゃうんだよな……」というときがあります。 そういうときに、_ を付けることで「注意してね!」と伝えているんです。 これも一種のコミュニケーションですね。


Hirokiのアイコン
【Hiroki】 なるほど。定数と同じで、機能じゃなくて「名前」で意思表示をしているんですね。 Pythonって、なんだかユーザー同士の信頼関係で成り立っている言語みたいで面白いです。


Yukiのアイコン
【Yuki】 ふふ、本当にそうですね。 自由度が高いからこそ、みんなが「PEP 8」という共通のルールを尊重し合って、読みやすい環境を作っている……。 そんな優しさの上に、Pythonの美しい世界が広がっているのかもしれません。

まとめ:命名規則を味方につけよう


Hirokiのアイコン
【Hiroki】 今日はいろいろ教えていただき、ありがとうございました! 命名規則を知る前は、「名前なんて何でもいい」と思っていましたけど、今は「名前こそがコードの魂」みたいな気がしてきました。


Yukiのアイコン
【Yuki】 「コードの魂」……素敵な表現ですね。 最後に、今日お話しした内容を簡単にまとめてみましょう。

  1. 変数・関数snake_case(すべて小文字、単語間をアンダースコアでつなぐ)
  2. クラスPascalCase(単語の頭を大文字にする)
  3. 定数UPPER_SNAKE_CASE(すべて大文字、アンダースコアでつなぐ)
  4. 名前の内容:具体的で意味のある英語を選ぶ
  5. プライベートな変数:先頭に _(アンダースコア)を付ける

これらを意識するだけで、Hirokiくんのコードは今よりももっと「Pythonらしい」プロのコードに近づくと思います。


Hirokiのアイコン
【Hiroki】 はい! これからはPEP 8を意識して、誰が見ても「綺麗だな」と思ってもらえるようなコードを書きたいと思います。 あ、まずは昨日の自分のコード、a とか b とか付けてたやつを直しに行ってきます!


Yukiのアイコン
【Yuki】 いい心がけですね。きっと未来のHirokiくんも、その修正に感謝する日が来ると思いますよ。 また分からないことがあったら、いつでも聞いてくださいね。 応援しています。


参考資料 - PEP 8 – Style Guide for Python Code - はじめに — pep8-ja 1.0 ドキュメント



< 物理演算シミュレーション
コラム一覧に戻る
遺伝的アルゴリズム >

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

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

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

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


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

プログラミング未経験者・初心者歓迎!
月額4,000円で質問し放題!!
● 完全オンライン
● 翌日までには必ず返信
● 挫折しない独自の学習メソッド
● 圧倒的高評価!!
テキストベースで時間を選ばない
4,000円/60分伴走型ビデオチャット指導も可能
● 高品質なサンプルコード
詳細はこちら

📩 質問・お問い合わせはこちら



AIアシスタント Yuki