コドモン Product Team Blog

株式会社コドモンの開発チームで運営しているブログです。エンジニアやPdMメンバーが、プロダクトや技術やチームについて発信します!

「DDDでレガシーコードに立ち向かうリアル」というタイトルでObject-Oriented Conference 2024に登壇しました!

こんにちは! プロダクト開発部の中田です。

先日、Object-Oriented Conference 2024(以下OOC)にスポンサー枠で登壇させていただきました。

「せっかくだから登壇レポートも書いてくれますよね」という、おかぱるさんからの圧を感じながら(笑)、この記事の執筆をはじめています。

登壇タイトルが「DDDでレガシーコードに立ち向かうリアル」だったので、「OOCの登壇に立ち向かうリアル」も書いていければと思います。

登壇時の様子
写真の引用元: https://www.flickr.com/photos/oocdev/53636995878/in/album-72177720315897716/

登壇することになった背景

イベント内容や、コドモンがスポンサーとなった経緯については、以下のおかぱるさんの記事をご参照ください。

tech.codmon.com

私が登壇することになった経緯としては、OOCのスポンサーをすることを提案してくれた某メンバーから不意に話を振られたのがきっかけでした。

私はと言えば、社外で登壇など、LTすらやったことないのに、こんな大規模なイベントで40分も話すなんて、とてもじゃないけど無理だろうと思っていました。

ビビった私は、逃げ回ったり、他のメンバーに押し付けようとしたり、見苦しい動きもしていたのですが、一方で、話すならこんな内容かな? というのも考え始めていたので、覚悟を決めて登壇を引き受けることにしました。

また、コドモンではペアプロを徹底しているので、一緒にインボイス制度対応の開発をした吉田さんもペアに巻き込んで、こまめに相談したりフィードバックをもらいながら準備を進められたので、とても心強かったです。

発表テーマについて

発表資料はこちらです。

speakerdeck.com

登壇の話を振られてから、一番悩ましかったのは発表テーマでした。

オブジェクト指向のイベントなので、オブジェクト指向やDDDの特定の概念や手法について話すようなテーマ案も思いついたものの、著名な方々も多く登壇される中で、自分が「〇〇とは」みたいな説明をするイメージは全く湧かなかったです。 私が設計について普段話しているような内容は、ほとんどが増田さんやかとじゅんさんなどの記事や資料で読んだことの受け売りですから。

となると、何かしら具体的な事例の話がいいかなと思いつつ、前回のOOCの資料や過去のDDD関連のイベントの資料をざっと見てみました。

すると、やはりDDDをはじめるときの苦労や工夫の話が多い印象ではあったのですが、 コドモンではどうかというと、先人たちの頑張りのおかげで、私が入社した時点では既に、負債解消していくぞ! DDDやっていくぞ! という文化はできていたんですね。

ならば、DDD導入の次のステップとなる、レガシーコードからDDDへ向かうリファクタリングを日常的に進める過程について、コドモンから共有できる何かがあるのでは、と考えてテーマを選びました。

これなら、私自身の実体験ベースで話せるので、似たような経験をされた方とは共感しあえそうですし、これからやる人には大変さを伝えつつも前向きに取り組んでほしいというメッセージを込められそうです。

一方で、私個人から見ると、実際に起きたこと、躓いたことを、ただ語っているだけなので、こんな内容でいいのだろうかという不安もありました。でも、むしろその「生々しさ」がいいんだ、と言ってくれたメンバーの声に後押しされて、自信を持つことができました。

発表のタイトルを「リアル」にしたのも、そのあたりがきっかけです。

発表準備で苦労したこと

はじめにプロットを書いたときは20分のつもりだったのですが、資料を肉付けしていったら、気づけば40分をゆうに超える感じになってしまいました。発表練習の際に、台本なしでマイペースで話してみたら60分近くかかってしまったので、これはまずいと......。

そのため、まずは本題に直接は関係のない内容を削ぎ落としました。もともとは、DDDを取り入れた背景、リファクタガイドラインを作った理由、CQRS化を断念したこと、なども話そうと思っていたのですが、思い切ってスライドを削除しました。

また、余計なことをくどくどと言わずに、大事なことだけ簡潔に言えるように、台本を精査しました。資料をつくるよりも台本の精査のほうが時間がかかったかもしれません。

たぶん、登壇時には「詳細は割愛します」って5、6回は言ったと思います。

これで伝わるだろうか? 説明不足じゃないだろうか? という不安との戦いだったのですが、実際に発表を聞いてくださった方々にはどう映ったのか、気になるところです。

発表内容の補足

最後のスライドについても、これだけであと10分ぐらいは喋れそうな気がしています。

締めのスライド

登壇時にも話したのですが、今回の発表内容は、私にとっては敗北の記録でもあります。

ですが、うまくいきませんでした、大変でした、というだけで話が終わるのはイヤなので、何とかポジティブに締めたいという気持ちはありました。 そんな中、たまたま夜中の3:00頃に目が覚めて眠れなくなったときに考えたものなので、ここだけ変なテンションかもしれません。でも、このメタファー、意外と後から見返しても、我ながらしっくり来ています。

なので、登壇時には話せなかったオマケもつけちゃいます。

(こういう例え話、割と好きなんです。オブジェクト指向で大事なのは「抽象化」ですし、メタファーはユビキタス言語につながるものですから、許してください。)

生きて帰るのも大事

社内で発表した際にこのコメントをいただいて「確かに!」と思いました。勝てないと思ったときは、いったん引き返してレベルをあげたり装備を整えるのも大事です。本番環境で玉砕するわけにはいかないですからね。

エヴァンス本はマップ

割と俯瞰寄りなマップなので読んだだけではよくわからないのですが、勢いで突き進んでみた後に迷ったり行き詰まったときに見返すと発見があります。事前にざっと読んでどのあたりに何が書いてあるかだけでも眺めておくと、あとで見返しやすいです。

お宝は行き止まりに落ちている

RPGとか好きな方には伝わるのでは。課題は行き詰まった先にあるものですよね。仕事ではそんなに寄り道してられませんが、私はゲームだったらマップを踏破してお宝をすべて回収してから次に進みたいタチです。

イベントの感想

正直、かなり緊張しました。OOC前日の土曜日は普通に休みだったのですが、緊張のせいで1日中気持ち悪かったので休んだ気にならず、日曜じゃなくて土曜開催にしてくれよ〜と思ってました。 (きっといろいろな都合や準備があって日曜開催になったと思うのでコアスタッフの方々にはとても文句など言えませんが)

で、当日はと言うと、もちろん緊張はしていたのですが、基調講演をはじめいろんなセッションの内容がとても興味深かったので、緊張しているどころではなかったです。

自身の登壇時も、あとは台本を読み上げるだけだと割り切っていたので、何とかはなったはず......。 発表中に頷きながら聴いてくださる方がいたり、発表後に質問に来てくださった方もいて、とても嬉しかったです。逃げずにやってよかったと思えました。

発表を聞きに来てくださったみなさま、OOCを開催してくださったスタッフのみなさま、登壇に協力や応援をしてくれたコドモンのメンバー、本当にありがとうございました。

OOC自体、魅力的なセッションが多く、聞きたいけど聞けなかったセッションも多かったので、動画が公開されるのが楽しみです! (自分の動画も公開されてしまうのか、あわわ......という気持ちもありますが)