Featured image of post コードガーデナー シリーズ目次【困りごとから探す案内板】

コードガーデナー シリーズ目次【困りごとから探す案内板】

「コードガーデナー」シリーズ全12回の案内板です。手入れの行き届かなくなった Rust のコードを、寡黙な庭師と見習いのヒバリが剪定や接ぎ木のように整えていく連載を、困りごとから探せます。

「コードガーデナー」は、手入れの行き届かなくなった Rust のコードを、寡黙な庭師と見習いのヒバリが、剪定や接ぎ木のように少しずつ整えていく連載です。毎回違う依頼人が庭仕事の悩みを持ち込み、設計パターンで手入れをします。全12回、実装言語は Rust です。

このページは目次を兼ねた案内板です。初めてなら「まず読むなら」から、いま困っていることが決まっているなら「困りごとから探す」から、公開順に追いたいなら「全話一覧」から選んでください。

まず読むなら

  • Builder — 同じ型の値が並ぶ注文欄で、引数の取り違えを防ぐ回。Rust の所有権と借用を最初に説明しているので、Rust に慣れていないならここから
  • Decorator — 機能を足すたびに構造体が倍増する悩みを、Box<dyn Trait> で外側から包んで解く回。トレイトとトレイトオブジェクトの説明がここにある
  • Strategy — 品種を足すたびに肥大化する match 関数に、任せる場所を持たせる回。条件分岐の膨張に覚えがあるなら

どの回から読んでも話は通じます。ただ、所有権・借用は Builder、トレイトは Decorator が初出で、後の回では詳しく説明し直さないので、Rust の言葉につまずいたらこの2本に戻ってください。

困りごとから探す

作り方がばらつく・間違えやすい

  • Builder — 同じ型の値が並ぶ位置引数の取り違えを、名前をつけて一つずつ積む形で防ぐ
  • Factory Method — 新しい品種を足すたびに同じ分岐へ手を入れる状態を、生まれ方を品種自身に持たせて解く

種類や機能が増えて膨らむ

  • Decorator — 機能の組み合わせごとに構造体が増える状態を、外側から包んで解く
  • Strategy — 一つの関数に積み上がる品種ごとの流儀を、任せる場所を分けて解く
  • State — bool フラグを増やすたびに生まれる「ありえない組み合わせ」を、型で一つに決めて防ぐ

単体と集まりで扱いが分かれる・歩き方が揃わない

  • Composite — 一株と寄せ植えで関数が別々になる状態を、同じトレイトで再帰的に扱って解く
  • Iterator — 区画ごとに内部構造が違い、巡回コードまで書き直す状態を、歩き方を切り離して解く

手順や順序が人の頭の中にしかない

  • Template Method — コピペした手順が少しずつずれていく状態を、骨格を一つに固定して解く
  • Facade — 正しい呼び出し順を知っているのが先代だけの状態を、窓口の奥にしまって解く

後始末・巻き戻し・通知を確実にしたい

  • RAII — 水やりと記録が別々の呼び出しで、二重や放置が起きる状態を、Drop で役目の終わりに後片付けさせて解く
  • Memento — 逆操作で戻そうとして崩す状態を、切る前に状態そのものを預けておいて解く
  • Observer — 通知先を検知コードに書き足し続ける状態を、知らせる相手を知らなくていい形にして解く

全話一覧

公開日パターン記事
8/11Builder鉢サイズと水やり頻度、同じ数字が並ぶ注文欄〜一つずつ確かめて、最後に一度だけ実らせる〜
8/12Decorator品種と機能、掛け算で増えていくクラスの数〜台木は一本、必要な性質だけを接ぐ〜
8/13Strategy剪定のやり方が、全部同じ関数に積み上がっていく〜品種ごとの流儀は、任せる場所を持たせる〜
8/14RAII当番は決めたのに、鉢だけがびしょ濡れか枯れかけになる〜世話係を一人に絞り、離れる瞬間に後片付けまで背負わせる〜
8/15Factory Method新しい品種を迎えるたび、同じ分岐にまた手を入れる〜生まれ方は、品種自身に持たせる〜
8/16Composite一株も、寄せ植え全体も、扱い方が毎回分かれる〜束ねても、一本と同じ手で触れる〜
8/17Stateフラグを増やすたび、ありえない組み合わせも増えていく〜生育段階は、型で一つに決める〜
8/18Memento戻れないと知っていたら、あの一鋏は切れたか〜状態は、外へ漏らさず預けておく〜
8/19Observer害虫を見つけるたび、知らせる相手をコードに書き足す〜検知は、誰に知らせるかまで背負わなくていい〜
8/20Template Method株ごとにコピーした手順、気づけば水やりの順番までずれていた〜骨格は一つに決め、差分だけを預ける〜
8/21Facade土壌・灌漑・施肥、正しい順番を知るのは先代だけだった〜複雑な手順は、窓口の奥にしまっておく〜
8/22Iterator区画ごとに違う内部構造、巡回コードまで書き直してきた年末点検〜歩き方は、中身の形を知らなくていい〜

タグページ #code-gardener からも全12本をたどれます。

comments powered by Disqus
システム開発・AIワークフローのご相談は Meetsource へ
Hugo で構築されています。
テーマ Stack は Jimmy によって設計されています。