SQLアンチパターン@Sendagaya.rb #141
Sendagaya.rb #141で株式会社ランチェスターに行って来た。今回は『SQLアンチパターン』に関連して相談したいことがあるという参加者がいたので、その話を前半(というか殆ど)やって、後半は『メタプログラミングRuby』を読んだ。
SQLアンチパターン
僕はこの本を持っていないから具体的なことはあまり分からないけれど、「ポリモーフィック関連はよくない」と言っている箇所があって、ちょうど自分で作っている物でもポリモーフィック関連を使っている所があって、それで相談に来たということらしかった。本の該当箇所を説明してもらったり、@tkawaさんが電子版を持っていたのでプロジェクターで映して見せてもらったりしながら話を聞いていると、基本的には外部キー制約が使えなくなることが問題のようで、これの解決方法として交差テーブル(だっけ?)という考え方と単一テーブル継承という考え方を紹介していた。
ポリモーフィック関連はよくない、しかしではどうしたらいいだろうか、この本で提示されている解決策もあまりいいようには思われない、ということで、その人の扱っている具体的なテーブル構造なんかを教えてもらいながらみんなでああだこうだと言っていた。一般的な正解がないタイプの問題だし、ウェブのサービスだと将来要件が変わることは容易に想像できる、それも今の段階ではどう変わるか想像できないタイプの変わり方をするものだから、正解を探すのはますます難しい。@iR3さんが、長年の経験からためになるアドバイスをするなどしていた。fukajunさんもいいこと言ったり、もっと言いたいことありそうだった(前にもテーブル設計の時に言いたいこと残してそうだったのを思い出すに、RDBMS得意そう)のだけど、残念ながら体調不良でidobataによるテキストチャットでの参加だったものだから、勿体無い感じなってしまった。勿体無い。
こういうのって、誰かに相談できる、話し相手がいることその物が価値だったりするものだなあという感覚を思い出した。
メタプログラミングRuby
最後三十分くらいで『メタプログラミングRuby 第2版』を読んだ。今回は主にmethod_missing
の所だ。「method_missing
を定義する時は一緒にrespond_to_missing?
も定義しましょう」というのがポイント。
あと、ついエイリアスメソッドチェインという言葉を使ってしまって「それ何?」って聞かれたのだけど、2016年なんだし、ほぼ説明を要するような言葉は封印していくべきだと感じた。
次回はThe Rails Doctrine(多分、日本語訳のほう)を読みながらおしゃべりする予定:
https://sendagayarb.doorkeeper.jp/events/41208