サブルーチン(手続き・関数): 定義、構造、用途
サブルーチンは、ほかのコードから呼び出せる、名前付きで再利用可能なプログラムコードのまとまりです。構造、歴史、主な用途と、関数、メソッド、マクロ、ライブラリとの違いを解説します。
概要
サブルーチンとは、特定の処理を実行する自己完結したプログラム命令列であり、プログラム内の複数の箇所から呼び出すことができます。文脈やプログラミング言語により、手続き、ルーチン、関数、メソッドなどの名称で呼ばれます。コードを整理し、再利用を促進し、重複を減らすための基本的な仕組みです。プログラミングの概念全般については、プログラミングの概要を参照してください。
特性と構成要素
一般的なサブルーチンは、名前、エントリーポイント、任意の引数リスト、変数用のローカル記憶域、終了点を備えます。サブルーチンが呼び出されると、実行はそのエントリーポイントへ移り、本体を実行した後、呼び出し元へ制御を戻します。多くのサブルーチンは、値または複数の値を返すこともできます。主な要素は次のとおりです。
- 名前とシグネチャ: ルーチンと、想定される入力を識別します。
- 引数: ルーチンに渡される値または参照です。詳しくは引数の概念を参照してください。
- ローカル変数: ルーチンの実行中にのみ存在する記憶領域です。
- 戻りの仕組み: 値や状態を返す、または単に制御を移す仕組みです。
歴史と実装
サブルーチンは初期のアセンブリ言語に見られ、高水準言語の発展とともに形式化されました。機械語の呼び出し命令と復帰命令、さらに後のスタックベースの呼び出し規約によって、引数の受け渡しとローカル記憶域が実現されました。コンパイラ、リンカ、ランタイムシステムは、サブルーチンをライブラリへ編成する方法や、コンパイル時または実行時にアドレスを解決する方法を管理します。歴史的・技術的な資料については、プログラミングの歴史を参照してください。
用途、例、重要性
サブルーチンは、プログラムを管理しやすい部分に分割するために使用されます。用途には、入出力処理、数学的計算、データ処理、利用者定義のユーティリティなどがあります。配列を並べ替えるルーチン、チェックサムを計算するルーチン、入力を検証するルーチンが例です。利点には次のものがあります。
- モジュール性—コードの読み取り、テスト、保守が容易になります。
- コードの再利用—同じロジックを多くの箇所から呼び出し、重複を避けられます。
- 抽象化—明確なインターフェースの背後に実装の詳細を隠せます。
サブルーチンのライブラリは再利用可能なソフトウェア部品の基盤を成し、多くの言語の標準ライブラリは数百のルーチンを公開しています。代表的な集合については、ライブラリとAPIの例を参照してください。
用語の違いと注目すべき事項
異なる用語は微妙な違いを反映しています。関数は通常、値を返すサブルーチンを指し、手続きは値を返さない場合があります。メソッドは、オブジェクト指向言語においてデータ型またはオブジェクトに結び付けられます。マクロは実行時に呼び出されるのではなく、コンパイル時に展開される点で異なります。サブルーチンが自分自身を呼び出す再帰も可能であり、呼び出しのオーバーヘッドやインライン化といった性能上のトレードオフは、実装の選択に影響します。
サブルーチンを理解することは、明確で保守しやすいソフトウェアを書くこと、および多様なプログラミングパラダイムでライブラリやフレームワークを活用することに不可欠です。
関連項目
著者
AlegsaOnline.com サブルーチン(手続き・関数): 定義、構造、用途 Leandro Alegsa
URL: https://ja.alegsaonline.com/art/94504