【Java】もうコピペは卒業!メソッド自作でコードを劇的にスッキリさせる方法
はじめに
みなさんどうも、おげんです。
これまでの記事で、System.out.println() や list.add() など、Javaがあらかじめ用意してくれている「命令(メソッド)」をたくさん使ってきましたね。
でも、プログラムが大きくなってくると、こんな悩みが出てきませんか?
- 「同じような計算、さっきも書いた気がする……」
- 「メインの場所(mainメソッド)がコードで埋め尽くされて、読みづらい!」
そんな時に役立つのが、「メソッドの自作」です。
複雑な処理をひとまとめにして名前をつければ、いつでも、どこからでも、一行で呼び出せるようになります。
今回は、メソッドを使いこなすために欠かせない2つの重要キーワード 「引数(ひきすう)」 と 「戻り値(もどりち)」 を、わかりやすく解説していきます!
- 同じコードを何度もコピペして使っている人
- 「void」とか「return」って結局何なの?と思っている人
- コードをスッキリ、美しく整理したい人
メソッドは「自動販売機」だ!
メソッドを自作するとき、いきなりコードを書く前に「自動販売機」をイメージしてみてください。
自動販売機の仕組みは、こうなっていますよね。
- お金を入れる(入力): これが 「引数(ひきすう)」 です。
- ボタンを押して中で処理する: これが 「メソッドの中身」 です。
- 飲み物が出てくる(出力): これが 「戻り値(もどりち)」 です。
「引数」と「戻り値」の役割
- 引数(ひきすう): メソッドに渡す「材料」のことです。「このデータを使って計算してね」とお願いする値ですね。
- 戻り値(もどりち): メソッドが仕事を終えた後に返してくれる「結果」のことです。「計算が終わったよ、答えはこれだよ!」と手渡してくれる値ですね。
「void」ってどういう意味?
たまに、メソッドの名前に void(ヴォイド) とついているのを見たことがありませんか?
void は英語で「空(から)」という意味。 つまり、「仕事はするけれど、結果(戻り値)は返さないよ」というタイプのメソッドです。
自動販売機でいえば、「ボタンを押すと、お礼のメッセージが表示されるだけ」というイメージ。何か物体(データ)を返してはくれないけれど、仕事(表示)はしてくれます。
メソッドの書き方基本ルール
自作メソッドを作るときは、以下の「型」に当てはめて書きます。
// 修飾子 戻り値の型 メソッド名 (引数)
public static int calculateDamage(int attack, int defense) {
// 1. 中で行う処理
int damage = attack - defense;
// 2. 結果を返す
return damage;
}ここがポイント!
- 戻り値の型: 「このメソッドは、最終的に
int(整数)を返しますよ」という宣言です。何も返さないならここをvoidにします。 - メソッド名: 何をするものか分かりやすい名前をつけます(
calculateDamage= ダメージを計算する)。 - 引数(パラメータ): 「攻撃力(attack)」と「守備力(defense)」という2つの材料をもらうように設定しています。
- return(リターン): これが「自販機の取り出し口」です。計算結果の
damageを呼び出し元に返します。
どうやって使うの?(呼び出し)
作ったメソッドは、main メソッドなどから名前を呼ぶだけで使えます。
public static void main(String[] args) {
// メソッドを呼び出して、結果を受け取る
int result = calculateDamage(50, 20);
System.out.println("敵に " + result + " のダメージを与えた!");
}一度作っておけば、calculateDamage(100, 40) のように、数値を入れ替えるだけで何度でも使い回せるのが最大のメリットです!
戻り値があるとき・ないときの使い分け
メソッドを作るとき、「結果を返すべきか(戻り値あり)、ただ動かすだけでいいのか(void)」の判断基準は、「その後の処理でそのデータを使うかどうか」です。
① 戻り値がある場合(データを受け渡す)
計算や判定など、「出した結果を次のステップで使いたい」ときは戻り値を作ります。
- 例: 消費税の計算、ログインの成功判定、リストからの検索結果。
- メリット: 受け取った結果をさらに別の計算(合計金額に足すなど)に活用できる。
// 消費税を計算して「返す」メソッド
public static int addTax(int price) {
return (int)(price * 1.1);
}
// 呼び出し側:結果をさらに別の変数に入れられる
int finalPrice = addTax(1000);② 戻り値がない(void)場合(行動して終わり)
画面への表示やデータの保存など、「その場で仕事が完結して、報告だけでいい」ときは void を使います。
- 例: 挨拶の表示、ログの書き込み、画面のクリア。
- メリット: 呼び出すだけで処理が終わるので、メインのコードが「何を指示したか」読みやすくなる。
// メッセージを「表示するだけ」のメソッド
public static void sayHello(String name) {
System.out.println("こんにちは、" + name + "さん!");
// return は書かなくてOK(書いても値を返せない)
}「戻り値があるメソッド」は、料理でいえば「切った野菜を渡してくれるアシスタント」。 「voidのメソッド」は、「お皿を洗っておいてくれる清掃員」のようなイメージです。
次の調理に野菜が必要なら戻り値が必要だし、掃除なら終わったという事実だけで十分ですよね。
まとめ:メソッド自作は「未来の自分への贈り物」
今回は、プログラムを部品化する 「メソッドの自作(引数と戻り値)」 について学びました。
最後に、メソッドを作るメリットを3つに凝縮しておさらいしましょう。
- 再利用できる: 一度作れば、何度でも、どこからでも呼び出せる。
- 読みやすくなる:
mainメソッドが「指示書」のようにスッキリする。 - 修正がラク: 計算式が間違っていても、そのメソッド1箇所を直せば全部直る!
「整理整頓」が、あなたを救う
プログラミングを始めたばかりの頃は、「全部 main の中に書いたほうが、パッと見で全部わかっていいじゃないか」と思うかもしれません。
でも、コードが100行、500行と増えていったとき、メソッドに分かれていないコードは「絡まったスパゲッティ」のようになって、どこを直せばいいか分からなくなります。
「この処理は『攻撃』だから、attack() という名前の箱に入れておこう」
そうやって丁寧に小分けにしておくことは、数ヶ月後のあなた、あるいは一緒に開発する仲間への最高の贈り物になります。
今日からは「同じことを2回書いたらメソッドにする」を合言葉に、スマートなコードを書いていきましょう!
今回も最後まで読んでいただき、ありがとうございました!
