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で内部属性を隠蔽し、公開メソッド経由でのみ安全に操作する「カプセル化」の基本を学びます。
うっかり値を渡し忘れて動かない…そんなバグに悩んでいませんか?Mooのrequiredで必須パラメータを強制し、defaultで安全なデフォルト値を設定する方法を学びます。
どこからでも変更できてしまう属性がバグの原因に?Mooのis => 'ro'で読み取り専用の属性を作り、必要なものだけis => 'rw'にすることで、安全で堅牢なクラス設計を学びます。
コピペで増えていく変数群にうんざりしていませんか?Mooのnew(コンストラクタ)を使えば、同じ構造のオブジェクトを何個でも簡単に作れます。配列とループで一括処理する方法も解説します。
グローバル変数だらけのスパゲティコードを卒業しませんか?Mooのhasで属性を、subでメソッドを定義して、データとロジックを1つのクラスにまとめる方法を初心者向けにやさしく解説します。