回答編集履歴

3 表現を修正

akabee

akabee score 1842

2017/03/21 14:01  投稿

[こちら](https://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%A6))と[こちら](https://ja.wikipedia.org/wiki/Simula)が参考になりそうですね。初出は1960年代頃に開発が進められたSimulaという言語で産まれた概念のようです。
「開発者がそういう風に名づけた」が端的な説明かと思いますが私の私見も踏まえてもう少し踏み込んでみます。
当時、既に概念として「関数」という概念はあったと思われます。英語にするとfunctionですね。要するに「処理を依頼すると何か値を返す機能」のことです。
狭義では「メソッド」の概念は「関数」に含まれています。特に「オブジェクトのメンバ関数」のことを「メソッド」と呼んでいるようですね。
ここからが私見になりますが、「メソッド」というのは英語辞書等で調べられたとおり「方法、方式」のことです。これは英語のニュアンスとして非常に属人的で、「【誰かが独自に開発した、彼自身の】方法、方式」というニュアンスがあります。
オブジェクト志向とは、数学的で無味乾燥なプログラミングコードよりも可読性を高めるために、現実世界に即した内容をコーディングで実現しようとして産まれた考え方です。
そこで、「あるオブジェクトに含まれる機能」のことを「そのオブジェクトならではの動き、方法」つまり「【そのオブジェクト固有の】方法、方式」として解釈し、最も良い英単語としてmethodが選ばれたのではないかと思います。
ここからが私見になりますが、「メソッド」というのは直訳すると英語辞書等で調べられたとおり「方法、方式」のことです。
プログラミングにおける「メソッド」とはオブジェクト志向の概念の登場と共に現れた考え方のようです。オブジェクト志向とは、数学的で無味乾燥なプログラミングコードよりも可読性や保守性を高めるために、現実世界に即した内容をコーディングで実現しようとして産まれた考え方です。
そこで、「あるオブジェクトにプログラマが提供する機能」のことを表す最も良い英単語としてmethodが選ばれたのではないかと思います。
例えば「人間」というクラスを考えたとして、「話す」という機能を加えたとします。
例えば「人間」というクラスを考えたとして、「話す」という機能をプログラマが加えたとします。
クラスを使うときはインスタンス化して利用しますが、コンストラクタ(初期化処理)呼び出し時にその人の母国語を指定するとします。
そうするとボブは英語で「話す」、タクヤは日本語で「話す」、リュウは中国語で・・・とやっていると、その機能はまるでインスタンス化されたオブジェクトそれぞれがそれぞれごとに振舞っているように見えますね。
そうするとボブは英語で「話す」、タクヤは日本語で「話す」、リュウは中国語で・・・とやっていると、その機能はまるでインスタンス化されたオブジェクトそれぞれは「話す」という方法を持っているものの、それぞれに与えられた属性によってそれぞれごとに振舞っているように見えます。
話は戻って、「話す」という機能はプログラマが定義したものです。ですが、上記のようなオブジェクトの具体的な振る舞いを想像すると、定義した「話す」という機能は「関数」などと呼ぶにはちょっとピントがずれている気がします。プログラマはオブジェクトたちに「話す」という機能を提供したわけですが、その後はオブジェクトたちが自主的にその機能を解釈して、それぞれがそれぞれごとに振舞います。
そこで何か「オブジェクトに与える機能」としての適当な語彙はないかということで探した結果、「method」という英単語が割り当てられたのだと予想します。
上記のようなことを想像した上で、何か「オブジェクトに与える機能」としての適当な語彙はないかということで探した結果、「method」という英単語が割り当てられたのだと予想します。
つまりプログラマはオブジェクトに対してメソッドを与えることでオブジェクトの動作を増やすことができるわけですね。上記「人間」オブジェクトであれば、「話す」メソッドとは別に「踊る」メソッドや「歩く」メソッドをプログラマが提供することで、「人間」はできることが増えていくわけです。
かなり難しいオブジェクト志向の概念まで引用しましたので、良く分からなければ申し訳ありません。
また、関数とメソッドは現状そこまで厳密に区別されていないように思います。区別しようとすると、上記説明のように「オブジェクトのメンバ関数」という説明になりそうですが、その理解のためにはオブジェクト志向の考え方を習得する必要があります。
ですのでJavaの教本としては、話をややこしくしないため、メソッドの説明をあたかも「関数」のように説明していると思われます。根本的なところが知りたい人にとっては、ちょっと疑問が残るかもしれませんね。
2 表現を修正

akabee

akabee score 1842

2017/03/21 13:53  投稿

[こちら](https://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%A6))と[こちら](https://ja.wikipedia.org/wiki/Simula)が参考になりそうですね。初出は1960年代頃に開発が進められたSimulaという言語で産まれた概念のようです。
「開発者がそういう風に名づけた」が端的な説明かと思いますが私の私見も踏まえてもう少し踏み込んでみます。
当時、既に概念として「関数」という概念はあったと思われます。英語にするとfunctionですね。要するに「処理を依頼すると何か値を返す機能」のことです。
狭義では「メソッド」の概念は「関数」に含まれています。特に「オブジェクトのメンバ関数」のことを「メソッド」と呼んでいるようですね。
ここからが私見になりますが、「メソッド」というのは英語辞書等で調べられたとおり「方法、方式」のことです。これは英語のニュアンスとして非常に属人的で、「【誰かが独自に開発した、彼自身の】方法、方式」というニュアンスがあります。
オブジェクト志向とは、数学的で無味乾燥なプログラミングコードよりも可読性を高めるために、現実世界に即した内容をコーディングで実現しようとして産まれた考え方です。
そこで、「あるオブジェクトに含まれる機能」のことを「そのオブジェクトならではの動き、方法」つまり「【そのオブジェクト固有の】方法、方式」として解釈し、最も良い英単語としてmethodが選ばれたのではないかと思います。
例えば「人間」というクラスを考えたとして、「話す」という機能を加えたとします。
クラスを使うときはインスタンス化して利用しますが、コンストラクタ(初期化処理)呼び出し時にその人の母国語を指定するとします。
そうするとボブは英語で「話す」、タクヤは日本語で「話す」、リュウは中国語で・・・とやっていると、その機能はまるでインスタンス化されたオブジェクトそれぞれがそれぞれごとに振舞っているように見えますね。その様子は「関数」などと呼ぶにはちょっとピントがずれている気がする。そこで何か適当な語彙はないかということで探した結果、「メソッド」という英単語が割り当てられたのだと予想します。
そうするとボブは英語で「話す」、タクヤは日本語で「話す」、リュウは中国語で・・・とやっていると、その機能はまるでインスタンス化されたオブジェクトそれぞれがそれぞれごとに振舞っているように見えますね。
話は戻って、「話す」という機能はプログラマが定義したものです。ですが、上記のようなオブジェクトの具体的な振る舞いを想像すると、定義した「話す」という機能は「関数」などと呼ぶにはちょっとピントがずれている気がします。プログラマはオブジェクトたちに「話す」という機能を提供したわけですが、その後はオブジェクトたちが自主的にその機能を解釈して、それぞれがそれぞれごとに振舞います。
そこで何か「オブジェクトに与える機能」としての適当な語彙はないかということで探した結果、「method」という英単語が割り当てられたのだと予想します。
かなり難しいオブジェクト志向の概念まで引用しましたので、良く分からなければ申し訳ありません。
また、関数とメソッドは現状そこまで厳密に区別されていないように思います。区別しようとすると、上記説明のように「オブジェクトのメンバ関数」という説明になりそうですが、その理解のためにはオブジェクト志向の考え方を習得する必要があります。
ですのでJavaの教本としては、話をややこしくしないため、メソッドの説明をあたかも狭義の「関数」のように説明していると思われます。根本的なところが知りたい人にとっては、ちょっと疑問が残るかもしれませんね。
ですのでJavaの教本としては、話をややこしくしないため、メソッドの説明をあたかも「関数」のように説明していると思われます。根本的なところが知りたい人にとっては、ちょっと疑問が残るかもしれませんね。
1 表現を修正

akabee

akabee score 1842

2017/03/21 13:19  投稿

[こちら](https://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%A6))と[こちら](https://ja.wikipedia.org/wiki/Simula)が参考になりそうですね。初出は1960年代頃に開発が進められたSimulaという言語で産まれた概念のようです。
「開発者がそういう風に名づけた」が端的な説明かと思いますが私の私見も踏まえてもう少し踏み込んでみます。
当時、既に概念として「関数」という概念はあったと思われます。英語にするとfunctionですね。要するに「処理を依頼すると何か値を返す機能」のことです。
狭義では「メソッド」の概念は「関数」に含まれています。特に「オブジェクトのメンバ関数」のことを「メソッド」と呼んでいるようですね。
ここからが私見になりますが、「メソッド」というのは英語辞書等で調べられたとおり「方法、方式」のことです。これは英語のニュアンスとして非常に属人的で、「【誰かが独自に開発した、彼自身の】方法、方式」というニュアンスがあります。
オブジェクト志向とは、数学的なプログラミングよりも可読性を高めるために、現実世界に即した内容をコーディングで実現しようとして産まれた考え方です。
オブジェクト志向とは、数学的で無味乾燥なプログラミングコードよりも可読性を高めるために、現実世界に即した内容をコーディングで実現しようとして産まれた考え方です。
そこで、「あるオブジェクトに含まれる機能」のことを「そのオブジェクトならではの動き、方法」つまり「【そのオブジェクト固有の】方法、方式」として解釈し、最も良い英単語としてmethodが選ばれたのではないかと思います。
例えば「人間」というクラスを考えたとして、「話す」という機能を加えたとします。
クラスを使うときはインスタンス化して利用しますが、コンストラクタ(初期化処理)呼び出し時にその人の母国語を指定するとします。
そうするとボブは英語で「話す」、タクヤは日本語で「話す」、リュウは中国語で・・・とやっていると、その機能はまるでインスタンス化されたオブジェクトそれぞれがそれぞれごとに振舞っているように見えますね。その様子は「関数」などと呼ぶにはちょっとピントがずれている気がする。そこで何か適当な語彙はないかということで探した結果、「メソッド」という英単語が割り当てられたのだと予想します。
かなり難しいオブジェクト志向の概念まで引用しましたので、良く分からなければ申し訳ありません。
また、関数とメソッドは現状そこまで厳密に区別されていないように思います。区別しようとすると、上記説明のように「オブジェクトのメンバ関数」という説明になりそうですが、その理解のためにはオブジェクト志向の考え方を習得する必要があります。ですのでJavaの教本としては、話をややこしくしないため、メソッドの説明をあたかも狭義の「関数」のように説明していると思われます。根本的なところが知りたい人にとっては、ちょっと疑問が残るかもしれませんね。
また、関数とメソッドは現状そこまで厳密に区別されていないように思います。区別しようとすると、上記説明のように「オブジェクトのメンバ関数」という説明になりそうですが、その理解のためにはオブジェクト志向の考え方を習得する必要があります。
ですのでJavaの教本としては、話をややこしくしないため、メソッドの説明をあたかも狭義の「関数」のように説明していると思われます。根本的なところが知りたい人にとっては、ちょっと疑問が残るかもしれませんね。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る