IT・プログラミング雑学

関数とメソッドの違いとは?オブジェクト指向って何?使い分けや注意点もプログラマーがわかりやすく解説

よぉ、桜木建二だ。プログラミングをしていると関数というものが出てくるな。同じようなものにメソッドというものもあるな。メソッドはクラスに関係するようだが、オブジェクト指向というものと関係あるそうだ。関数とはどう使うのか、メソッドとどう使い分けるのかをプログラマでもあるライターのwoinaryと一緒に解説していくぞ。

解説/桜木建二

「ドラゴン桜」主人公の桜木建二。物語内では落ちこぼれ高校・龍山高校を進学校に立て直した手腕を持つ。学生から社会人まで幅広く、学びのナビゲート役を務める。

ライター/woinary

某社で社内向け業務システムの開発、運用を30年近くやっていたシステム屋さん。現在はフリーランス。ガジェットやゲーム、ラノベが大好きなおっさんです。

関数とメソッドの違いは?

image by iStockphoto

プログラミングをする上で欠かせないのが関数です。関数なしでプログラムを書くこともできます。しかし、よほど単純な数行のプログラムでない限り、関数を使うことが多いです。その関数の中でもある特別な種類の関数がメソッドと呼ばれています。ではそもそも関数とは何でどう使うのか、そしてメソッドはどう特別なのかを見ていきましょう。

関数:命令をまとめたもの

プログラミング言語はコンピュータに仕事をさせるための命令を羅列したものです。運動会のプログラムと似ていますね。運動会ではどの順番で何年生が何の競技をするかが書いてあります。コンピュータのプログラムも同じです。

コンピュータにさせたいこと(命令)を順に書いたものがコンピュータ・プログラム。ただ、運動会と違い最初から最後までずらずら書いても分かりにくいですよね。そのため、プログラムの中のある部分に名前をつけておき、後で使えるようにしておくと便利です。それが関数

例えば、1から10、1から20、1から100の総和を出力するPythonプログラムが下のものです。関数を使った方がわかりやすいですよね。

## 関数を使わない例
# 1から10までの和
sum = 0
for i in range(10):
   sum += (i + 1)
print(sum)

# 1から20までの和
sum = 0
for i in range(20):
   sum += i + 1
print(sum)

# 1から100までの和
sum = 0
for i in range(100):
   sum += (i + 1)
print(sum)

## 関数を使う例
# 1からnまでの和を求める関数
def summation(n):
   sum = 0
   for i in range(n):
      sum += i + 1
   return sum

# 1から10までの和
print(summation(10))

# 1から20までの和
print(summation(20))

# 1から100までの和
print(summation(100))

メソッド:クラス専用の関数

関数の次はメソッドです。メソッドは関数の一種ですが、クラスというものの中で使う関数クラスとはオブジェクト指向という考え方の中でも重要なものになります。クラスやオブジェクト指向については後で説明しますが、まずはクラスの中の関数がメソッドだ、と覚えてください。

no-img2″>
 <figcaption class=桜木建二

プログラムはコンピュータへの命令を書いたものだ。ただずらずらと書いてもわかりにくいので、区切りの良い部分を抜き出して名前をつけたものが関数だ。その関数の中でも、クラスの中で使う関数がメソッドだ。まずはここを覚えてから、次に進むぞ。

クラスやメソッドってなに?

image by iStockphoto

クラスの中の関数がメソッドと説明しましたが、ではクラスとは何でしょう。ざっくりと言えばプログラムで使うデータや関数の中で、関連するものをまとめたものがクラスです。例えば、学生のテストの点数を集計するプログラムを作るとします。その際、学生の生徒番号、氏名、各教科の点数といったものをまとめて扱うことができれば便利ですよね。

クラスとはオブジェクト指向プログラミングというプログラミングの考え方で使われるもの。「オブジェクト指向プログラミング」では長いので単に「オブジェクト指向」とか「OOP」と呼ぶことが多いです。

クラスやメソッドはオブジェクト指向の考え方

オブジェクト指向は1950年代には研究者の間で研究され始めていました。それが広くプログラミングで使われるようになったのは、1990年代にC++が使われるようになってからです。オブジェクト指向ではプログラムをオブジェクトというもので考えます。オブジェクトとはデータと、そのデータを処理する関数の集まりです。そのオブジェクトの設計図や型紙に当たるものがクラスと呼ばれています。

オブジェクト指向はなぜ必要?

プログラミング言語にはオブジェクト指向を取り入れているものもそうでないものもあります。しかし、現在主流のプログラミング言語はオブジェクト指向の考え方を取り入れているものが多いです。それでは、オブジェクト指向のメリットはどういうものなのでしょう。

関数の例で取り上げた通り、あるまとまりのものには名前をつけてグループ分けすると便利ですよね。オブジェクト指向のメリットも色々ありますが、一番重要なのは関係するデータと関数に名前をつけてまとめることです。適切にグループ分けすることで、理解もしやすくなります。また、クラスの中と外は別扱いになるので、クラスの中で変更しても外には影響しません。その他、一般的には以下のようなことがオブジェクト指向のメリットと言われています。

\次のページで「クラスでデータと関数(メソッド)をまとめよう」を解説!/

次のページを読む
1 2
Share: