Featured image of post コードナビゲーター【State】接舷シーケンスの飛び越し事故〜順番は、書き並べるものじゃなくて、渡っていくものよ〜

コードナビゲーター【State】接舷シーケンスの飛び越し事故〜順番は、書き並べるものじゃなくて、渡っていくものよ〜

接舷シーケンスの状態を文字列フラグと巨大case文で回した旧設計が、書き漏らしから「許されない遷移」を通してしまう。状態そのものをクラスに引き上げ、書けない場所を作って構造的に防ぐStateパターンを、Rubyのシンボルとダックタイピングで解説します。

Featured image of post コードナビゲーター【Decorator】保冷・防振・保険、掛け算で増えた積荷台帳〜一枚ずつ包んで重ねる航法術〜

コードナビゲーター【Decorator】保冷・防振・保険、掛け算で増えた積荷台帳〜一枚ずつ包んで重ねる航法術〜

積荷の保冷・防振・保険という3オプションを組み合わせごとのサブクラスで表現し、クラス数が指数的に増殖した旧設計を、Decoratorパターンで独立したラッパークラスの重ね掛けに引き直します。Rubyの継承と合成(is-a/has-a)の使い分けを解説します。

Featured image of post コードパペッティア【Dynamic Tool Selection】立て続けの用向きに重くなる工具だるま人形〜選びきれない手数と、呼ばれた分だけの道具棚〜

コードパペッティア【Dynamic Tool Selection】立て続けの用向きに重くなる工具だるま人形〜選びきれない手数と、呼ばれた分だけの道具棚〜

建物専属の万能修繕人形ハンフリーが、百に迫る道具の説明を一度に抱え込み、動きを重くして立ち尽くす。全部を渡すことは本当に親切なのか——クエリごとに関連ツールだけをベクトル検索で動的に抽出する設計をPythonで実装します。