この記事は ZOZO #3 Advent Calendar 2021 1日目の記事になります。
今年もそんな季節になりました。今年は14本エントリーしております。何卒よろしくです。
1日目にご紹介したいのはJIGというツールになります。
設計の支援ツールです。
一般的に設計といえば、実装前に行うもの。設計し、実装した後というのは、概して修正などしないことが多いと思います。
しかし、アプリケーションにとって本当に大事なのは実装後のリファクタリングだというのは、一定層にはもう周知の事実。
この点については、テスト駆動開発の付録C「テストは質をあげないー質を上げるのはプログラミング」を読んでいただくとよいと思います。
で、どのようなリファクタリングをするかという点について。
細かいバリューオブジェクトのロジックをリファクタリングしていくことや、アプリケーション層やインフラ層に紛れ込んだビジネスロジックをモデルに移行するといったリファクタリングも有効かと思います。
JIGを使ったリファクタリングで有効なのは、もう少し大きなところ、モデルも構造・構成、モデルの名前の整合性を取っていくという観点でリファクタリングしていくところになります。
JIGは既存のコードを解析し、様々なドキュメントを出力してくれます。
どのようなドキュメントがあるかはこちらを見ていただくといいかと思います。(実際の画像貼ろうと思いましたが実プロダクトのドキュメント貼るのが難しく・・・
手っ取り早く参考にするなら
・区分図
・アーキテクチャ図
なんかは実装中の設計の整理に即役に立つと思います。
また、Excelで出力されるビジネスルール一覧はクラスの一覧が出力されるので名前の再検討にもってこいです。
上記リンク先では、こういう状態であればこうリファクタリングするといいといったアドバイスも記載されていますので、読んでみるといいと思いいます。
導入については、Gradleを使っていればGradleプラグインを使うのが便利です。
自分のチームではmainにマージするときにGithubActionsでドキュメントを生成し、生成されたドキュメントをS3にアップロードすることでチームメンバーがいつでも最新のドキュメントを閲覧できるようにしています。
アドベントカレンダー初日はJIGの紹介でした。次の日も自分ですね。「バリデーションだけじゃ足りない時がある。契約による設計に対する考察」というタイトルでお届けいたします。