【Python初心者必見】docstringの書き方完全ガイド!読めるコードは「説明書」が違う

こんにちは。ゆうせいです。

プログラミングの学習を始めたばかりのときって、とにかくコードを動かすことに夢中になりますよね。「コメントや説明文は後で書けばいいや…」なんて思っていませんか?実は、その「後で」が、未来のあなたやチームの仲間を救うことになるかもしれません。

今回は、Pythonコードの「説明書」とも言えるドキュメンテーション文字列(docstring)について、その役割から書き方まで、初心者の方にも分かりやすく解説していきます!


ドキュメンテーション文字列(docstring)って何?

まず、専門用語から見ていきましょう。

ドキュメンテーション文字列(docstring)とは、関数やクラス、モジュールといったPythonのオブジェクトが「何をするためのものか」「どうやって使うのか」を説明するために書く文字列のことです。

「え、それってコメントと同じじゃないの?」と思った方もいるかもしれませんね。良い質問です!

コメントとdocstringは似ていますが、目的が少し違います。

  • コメント (#): コードの断片が「なぜ」そのように書かれているのか、複雑な処理の「仕組み」はどうなっているのか、といった実装の詳細を説明するために使います。
  • docstring ("""..."""): その関数やクラスの「使い方」を説明します。いわば、家電製品についてくる取扱説明書のようなものです。中身の回路がどうなっているか(仕組み)は知らなくても、説明書を読めばボタンの押し方(使い方)が分かりますよね。

docstringは、コードの使い手(他のエンジニアや未来の自分)のために書く、公式な「取扱説明書」だと考えてみてください。


docstringの基本的な書き方とメリット

docstringの書き方はとてもシンプルです。説明したい関数などの定義のすぐ下に、文字列をトリプルクォート(""")または(''')で囲んで記述するだけです。

基本的な書き方

例えば、2つの数値を足し算する簡単な関数を考えてみましょう。

def add(a, b):
    """2つの数値を受け取り、その和を返します。"""
    return a + b


たったこれだけです!簡単ですよね?

この一行があるだけで、このadd関数が何をするものなのかが一目瞭然になります。

docstringを書くメリットは?

「でも、たったこれだけのために書くのって面倒じゃない?」と感じるかもしれません。しかし、docstringには手間をかけるだけの価値がある、素晴らしいメリットがいくつもあるんです!

1. コードの可読性が劇的に向上する

数ヶ月後に自分のコードを見返したとき、「これ、何のために書いたんだっけ…?」と頭を抱えた経験はありませんか?docstringがあれば、コードのロジックを一行一行追わなくても、その関数が何をするものなのかをすぐに思い出せます。

2. チーム開発がスムーズになる

チームで開発を行う場合、他の人が書いた関数を使う場面がたくさんあります。そんなとき、docstringがあれば、関数の使い方をすぐに理解でき、開発効率が格段に上がります。いちいち「この関数の使い方、教えてください」と聞く手間が省けるわけです。

3. ヘルプ機能で使い方を確認できる

Pythonにはhelp()という便利な組み込み関数があります。このhelp()関数に自作の関数を渡すと、なんとdocstringに書いた内容が表示されるのです!

help(add)

これを実行すると、ターミナルに以下のような出力が表示されます。

Help on function add in module __main__:

add(a, b)
    2つの数値を受け取り、その和を返します。

これで、いつでも関数の使い方を確認できますね。

4. ドキュメントを自動生成できる

Sphinxなどのツールを使うと、コード内のdocstringを自動的に収集して、Webサイトのような美しい形式の公式ドキュメントを生成できます。多くの有名なPythonライブラリのドキュメントは、この方法で作られているんですよ。


もっと詳しく書く!docstringのスタイル

一行だけの簡単な説明でも十分役立ちますが、より複雑な関数になってくると、引数や戻り値についての詳しい情報も書きたくなりますよね。

実は、docstringにはいくつかの推奨される書き方のスタイル(規約)が存在します。ここでは、Googleが推奨している読みやすいスタイル「Googleスタイル」を紹介します。

def divide(a, b):
    """2つの数値を除算します。

    Args:
        a (int or float): 割られる数(分子)。
        b (int or float): 割る数(分母)。

    Returns:
        float: aをbで割った結果を返します。

    Raises:
        ZeroDivisionError: bが0の場合に、この例外を送出します。
    """
    if b == 0:
        raise ZeroDivisionError("0で割ることはできません。")
    return a / b

このように、Args(引数)、Returns(戻り値)、Raises(送出する例外)といったセクションに分けて書くことで、関数の仕様が非常によく分かります。

デメリットも知っておこう

もちろん、良いことばかりではありません。docstringには注意すべき点もあります。それはメンテナンスのコストがかかることです。

もし、関数の仕様を変更したのにdocstringを更新し忘れると、docstringの情報が古くなり、コードと食い違ってしまいます。これは、間違った説明書を読むようなもので、かえって混乱を招く原因になります。

コードを修正したら、必ずdocstringも一緒に修正する!この習慣を忘れないでください。


まとめ:これからの学習に向けて

今回は、Pythonのdocstringについて解説しました。docstringは、単なるコメントではなく、コードの価値を高め、あなたやチームを助けてくれる強力なツールです。

  • docstringはコードの「取扱説明書」
  • 関数などの定義の直下に"""..."""で記述する
  • コードの可読性を高め、チーム開発を円滑にする
  • help()関数やドキュメント自動生成ツールで活用できる
  • コードを修正したら、docstringも必ず更新する

今日から、あなたが書くすべての関数に、まずは一行でも良いのでdocstringを書いてみる習慣をつけてみませんか?

その小さな一歩が、あなたを「ただ動くコードを書く人」から「誰にでも分かりやすい、質の高いコードを書けるエンジニア」へと成長させてくれるはずです。

次に学ぶステップとしては、Sphinxのようなドキュメント自動生成ツールを実際に使ってみることをお勧めします。自分の書いたdocstringが綺麗なWebページに変換される様子を見ると、きっと感動しますよ!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。