プログラミングパラダイム
プログラムをどのような単位と考え方で組み立てるかを示す、代表的な設計・記述の型。
概要
プログラミングパラダイムは、プログラムをどのような単位で捉え、どのように処理を表現するかという基本的な考え方です。
言語を一つのパラダイムだけに分類できるとは限りません。Java、Python、JavaScriptなどの多くの言語は、手続き型、オブジェクト指向、関数型の書き方を組み合わせられるマルチパラダイム言語です。
そのため、「Javaはオブジェクト指向言語だから、すべてをクラスにする」と考えるより、問題に応じて適切な考え方を選ぶことが重要です。
主要なパラダイム
手続き型プログラミング
処理を命令や手順の並びとして記述します。
上から順に値を取得し、条件分岐や繰り返しを使って状態を変更していく、直感的な書き方です。
オブジェクト指向
状態と、その状態に関係する振る舞いをオブジェクトへまとめます。
業務ルール、状態遷移、責務、依存関係を整理するときに使いやすい考え方です。
関数型プログラミング
計算を関数の組み合わせとして表現し、状態の変更や副作用をできるだけ局所化します。
データ変換、並行処理、複雑な計算の組み立てで効果を発揮します。
宣言型プログラミング
処理手順を細かく書くのではなく、得たい結果や成立してほしい状態を記述します。
SQL、HTML、CSS、構成管理ツールなどにも宣言的な考え方が使われています。
ほかの分類
ほかにも次のような考え方があります。
- 論理型: 事実と規則を定義し、条件を満たす答えを求める。宣言型の一種として扱われる
- イベント駆動: クリック、メッセージ受信、状態変化などのイベントを起点に処理する
- データ指向: オブジェクトよりデータの配置や処理効率を重視して設計する
- 並行・アクターモデル: 独立した処理主体のメッセージ交換としてシステムを構成する
これらは分類の軸が異なるため、一つのプログラムで併用できます。たとえば、オブジェクト指向で構成したWebアプリケーションの中で、イベント駆動の処理や関数型のデータ変換を使うことがあります。
学ぶ順番
業務でJavaを使う場合は、次の順番で見ると理解しやすくなります。
- 手続き型で、条件分岐、繰り返し、処理順序を読む
- オブジェクト指向で、状態、振る舞い、責務を読む
- 関数型で、Stream APIや副作用を抑えたデータ変換を読む
- 宣言型で、SQLや設定ファイルが「何を求めているか」を読む
重要なのは、どの方式が最も優れているかを決めることではなく、解こうとしている問題に合う方式を選ぶことです。
更新履歴
- 初版作成