ひとりでのアプリ開発 - fineの備忘録 -

ひとりでアプリ開発をするなかで起こったことや学んだことを書き溜めていきます

Python - ドキュメントストリング

初めに

 Pythonにおけるドキュメントストリングの役割や書き方、VSCode拡張機能である「autoDocstring - Python Docstring Generator」の紹介をします。

ドキュメントストリング

ドキュメントストリングとは

 ドキュメントストリングとは、関数、クラス、モジュールなどのオブジェクトに関連する情報を記述するための特殊な文字列です。

ドキュメントストリングの役割

 ドキュメントストリングの役割として、次のようなものが挙げられます。

  • オブジェクトの機能や使用方法を説明する
  • 引数や戻り値の型や意味を説明する
  • 例示や注意事項などを記述する
  • 作者やバージョン情報などを記述する
ドキュメントストリングの書き方

 モジュールの冒頭、クラスの冒頭、関数の先頭にトリプルクォート"""で囲んで記述します。

(例)

def solve_quadratic_equation(a, b, c):
  """
  二次方程式 ax^2 + bx + c = 0 を解きます。

  Args:
    a: float, x^2 の係数
    b: float, x の係数
    c: float, 定数項

  Returns:
    Tuple[float, float]: x1, x2 の解
  """

  if a == 0:
    if b == 0:
      return None
    else:
      return -c / b
  else:
    delta = b**2 - 4 * a * c
    if delta > 0:
      x1 = (-b + np.sqrt(delta)) / (2 * a)
      x2 = (-b - np.sqrt(delta)) / (2 * a)
      return x1, x2
    elif delta == 0:
      return -b / (2 * a)
    else:
      return None

 上記の例では二次方程式を解く関数を定義しています。この関数の先頭にあるトリプルクォート"""で囲んである部分がドキュメントストリングになります。

VSCode拡張機能を使ってドキュメントストリングを記述する

 「autoDocstring - Python Docstring Generator」という拡張機能を使うと楽にドキュメントストリングを記述することができます。

 File > Preferences > Settings(またはCtrl + ,)でSettingsを開き、docstringと検索すると Docstring Formatが選択できます。デフォルトでは googleになっていますが、他のフォーマットも選択できます。googleスタイルは他のフォーマットに比べて縦に長くならないので、googleスタイルで問題ないと思います。

 トリプルクォート"""を入力すると、Generate Docstringと表示されます。これを選択すると自動でドキュメントストリングのテンプレートが記述されます。Ctrl+Shift+2でも可能です。

 googleスタイルでは、summary部分には関数の概要を記述します。Args部分に引数名が自動で入力されるため、typeに引数の型、descriptionに引数の説明を記述します。Returnsには返り値の型と説明を入力します。

(再掲)

def solve_quadratic_equation(a, b, c):
  """
  二次方程式 ax^2 + bx + c = 0 を解きます。

  Args:
    a: float, x^2 の係数
    b: float, x の係数
    c: float, 定数項

  Returns:
    Tuple[float, float]: x1, x2 の解
  """

  if a == 0:
    if b == 0:
      return None
    else:
      return -c / b
  else:
    delta = b**2 - 4 * a * c
    if delta > 0:
      x1 = (-b + np.sqrt(delta)) / (2 * a)
      x2 = (-b - np.sqrt(delta)) / (2 * a)
      return x1, x2
    elif delta == 0:
      return -b / (2 * a)
    else:
      return None

 ドキュメントストリングを書いた部分にカーソルを合わせるとドキュメントストリングが表示され、そのモジュール、クラス、関数の説明を見ることができます。


サンプル

 Geminiで生成したモジュール、クラス、関数のドキュメントストリングのサンプルを載せておきます。

"""
モジュール: これはサンプルモジュールです。

このモジュールは、サンプル関数とサンプルクラスを提供します。
"""

def sample_function(arg1, arg2):
  """
  関数: これはサンプル関数です。

  引数:
    arg1: サンプル引数1
    arg2: サンプル引数2

  戻り値:
    arg1 と arg2 を加算した結果
  """

  return arg1 + arg2

class SampleClass:
  """
  クラス: これはサンプルクラスです。

  属性:
    attr1: サンプル属性1
    attr2: サンプル属性2

  メソッド:
    sample_method(): サンプルメソッド
  """

  def __init__(self, attr1, attr2):
    self.attr1 = attr1
    self.attr2 = attr2

  def sample_method(self):
    """
    メソッド: これはサンプルメソッドです。

    このメソッドは、属性 attr1 と attr2 を返します。

    戻り値:
      属性 attr1 と attr2 のタプル
    """

    return self.attr1, self.attr2