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 返品処理を足すと全 Factory の改修が必要になる。Abstract Factory の使いどころ
Tech

返品処理を足すと全 Factory の改修が必要になる。Abstract Factory の使いどころ

返品処理という新しい種類の部品を足すと、ロールと3つの Factory の4ファイルを直すことになる。市場を足すのは軽く、部品の種類を足すのは重い理由から、Abstract Factory を使う条件を整理します。

25, 2026
読了時間: 7分
Featured image of post EU 市場を足すのに、既存コードを1行も変えずに済ませる【Abstract Factory】
Tech

EU 市場を足すのに、既存コードを1行も変えずに済ませる【Abstract Factory】

手数料4%・ユーロ・フランス語通知の EU 向けを追加するとき、OrderProcessor も既存の Factory も製品クラスも書き換えない。新規ファイルを足すだけで済むこと(開放閉鎖原則)を確かめます。

25, 2026
読了時間: 6分
Featured image of post 注文処理クラスが具体的な Factory を知らずに済むようにする【DI】
Tech

注文処理クラスが具体的な Factory を知らずに済むようにする【DI】

注文処理を OrderProcessor クラスにまとめ、Factory をコンストラクタで外から渡す。呼び出し側の設定を変えるだけで国内用・海外用を切り替えられる、Moo での依存性注入(DI)を実装します。

25, 2026
読了時間: 6分
Featured image of post 国内用と海外用の Factory を並べて、市場ごとに丸ごと切り替える【Abstract Factory】
Tech

国内用と海外用の Factory を並べて、市場ごとに丸ごと切り替える【Abstract Factory】

海外向けの Factory を足して、国内用と海外用を差し替えるだけで製品のセットごと切り替える。呼び出し側が具体クラスを知らずに済む理由と、クラスが10個に増えた代わりに何が防げるかを整理します。

25, 2026
読了時間: 6分
Featured image of post 決済・配送・通知の組み合わせミスを、セットで生成して防ぐ【Abstract Factory】
Tech

決済・配送・通知の組み合わせミスを、セットで生成して防ぐ【Abstract Factory】

国内の注文に海外の決済が混ざる事故を、決済・配送・通知を1つの Factory からセットで作らせて防ぐ。Moo::Role で Factory の約束事を決め、国内向けから導入します(Abstract Factory)。

25, 2026
読了時間: 4分
Featured image of post 国内の注文に海外の決済が混ざり、手数料が狂う。組み合わせミスを再現する
Tech

国内の注文に海外の決済が混ざり、手数料が狂う。組み合わせミスを再現する

市場の判定を書き間違えて、国内の注文に海外の決済クラスが混ざる。手数料が3%でなく5%、円でなくドルで計算される事故を動かして確かめ、人の注意で防ぐ限界を見ます。

25, 2026
読了時間: 5分
Featured image of post 海外対応を足すと if/else が増えて、注文処理が読めなくなる
Tech

海外対応を足すと if/else が増えて、注文処理が読めなくなる

国内向けの注文フローに海外向けを足すと、クラスは3つから6つになり、市場を判定する if/else があちこちに広がる。分岐で切り替える作りがどこで苦しくなるかを確かめます。

25, 2026
読了時間: 5分
Featured image of post 国内向けの注文フローを、決済・配送・通知の3クラスで作る(Perl・Moo)
Tech

国内向けの注文フローを、決済・配送・通知の3クラスで作る(Perl・Moo)

ECサイトの注文処理を、決済・配送・通知の3クラスに分けて Perl と Moo で作る。国内向けだけの素直な実装から、のちに国別の組み合わせで困る連載を始めます。

25, 2026
読了時間: 5分
Featured image of post 【目次】PerlとMooで弾幕シューティングを作ってみよう(全6回)
Perl

【目次】PerlとMooで弾幕シューティングを作ってみよう(全6回)

Flyweightパターンを学ぶ全6回のシリーズ目次。弾幕シューティングを題材に、大量オブジェクトのメモリ効率化テクニックを習得します。

24, 2026
読了時間: 3分
Featured image of post 作ってきた弾幕エンジンはFlyweightパターンだった。共有するPrototypeとの違いも整理する【Flyweight】
Perl

作ってきた弾幕エンジンはFlyweightパターンだった。共有するPrototypeとの違いも整理する【Flyweight】

ここまでのコードを Flyweight パターンの役割(Flyweight・FlyweightFactory・Client、内部状態・外部状態)に対応づけます。共有する Flyweight と、複製する Prototype の違いを表とコードで比べ、使える場面も挙げます。

24, 2026
読了時間: 7分
Featured image of post 弾の生成・移動・描画をBattleFieldにまとめて、放射状と螺旋の弾幕を出す【統合】
Perl

弾の生成・移動・描画をBattleFieldにまとめて、放射状と螺旋の弾幕を出す【統合】

第4回までの BulletType・BulletFactory・render を、BattleField クラスに組み合わせます。spawn_radial と spawn_spiral で弾幕パターンを作り、画面外に出た弾は update で捨てる。68発を3種類の BulletType で動かす完成コードです。

24, 2026
読了時間: 5分
Featured image of post 共有した弾の種類は自分の位置を知らない。描画のたびに座標を渡して弾を動かす【外部状態】
Perl

共有した弾の種類は自分の位置を知らない。描画のたびに座標を渡して弾を動かす【外部状態】

BulletType の render は座標を引数で受け取ります。位置を持たないので、同じオブジェクトを複数の弾が共有できます。放射状に飛ぶ12発と、螺旋状の72発を、3つの BulletType で動かすターミナルのアニメーションを書きます。

24, 2026
読了時間: 6分
Featured image of post 同じ種類の弾を2回 new してしまう。なければ作って返すキャッシュで使い回す【オブジェクトプール】
Perl

同じ種類の弾を2回 new してしまう。なければ作って返すキャッシュで使い回す【オブジェクトプール】

BulletFactory の get は、キャッシュに無い種類だけ作り、あれば同じオブジェクトを返します。//= 演算子で書きます。1000発の弾が参照する BulletType は5つで、弾の配列は約245.8KB。第1回の約600KB と並べます。

24, 2026
読了時間: 7分
Featured image of post 同じ見た目の弾が100発とも形や色を持っている。種類と位置に分けて共有する【内部状態と外部状態】
Perl

同じ見た目の弾が100発とも形や色を持っている。種類と位置に分けて共有する【内部状態と外部状態】

形状・色・サイズを BulletType に切り出し、位置と速度だけを弾ごとのハッシュに残します。弾100発分は60.8KB から25.2KB になりました(BulletType 3つは別に2.1KB)。内部状態と外部状態という用語もここで押さえます。

24, 2026
読了時間: 5分
Featured image of post 弾を1000発撃ちたい。素朴に全属性を持たせると1発約600バイト、1万発で約6MBになる【メモリ計測】
Perl

弾を1000発撃ちたい。素朴に全属性を持たせると1発約600バイト、1万発で約6MBになる【メモリ計測】

Bullet クラスで同じ赤い丸の弾を作り、Devel::Size で測ると1発あたり約600バイト、1万発で約5.8MB でした。形状・色・サイズは全弾で同じなのに、弾ごとに持っている。共有できる属性と、弾ごとに違う属性を表で分けます。

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