【ちゅうしょうか】
抽象化 とは?
最終更新:
💡 「中身を知らなくても使える」を実現する魔法
複雑な詳細を隠して、本質的な部分だけを取り出して扱えるようにする設計手法。利用者が内部の仕組みを知らなくても使えるようにすることで、複雑さを管理する。
📌 このページのポイント
- 目的に必要な特徴や操作を取り出し、扱わなくてよい詳細を省く
- 関数・クラス・モジュールなど、さまざまな規模で使う考え方
- 利用側と内部実装を分けることで、変更の影響を抑えやすくする
- 細かく分けすぎると追いにくくなるため、用途に合う粒度を選ぶ
抽象化ってどういうことなの?
車の運転を思い浮かべてみて。ハンドルを回したりアクセルを踏んだりすれば、エンジンの燃焼を逐一指示しなくても運転できるね。プログラミングでも、必要な操作を取り出して、利用側が扱わなくてよい詳細を隠すんだよ。
具体的にプログラミングではどう使うの?
抽象化で気をつけることってある?
内部の事情が表に出る「漏れのある抽象化」があるよ。SQLの処理手順を隠しても、遅い問い合わせを調べるには実行の仕組みを知る必要がある場合があるね。抽象化は詳細をすべて不要にする魔法ではないんだ。層を増やしすぎて処理を追いにくくすることにも注意しよう。
ちょうどいい抽象化のレベルってどうやって判断するの?
使う人が何をしたいか、どの変更を内部に閉じ込めたいかを考えよう。似たコードでも、別の理由で変わるなら無理に共通化しないほうが分かりやすいこともあるよ。重複の回数だけで決めず、操作の意味やエラーの扱いまで共通にできるか確かめるんだ。
まとめ:ざっくりこれだけ覚えればOK!
「抽象化」って出てきたら「複雑な詳細を隠して必要な部分だけ見せるようにする設計の考え方だな」と思えればだいたいOK!
📖 おまけ:英語の意味
「abstraction」 = 抽象化・抽出
💬 具体的な仕組みのうち、目的に必要な部分を取り出して扱うというイメージだよ