質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.52%

  • Java

    13785questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • オブジェクト指向

    284questions

    オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

メソッドという名前の由来は?

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 496

mr0237

score 143

JAVAを勉強・練習している者です。説明が下手ですいませんが、

コード

 public static void main(String[] args) {


}

このコードの部分を「メソッド」と呼びますが、なぜ「メソッド」と呼ぶんですか?

ネットや参考書をみても

「1つの巨大なプログラムを複数の部品に分けることができる」とか
「複数の文にまとめそれを1つの処理として名前を付けたもの」とか
「メソッド(機能)」

と書いてあるんですが、「メソッド」と呼ばれるようになった理由が書いておりません。

英語辞書を見ても「方法」「方式」としか書いておりません。

「メソッド」と呼ばれるようになった理由は何でしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

+6

オブジェクト指向以前はデータと手続処理・関数が分離されていました。
しかし、オブジェクト指向では「特定のデータ群」と「そのデータ群や外から渡されるデータに対する手続処理・関数群」を統合してオブジェクトとして定義しています。
そのため、オブジェクトは「データ」と「それを処理する方法」を提供しなければならないため、手続処理・関数ではなく、新しくメソッド(方法・方式)と呼ぶように決めたのではないでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

一般的に
英語で
何かの方法論の事を
~メソッドと呼びます
仮にmr0237氏が素晴らしい育児の方法論を開発したとするとそれが
「mr0237メソッド」と呼ばれ その方法を教える教室は「日本初mr0237メソッド公開!」「mr0237メソッド提唱者mr0237氏の講演会12:30~」などと喧伝されるわけです

このあたり、検索システムで
英語 メソッド
で検索すると色々なメソッドが出てくると思います(~メソッド)

この「方法論」は複数の機能が合体したもの、Javaにおけるメソッドのようなものです
~メソッド
という名前で示される手法は一般的であり、そこに引数のように毎回異なる要素を入れて実行すると毎回異なる引数(要素)に対して同様の操作が行われた戻り値たる結果が返されるわけです
仮にmr0237氏が素晴らしい育児の方法論を開発したとしてそれが
mr0237メソッドと呼ばれるようになったとすると

class Kindergartener{

static void main(String[] args){

String[] infants={"Alice","Bob","Tom","Jene","Chris","Buddah"};//幼稚園児達

for(int babynumber=0;babynumber<infants.length;babynumber++){//教室で園児一人一人に対して教える過程

infants[babynumber]=mr0237(infants[babynumber]);//ある園児をmr0237メソッドで成長させる過程

System.out.println(infants[babynumber]);//顕れる素晴らしい結果
}

}


static String mr0237(String infant){//mr0237メソッド

String hyperbaby="物凄く成長した"+infant;//mr0237メソッドの本体 生徒の本質が書き換えられる

return hyperbaby;

}


mr0237メソッドを持つKindergartener(幼稚園)クラスに入れたinfants(幼児達)は皆その中でmr0237メソッドにかけられてものすごく成長した存在となって出力されるわけです

Javaでの機能が集合した最小単位と英語圏での「~メソッド」の用法は類似しているため
Javaが開発された英語圏ではそのような機能の集合物をメソッドと記述しておくと教科書等を読んだ時に抵抗なく理解把握されるからではないでしょうか
このあたり、英語圏の人間は説明が必要ないレベルで見たらすぐ意味が分かるのであえてそんな事を説明している場所すらないのではないでしょうか・・・

C言語ではメソッドと同様のものを「関数」とうまく数学の概念と被せて類似概念の単語に置き換えて訳せていますが
Javaでは英語の「method」を日本語にうまく訳せずそのまま「メソッド」とカタカナ語で書いていたのが定着しただけではないでしょうか

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

checkベストアンサー

0

こちらこちらが参考になりそうですね。初出は1960年代頃に開発が進められたSimulaという言語で産まれた概念のようです。

「開発者がそういう風に名づけた」が端的な説明かと思いますが私の私見も踏まえてもう少し踏み込んでみます。

当時、既に概念として「関数」という概念はあったと思われます。英語にするとfunctionですね。要するに「処理を依頼すると何か値を返す機能」のことです。
狭義では「メソッド」の概念は「関数」に含まれています。特に「オブジェクトのメンバ関数」のことを「メソッド」と呼んでいるようですね。

ここからが私見になりますが、「メソッド」というのは直訳すると英語辞書等で調べられたとおり「方法、方式」のことです。
プログラミングにおける「メソッド」とはオブジェクト志向の概念の登場と共に現れた考え方のようです。オブジェクト志向とは、数学的で無味乾燥なプログラミングコードよりも可読性や保守性を高めるために、現実世界に即した内容をコーディングで実現しようとして産まれた考え方です。
そこで、「あるオブジェクトにプログラマが提供する機能」のことを表す最も良い英単語としてmethodが選ばれたのではないかと思います。

例えば「人間」というクラスを考えたとして、「話す」という機能をプログラマが加えたとします。
クラスを使うときはインスタンス化して利用しますが、コンストラクタ(初期化処理)呼び出し時にその人の母国語を指定するとします。
そうするとボブは英語で「話す」、タクヤは日本語で「話す」、リュウは中国語で・・・とやっていると、その機能はまるでインスタンス化されたオブジェクトそれぞれは「話す」という方法を持っているものの、それぞれに与えられた属性によってそれぞれごとに振舞っているように見えます。
話は戻って、「話す」という機能はプログラマが定義したものです。ですが、上記のようなオブジェクトの具体的な振る舞いを想像すると、定義した「話す」という機能は「関数」などと呼ぶにはちょっとピントがずれている気がします。プログラマはオブジェクトたちに「話す」という機能を提供したわけですが、その後はオブジェクトたちが自主的にその機能を解釈して、それぞれがそれぞれごとに振舞います。

上記のようなことを想像した上で、何か「オブジェクトに与える機能」としての適当な語彙はないかということで探した結果、「method」という英単語が割り当てられたのだと予想します。
つまりプログラマはオブジェクトに対してメソッドを与えることでオブジェクトの動作を増やすことができるわけですね。上記「人間」オブジェクトであれば、「話す」メソッドとは別に「踊る」メソッドや「歩く」メソッドをプログラマが提供することで、「人間」はできることが増えていくわけです。

かなり難しいオブジェクト志向の概念まで引用しましたので、良く分からなければ申し訳ありません。

また、関数とメソッドは現状そこまで厳密に区別されていないように思います。区別しようとすると、上記説明のように「オブジェクトのメンバ関数」という説明になりそうですが、その理解のためにはオブジェクト志向の考え方を習得する必要があります。
ですのでJavaの教本としては、話をややこしくしないため、メソッドの説明をあたかも「関数」のように説明していると思われます。根本的なところが知りたい人にとっては、ちょっと疑問が残るかもしれませんね。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Java

    13785questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • オブジェクト指向

    284questions

    オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。