【Java】同じコードを何度も書かない!「メソッド」で処理を共通化しよう
はじめに
みなさんどうも、おげんです。
プログラミングを学んでコードが長くなってくると、こんな悩みが出てきませんか?
「あれ、この計算さっきも書いたな……よし、コピペしよう!」
実はこれ、エンジニアの世界では「あんまり良くないこと」とされています。
なぜなら、あとで計算式にミスが見つかったとき、コピペした10箇所を全部直して回らなきゃいけないからです。
これこそ、ミスの元ですよね。
そんな「同じような処理」をひとまとめにして、名前をつけていつでも呼び出せるようにしたものが、今回紹介する 「メソッド(Method)」 です。
メソッドを使えば、複雑な処理も「ボタン一つ(名前を呼ぶだけ)」で実行できるようになります。
「いかに楽をして、ミスを減らすか」というエンジニアの知恵が詰まったこの仕組みを、紐解いていきましょう!
- 同じようなコードを何度も書いて、プログラムが長くなって困っている人
- コードをスッキリ整理して、読みやすくしたい人
- 「引数」や「戻り値」という言葉を聞くだけで頭が痛くなる人
メソッドは「全自動・卵焼き機」
「メソッド」と聞くと難しそうですが、イメージは 「全自動の調理家電」 です。
例えば、「卵(材料)」を入れると、中で「焼く(処理)」を行って、「卵焼き(完成品)」を返してくれる機械があるとします。
この機械を一度作っておけば、私たちは中の細かい焼き加減や火力を気にする必要はありません。
「卵を入れてスイッチを押す」だけで、いつでも同じクオリティの卵焼きが手に入ります。
プログラミングにおけるメソッドもこれと同じです。
- 引数(ひきすう):機械に入れる「材料」
- 処理:中で行われる「計算や動作」
- 戻り値(もどりち):出てくる「結果」
この3つの関係さえ押さえれば、メソッドは攻略したも同然です!
メソッドの基本形(呪文の解読)
メソッドを作るには、まず「どんな材料を受け取って、どんな結果を返すか」という宣言が必要です。
例として、2つの数字を足して結果を返す「足し算メソッド」を書いてみます。
public static int add(int a, int b) {
int sum = a + b;
return sum;
}各パーツの役割分担
- public static: 今は「どこからでも呼び出せるおまじない」だと思ってOKです。
- int(戻り値の型): 出てくる「完成品」の種類です。今回は合計点(整数)を返すので
intになります。 - add(メソッド名): この機械の名前です。後で呼び出すときに使います。
- (int a, int b)(引数): 入れてもらう「材料」です。型と名前をセットで書きます。
- return: 「これが完成品だよ!」と外に放り出す合図です。
呼び出し方
作ったメソッドは、名前を呼ぶだけで実行できます。
int result = add(10, 20); // addメソッドを呼び出して、結果をresultに受け取る
System.out.println(result); // 30 と表示される一度 add という仕組みを作ってしまえば、あとは add(100, 200) でも add(5, 8) でも、好きな数字を放り込むだけで計算してくれるようになります。
「引数」と「戻り値」のキャッチボール
メソッドは、メインの処理(mainメソッド)からデータを受け取り、加工した結果をまたメインに投げ返すという「キャッチボール」のような動きをします。
引数は「呼び出し側から渡す材料」
メソッドを呼び出すときに渡す値を「引数(ひきすう)」と呼びます。
材料は何個あっても構いませんし、逆に「材料がいらない機械」なら空っぽ () でもOKです。
戻り値は「呼び出し側に返す結果」
処理が終わったあと、呼び出し元に届ける値を「戻り値(もどりち)」と呼びます。
ここで重要なのが、「戻り値は1つしか返せない」というルールです。
卵焼き機から出てくるのは、一つの完成品ですよね。
戻り値がない「void」というパターン
中には「計算して結果を返す」のではなく、「ただ画面に表示して終わり!」というメソッドもあります。
その場合は、戻り値の型に void(ボイド) と書きます。
public static void sayHello(String name) {
System.out.println("こんにちは、" + name + "さん!");
// return は書かなくてOK(返すものがないから)
}「System.out.println をしてるなら、何か(文字)を返してるんじゃないの?」と思うかもしれません。
でも、これはJavaにとって「画面に映して終わり」というデータの終着駅なんです。
画面に映るだけの「花火」のようなものなので、その後でデータとして再利用(計算など)することはできません。
だから「戻り値は空っぽ(void)」なんです。
なぜこのキャッチボールが必要なのか?
例えば、私が開発中の「栄養素検索アプリ」で考えてみます。
「食品名」を引数として渡すと、「その食品のタンパク質量」を戻り値として返してくれるメソッドがあると便利ですよね。
一度この「検索メソッド」を作っておけば、鶏胸肉でも卵でも、好きな材料を渡すだけで結果を受け取れます。
これが、メソッドによる 「処理の共通化」 の凄さです。
mainメソッドは「指揮者」
Javaを書き始めてからずっと、おまじないのように書いてきたこの一行。
public static void main(String[] args)実はこれも、ただのメソッドの一つなんです。
Javaには「プログラムが始まったら、まずは main という名前のメソッドを動かす」という絶対的なルールがあります。
どんな役割?
いわば、オーケストラの「指揮者」のような役割です。
指揮者自身がすべての楽器を演奏するのではなく、他の専門家(自作したメソッドたち)に「次はこれをお願い!」「結果をあっちに渡して!」と指示を出していく場所、それが main メソッドです。
呪文を解読してみよう
メソッドのルールに当てはめると、意味が見えてきます。
- void: 実行して終わり。何かをどこかに「返す」必要がない。
- main: Javaが一番最初に探す、決まった名前。
- (String[] args): 実はこれも「引数」。プログラムを動かす時に、外から文字(設定など)を渡せるようになっています。
自分で作った「卵焼き機(メソッド)」を main の中で呼び出すことで、プログラムが生き生きと動き出します。
まとめ:メソッドは自分専用の「便利な道具箱」
今回は、処理をひとまとめにする「メソッド」について解説しました。
- メソッドは、処理に名前をつけた「部品」のようなもの。
- 「引数」は材料、「戻り値」は完成品。このキャッチボールでデータが動く。
- 戻り値がないときは
voidと書く。 - 一度作れば、名前を呼ぶだけでどこでも使い回せる。
mainメソッドは、他のメソッドに指示を出す「指揮者」。
メソッドを使いこなせるようになると、コードからコピペが減り、驚くほどスッキリと読みやすくなります。
「どこで何をしているか」が一目でわかるコードは、自分だけでなく一緒に働く仲間にとっても優しいコードです。
まずは、今まで main メソッドの中に書いていたちょっとした計算を、外に切り出すことから始めてみてください。
自分で作った「道具」が思い通りに動く快感は、エンジニアならではの楽しみですよ!
今回も最後まで読んでいただき、ありがとうございました。
また次の一歩を、共に進めていきましょう。
