【初心者必見】Javaの「メソッド」を完全マスター!なぜ便利?どう書く?現場で使える基礎知識を丸ごと解説

「メソッドって、ただの処理のかたまりでしょ?」——そう思っていませんか?

実は、メソッドを使いこなせるかどうかで、コードの読みやすさ・修正のしやすさ・チームでの開発効率が劇的に変わってきます。プロのエンジニアが「メソッド設計が大事」と口をそろえる理由は、まさにここにあります。

この記事では、IT研修の現場で初学者に繰り返し伝えてきた視点をもとに、「なぜメソッドが必要なのか」「Javaでの具体的な書き方」「現場で気をつけたいポイント」まで、ていねいに解説します。コード例もたっぷり用意したので、ぜひ手を動かしながら読み進めてください!


目次


1.メソッドって何が便利なの?

①処理を「再利用できる部品」としてまとめられる

まず一番シンプルな便利さから。メソッドは「処理をひとまとめにして、何度でも呼び出せる部品」です。

たとえば、割引価格を計算する処理が複数の場所で必要になったとします。メソッドを使わないと、同じ計算式をあちこちにコピーして書くことになります。でもそれだと、税率が変わったときに全部探して直さないといけない…とても大変ですよね。

// ❌ メソッドを使わない場合(同じ計算が散らばる)
double price1 = 24800 * 0.7;
double price2 = 15000 * 0.7;
double price3 = 8000  * 0.7;
// 割引率を変えたいとき、全行を修正しなければならない…

// ✅ メソッドを使う場合(一か所を直すだけでOK)
static double calcDiscountPrice(int originalPrice, double rate) {
    return originalPrice * rate;
}

// 呼び出し
double price1 = calcDiscountPrice(24800, 0.7);
double price2 = calcDiscountPrice(15000, 0.7);
double price3 = calcDiscountPrice(8000,  0.7);

メソッドにまとめることで、修正は1か所だけ。コードの「部品化」ができると、プログラムの品質がぐっと上がります。


②「入口と出口」が明確になり、処理の流れが読みやすくなる

メソッドには「入口(引数)」と「出口(戻り値)」があります。この設計思想がとても大切で、処理の目的と流れを一目でわかるようにしてくれます。

料理に例えると——「材料を渡す(引数)→ シェフが調理する(メソッドの処理)→ 料理が出てくる(戻り値)」というイメージです。シェフの中身(レシピ)を知らなくても、材料を渡せば料理が返ってくる。それがメソッドの本質です。

// 「入力値を2乗する」メソッド
static int pow2(int src) {
    return src * src;
}

// 使う側はシンプル
int result = pow2(3);   // 3を渡す → 9が返ってくる
System.out.println(result);  // → 9

pow2(3) を読むだけで「3を2乗するんだな」とすぐわかりますよね。これがメソッドが「読みやすさ」を生む理由です。


③機能を分割することで保守・修正・チーム開発が楽になる

大きなプログラムを1つのメソッド(mainメソッド)に全部書いてしまうと、どこに何の処理があるかわからなくなります。これは「スパゲッティコード」と呼ばれる悪い状態です。

メソッドで機能を分割すると、次のようなメリットが生まれます。

  • バグの場所を特定しやすい(どのメソッドで問題が起きているかがわかる)
  • チームで担当を分けやすい(Aさんはこのメソッド、Bさんはあのメソッドを担当)
  • テストしやすい(メソッド単位で動作確認できる)
// mainメソッドがすっきり! 何をしているか一目でわかる
public static void main(String[] args) {
    dispHeader("成績表");          // ①ヘッダー表示
    String msg = judge(75);        // ②点数判定
    dispResult(msg);               // ③結果表示
    dispFooter();                  // ④フッター表示
}

mainメソッドが「目次」のような役割を果たしていますね。処理の流れが上から下へ読めるコード——これがメソッド分割の理想形です。


2.Java言語でのメソッドの利用方法は?

①メソッドの定義方法:基本構文をマスターしよう

Javaでメソッドを定義するときの基本構文はこうです。

static 戻り値の型 メソッド名(引数の型 引数名, ...) {
    // 処理内容
    return 戻り値;
}

各パーツの意味を整理しておきましょう。

パーツ 役割
staticmainメソッドから呼び出すために必要な修飾子static
戻り値の型メソッドが返すデータの型int, double, String, void
メソッド名処理の名前(動詞始まりが原則)calcPrice, judge
引数メソッドに渡す入力データint score, double rate
return呼び出し元に値を返す命令return result;

具体的なコードを見てみましょう。定価と割引率を受け取って、割引後の価格を返すメソッドです。

class TestShop {
    public static void main(String[] args) {
        int price = 24800;     // 定価
        double rate = 0.7;     // 割引率

        // calc()メソッドの呼び出し
        double ret = calc(price, rate);
        System.out.println("割引後の価格は" + ret + "です。");
    }

    static double calc(int yen, double rate) {
        double result;
        result = yen * rate;
        return result;
    }
}

main メソッドから calc() を呼び出し、戻り値を変数 ret で受け取っています。この「呼び出す→処理→受け取る」の流れを体で覚えましょう!


②引数(実引数・仮引数)と戻り値(return文)の役割と書き方

引数には「実引数」と「仮引数」という2つの言葉があります。混乱しやすいので整理しておきましょう。

用語 意味 場所
実引数(アーギュメント) メソッドを呼び出すときに渡す値 呼び出し元(mainメソッドなど)
仮引数(パラメータ) メソッドを定義するときに受け取る変数 メソッド宣言部分
// 呼び出し元:num が「実引数」
int num = 4;
pow2(num);   // ← numの値(4)がpow2メソッドへ渡される

// メソッド定義:src が「仮引数」
static int pow2(int src) {   // ← srcに4がコピーされる
    return src * src;
}

大事なポイントは、実引数と仮引数は変数名が違っても問題ないということです(上の例では numsrc)。値がコピーされるのであって、変数名が一致している必要はありません。

また、戻り値は return 文で返します。引数は複数渡せますが、戻り値は 0個(void)か1個だけ というルールがあります。

// 引数は複数OK
static double calc(int yen, double rate) {
    return yen * rate;   // 戻り値は1つだけ
}

// 戻り値なし(void)も可
static void showMessage(String msg) {
    System.out.println(msg);
    // returnは不要(または return; だけ書く)
}

③voidメソッドと値を返すメソッドの使い分け・staticの意味

メソッドには大きく2種類あります。「値を返すメソッド」と「値を返さないメソッド(voidメソッド)」です。

種類 戻り値の型 使いどころ
値を返すメソッド int, double, Stringなど 計算結果や判定結果を呼び出し元で使いたいとき 割引価格の計算、合否判定
voidメソッド void 画面表示など、処理するだけで結果を返す必要がないとき ヘッダー・フッターの表示
// ✅ 値を返すメソッド(戻り値あり)
static String judge(int score) {
    String message;
    if (score >= 90) {
        message = "優秀賞";
    } else if (score >= 60) {
        message = "合格";
    } else {
        message = "再試験";
    }
    return message;   // 文字列を返す
}

// ✅ voidメソッド(戻り値なし)
static void dispResult(String msg) {
    System.out.println("判定結果:" + msg);
    // return は不要
}

また、static 修飾子について。mainメソッドから直接呼び出すメソッドには static が必要です。これはJavaのクラス設計に関わるルールで、最初の段階では「mainから呼ぶなら static をつける」と覚えておけばOKです。


3.メソッドについて整理しておきたいこと

①実引数と仮引数の関係/値渡しと参照渡しの違い

先ほど触れた「実引数・仮引数」に関連して、もう1つ大事な概念が「値渡し」と「参照渡し」です。

Javaでは、引数の型によって渡し方が変わります。

  • 基本データ型(int・double など)→ 値渡し:値のコピーが渡される。メソッド内で変更しても、呼び出し元の変数は変わらない。
  • 参照型(配列・Stringなど)→ 参照渡し:メモリ上の「場所」が渡される。メソッド内で変更すると、呼び出し元の変数にも影響が出る。
// 値渡し(基本データ型):呼び出し元は変わらない
static void changeValue(int num) {
    num = 99;   // コピーを変えているだけ
}

int var = 0;
changeValue(var);
System.out.println(var);   // → 0(変わっていない!)

// 参照渡し(配列):呼び出し元も変わる!
static void changeArray(int[] ary) {
    ary[0] = 99;   // 同じ場所を操作している
}

int[] array = new int[]{0, 1, 2};
changeArray(array);
System.out.println(array[0]);   // → 99(変わってしまった!)

「配列を渡したら中身が変わった!」はよくあるバグの原因です。参照渡しの挙動を理解しておくことが、バグを防ぐ第一歩になります。


②return文は1つにまとめる(構造化プログラミングの原則)

コードを書いていると、条件分岐の中に複数の return 文を書きたくなることがあります。でも、構造化プログラミングの考え方では「メソッドの出口は1つにする」が原則です。

// ❌ return文が複数(出口が複数)
static int getA(int param) {
    if (param > 10) {
        return 1;   // 出口1
    } else {
        return 0;   // 出口2
    }
}

// ✅ return文を1つにまとめる(推奨)
static int getA(int param) {
    int ret;
    if (param > 10) {
        ret = 1;
    } else {
        ret = 0;
    }
    return ret;   // 出口はここだけ!
}

また、コーディング規約として return 文に不要な () はつけません

// ❌ 不適合例
return (value);
return (1);

// ✅ 適合例
return value;
return 1;

小さなことに見えますが、チームで統一されたルールに従うことが、長期的に読みやすいコードベースを守ることにつながります。


③メソッド名の命名規約と、読みやすいコード設計のコツ

最後に、メソッド名の付け方について。良いメソッド名は、コードを読む人(未来の自分やチームメンバー)への「プレゼント」です。

Javaのコーディング規約では、メソッド名の先頭の単語はなるべく動詞にするとされています。

❌ わかりにくい名前 ✅ わかりやすい名前 理由
price()calcPrice()「計算する」という動作が明確
name()getUserName()「取得する」「何を取得するか」が明確
check()isValidInput()「判定する(boolean を返す)」ことが明確
disp()dispHeader()「何を表示するか」が明確

また、英単語の対称性にも気をつけましょう。たとえば openclosegetsetstartstop のように、対になる処理には対称的な名前をつけることで、コードの意図が伝わりやすくなります。

// ✅ 対称性を意識した命名
static void openFile(String path) { /* ファイルを開く */ }
static void closeFile(String path) { /* ファイルを閉じる */ }

static String getUserName() { /* 名前を取得 */ return ""; }
static void setUserName(String name) { /* 名前をセット */ }

こういった積み重ねが、誰が読んでも理解できるプロフェッショナルなコードにつながっていきます。


まとめ

今回はJavaの「メソッド」について、基礎の基礎から現場で使える知識まで解説しました。最後にポイントを整理しておきます。

テーマ ポイント
メソッドの便利さ 処理の部品化・再利用・保守性向上。チーム開発でも担当分けがしやすくなる
基本構文 static 戻り値型 メソッド名(引数) { 処理; return 戻り値; }
引数と戻り値 実引数と仮引数は変数名が違ってもOK。戻り値はvoidか1つだけ
値渡しと参照渡し 基本型は値渡し(呼び出し元は変わらない)、参照型は参照渡し(影響が出る)
return文・命名規約 出口は1つに。メソッド名は動詞始まり・対称性を意識して命名する

メソッドをうまく使えるようになると、コードの「設計力」が身についてきます。「このメソッドは何をするメソッドか」を一言で説明できるくらいシンプルにまとめること——それが良いメソッド設計の第一歩です。

まずは今日のコード例を実際に打って動かしてみてください。「手を動かすこと」が理解を10倍速くしてくれます!

次回は「クラスとオブジェクト指向の基礎」について解説予定です。お楽しみに!

コメントを残す

メールアドレスが公開されることはありません。必須項目には印がついています *