ハンドラーを保持して処理を振り分けるディスパッチャークラスを作成します。委譲(handles)を活用して、司令塔としてハンドラーに処理を任せる設計を学びましょう。
各ハンドラークラスに「必ずrunメソッドを持つ」という約束をMoo::Roleのrequiresで定義して、インターフェースを作りましょう。
各機能を別々のクラスに切り出して、責任の分離を体験しましょう。
サブルーチンを変数に代入する「コードリファレンス」を学びます。関数をデータとして扱う感覚を掴みましょう。
if/elseの代わりにハッシュを使って処理を振り分ける「ディスパッチテーブル」を学びます。コードがすっきりする感覚を体験しましょう。
前シリーズで作ったBBSに機能を追加していきます。if/elseで機能を切り替えると何が問題なのか、実際にコードを書いて体験してみましょう。
「Mooで覚えるオブジェクト指向プログラミング」シリーズ(全12回)と関連するMoo系連載の一覧・目次ページです。各回への短い解説と読み方をまとめます。
GitHub Copilot の300プレミアムリクエストを使い切ろうと挑戦した結果、100%達成できませんでした。短期集中利用で見えてきたレート制限の実態、Claude Opus 4.5 の優れた推論能力、そしてAIエージェントの自律的判断について考察します。
「いいね数に文字列が入ってる?」そんなバグを型制約で未然に防ぎましょう。isaオプションで型チェックを追加する方法と、シリーズ全12回の総まとめをお届けします。
クラスが大きくなりすぎてメソッドだらけ…。そんなとき、handlesを使えば属性として持っているオブジェクトにメソッド呼び出しを委譲できます。クラスをスリムに保つ委譲のテクニックを学びましょう。
MessageもUserも作成日時を記録したい。でも継承関係はない…。そんなとき、Moo::Roleを使えば継承なしで同じ機能を複数のクラスに追加できます。ロールによる振る舞いの共有を学びましょう。
親クラスと子クラスで同じ名前のメソッドを持つとき、子クラスのメソッドが優先されます。if文による分岐だらけのコードを、オーバーライドでスッキリ書き直す方法を学びましょう。
通常投稿と管理者投稿で同じコードを何度も書いていませんか?Mooのextendsを使った継承で、共通の機能を親クラスにまとめ、コードの重複を解消する方法を学びます。
クラスが巨大になって管理しづらい…そんな悩みはありませんか?関連するデータを別のクラスに分離し、クラス同士を連携させる設計を学びます。MessageクラスからUserクラスを抽出して、シンプルで拡張しやすい設計を目指しましょう。
いいね数がマイナスになってしまった…それは内部状態を直接いじられたから。Mooで内部属性を隠蔽し、公開メソッド経由でのみ安全に操作する「カプセル化」の基本を学びます。