悩んでる人手続き型とオブジェクト指向の違いが全然わからない



どっちを使えばいいの?現場ではどちらが多いの?
プログラミングを勉強していると、必ずと言っていいほど登場するのが「手続き型」と「オブジェクト指向」という言葉です。
言葉は聞いたことがあるけど、何が違うのかピンとこない人が多いと思います。
どちらも「プログラムの書き方の考え方(パラダイム)」の違いです!
具体的なイメージを持てれば、スッキリ理解できますよ!
本記事では、手続き型とオブジェクト指向の違いを、図解と具体例を使ってわかりやすく解説します。
「なんとなく聞いたことある」という方も、「全然わからない」という方も、ぜひ最後まで読んでみてください!


- システムエンジニア10年目
- 会社員3年⇒フリーランス7年目
- 保険系 / 物流系 / 鉄道系 / 小売系などのシステム開発に従事
- プログラミング講師
手続き型とオブジェクト指向の違いとは?


「手続き型」と「オブジェクト指向」の違いは、プログラムをどう整理して書くかの「設計思想」や「考え方」。
最初に、手続き型とオブジェクト指向の違いをしっかり整理しましょう。
ここを理解しておくと、この後の内容がスムーズに頭に入ってきますよ。
- 手続き型は「処理の手順を上から順番に書く」スタイル
- オブジェクト指向は「データと処理をモノとしてまとめて扱う」スタイル


手続き型 = レシピ通りに「①切る → ②炒める → ③味付け → ④盛り付け」と手順を上から実行するイメージ。
オブジェクト指向 = 「鍋・フライパン・包丁」という道具(部品)を用意して、それぞれに役割を持たせて組み合わせるイメージ。
料理の例でイメージできましたか?
次は比較表で、違いをさらに詳しく整理していきます!
| 比較項目 | 手続き型 | オブジェクト指向 |
|---|---|---|
| 基本の考え方 | 処理の手順を順番に書く | データと処理を部品にまとめる |
| プログラムの単位 | 関数(Function) | クラス(Class) |
| データ管理 | 処理から分離して存在する | クラス内にまとめて管理する |
| コードの再利用 | やや難しい | 継承などで再利用しやすい |
| 小規模開発 | ◎ シンプルで書きやすい | ○ 使えるが設計が必要 |
| 大規模・チーム開発 | △ 複雑化しやすい | ◎ 整理・管理しやすい |
| 学習難易度 | ★★☆☆☆ 比較的やさしい | ★★★☆☆ 概念の理解が必要 |
| 代表的な言語 | C言語・COBOL・Pascal | Java・C#・Python・Ruby |
PythonやJavaScriptは手続き型とオブジェクト指向の両方をサポートしています。
現代の多くの言語はマルチパラダイムです。
状況に応じて使い分けるのがプロのエンジニアの技術です!
それぞれのスタイルをコード例を使ってさらに詳しく解説していきます!
手続き型プログラミングとは?


手続き型プログラミング(Procedural Programming) は、プログラムを「命令を上から順番に実行する手順の並び」として記述するスタイルです。
処理を関数(Function)という単位に分けて整理するのが一般的です。
「書いた順番にプログラムが動く」とシンプルに覚えましょう!プログラミング入門で最初に触れるスタイルです!



読みやすいし、これで十分な気もするけど…
オブジェクト指向型プログラミングとは?


オブジェクト指向プログラミング(Object-Oriented Programming / OOP) は、プログラムを「データと処理をひとまとめにした部品の組み合わせ」として記述するスタイルです。
その「部品」のことをクラス、クラスから作った実体のことをインスタンスと呼びます。
クラス = 「車の設計図」
インスタンス = 「設計図をもとに作られた実際の車」
1枚の設計図(クラス)から「プリウス」「クラウン」「カローラ」など、何台でも車(インスタンス)を作れるイメージです。
クラスとインスタンスの違いはオブジェクト指向の第一歩です!「設計図と実体」の関係と覚えれば大丈夫ですよ!
違いをサンプルコードで比較しよう


「社員情報を管理するシステム」を例に、2つの書き方を見比べてみましょう。
手続き型のサンプルコード例
データ(変数)と処理(関数)が別々に存在しているのが特徴です。
// 手続き型:データと処理がバラバラに存在する
string employeeName = "山田太郎";
int employeeAge = 32;
string employeeDept = "開発部";
void ShowEmployee(string name, int age, string dept)
{
Console.WriteLine($"名前:{name}、年齢:{age}歳、部署:{dept}");
}
void GiveBonus(string name, int bonus)
{
Console.WriteLine($"{name}にボーナス{bonus}円を支給しました");
}
ShowEmployee(employeeName, employeeAge, employeeDept);
GiveBonus(employeeName, 100000);変数が300個(名前・年齢・部署 × 100人分)に膨れ上がります。
「どの変数が誰のデータか」を管理するだけで大変になり、バグの温床になりやすい構造です。
オブジェクト指向型のサンプルコード例
データも処理も「Employeeクラス」という一つの部品にまとまっています。
// オブジェクト指向:データと処理をクラスにひとまとめ
class Employee
{
public string Name { get; private set; }
public int Age { get; private set; }
public string Dept { get; private set; }
public Employee(string name, int age, string dept)
{
Name = name;
Age = age;
Dept = dept;
}
public void Show()
{
Console.WriteLine($"名前:{Name}、年齢:{Age}歳、部署:{Dept}");
}
public void GiveBonus(int bonus)
{
Console.WriteLine($"{Name}にボーナス{bonus}円を支給しました");
}
}
// 社員が増えてもインスタンスを追加するだけ!
var yamada = new Employee("山田太郎", 32, "開発部");
var suzuki = new Employee("鈴木花子", 28, "営業部");
yamada.Show();
suzuki.GiveBonus(80000);「Employeeクラスのインスタンスを100個作るだけ」でOKです!
データと処理がひとまとめになっているので、どこを見ればいいかが一目瞭然になります。
オブジェクト指向型は「似たものをまとめる」発想です!規模が大きくなればなるほど、その真価を発揮しますよ!
どちらを使えばいいの?使い分けを解説





結局、どっちがいいの?
目的・規模・言語によって使い分けるのがベストです!どちらが優れているというわけではありませんよ!


現代の業務システムやWebアプリ開発では、オブジェクト指向が標準的になっています。
Java・C#・Pythonなどを使う現場では、OOPの知識は必須スキルです。
一方、シェルスクリプトや自動化ツールでは手続き型スタイルが今でも多く使われています。
エンジニアを目指すならオブジェクト指向型は絶対に押さえておくべき知識です!
まずは手続き型でプログラミングの基礎に慣れてから、オブジェクト指向型に進むのがおすすめの順番ですよ!
手続き型 / オブジェクト指向型の対応言語の代表例


それぞれのスタイルに対応した代表的な言語を整理しておきましょう。
| 言語名 | 手続き型 | オブジェクト指向 | 主な用途 |
|---|---|---|---|
| C言語 | ◎ メイン | △ 非対応 | 組み込み・OS開発で現役 |
| COBOL | ◎ メイン | △ 非対応 | 金融・基幹システムで現役 |
| Java | ○ 対応 | ◎ メイン | 業務系・Androidアプリ |
| C# | ○ 対応 | ◎ メイン | Windowsアプリ・ゲーム開発 |
| Python | ◎ 両方OK | ◎ 両方OK | AI・Web・データ分析など幅広く |
| JavaScript | ◎ 両方OK | ◎ 両方OK | Webフロントエンド・Node.js |
| Ruby | ○ 対応 | ◎ メイン | WebアプリはRailsが有名 |
PythonやJavaScriptは「どちらのスタイルでも書けるマルチパラダイム言語」です!状況に応じて柔軟に使い分けられるのが強みですよ!
よくある疑問Q&A


まとめ


本記事では、手続き型とオブジェクト指向の違いについて解説しました。最後に重要なポイントをおさらいしましょう!
- 手続き型は「処理の手順を上から順番に記述する」スタイル
- オブジェクト指向は「データと処理をひとまとめにした部品の組み合わせ」スタイル
- 手続き型は小規模・シンプルな処理や入門学習に向いている
- OOPは大規模開発・チーム開発・業務システムで力を発揮する
- OOPの4大原則は「カプセル化・継承・ポリモーフィズム・抽象化」
- PythonやJavaScriptはどちらのスタイルも使えるマルチパラダイム言語
- 初心者は手続き型で基礎を固めてから、OOPに進むのがおすすめ
手続き型とオブジェクト指向の違い、イメージできましたか?
まずはコードを書いて体で覚えることが大切です!
一歩ずつ着実に進めていきましょう!
