関数とは
関数(かんすう)とは、特定の目的を持った一連の処理(計算や操作など)をひとまとめにして、名前をつけたプログラムの部品のことです。別の言葉で「手続」や「プロシージャ」とも呼ばれます。同じような処理を何度も行う場合、毎回同じコードを書く代わりに、その処理を関数として定義しておくことで、必要なときにいつでも名前を呼び出すだけで実行できるようになります。関数には、外部からデータを受け取る「引数(ひきすう)」や、処理した結果を呼び出し元に返す「戻り値(もどりち)」を設定することができ、これらを組み合わせることで柔軟なプログラム構築が可能になります。
具体例
例えば、2つの数値を足し算して結果を表示する処理を関数化する場合、以下のように記述します。「add」という名前の関数を定義し、必要なときに呼び出します。
// 関数の定義(xとyを受け取って足す)
function add(x, y) {
return x + y;
}
// 関数の呼び出し
let result = add(5, 3);
console.log(result); // 画面に「8」が表示される
もう少し詳しく
関数は、プログラミングにおいて「処理のモジュール化(部品化)」を実現するための最も基本的な仕組みです。関数を活用することで、プログラム全体のソースコードが見やすくなり、バグが発生しにくくなるという大きな利点があります。関数を作る際には、「ブラックボックス化」という考え方が重要です。これは、関数の内部でどのような複雑な計算が行われているかを知らなくても、どのような「引数」を渡せば、どのような「戻り値」が返ってくるかというインターフェースさえ分かっていれば、誰でもその関数を利用できるという状態を指します。また、関数の中で宣言された変数(ローカル変数)は、関数の外からはアクセスできないため、他の処理と変数名が衝突するのを防ぐ役割も果たします。最近のプログラミング言語では、関数自体を変数に代入したり、別の関数の引数として渡したりできる「第一級関数(ファーストクラス関数)」という機能を持つ言語(JavaScriptやPythonなど)も普及しており、より高度で柔軟なプログラミングが可能になっています。
試験でのポイント
基本情報技術者試験などのIT国家試験では、関数の定義方法や、関数を呼び出す際の「引数の渡し方」が頻繁に問われます。特に重要なのが、「値渡し(Call by Value)」と「参照渡し(Call by Reference)」の違いです。値渡しは、変数の中身のコピーを関数に渡すため、関数内で値を変更しても元の変数には影響しません。一方、参照渡しは変数のメモリ上の場所(アドレス)を渡すため、関数内での変更が元の変数に直接反映されます。試験の擬似言語問題では、関数がどちらの方式で引数を受け取っているかを正確に読み取らないと、変数の最終的な値を取り違えるミスに直ながるため注意が必要です。また、関数が自分自身を呼び出す「再帰関数」のトレース問題も頻出であり、終了条件に到達するまでどのように値が変化していくかを紙に書き出して正確に追える力が求められます。
関連する用語
引数、戻り値、変数、プロシージャ