ドメイン駆動設計を武器に越境する


この記事は DevLove AdventCalendar 2014「越境」の7日目の記事です。

こんばんわ、木目沢( @pilgrim_reds ) です。
前日は @taniyang さんによる”ビジネス側だけどコードを書くという越境 “という記事でした。

ビジネスに携わりつつあるエンジニアである自分にとってもとても興味深い記事でした。

“惨めさと向き合って見えてくる世界や面白さ”

これこそ越境の本質というものなのですね。

自己紹介

  • エンジニア歴7年目
  • しかし、業界に来たのが30歳前なのですでに37歳。なので、常に焦りがある。
  • 自分専用の競馬予想アプリを作りたかったという極めて不純な動機で最初の会社に入社。
  • 結局、エンジニアが楽しくて競馬をやめるというミイラ取り状態になる。
  • 現在GVT株式会社所属。2人しかいないエンジニアのうちの一人。

越境前夜

今年3月まで約3年間システム設計(現在、ギルドワークスでご活躍中)にて @masuda220 さんにお世話になっていました。

それまでは、SES業で常に外に出ていて、まともな開発現場にはほとんど出会えず(いい現場もありましたよ。あと、どの現場も人には恵まれていました。)、分厚さと反比例してソースと乖離している設計書と汚く読めないソースコードを保守していた当時、設計ってこれで本当にいいの?正しいやり方、もっといいやり方はないの?と模索していた際に @masuda220 さんのブログを発見しドメイン駆動設計を知りました。

ブログの記事は全ての記事を読みあさりました。(今でも時々読み返してます)
翻訳本がなかった当時は、@masuda220 さんの記事がほぼ唯一の教科書でした。

そんななか、疑問点をコメントしたところ勉強会に誘っていただいたのが今の自分の出発点(越境直前)だったような気がします。

その後、社内でのゴタゴタに巻き込まれ退社したところで @masuda220 さんを頼ってシステム設計にお世話になることになりました。

それまでは設計はおろかjavaすら怪しかったのですが、なんとか食らいついてやり方に慣れていきました。
必死だったので、越境できたかどうかは自分ではわかりません。
しかし、ドメイン駆動設計の考え方、ソースコードの書き方、DB設計の考え方など自分の基礎はこの3年で作られたと言っていいと思います。

未だ蔓延るだめな設計

現在、最初の会社で一緒に社内のごたごたに巻き込まれ、生き別れた(?)上司だった方が立ち上げた会社にお世話になっています。
生き別れる際にいつか一緒にという約束を果たし現在に至ります。

転職後、最初の仕事は新人君の面倒を見るという名目で短期間ながら金融系のビッグプロジェクトに携わりました。
詳しくは述べませんが、設計を見た感想は本当に3年前の出来事が蘇ったような感覚でした。

案の定、このプロジェクトは大炎上したようです。

ドメイン駆動設計を武器に越境する

その後は、細々とwordpressなどをいじったりしていましたが、社内開発の企画が立ち上がり参加することになりました。

2人いる自社のエンジニアのうち、一人が別の仕事をやっているため、社内開発はほぼ一人プロジェクトになりました。
何から何までほぼ一人という機会はさすがになく、この境界を越えて行けばいろいろ見えてくるなという感覚はありました。

また、今回は社内開発ということもあり、時間的には多少余裕があり、個人的に試していたことのいくつかも実践導入できました。
Thymeleafやflyway、Chef、Robotframework、Compassなど、実践した際に出た課題も含めて別の場所で紹介できればいいと思っています。

ここでは、一人プロジェクトで越境したからこそ見えたドメイン駆動設計の利点を紹介します。

  • お客さんとの話がしやすい・・・今回は社内の人がお客さんという立場でしたが、相手はほぼ全員エンジニアではないので、社内でもモデルの話以外はしないように心がけました。これが意外と話が通じて要件を整理していくことができました。特にパッケージ図や状態図を元にすると会話がしやすいです。お客さんは本当にビジネスや業務に関わる部分以外には興味がありません。
  • 新人君に説明しやすい・・・javaをかじった程度の新人君にソースを見せる機会がありました。お客さんと話す場合と同様にモデルから説明していったところ、すっきり理解してもらいました。頭からソースを追ってもらうより理解度が高いようです。
  • 修正しやすい・・・社内だから当然ですが、常にお客さんが近くにいるため、機能追加や変更の依頼の頻度がとても高いです。優先順位をつけてこなしていっていますが、今のところ変更に困った場面はありません。

システムを作っているというより、ビジネスや業務を作り上げている感覚です。それがお客さんや新人君などプロジェクトの周りの人々にも伝わりやすいというのが実感としてあります。

最後に、今回は偶然にも3年間馴染んだドメインの範囲で取り組むことができたためスムーズに入れたということもあります。
今後、新たなドメインに出会ったとき、どうモデルを考えていくかが次の越えるべき境界線だろうと思っています。
ドメイン駆動設計の海はとても広くて深いです。

明日(11月15日土)はいよいよ @papanda さんの登場です。
@papandaさんは私の尊敬するエンジニアの一人です。楽しみです!!!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です