
画像: Pexels
Strategy Pattern を ABC で書くか、Protocol で書くか
出典: Zenn (原典を開く)
ニュース概要(出典記事の要点)
前回のおさらい 前回、if-else まみれの関数を Strategy Pattern で整理する話を書きました。 抽象基底クラス(ABC)で共通のインターフェースを定義して、具体的な処理はサブクラスに丸投げする、というやつです。
※ 上記は出典記事の要約です。本サイト独自の分析・背景解説は下記をご覧ください。
3行まとめ
- if-elseだらけのコードを整理する戦略パターンを紹介。
- 抽象基底クラス(ABC)で共通の処理を定義。
- 具体的な実装はサブクラスに任せる方法を解説。
解説
プログラミングの世界では、たくさんの「もし〜なら、こうする。そうでなければ、ああする」といった条件分岐(if-else)が積み重なると、コードが読みにくく、管理しづらくなってしまいがちです。そんな悩みを解決してくれるのが「Strategy Pattern(戦略パターン)」という考え方です。
前回のお話では、このStrategy Patternを使って、ごちゃごちゃしたif-else文をスッキリさせる方法について触れました。その中心となるのが「抽象基底クラス(ABC)」というものです。これは、具体的な処理内容は「まだ決まっていないけれど、こういう処理は必ず必要になりますよ」という、いわば「設計図」のようなもの。
この設計図(ABC)では、共通して必要になる処理の「型」だけを定義します。そして、実際の細かい「やり方」は、それを引き継いだ「サブクラス」に任せるのです。例えば、お掃除ロボットを想像してみてください。どんな掃除機でも「ゴミを吸う」という機能は共通ですが、その吸い込み方(吸引力やブラシの回転など)は機種によって違いますよね。ABCで「ゴミを吸う」という共通の機能を定義しておき、各機種のサブクラスで具体的な吸引方法を実装する、といったイメージです。
これにより、新しい掃除機(サブクラス)を追加するたびに、既存の掃除機(他のサブクラス)の設計を大きく変える必要がなくなります。また、どの掃除機がどんな掃除をするのかが一目で分かりやすくなり、コード全体の見通しも良くなるというわけです。プログラミングをする上で、こうした「整理術」は非常に役立ちます。特に、将来的に機能を追加したり、変更したりする可能性のあるプログラムを作る際には、このようなパターンを意識しておくと、後々のメンテナンスがずっと楽になりますよ。
今後の予測
Strategy Patternを適用する際には、抽象基底クラス(ABC)とProtocol(インターフェース)のどちらを使うべきか、という議論があります。ABCはPythonのような言語でよく使われ、共通の骨組みを提供しつつ、一部の処理をサブクラスに委ねるのに適しています。一方、Protocolは、より柔軟な「契約」のようなもので、クラスに特定のメソッドの実装を要求します。どちらを選ぶかは、プログラムの設計思想や、利用するプログラミング言語の特性によって変わってきます。例えば、PythonではABCが一般的ですが、Swiftのような言語ではProtocolが中心的な役割を果たします。今後、これらのパターンをどのように使い分けるか、あるいは新しいパターンが登場するかは、開発者の間で活発な議論が続くでしょう。よりシンプルで、より保守しやすいコードを目指す流れは、今後も続いていくと考えられます。
ニュースタイムライン
2026年6月5日
auth.md — Open Protocol for Agent Registrationはてなブックマーク IT
2026年6月5日
StrategyのBTC売却めぐりPolymarket契約が物議──3億ドル市場で判定論争【価格分析】(NADA NEWS)Yahoo!ニュース IT
2026年6月16日
エンジニアリング戦略の作り方 / Crafting Engineering Strategyはてなブックマーク IT
2026年6月17日
「Codex」に開発者モード、Chrome DevTools Protocol(CDP)に接続、Webブラウザーが扱う詳細データが活用可能に/リスクにはくれぐれも留意のこと、DOM、CSS、通信状況も取得可能窓の杜
2026年6月17日
「Codex」に開発者モード、Chrome DevTools Protocol(CDP)に接続、Webブラウザーが扱う詳細データが活用可能に(窓の杜)Yahoo!ニュース IT
2026年6月24日
参考引用
“抽象基底クラス(ABC)で共通のインターフェースを定義して、具体的な処理はサブクラスに丸投げする、というやつです。
― Zenn
記事AI質問チャット
PREMIUMこの記事についてAIが質問に答えます。背景・要約・影響まで深堀り。
ログインして利用関連記事
こんな記事も読まれています

ジャワ原人は現代人と同様に「未熟な」赤ちゃんを産んだ―頭骨の「歪み」からさぐるヒト的難産・育児の起源―
2026/7/30

【ボートレース】上條暢嵩が予選最終日へ気合十分「準優に乗れればワンチャンあると思う」~びわこSGオーシャンC(スポーツ報知)
2026/7/30

39歳メッシ、MLSオールスターゲーム出場せず W杯決勝からわずか10日……MLSと選手会が休養を認める 試合はソン・フンミンの活躍でメキシコリーグに勝利(theWORLD(ザ・ワールドWeb))
2026/7/30

筋肉業界の閣下・五味原領「もはや自分だけの戦いではない」次は世界での勝利へ「勝つには“肉”の量を増やして重厚感のある身体にしなければ」(VITUP!)
この記事について疑問がありますか?
事実誤認や不適切な内容について通報できます (要ログイン)。
異議申し立て・通報








