カテゴリ: Python 更新日: 2026/07/28

Pythonの関数のドキュメント(docstring)の書き方!PEP 257のガイドライン

Pythonの関数のドキュメント(docstring)の書き方!PEP 257のガイドライン
Pythonの関数のドキュメント(docstring)の書き方!PEP 257のガイドライン

先生と生徒の会話形式で理解しよう

生徒

「Pythonで関数に説明文をつける方法ってありますか?」

先生

「はい、Pythonではdocstring(ドックストリング)という仕組みを使って関数やクラスに説明文をつけることができます。」

生徒

「それってコメントと何が違うんですか?」

先生

「コメントはコードの実行に影響しませんが、docstringはPythonの組み込み関数help()などで自動的に表示される説明文です。今日はその書き方と、公式ガイドラインであるPEP 257について解説します。」

1. docstring(ドキュメント文字列)とは?

1. docstring(ドキュメント文字列)とは?
1. docstring(ドキュメント文字列)とは?

docstring(ドックストリング)とは、Pythonのプログラム内に記述する「コードのための説明書」のようなものです。関数、クラス、あるいはファイル(モジュール)の先頭に記述することで、そのプログラムが「何をするものか」「どんなデータが必要か」を誰にでもわかりやすく伝える役割を持ちます。

最大の特徴は、一般的なコメント(#)とは異なり、Pythonシステムがその内容を保持している点です。そのため、開発中に内容を確認したり、専用のツールでマニュアルを自動作成したりすることが可能になります。記述する際は、必ずダブルクォート3つ("""で囲むのがPythonの標準的なルールです。

未経験者の方へ:料理のレシピに例えると、「関数」が調理工程なら、「docstring」は冒頭にある「材料リスト」や「この料理のポイント」のようなものです。これがあるおかげで、後から読み返したときや他の人が見たときに、迷わずコードを使いこなせるようになります。

まずは、プログラミング初心者の方でも分かりやすい、簡単な挨拶を返すプログラムを例に見てみましょう。


def create_welcome_message(user_name):
    """
    ユーザーに歓迎のメッセージを作成する関数。

    Args:
        user_name (str): 登録されているユーザーの名前。

    Returns:
        str: 「ようこそ、〇〇さん!」という形式の文字列。
    """
    return f"ようこそ、{user_name}さん!"

このようにdocstringを書いておけば、実行環境でhelp(create_welcome_message)と入力するだけで、いつでもこの説明書を呼び出して確認することができます。初心者のうちからこれを書く癖をつけておくと、複雑なプログラムを書く際にも論理的な思考が整理されやすくなるという大きなメリットがあります。

2. PEP 257とは?Python公式の書き方ルール

2. PEP 257とは?Python公式の書き方ルール
2. PEP 257とは?Python公式の書き方ルール

PEP 257は、Pythonでdocstring(ドキュメント文字列)を書く際の「公式スタイルガイド」です。PEPとは「Python Enhancement Proposal」の略で、世界中のエンジニアが共通のルールでコードを書けるように定められた標準的な指針のことです。

なぜこのルールが重要なのでしょうか?それは、自分勝手な書き方をすると、後で自分や他の人が見たときに「何のためのコードか」を理解するのに時間がかかってしまうからです。PEP 257という共通言語に従うことで、誰が見ても読みやすく、メンテナンスしやすい高品質なプログラムになります。

PEP 257の主な基本ルール:

  • 三重引用符("""で囲む(一重の ''' よりも推奨されます)。
  • 1行目に短い概要を書き、最後は必ずピリオド(.)で終わらせる。
  • 詳細な説明が必要な場合は、2行目を必ず空行にする(概要と詳細を切り離すため)。
  • 3行目以降に具体的な使い方や、引数、戻り値の説明を記述する。

初心者の方でも、まずはこの「型」を覚えるだけで、プロっぽいきれいなコードが書けるようになります。具体的なイメージを掴むために、料理のレシピ名と作り方の説明に例えたサンプルを見てみましょう。


def make_curry(meat_type):
    """カレーを作る工程をシミュレートする関数。

    この関数は、指定されたお肉の種類を使ってカレーを調理します。
    野菜のカットから煮込みまで、一連のステップを自動で行います。

    Args:
        meat_type (str): 使用する肉の種類(例:「豚肉」「牛肉」)。
    """
    print(f"{meat_type}のカレーが完成しました!")

このように、「1行目に結論」「2行目は空ける」「3行目以降に詳しく」というリズムを守ることが、PEP 257を攻略する最大のポイントです。このルールを守るだけで、エディタが自動で説明を表示してくれるなど、開発効率が劇的にアップします。

3. 実践!関数のdocstring(ドキュメント文字列)の具体例

3. 実践!関数のdocstring(ドキュメント文字列)の具体例
3. 実践!関数のdocstring(ドキュメント文字列)の具体例

PEP 257のルールに基づいた、最も標準的で読みやすい関数の書き方を見てみましょう。プログラミング未経験の方でも直感的に理解できるよう、日常的な「買い物」の計算を例に解説します。


def calculate_total_price(price, tax_rate):
    """商品の税込価格を計算して返す関数。

    受け取った商品の価格に消費税率を掛け合わせ、最終的な支払金額を算出します。
    小数点以下の扱いや、複雑な計算をこの関数一つにまとめることができます。

    Args:
        price (int): 商品の本体価格(例:1000)。
        tax_rate (float): 消費税率(例:0.1)。

    Returns:
        int: 消費税を含めた合計金額。
    """
    return int(price * (1 + tax_rate))

このサンプルでは、「概要(1行目)」「空行(2行目)」「詳細説明(3行目以降)」というPEP 257の基本構成を忠実に守っています。特に「Args(引数)」や「Returns(戻り値)」という項目を明記することで、後からコードを見返した時に「この数値は何を意味しているのか?」「結果として何が返ってくるのか?」が一目で判別できるようになります。

初心者向けのポイント:

docstringは、未来の自分へのメッセージでもあります。たとえ自分一人で作るプログラムであっても、「この関数は整数を入れる必要があるんだな」とヒントを残しておくことで、凡ミスを防ぎ、デバッグ(不具合探し)の時間を大幅に短縮できるのです。

このように、構造化された説明文(docstring)を添えるだけで、単なるプログラムの断片が「誰でも使える便利なツール」へと進化します。

4. クラスやモジュールのdocstring:一歩進んだ書き方

4. クラスやモジュールのdocstring:一歩進んだ書き方
4. クラスやモジュールのdocstring:一歩進んだ書き方

docstring(ドキュメント文字列)の活用範囲は関数だけではありません。Pythonでは、複数の機能をまとめた「クラス」や、ファイルそのものである「モジュール」の冒頭にも説明を記述します。これにより、コードの規模が大きくなっても「このファイルは何のためのものか」「このクラスで何ができるのか」を迷わず把握できるようになります。

クラスのdocstring

クラスに記述する場合は、クラス名のすぐ下に書きます。そのクラスが持つ役割や、どのようなデータを扱うのかを簡潔にまとめましょう。


class ShoppingCart:
    """オンラインショップの買い物かごを管理するクラス。

    商品の追加、削除、および合計金額の計算を行う機能を提供します。
    プログラミング初心者の方でも、このクラスを使えば複雑な計算を自動化できます。
    """

    def add_item(self, item_name, price):
        """かごに商品を追加する。"""
        print(f"{item_name}をかごに入れました。")

モジュールのdocstring

モジュール(Pythonファイル)のdocstringは、ファイルの1行目から記述します。これは、そのプログラム全体の「表紙」や「目次」のような役割を果たします。


"""
在庫管理システム用モジュール

このファイルには、商品の在庫数を確認したり、
出荷指示を出したりするための関数がまとめられています。
2026年度の最新税制にも対応した計算ロジックを含んでいます。
"""

import datetime
# ここからコードが始まる

ポイント:大きな設計図(モジュール)の中に、部品の設計図(クラス)があり、さらに細かい手順(関数)があるイメージです。それぞれの階層にdocstringを添えることで、まるで丁寧に解説された図鑑のように、誰にでも読みやすいプログラムが完成します。

5. docstringを記述する絶大なメリット

5. docstringを記述する絶大なメリット
5. docstringを記述する絶大なメリット

なぜ、プロのエンジニアは忙しい合間を縫ってまでdocstring(ドキュメント文字列)を丁寧に記述するのでしょうか。それは、単なる「メモ書き」以上の価値が、開発効率やコードの品質に直結するからです。

docstringを活用することで得られる主なメリットは、以下の4点に集約されます。

  • チーム開発の円滑化:自分以外の人が関数やクラスの使い方を一瞬で理解できるようになり、質問のやり取りを減らせます。
  • 「未来の自分」への備忘録:数ヶ月後に自分のコードを読み返した際、「なぜこの処理が必要だったか」を思い出す時間を劇的に短縮できます。
  • 開発ツールとの強力な連携:VS Codeなどの高機能エディタ(IDE)では、関数名にマウスを合わせるだけでdocstringの内容がポップアップ表示されます。
  • マニュアル作成の自動化:Sphinx(スフィンクス)などのツールを使えば、docstringから本格的なHTMLマニュアルを自動生成できます。

初心者向けの具体例:エディタでの見え方

例えば、以下のようにdocstringを書いた関数があるとします。この関数を別の場所で使おうとしたとき、Pythonの便利な機能があなたを助けてくれます。


def get_discount_price(price, discount_rate):
    """
    商品の割引後の価格を計算する関数。

    Args:
        price (int): 元の価格
        discount_rate (float): 割引率(0.1 = 10%引き)
    """
    return int(price * (1 - discount_rate))

# 関数名を入力しようとすると、上記の説明が自動で画面に表示されます!

プログラミング未経験の方にとって、関数の引数が「整数(int)なのか、小数(float)なのか」を覚えるのは大変です。しかし、docstringがあれば、コードをわざわざ読み返さなくても、エディタが「ここは小数を入力してくださいね」と教えてくれるようになるのです。

このように、docstringを書く習慣は、単に説明文を添える作業ではなく、「ミスが起きにくい環境」を自ら作り出すという、プロレベルの学習ステップへの第一歩となります。

6. プログラミング未経験者へのポイント

6. プログラミング未経験者へのポイント
6. プログラミング未経験者へのポイント

docstringは、いわばコードの「取扱説明書」です。初心者のうちは、引数と戻り値の型、関数が何をするかを簡潔に書くことを意識しましょう。英語で書く習慣も将来役立ちますが、最初は日本語でも構いません。

また、PEP 257のルールを守ることで、将来プロジェクトで他の人と協力するときにもスムーズに作業できます。docstringは単なるメモではなく、プログラムの品質を高める重要な要素です。

まとめ

まとめ
まとめ

Pythonの関数やクラスに説明文を持たせるためのdocstringは、読みやすいプログラムを作るうえで欠かせない存在であり、特に複雑な機能を扱う際には大きな助けとなります。三重引用符を使って関数やクラスの直下に記述することで、その役割や処理内容、引数や戻り値の意味などを整理でき、同じコードを後から読み返す場合にも、誰かに引き継ぐ場合にも理解が格段に進みます。さらに、docstringはhelp関数でそのまま確認できるため、内部ドキュメントとしての役割を果たしながら、実装者と利用者の橋渡しをしてくれる便利な仕組みです。 また、PEP 257に示されたガイドラインを踏まえて書くことで、統一感のある説明文となり、複数人で開発する際にも迷いが少なくなります。概要を最初に書き、空行を入れて詳細を続ける基本形を守るだけで、読み手にとっての理解しやすさが大きく変わります。さらに、引数や戻り値の説明を丁寧に記述することで、用途がひと目で判断でき、コードの誤用も防げます。docstringは単なる補足情報ではなく、コードの一部としての存在であり、プログラムの品質を高めるための重要な記述であると言えます。 とくに初心者にとって、docstringを書く習慣は思考を整理する力を育てるうえでも効果的です。自分が何を作っているのか、どのような値を扱うのかを文章としてまとめることで、曖昧だった設計意図が明確になり、バグの予防にもつながります。プログラムを理解しやすくするための文章を意識して書くことは、学習の過程で非常に意味が深く、後々の学習や仕事でも役立つ技術です。

docstringの整理に役立つサンプルプログラム


def format_message(text, prefix="情報"):
    """指定された文章に接頭辞をつけて整形する関数。

    この関数は、与えられた文章に任意の接頭辞をつけて返します。
    説明文を整理したいときや、ログ用のメッセージを統一したいときに便利です。

    Args:
        text (str): 整形したい文章。
        prefix (str): 先頭につける言葉。デフォルトは「情報」。

    Returns:
        str: 接頭辞を含めた整形済みの文章。
    """
    return f"{prefix}: {text}"

このサンプルでは、docstringの構成として概要、空行、詳細説明という流れを守りながら、引数と戻り値の説明を丁寧に記述しています。こうした構造を繰り返し使うことで、読み手が迷わない一貫したスタイルのコードを維持できます。また、docstringを通じて関数の意図が明確になると、コード全体の把握が容易になり、修正や拡張作業がスムーズに行えるようになります。プログラムを書くうえで説明文を整える作業は決して後回しにすべきではなく、開発者自身の理解を深める重要な工程でもあります。

先生と生徒の振り返り会話

生徒

「docstringってただの説明文と思っていたけれど、書き方にルールがあると知って驚きました。特に概要と詳細を分ける構成がとても分かりやすかったです。」

先生

「そうですね。PEP 257に沿って書くと統一感が出て、誰が読んでも理解しやすくなります。ドキュメントとしても役立つので、積極的に活用するとよいですよ。」

生徒

「関数の説明を書くことで、自分の考えも整理される気がしました。説明しようとすると、曖昧な部分に気づけるのがいいですね。」

先生

「その通りです。文章化することで設計意図が見えてきますし、コードの品質向上にもつながります。docstringは学習段階から慣れておくと、大規模な開発でも大いに役立ちますよ。」

生徒

「これからは関数を書くときに必ずdocstringも書くようにします!」

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

Python の関数とラムダ式の記事一覧へ
新着記事
New1
Python
Pythonの変数とは?定義方法とデータ型を初心者向けに解説
New2
PHP
PHP の型変換を完全ガイド!初心者でもわかる明示的変換・自動変換
New3
PHP
PHPのCSVファイルの読み書きと文字列処理を基礎から解説!初心者向けガイド
New4
PHP
PHPのメモリ管理と変数の破棄方法をやさしく解説!初心者でもわかるunsetの使い方
人気記事
No.1
Java&Spring記事人気No1
Python
PythonでAPIリクエストを送信する方法を完全解説!requestsライブラリで簡単API通信
No.2
Java&Spring記事人気No2
Python
Pythonで経過時間を計測する方法を完全解説!初心者でもわかる time.perf_counter() と time.sleep()
No.3
Java&Spring記事人気No3
Python
Pythonのコンストラクタ(__init__)の使い方!初心者でもわかるオブジェクトの初期化
No.4
Java&Spring記事人気No4
PHP
PHPの配列をソートする方法!sort, rsort, asort, ksortの使い方を丁寧に解説します!
No.5
Java&Spring記事人気No5
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
No.6
Java&Spring記事人気No6
Python
Pythonのタプルの要素を変更できない理由とその回避策を初心者向けに解説
No.7
Java&Spring記事人気No7
ChatGPT
ChatGPTでPythonコードを作成する方法!プロンプトの書き方と質問例を解説
No.8
Java&Spring記事人気No8
Python
Pythonのrequestsライブラリ完全入門!HTTPリクエストの送り方を初心者向けにやさしく解説