引数とパラメーターの違いとは?初心者向けに仮引数・実引数まで分かりやすく解説
結論として、パラメーターはメソッドや関数を定義するときに用意する受け取り口、引数はメソッドや関数を呼び出すときに実際に渡す値です。
ただし、実際のIT現場では両方をまとめて「引数」と呼ぶことも多く、厳密に区別されない場合があります。ソースコードを正しく読むには、定義側なのか呼び出し側なのかを確認することが大切です。
引数とパラメーターの違い
| 比較項目 | パラメーター | 引数 |
|---|---|---|
| 使われる場所 | メソッドや関数の定義側 | メソッドや関数の呼び出し側 |
| 役割 | 値を受け取るための変数 | 実際に渡す値 |
| 日本語での呼び方 | 仮引数 | 実引数 |
| 英語 | Parameter | Argument |
定義するときはパラメーター、呼び出すときは引数と覚えると整理しやすくなります。
パラメーターとは
パラメーター(Parameter)とは、メソッドや関数が値を受け取るために定義する変数です。日本語では仮引数と呼ばれます。
例えば、2つの数値を足し算する処理では、受け取る数値をあらかじめ定義します。
int add(int number1, int number2) {
return number1 + number2;
}
この例では、次の2つがパラメーターです。
- number1
- number2
number1とnumber2には、呼び出し時に渡された値が入ります。
引数とは
引数(Argument)とは、メソッドや関数を呼び出すときに実際に渡す値です。厳密には実引数と呼ばれます。
int result = add(10, 20);
この例では、10と20が引数です。
| 定義側のパラメーター | 呼び出し側の引数 |
|---|---|
| number1 | 10 |
| number2 | 20 |
処理が実行されると、number1へ10、number2へ20が渡されます。
処理の流れで理解する
- メソッドを定義するときにパラメーターを用意する
- 呼び出し側が引数を渡す
- 引数の値がパラメーターへ代入される
- メソッドがパラメーターを使って処理する
- 必要に応じて戻り値を返す
引数が入力する実データ、パラメーターがそのデータを受け取る箱という関係です。
身近な例で考える
宅配便の申込書で考えると分かりやすくなります。
| 宅配便の例 | プログラム上の意味 |
|---|---|
| 氏名欄 | パラメーター |
| 山田太郎と記入する | 引数 |
| 住所欄 | パラメーター |
| 東京都千代田区と記入する | 引数 |
申込書の入力欄は事前に用意された受け取り口です。そこへ実際に記入する内容が引数にあたります。
仮引数と実引数の違い
日本語の技術資料では、パラメーターと引数を次のように表現することがあります。
| 用語 | 意味 |
|---|---|
| 仮引数 | メソッドや関数の定義側に書く変数 |
| 実引数 | メソッドや関数を呼び出すときに渡す値 |
厳密な説明が必要な場面では、「パラメーター」よりも「仮引数」、「引数」よりも「実引数」と表現した方が誤解を防げます。
なぜ現場では混同されるのか
実際の開発現場では、パラメーターも引数もまとめて「引数」と呼ばれることがあります。
例えば、レビューで「このメソッドの引数を追加してください」と言われた場合、実際には定義側のパラメーター追加を指していることがあります。
会話だけでは分かりにくいため、次の点を確認すると安全です。
- メソッド定義を変更するのか
- 呼び出し時に渡す値を変更するのか
- 既存の呼び出し元にも修正が必要か
実際のIT現場での利用例
社員検索メソッド
Employee findEmployee(int employeeId)
employeeIdはパラメーターです。
Employee employee = findEmployee(1001);
1001は引数です。
メール送信メソッド
sendMail(String address, String subject, String body)
address、subject、bodyがパラメーターです。
sendMail("user@example.com", "障害連絡", "システム障害が発生しました");
メールアドレス、件名、本文として渡している実際の値が引数です。
ログイン処理
login(String userId, String password)
userIdとpasswordはパラメーターです。画面から入力されたユーザーIDとパスワードが引数として渡されます。
引数とパラメーターが重要な理由
引数とパラメーターを使うと、同じ処理をさまざまな値で再利用できます。
例えば社員番号1001だけを検索する処理を直接書くと、別の社員を検索できません。社員番号をパラメーターとして受け取る設計にすれば、渡す引数を変えるだけで複数の社員を検索できます。
| 呼び出し例 | 検索対象 |
|---|---|
| findEmployee(1001) | 社員番号1001 |
| findEmployee(1002) | 社員番号1002 |
| findEmployee(2001) | 社員番号2001 |
初心者が混乱しやすいポイント
引数とパラメーターを完全に別の仕組みだと思う
両者は別々の機能ではありません。引数として渡した値を、パラメーターが受け取る関係です。
変数名と値を混同する
number1はパラメーター名、10は引数として渡す値です。変数と実際のデータを分けて考える必要があります。
引数の順番を間違える
複数の引数を渡す場合は、パラメーターの定義順に合わせます。
registerUser(String name, String department)
このメソッドへ部署名と氏名を逆の順番で渡すと、登録内容が入れ替わる可能性があります。
データ型が一致していない
整数型のパラメーターへ文字列を渡すなど、型が一致しない場合はコンパイルエラーや実行時エラーになることがあります。
業務でよくあるトラブル
必須の引数が空になっている
ユーザーID、商品コード、ファイル名などの必須値が空だと、検索失敗や登録エラーにつながります。
引数の順番が逆になっている
同じ文字列型のパラメーターが複数ある場合、順番を間違えてもコンパイルエラーにならないことがあります。そのため、誤ったデータが登録されるまで気付かないケースがあります。
パラメーター追加後に呼び出し元を修正していない
メソッド定義へ新しいパラメーターを追加すると、既存の呼び出し箇所でも新しい引数を渡す必要があります。
nullが渡されている
引数としてnullが渡され、メソッド内部でそのまま利用すると、NullPointerExceptionなどのエラーが発生する場合があります。
原因を切り分ける順番
- エラーが発生したメソッド名を確認する
- メソッド定義のパラメーターを確認する
- 呼び出し側の引数を確認する
- 引数の数が一致しているか確認する
- 引数の順番が正しいか確認する
- データ型が一致しているか確認する
- null、空文字、0などが渡されていないか確認する
- 呼び出し元がほかにもないか検索する
定義側と呼び出し側を並べて確認すると、原因を見つけやすくなります。
ソースコードの確認方法
GUIで確認する方法
Visual Studio、Visual Studio Code、Eclipse、IntelliJ IDEAなどの開発ツールでは、メソッド名へマウスポインターを合わせるとパラメーター情報が表示されます。
メソッド名を右クリックして「定義へ移動」または「宣言へ移動」を選ぶと、パラメーターの型や順番を確認できます。
便利なショートカットキー
| 操作 | 代表的なショートカット |
|---|---|
| 定義へ移動 | F12 |
| 入力候補を表示 | Ctrl+Space |
| ファイル内検索 | Ctrl+F |
| プロジェクト全体を検索 | Ctrl+Shift+F |
開発ツールやキーボード設定によって、操作方法が異なる場合があります。
PowerShellで確認する方法
PowerShellでは、メソッド名を含むファイルを検索できます。
Get-ChildItem -Recurse -Filter *.java | Select-String "findEmployee"
定義箇所と呼び出し箇所の両方を確認し、パラメーターと引数が一致しているか調べます。
ログで確認するポイント
引数に関する不具合では、次の内容をログから確認します。
- メソッドが呼び出された日時
- 呼び出し元の機能
- 渡された引数
- エラーメッセージ
- 例外名
- スタックトレース
ただし、パスワード、個人情報、アクセストークンなどをログへそのまま記録してはいけません。機密情報はマスキングし、社内ルールに従って取り扱います。
筆者が現場で経験した失敗
新人の頃、氏名と部署名を受け取るメソッドで、2つの引数を逆の順番で渡したことがあります。どちらも文字列型だったためエラーにならず、テストデータを確認するまで間違いに気付きませんでした。
原因は、メソッド名だけを見て呼び出し、パラメーターの順番を確認していなかったことです。
それ以降は、同じ型のパラメーターが複数ある場合、定義へ移動して順番を確認し、変数名も意味が分かる名前にするよう意識しています。
新人がやりがちなミス
- 定義側と呼び出し側を区別しない
- 仮引数と実引数を逆に覚える
- 引数の数を間違える
- 引数の順番を確認しない
- 型が合っていない値を渡す
- nullや空文字を考慮しない
- パラメーター変更後の影響範囲を調べない
業務で上司へ報告するポイント
- 対象のメソッド名
- 変更するパラメーター
- 実際に渡されていた引数
- 期待値と実際値の違い
- 呼び出し元の数
- 影響を受ける機能
- 再現手順
- 修正後のテスト範囲
「引数がおかしい」だけではなく、どのパラメーターへ何の値が渡されたかを具体的に報告すると、調査が進みやすくなります。
エスカレーションするタイミング
- 共通メソッドのパラメーター変更が必要になった
- 呼び出し元が多く影響範囲を判断できない
- 仕様書と実装のパラメーターが一致していない
- 本番環境だけ不正な引数が渡される
- 個人情報や認証情報がログへ出力されている
- 外部システムとの連携仕様に影響する
応用知識
デフォルトパラメーター
プログラミング言語によっては、パラメーターへ初期値を設定できます。呼び出し時に引数を省略すると、設定済みの値が使われます。
可変長引数
可変長引数は、渡す引数の数を固定しない仕組みです。複数の値をまとめて受け取りたい場合に利用されます。
名前付き引数
PythonやC#などでは、パラメーター名を指定して引数を渡せる場合があります。順番による間違いを減らせるのが利点です。
コマンドや設定値でも使われるパラメーター
パラメーターという言葉は、メソッドだけでなくコマンドや設定でも使われます。
例えばPowerShellでは、コマンドに付けるオプションをパラメーターと呼びます。
Get-ChildItem -Path C:\Logs -Recurse
この例では、-Pathや-Recurseがコマンドのパラメーターです。プログラミングの仮引数とは使い方が少し異なるため、文脈に注意します。
関連するIT用語
- メソッド
- 関数
- 仮引数
- 実引数
- 戻り値
- 変数
- データ型
- null
- オーバーロード
- 可変長引数
よくある質問(FAQ)
引数とパラメーターは同じ意味ですか?
広い意味では同じように使われます。ただし厳密には、定義側がパラメーター、呼び出し側で渡す実際の値が引数です。
仮引数とパラメーターは同じですか?
はい。一般的には、メソッドや関数の定義側に書く変数を仮引数またはパラメーターと呼びます。
実引数と引数は同じですか?
厳密には、呼び出し時に渡す値を実引数と呼びます。現場では実引数を省略して、単に引数と呼ぶことが多くあります。
引数の名前はパラメーター名と同じでなければいけませんか?
いいえ。呼び出し側の変数名と、定義側のパラメーター名は異なっていても問題ありません。値の型や順番が一致していることが重要です。
パラメーターを変更すると何が起きますか?
パラメーターの数、型、順番を変更すると、呼び出し元の修正が必要になる場合があります。共通メソッドでは影響範囲が広くなるため、変更前に利用箇所を確認します。
まとめ
引数とパラメーターは、メソッドや関数へデータを渡すために使われる用語です。
- パラメーターは定義側の受け取り口
- 引数は呼び出し側から渡す実際の値
- パラメーターは仮引数、引数は実引数とも呼ばれる
- 現場では厳密に区別せず、両方を引数と呼ぶことも多い
- 不具合調査では数、順番、型、値を確認する
ソースコードを読むときは、「定義側にある変数か」「呼び出し側で渡している値か」を確認してください。この見方を身に付けると、メソッドの役割やエラーの原因を把握しやすくなります。

コメント