Featured image of post 【目次】PerlとMooで航空管制シミュレーターを作ろう(全8回)

【目次】PerlとMooで航空管制シミュレーターを作ろう(全8回)

Perl と Moo で航空管制シミュレーターを作りながら Mediator パターンを学ぶ全8回の連載。目次を兼ねた案内板で、読む回の選び方と各回の内容をまとめています。

複数のオブジェクトが互いを直接呼び合うと、参照が増えて手がつけられなくなる。この連載では、航空機同士の直接通信が破綻する様子を確かめてから、管制塔に調整を任せる設計に組み替え、Perl と Moo で航空管制シミュレーターを作ります。最終回で「ここまで作ったのが GoF の Mediator パターンだった」と名前がつきます。

このページは目次を兼ねた案内板です。初めてなら「読み方」から、オブジェクト同士の依存が絡み合って困っているなら「困りごとから探す」から選んでください。

対象読者

Perl入学式を卒業した程度の方、または「Mooで覚えるオブジェクト指向プログラミング」シリーズを読了した方を想定しています。

読み方

  • 通して読む: 第1回から順に。コードは前の回の続きなので、動かしながら進めるなら順番どおりが確実です
  • 依存の絡み合いに困っているなら: 第2回で問題を、第3回で解き方を読めば要点がつかめます
  • Mediator パターンの名前と対応表が目的なら: 第8回から読み、気になった所だけ前の回に戻れます

全8回

  1. 航空管制シミュレーターの最初の一歩。便名を持って離着陸する Aircraft クラスを作る【Moo】
  2. 2機が同時に着陸したら衝突する。機体同士で直接調整させると参照が増え続ける
  3. 航空機が互いを知らなくても安全に着陸できる。管制塔クラスに調整を任せる
  4. 機体の種類が増えても管制塔のコードは変えない。Moo::Role で共通の約束を決める
  5. 滑走路を使えるのは同時に1機だけ。使用中かの管理を Runway クラスに分ける
  6. 滑走路が空くのを待つ機体が取り残される。着陸待ちキューで先着順に処理する
  7. 燃料切れの機体まで順番待ちさせてしまう。緊急機をキューの先頭に回す
  8. ここまで作ってきた設計の名前は Mediator パターンだった。管制塔の役割を整理する

困りごとから探す

オブジェクト同士が直接呼び合って、数が増えるほど絡まる

  • 第2回 — 機体同士の直接通信は、参照が N×(N-1) 本に増えて破綻する
  • 第3回 — 調整役を1つ置き、機体は管制塔だけを知っていればよくする

種類が増えても、呼び出す側を変えたくない

  • 第4回 — Moo::Role の requires で、全機が守るメソッドを決めておく

共有の資源を同時に使わせたくない

  • 第5回 — 滑走路の使用中判定、占有、解放を専用クラスに任せる

待たせる順番を決めたい

  • 第6回 — 断られた機体を待機キューに入れ、先着順で処理する
  • 第7回 — 緊急の機体をキューの先頭に回す

仕組みに名前をつけて整理したい

  • 第8回 — GoF の Mediator パターンの登場人物と、ここまでの実装の対応

関連シリーズ

Observer パターンなど、関連するデザインパターンのシリーズも参考にどうぞ。

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