Avatar

設計パターンを疑え

名前の嘘を暴き、意図で設計を語る

  1. Home
  2. About
  3. お仕事のご依頼
  4. Archives
  5. Search
  6. Links
  7. プライバシーポリシー
  8. お問い合わせ
    1. ダークモード

アーカイブ

2026 583
2025 87
2024 1
2023 1
2022 1
さらに見る

タグ

Perl Moo Design-Pattern Refactoring Life Social Code-Detective Design-Patterns Series-Toc Web Movabletype Mojolicious Favorites Yapc Ai Game Git Perl-Advent-Calendar-2025 Perl-Entrance Python
Featured image of post 出力形式を足すのに、既存コードは1行も直さない【OCP】

出力形式を足すのに、既存コードは1行も直さない【OCP】

新しい出力形式を足すとき、既存のクラスを書き換えずに済むだろうか。前回の仕組みにプレーンテキスト変換の TextConverter を足し、変更せずに拡張できること(OCP)を Perl と Moo で確かめる。

27, 2026
読了時間: 5分
Featured image of post Converter に残った if/else をなくす。要素が自分で変換先を選ぶ【Double Dispatch】

Converter に残った if/else をなくす。要素が自分で変換先を選ぶ【Double Dispatch】

Converter に分けても、要素の種類で分岐する if/else は残っている。要素側に accept を持たせ、Converter の visit_* を呼び分ける Double Dispatch で分岐を消す。Perl と Moo で実装します。

27, 2026
読了時間: 6分
Featured image of post if/else だらけの変換処理を Converter クラスに切り出す【Moo】

if/else だらけの変換処理を Converter クラスに切り出す【Moo】

要素と出力形式の組み合わせで増え続ける if/else を、Converter クラスに分けて片付ける。Perl と Moo で Converter と HtmlConverter を作り、処理を委譲する設計に直す。

27, 2026
読了時間: 5分
Featured image of post HTML変換を足したら if/else が要素の数だけ伸びる。限界を体験する【Perl】

HTML変換を足したら if/else が要素の数だけ伸びる。限界を体験する【Perl】

要素の種類で分岐する to_html を素直に書くと、要素を1つ足すたびに if/else が増えて既存の関数も直すことになる。Perl で書いたコードで、その増え方と限界を実際に体験する。

27, 2026
読了時間: 6分
Featured image of post 見出しもコードブロックも区別できない。継承で要素の種類を分ける【Moo】

見出しもコードブロックも区別できない。継承で要素の種類を分ける【Moo】

全部の行を同じ element として扱うと、見出しとコードブロックを見分けられず、変換で困る。Element を基底クラスに Heading・Paragraph・CodeBlock を継承で作り、種類ごとに分ける。Perl と Moo で実装します。

27, 2026
読了時間: 6分
Featured image of post Markdownを読み込んで変換したい。まず段落をオブジェクトにする【Moo】

Markdownを読み込んで変換したい。まず段落をオブジェクトにする【Moo】

Markdown を HTML などに変換するには、文字列のまま扱うより、要素ごとのオブジェクトにしておくほうが後が楽になる。Perl と Moo で Element クラスを作り、段落をパースするところから始める。

27, 2026
読了時間: 4分
Featured image of post ダンジョン生成に迷路やテーマを足すとクラスが掛け算で増える。PerlとMooのBridgeで直す全7回【目次】
Tech

ダンジョン生成に迷路やテーマを足すとクラスが掛け算で増える。PerlとMooのBridgeで直す全7回【目次】

Perl と Moo でダンジョン生成を作り、迷路型やテーマを継承で足すとクラスが掛け算で増える。そこを Bridge パターンで足し算に直す全7回の連載の目次です。困りごとからも選べます。

26, 2026
読了時間: 4分
Featured image of post Bridge はどんなときに使うか。Adapter・Strategy との違いと、連載の振り返り
Tech

Bridge はどんなときに使うか。Adapter・Strategy との違いと、連載の振り返り

全7回の振り返り。Bridge の構成要素をダンジョン生成のクラスに当てはめ、Adapter・Strategy との違いと、使うべき場面の条件を整理します。

26, 2026
読了時間: 5分
Featured image of post 新しい生成アルゴリズム(BSP)も1クラスで足せる。テーマ4種×3通りの12組み合わせを動かす
Tech

新しい生成アルゴリズム(BSP)も1クラスで足せる。テーマ4種×3通りの12組み合わせを動かす

空間を再帰的に二分割して部屋を置く BSP を、アルゴリズム側の1クラスとして足す。テーマ側は書き換えず、3アルゴリズム×4テーマの12通りがそのまま動くことを確かめます。

26, 2026
読了時間: 6分
Featured image of post 新しいテーマの水中神殿は1クラスを足すだけ。既存コードを書き換えずに増やす【Bridge】
Tech

新しいテーマの水中神殿は1クラスを足すだけ。既存コードを書き換えずに増やす【Bridge】

Bridge で分けたあとに水中神殿テーマを足すと、書くのはテーマ1クラスだけで、既存のコードは変わらない。Open/Closed 原則を、全テーマ×全アルゴリズムの動作確認で確かめます。

26, 2026
読了時間: 4分
Featured image of post アルゴリズムとテーマを別々に持たせ、掛け算で増えるクラスを足し算にする【Bridge】
Tech

アルゴリズムとテーマを別々に持たせ、掛け算で増えるクラスを足し算にする【Bridge】

アルゴリズムとテーマを別のクラス階層に分け、テーマからアルゴリズムへ委譲する(Bridge)。3×4=12クラスが9モジュールで済むことを、Perl と Moo の Role・委譲で確かめます。

26, 2026
読了時間: 7分
Featured image of post テーマを1つ足すたびに、アルゴリズムの数だけクラスが要る。継承で作ると6クラスから12クラスに増える
Tech

テーマを1つ足すたびに、アルゴリズムの数だけクラスが要る。継承で作ると6クラスから12クラスに増える

ダンジョンの見た目のテーマ(城・遺跡)を継承で足すと、アルゴリズム×テーマの数だけクラスが増える。2×3=6クラスから、3×4=12クラスまで増える様子を書いて、分けて持つ設計の動機にします。

26, 2026
読了時間: 5分
Featured image of post 迷路型の生成を足したら、クラスの中身が前回の丸写しになった。再帰的バックトラック法で作る
Tech

迷路型の生成を足したら、クラスの中身が前回の丸写しになった。再帰的バックトラック法で作る

ランダム配置に加えて迷路型の生成を足す。再帰的バックトラック法で通路を掘ると、サイズ・マップ・表示のコードが前回のクラスとほぼ同じになる。重複がどこに出るかを確かめます。

26, 2026
読了時間: 6分
Featured image of post ダンジョンを二次元配列で持ち、ASCII art で描く。ランダムに床を掘る最初の一歩(Perl・Moo)
Tech

ダンジョンを二次元配列で持ち、ASCII art で描く。ランダムに床を掘る最初の一歩(Perl・Moo)

ローグライク風のダンジョンを、壁と床の二次元配列で持ち、ランダムに床を掘って ASCII art で表示する。全7回の連載の最初の回で、Perl と Moo で作ります。

26, 2026
読了時間: 6分
Featured image of post 国別の注文フローで決済・配送・通知の組み合わせが狂う。PerlとMooのAbstract Factoryで組み直す全8回【目次】
Tech

国別の注文フローで決済・配送・通知の組み合わせが狂う。PerlとMooのAbstract Factoryで組み直す全8回【目次】

Perl と Moo で ECサイトの注文フローを作り、国内向けに海外向けを足したところで if/else が増え、組み合わせミスの事故に行き着き、Abstract Factory で組み直す全8回の連載の目次です。困りごとからも選べます。

25, 2026
読了時間: 3分
1 … 23 24 25 … 103
© 2000 - 2026 設計パターンを疑え
システム開発・AIワークフローのご相談は Meetsource へ
Hugo で構築されています。
テーマ Stack は Jimmy によって設計されています。