Laravel Meetup Tokyo Vol.11 で発表しました
こんにちは。エンジニアの廣瀬です。先日、Laravel Meetup Tokyo Vol.11 というイベントで、いまクラシコムで取り組んでいる Laravel を使った DDD(ドメイン駆動設計)について発表しました。
DDDと開発速度
発表後、Twitter で「やっぱり開発速度は落ちるのかー」みたいな反応があったので、ちょっと補足というか、僕が考えていることを書いておきたいと思います。
ひとえに「開発速度」と言っても、どこまでを含めた時間の話をしているかによって意味が全く違ってきます。たとえば、以下の①と②を混同してしまうと話が噛み合わないのは明らかだと思います。
① 開発速度 = リリースまでにかかる時間
② 開発速度 = リリースまでにかかる時間 + 保守・運用にかかる時間
そして、DDDを取り入れた場合、おおよそ①の開発速度は確実に遅くなると思います。しかしながら、保守・運用、つまりメンテナンスのし易さを含めて考えれば、トータルで必要となる時間(工数)は少なくなるのではないか、と考えています。
また、開発の成功確率という変数も含めて考える場合、DDDはその確率を高めることもできる手法だと思います。よって、リリースまでの時間についても、期待値(得られる結果 * 確率)として考えればトントンくらいなのかなとも思います。
DDDを取り入れるときに気をつけたいこと
どんなものでも早く開発できるに越したことはありません。しかしながらバグが少なく保守性の高いものを作ろうと思えば、DDDに限らず、何かしらのかたちでそのための時間をかける必要があります。
「どの“早さ”を優先するのか」は、サービスの性質やプロジェクトの状況によって違うと思うので、その認識について、チームのメンバー間では勿論のこと、非エンジニアがステークホルダーに含まれる場合はとくに、丁寧なすり合わせが必須になると思います。
クラシコムではエンジニアを募集しています
スライドにある通り、DDDだけでなく、(個人的には)サービス分割にも取り組んでいきたいと思っています。興味のある方、ぜひオフィスに遊びに来てください!