【ぷろしーじゃ】

プロシージャ とは?

💡 一連の処理手順をまとめた「手続き書」、呼び出すだけで実行できる
📌 このページのポイント
プロシージャ(処理のまとまり) メインプログラム 処理A プロシージャ呼出 処理C プロシージャ呼出 処理E プロシージャB 引数を受け取り 一連の処理を実行 プロシージャD 再利用可能な 処理のかたまり プロシージャ 値を返さない 処理を実行するだけ 関数 値を返す 戻り値がある 処理をまとめて名前を付け、何度でも呼び出せる
プロシージャのイメージ
ひよこ ひよこ

プロシージャって関数と同じ?

ペンギン先生 ペンギン先生

似てるけど違う。関数は「値を返す」、プロシージャは「処理を実行するが返り値はない(またはOUT引数で返す)」というのが厳密な区別。ただし現代のプログラミング言語では関数とプロシージャを区別しないことが多い。

ひよこ ひよこ
ペンギン先生 ペンギン先生

DBサーバに保存した「SQL命令の集まり+制御ロジック(条件分岐・ループ)」を呼び出しで実行できる仕組み。アプリからSQLを何度も送る代わりに「CALL 月次集計プロシージャ()」と呼ぶだけで複雑な処理が実行できる。

ひよこ ひよこ

ストアドプロシージャを使う理由は?

ペンギン先生 ペンギン先生

①パフォーマンス:処理がDBサーバ内で完結してネットワーク往復が減る。②セキュリティテーブルへの直接アクセスを与えずプロシージャ経由のみにできる。③再利用:複数のアプリから同じプロシージャを呼べる。ただし管理が複雑になるデメリットもある。

ひよこ ひよこ

ストアドプロシージャって今でもよく使うの?

ペンギン先生 ペンギン先生

金融系や大企業のレガシーシステムではまだまだ現役だよ。ただし最近のWebアプリ開発ではビジネスロジックをアプリケーション層に置く傾向が強くて、ストアドプロシージャの使用は減ってきているんだ。

ひよこ ひよこ

なんで減ってきてるの?

ペンギン先生 ペンギン先生

デバッグが難しい、バージョン管理しにくい、テストが書きにくい、というのが主な理由だよ。アプリのコードならGitで管理してCI/CDでテストできるけど、DBの中のプロシージャはそれが難しい。一方で「大量データの集計処理」のようにDB内で完結させたほうが圧倒的に速い処理もあるから、使いどころを見極めるのが大切だね。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
プロシージャって出てきたら「一連の処理をまとめた実行可能な手続き、DBのストアドプロシージャが代表例」と思えばOK!
📖 おまけ:英語の意味
「Procedure」 = 手順・手続き
💬 「手続き(procedure)」型プログラミングの基本単位。ストアドプロシージャの「ストアド(stored)」はDBサーバに「保存(store)」されていることを示す
← 用語集にもどる