結論から言うと、データとそのデータに対する処理をひとまとまりで扱いたいときは、関数だけで組むよりクラスのほうが整理しやすくなります。

Pythonでは入門の段階で関数を多く使うため、「クラスはいつ使えばいいのか」がわかりにくいことがあります。
無理にクラスへ置き換える必要はありませんが、状態を持つ対象が増えてくると、関数だけでは管理しづらくなる場面が出てきます。
この記事では、クラスを使う場面を動くコードと一緒に整理します。

この記事でわかること

  • Pythonでクラスを使うべき場面の考え方
  • 関数だけで十分なケースとの違い
  • データと処理をまとめると読みやすくなる理由

完成コード

完成コードは次の通りです。

class Task:
    def __init__(self, title, deadline, is_done=False):
        self.title = title
        self.deadline = deadline
        self.is_done = is_done

    def mark_done(self):
        self.is_done = True

    def build_summary(self):
        status = "完了" if self.is_done else "未完了"
        return f"{self.title} | 締切: {self.deadline} | 状態: {status}"


task = Task("見積書を送る", "2026-04-20")
print(task.build_summary())

task.mark_done()
print(task.build_summary())

コードのポイント

このコードでは、タスクという1つの対象に対して、データと処理をまとめています。

  • title deadline is_done はタスクの状態です
  • mark_done() は状態を更新する処理です
  • build_summary() は表示用の文章を作る処理です

このように、同じ対象に関係する情報と操作をひとまとまりにすると、コードの見通しがよくなります。

コードを順番に説明します

主要な処理を分けて説明します。

1. 複数の値を1つの対象として持たせたいときにクラスが向いています

class Task:
    def __init__(self, title, deadline, is_done=False):
        self.title = title
        self.deadline = deadline
        self.is_done = is_done

タスクには、タイトル、締切、完了状態のように関連する情報がまとまって存在します。
これを関数だけで扱うと、毎回 title deadline is_done を別々に渡すことになり、引数が増えやすいです。

クラスを使うと、「タスク」というまとまりで情報を持てます。
同じ対象に関する値がいくつもあるときは、クラスを検討しやすい場面です。

2. その対象に対する操作も一緒に持たせると整理しやすくなります

    def mark_done(self):
        self.is_done = True

このメソッドは、タスクを完了状態に変える処理です。
Task に関係する処理なので、クラスの中に置くと自然に読めます。

もし外側に mark_task_done(task) のような関数を増やしていくと、データと処理が別々の場所に散りやすくなります。
状態を更新する操作があるなら、クラスにまとめる価値が出てきます。

3. 状態を使った表示や計算が増えるとクラスの利点が出やすくなります

    def build_summary(self):
        status = "完了" if self.is_done else "未完了"
        return f"{self.title} | 締切: {self.deadline} | 状態: {status}"

このメソッドは、タスクが持っている複数の属性を組み合わせて表示文を作っています。
必要な情報がすでに self の中にあるため、引数を大量に渡さなくても処理できます。

このように、ある対象の状態をもとに別の値や文章を作ることが増えるなら、クラスにまとめたほうが見通しがよくなります。
逆に、単発の計算だけなら普通の関数で十分なことも多いです。

実務で使うときのポイント

実務では、クラスを使うかどうかを「難しそうだから」ではなく、「まとまりがあるか」で判断すると考えやすいです。

  • ユーザー、注文、ファイル設定、タスクのように、関連する属性を持つ対象はクラスと相性がよいです
  • その対象に対する操作が複数あるなら、関数を散らすよりクラスに寄せたほうが整理しやすいです
  • 一方で、単純な変換や短い計算だけなら、無理にクラスにせず関数のままでも十分です
  • クラスを使うなら、何の状態を持ち、どの操作を担当するかを先に決めると設計しやすくなります

特にCLIツールや業務スクリプトでも、設定情報や処理対象が増えるとクラスが役立つことがあります。
クラスは大規模開発だけのものではなく、状態を扱いやすくする整理方法の1つです。

よくある勘違い・注意点

  • クラスを使えば必ずよくなるわけではなく、単純な処理なら関数のほうがわかりやすいです
  • 属性を増やしすぎると、何を表すクラスなのかが曖昧になりやすいです
  • 1つのクラスに関係ない処理まで入れると、責務が広がって保守しにくくなります
  • クラスは「データのまとまり」と「その操作」があるときに使うと効果が出やすいです

まとめ

  • クラスは、関連するデータと処理をひとまとまりで扱いたいときに向いています
  • 状態を持つ対象があるなら、関数だけよりクラスのほうが整理しやすいことがあります
  • 単純な計算や変換だけなら、無理にクラスへしなくても問題ありません
  • 実務では、対象のまとまりと状態更新の有無を見ると使いどころを判断しやすいです

次の記事