カテゴリ: Python 更新日: 2026/02/04

PythonのOOPと関数型プログラミングの違いをやさしく比較!初心者向け入門ガイド

PythonのOOPと関数型プログラミングの違いを比較する入門記事
PythonのOOPと関数型プログラミングの違いを比較する入門記事

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

生徒

「Pythonにはオブジェクト指向と関数型があるって聞いたんですが、何が違うんですか?」

先生

「どちらもPythonで使える考え方ですが、プログラムの組み立て方がまったく違います。」

生徒

「初心者は、どっちから覚えたらいいんでしょうか?」

先生

「まずは違いを知ることが大切です。今日は例え話を交えながら比べてみましょう。」

1. プログラミングの考え方の違い

1. プログラミングの考え方の違い
1. プログラミングの考え方の違い

Pythonには複数の書き方がありますが、その中でも代表的なのがオブジェクト指向プログラミングと関数型プログラミングです。

オブジェクト指向は「もの」を中心に考える方法です。一方で関数型は「処理の流れ」を中心に考えます。

現実世界で例えると、オブジェクト指向は人や道具を主役にした考え方、関数型は作業手順を主役にした考え方と言えます。

2. オブジェクト指向プログラミングとは

2. オブジェクト指向プログラミングとは
2. オブジェクト指向プログラミングとは

オブジェクト指向プログラミングは、データと処理をひとまとめにして扱う考え方です。

Pythonではクラスを使って、この考え方を表現します。クラスは設計図で、そこから作られる実体をオブジェクトと呼びます。

例えば、スマートフォンを思い浮かべてください。機種ごとに色や機能は違いますが、「電話をかける」「写真を撮る」といった共通の動きがあります。これをクラスで表現します。


class Phone:
    def call(self):
        return "電話をかける"

このように、オブジェクト指向では「もの」が何をできるかを中心にプログラムを作ります。

3. 関数型プログラミングとは

3. 関数型プログラミングとは
3. 関数型プログラミングとは

関数型プログラミングは、関数を組み合わせて処理を進める考え方です。

ここで言う関数とは、「入力を受け取って結果を返す箱」のようなものです。できるだけ状態を持たず、同じ入力なら同じ結果を返すことを重視します。

料理のレシピのように、「この材料を入れたら、この結果になる」という流れを積み重ねていくイメージです。


def call():
    return "電話をかける"

関数型では、処理そのものが主役になります。

4. データの扱い方の違い

4. データの扱い方の違い
4. データの扱い方の違い

オブジェクト指向では、データはオブジェクトの中に保管されます。

例えば、人クラスの中に名前や年齢を持たせ、その人自身が行動する、という形になります。

一方、関数型プログラミングでは、データは外から渡され、関数はそれを加工して返すだけです。データを勝手に書き換えない点が特徴です。

5. 変更への強さを比べる

5. 変更への強さを比べる
5. 変更への強さを比べる

オブジェクト指向は、大きなプログラムで力を発揮します。

機能ごとにクラスを分けることで、修正する場所が分かりやすくなります。現実世界に近い形で考えられるのも利点です。

関数型は、小さな処理を組み合わせるため、部分的な変更に強いという特徴があります。一つの関数が壊れても、他への影響が少なくなります。

6. 初心者にとっての分かりやすさ

6. 初心者にとっての分かりやすさ
6. 初心者にとっての分かりやすさ

初心者にとって、オブジェクト指向は少し難しく感じることがあります。クラスやインスタンスなど、新しい言葉が多いからです。

一方で、関数型は「入力して結果を返す」という単純な形なので、最初は理解しやすい場合もあります。

ただし、Pythonではどちらか一方だけを使う必要はありません。状況に応じて両方を組み合わせられるのが特徴です。

7. Pythonらしい使い分けの考え方

7. Pythonらしい使い分けの考え方
7. Pythonらしい使い分けの考え方

Pythonは柔軟な言語なので、オブジェクト指向と関数型の良いところを一緒に使えます。

データをまとめて管理したいときはOOP、単純な処理をまとめたいときは関数型、というように使い分けます。

大切なのは、どちらが正しいかではなく、「今の目的に合っているか」を考えることです。

8. まず覚えておきたいポイント

8. まず覚えておきたいポイント
8. まず覚えておきたいポイント

オブジェクト指向は「もの」と「振る舞い」をまとめる考え方です。

関数型プログラミングは「処理の流れ」をきれいにつなげる考え方です。

この違いを意識するだけで、Pythonのコードの読み方や書き方が少しずつ見えてきます。

カテゴリの一覧へ
新着記事
New1
Flask
Flaskで非同期フォーム送信(Ajax POST)を実装する方法を解説!初心者でもわかるステップ解説
New2
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
New3
Python
PythonでMySQLに接続する方法!pymysqlの基本的な使い方
New4
Flask
FlaskのURLルールとは?ルーティングの基本と動的URLの作り方を解説
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.2
Java&Spring記事人気No2
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.3
Java&Spring記事人気No3
Python
Pythonでリストの要素を検索・取得する方法!index()やin演算子の活用法
No.4
Java&Spring記事人気No4
Python
Pythonプログラムの書き方を基礎から学ぼう!初心者が覚えるべき文法とは?
No.5
Java&Spring記事人気No5
Python
Pythonのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.6
Java&Spring記事人気No6
Flask
Flaskアプリの環境変数をクラウドで安全に設定する方法!初心者のための完全ガイド
No.7
Java&Spring記事人気No7
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.8
Java&Spring記事人気No8
Flask
Flaskでクラウド上のメッセージキュー(SQS/PubSub)を扱う完全ガイド!初心者向け解説