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 航空機が互いを知らなくても安全に着陸できる。管制塔クラスに調整を任せる

航空機が互いを知らなくても安全に着陸できる。管制塔クラスに調整を任せる

機体同士の直接通信をやめ、すべてを管制塔 (ControlTower) 経由にする。参照が N 本で済み、新しい機体を足しても既存のコードを直さずに済む。Perl と Moo で実装する。

30, 2026
読了時間: 4分
Featured image of post 2機が同時に着陸したら衝突する。機体同士で直接調整させると参照が増え続ける

2機が同時に着陸したら衝突する。機体同士で直接調整させると参照が増え続ける

2機が同時に着陸を要求しても、今のコードは何も調整せず両方を通してしまう。航空機同士を直接つなぐ方法を試し、参照が N×(N-1) 本に増えて破綻するのを確かめる。

30, 2026
読了時間: 3分
Featured image of post 航空管制シミュレーターの最初の一歩。便名を持って離着陸する Aircraft クラスを作る【Moo】

航空管制シミュレーターの最初の一歩。便名を持って離着陸する Aircraft クラスを作る【Moo】

Perl と Moo で航空管制シミュレーターを作る連載の第1回。便名を持ち、離陸と着陸ができる最小の Aircraft クラスを書いて、飛行機を飛ばす。

30, 2026
読了時間: 3分
Featured image of post 【目次】PerlとMooでダイス言語を作ってみよう(全8回)

【目次】PerlとMooでダイス言語を作ってみよう(全8回)

Perl と Moo で TRPG のダイス記法 (2d6+3) を解釈するインタプリタを作る全8回の連載。目次を兼ねた案内板で、読む回の選び方と各回の内容をまとめています。

29, 2026
読了時間: 3分
Featured image of post ここまで作ってきた設計の名前は Interpreter パターンだった【Moo】

ここまで作ってきた設計の名前は Interpreter パターンだった【Moo】

終端式・非終端式・式ツリーで作ってきたダイス言語は、GoF の Interpreter パターンそのもの。各クラスとパターンの登場人物を対応づけ、近いパターンとの違いも整理する。

29, 2026
読了時間: 4分
Featured image of post 文字列 2d6+3 から式ツリーを自動で組み立てる。パーサーを作って完成させる【Perl】

文字列 2d6+3 から式ツリーを自動で組み立てる。パーサーを作って完成させる【Perl】

式を手で組み立てる段階から、文字列を渡せば式ツリーができる段階へ。正規表現で分解する簡易パーサーを作り、ダイス言語インタプリタを Perl と Moo で完成させる。

29, 2026
読了時間: 3分
Featured image of post 引き算と掛け算を足したい。既存クラスは1行も直さない【Moo】

引き算と掛け算を足したい。既存クラスは1行も直さない【Moo】

SubExpr と MulExpr を新しいクラスとして足すだけで、AddExpr も DiceExpr も触らずに四則演算へ広げられる。開放閉鎖の原則 (OCP) を、Perl と Moo のコードで確かめる。

29, 2026
読了時間: 2分
Featured image of post 式クラスに eval を書き忘れても気づけない。Moo::Role で約束を強制する【Moo】

式クラスに eval を書き忘れても気づけない。Moo::Role で約束を強制する【Moo】

eval の実装を忘れたクラスは、実行して呼ぶまでエラーにならない。Moo::Role の requires で全ての式クラスに eval を必須にし、書いた時点で気づけるようにする。

29, 2026
読了時間: 4分
Featured image of post 足し算を AddExpr クラスにする。左辺と右辺を再帰で評価する【Moo】

足し算を AddExpr クラスにする。左辺と右辺を再帰で評価する【Moo】

「+」を左辺と右辺を持つ AddExpr クラスにすると、式を木構造で組み立てられる。2d6+3 を再帰的に評価する「非終端式」を、Perl と Moo で作る。

29, 2026
読了時間: 3分
Featured image of post 数値とダイスをオブジェクトにして、eval メソッドで評価させる【Moo】

数値とダイスをオブジェクトにして、eval メソッドで評価させる【Moo】

if/else に詰め込んだ処理をやめ、数値 (NumberExpr) とダイス (DiceExpr) を別々のクラスにして eval で値を返させる。これが「終端式」。Perl と Moo で実装する。

29, 2026
読了時間: 3分
Featured image of post 2d6+3 に対応したら if/else の嵐になる。複雑さの正体を整理する【Perl】

2d6+3 に対応したら if/else の嵐になる。複雑さの正体を整理する【Perl】

ダイス記法に加減乗除を足そうとすると、正規表現と if/else が組み合わせの数だけ増えていく。Perl で書いたコードで、なぜ破綻するのかを実際に確かめる。

29, 2026
読了時間: 4分
Featured image of post 2d6 を解釈して振りたい。まず最小の Dice クラスを作る【Moo】

2d6 を解釈して振りたい。まず最小の Dice クラスを作る【Moo】

TRPG のダイス記法「2d6」を文字列から読み取り、実際に振って合計を返す。Perl と Moo で、最小限の Dice クラスを作るところから始める。

29, 2026
読了時間: 3分
Featured image of post 【目次】PerlとMooでドキュメント変換ツールを作ってみよう(全8回)

【目次】PerlとMooでドキュメント変換ツールを作ってみよう(全8回)

Perl と Moo で Markdown 変換ツールを作りながら、if/else が増え続ける問題を Visitor パターンで解く全8回の連載。目次を兼ねた案内板で、読む回の選び方と各回の内容をまとめています。

27, 2026
読了時間: 3分
Featured image of post ここまで作ってきた設計の名前は【Visitor パターン】だった

ここまで作ってきた設計の名前は【Visitor パターン】だった

シリーズで作り上げた accept と visit の設計を、GoF の Visitor パターンの定義と見比べる。Double Dispatch の本質と、使いどころ、SOLID 原則との関係を Perl と Moo のコードで振り返る。

27, 2026
読了時間: 7分
Featured image of post 単語数カウントとリンク抽出も同じ仕組みで足す。変換以外の操作を増やす【Visitor】

単語数カウントとリンク抽出も同じ仕組みで足す。変換以外の操作を増やす【Visitor】

ドキュメントに対してやりたい操作は変換だけではない。単語数を数える WordCounter とリンクを取り出す LinkExtractor を足し、複数の Visitor が同じ要素構造の上で共存できることを Perl と Moo で確かめる。

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