

中嶋悟
名前:中嶋 悟(なかじま さとる) ニックネーム:サトルン 年齢:28歳 性別:男性 職業:会社員(IT系メーカー・マーケティング部門) 通勤場所:東京都千代田区・本社オフィス 通勤時間:片道約45分(電車+徒歩) 居住地:東京都杉並区・阿佐ヶ谷の1LDKマンション 出身地:神奈川県横浜市 身長:175cm 血液型:A型 誕生日:1997年5月12日 趣味:比較記事を書くこと、カメラ散歩、ガジェット収集、カフェ巡り、映画鑑賞(特に洋画)、料理(最近はスパイスカレー作りにハマり中) 性格:分析好き・好奇心旺盛・マイペース・几帳面だけど時々おおざっぱ・物事をとことん調べたくなるタイプ 1日(平日)のタイムスケジュール 6:30 起床。まずはコーヒーを淹れながらニュースとSNSチェック 7:00 朝食(自作のオートミールorトースト)、ブログの下書きや記事ネタ整理 8:00 出勤準備 8:30 電車で通勤(この間にポッドキャストやオーディオブックでインプット) 9:15 出社。午前は資料作成やメール返信 12:00 ランチはオフィス近くの定食屋かカフェ 13:00 午後は会議やマーケティング企画立案、データ分析 18:00 退社 19:00 帰宅途中にスーパー寄って買い物 19:30 夕食&YouTubeやNetflixでリラックスタイム 21:00 ブログ執筆や写真編集、次の記事の構成作成 23:00 読書(比較記事のネタ探しも兼ねる) 23:45 就寝準備 24:00 就寝
functionとprocedureの違いを徹底理解するキホン
プログラミングの世界にはよく使われる用語としてfunctionとprocedureがありますが、初学者にとってはその意味や役割が混乱しがちです。「関数」と「手続き」は似ているようで根本的に異なる点が多く、学ぶ順番を間違えると後で理解が途切れてしまうことがあります。
この章では、まず2つの概念を日常の観点から分解していきます。
要点はシンプルです。functionは“値を返す機能”、procedureは“処理を実行する機能”という違いです。
この違いを押さえると、プログラム全体の設計がずっと見やすくなります。
また、言語ごとに呼び出し方や戻り値の扱いが異なることも覚えておくと良いでしょう。
ここからは実際の使い方や注意点を、できるだけ中学生にも伝わる言葉で詳しく解説します。
最後に簡単な表で要点を比較しますので、読み終わった後にすぐノートへ整理できるはずです。
基本を固めることが理解の近道ですので、慌てずひとつずつ押さえていきましょう。
さあ、用語の定義から始めます。
1つ目の大きな違い 定義と役割
ここでは function と procedure の定義と役割の基本を押さえます。
まず前提として、functionは値を生み出す計算の器です。入力を受け取って、計算結果という“値”を返します。つまり呼び出し元はその戻り値を他の処理に使うことができます。例えば、ある数値を二乗して新しい値を作り出す機能をfunctionとして実装すれば、その戻り値を他の計算にそのまま渡せます。
一方、procedureは処理を実行する手続き自体が目的です。値を返すことを必須とはせず、何かの操作を行うことが主眼になります。例えばデータをファイルに書き出す、画面に表示する、データベースに更新を依頼するなどの動作を、戻り値を返さずに完結させたいときに使います。
この違いを頭に入れると、設計時に"何を返すべきか"という選択が自然と見えてきます。
実務では function を使って後で使える値を作り、procedure を使って副作用を伴う処理を分離して管理することが多いです。
言語ごとにこの分離の考え方には若干の差があるため、具体的な言語仕様を学ぶときには公式ドキュメントを確認する習慣をつけましょう。
また、戻り値の有無は設計思想に直結します。値を返すことで他の計算と組み合わせやすくなる一方で、処理の流れが複雑になる場合もあります。
この章の話を踏まえれば、次の章での実装例もずっと分かりやすくなります。
2つ目の大きな違い 戻り値と副作用
続いて、戻り値と副作用について詳しく見ていきます。
関数(function)は基本的に「戻り値を返す」ことを目的に作られます。この戻り値は計算結果そのものであり、呼び出し元でさらに別の処理の材料として使われます。
逆に手続き(procedure)は、戻り値を返さないことも多く、処理の結果を外部へ直接返すのではなく、画面表示やファイルへの書き込み、データベース操作などの副作用を生むことが多いです。
ただし言語によっては procedure でも値を返す方法が用意されている場合があります。
この差はコードの可読性やデバッグのしやすさに影響します。
関数を多用すると「どんな値が返るのか」がすぐ分かりますが、副作用が多い処理を関数化すると無理に値を返そうとして複雑になることもあります。
一致するように設計するには、戻り値よし・副作用少なめの関数を増やすのが鉄則です。
反対に副作用を強く活かしたい場面では、procedureを使って操作の順番や実行タイミングを明確にします。
このバランス感覚がプログラムの品質を大きく左右します。
なお、どちらを選ぶべきかはケースバイケースです。
仕様や目的をはっきりと決め、最適な設計を選ぶことが大切です。
3つ目の大きな違い 呼び出し方と適用範囲
呼び出し方と適用範囲の違いも重要なポイントです。
function は呼び出したときに“新しい値”を返してくれるため、別の処理と連携させやすい点が強みです。
この性質を活かすと、式の中で使われる計算結果を連鎖させることが自然になります。例えば、価格計算を行う関数を作っておけば、税率や割引を適用するたびに同じ計算を繰り返す必要がなくなります。
一方、procedure は呼び出しても値を返さないことが通常の動作です。そのため、処理の順序を保って実行する役割に適しています。UIの描画やイベント処理、データの整理といった「何かをやる」ことに特化させる設計が向いています。
この区別を通して、コードの見通しがよくなり、チームでの共同開発時にも責任範囲が明確になります。
もちろん、実際のコードでは function と procedure を組み合わせて使うことが多いです。
重要なのは「何を返すべきか」「どこまで処理を分離するべきか」を意識することです。
この意識が、後の保守性の高さにつながります。
ここまでの3つの観点を踏まえると、関数と手続きの違いが自然と見えてくるはずです。
次に、実際の違いを分かりやすく整理する表を用意しました。
総括として、functionとprocedureの違いは「戻り値の有無と処理の目的」にあります。
設計時には、値を返すことが本当に必要かどうか、また処理を独立させて副作用を最小化できるかを考えると良いでしょう。
この理解を基に、コードを読み解く力と書く力の両方を高めていきましょう。
次に進むときは、具体的な言語の仕様に沿って同じ考え方を適用していくと、迷いが減ります。
覚えておくべきポイントはこの3点です:
1つ目は「戻り値があるかないか」
2つ目は「副作用の有無と扱い」
3つ目は「呼び出し方と適用範囲の設計」
これを軸に、実務での使い分けを身につけてください。
読者のみなさんのコードが、より読みやすく、保守しやすくなることでしょう。
戻り値というキーワードを深掘りした小ネタです。ある日、友達とプログラムの課題をしていて、関数の戻り値が一つの新しいデータになる瞬間に気づきました。僕は関数を“材料を集めるロボット”、戻り値を“完成品”と例えます。例えば食材リストを作る関数があれば、それを使って別の料理を作る別の関数へと、戻り値を渡して連鎖させることができます。しかし、戻り値を持たない関数が作る副作用は、画面に表示したりファイルに記録したりといった“世界を変える力”を持ちます。戻り値をどう使うか、また副作用をどう扱うかは、設計者の好みだけでなく、解決したい問題の性質にも左右されます。強い意志を持って、戻り値と副作用のバランスを取ることが、良いコードへの第一歩なんです。