読者です 読者をやめる 読者になる 読者になる

一分一秒真剣勝負!

Ruby, Railsなど。Web系の技術ネタを充実させたい・・が、そうなるかは分からない。

Webアプリケーションのモデル設計

tech oop

Forkwell12月17日(月)のニュースレターから引用。

Forkwellでもご多分に漏れず、モデル設計を最初にしっかりと考えこんで作りました。
特に、なるべくコードレベルでシンプルに、少ないコードで行きたい、と考えていました。
例えば単一テーブル継承(STI)やポリモーフィズムなどを利用して可能な限りシンプルに作ったり、
ひとつ変更すれば関連するモデルが更新されるようなフックを仕掛けたり、といったところです。

ところが、これらには罠があります。
それは、開発した当人たちにとってはわかりやすくても、途中からジョインした人たちはパッと見
良くわからない(=読みにくい)、というところです。
現にForkwellチームの中では、
「あー、そうやってたの。わかんなかった」
「いやいやそれはちょっと」
という悲しい光景が繰り広げられるという結果になってしまいました。

なので、今ではForkwellはポリモーフィズムなどの技術はなるべく使わず、素直に必要なモデルを
必要なだけ作ってやるという方式を取ることにしています。

それがいいですね。その時点では素晴らしい設計であっても、運用していくうちに当時の設計思想には当てはめられない機能を実装しなければならない状況になったり、プロジェクトの途中からアサインしたエンジニアが認識できなくて変な実装をしてしまったりといった事はよくあります。
モデル・ER図・テーブル定義をざっと見ただけで大体の実装をイメージできてしまうぐらいが丁度いいのではと思ってます。程度によりますが、冗長的な実装になっても人数が増えてきた場合にコンフリクトしにくくなるとか、急な増員をした場合でも理解しやすければすぐに即戦力になってくれるなどメリットもある。
まあ、技術を知ってると使ってみたいってのはわかりますけどね。