ひがやすを技術ブログ

電通国際情報サービスのプログラマ

Teedaを使ったときのアーキテクチャ(クラス・パッケージ構成)

Teedaを使ったときのアーキテクチャは、Super Agileの時とEasy Enterpriseの時で違います。今回は、Super Agileのケースを書いてみます。サブアプリケーションの下に存在するクラスとルートパッケージの下に存在するクラスがありますが、使い分けは次の通りです。

  • サブアプリケーション配下(xxx.web.yyyなど。yyyはユースケースを表す。)
  • ルートパッケージのサブパッケージ配下(xxx.daoなど)

ユースケース固有のクラスは近くにまとまっていたほうが良く、ユースケースを横断するクラスは機能ごとにまとまっていたほうが良いという考えです。そうするとパッケージ構成は次のようになります。

  • xxx.web.サブアプリケーション
  • xxx.entity
    • テーブルに一対一にentityを作成します。
    • Entity名はテーブル名と同じにします。
    • 実際はテーブル名は'_'記法、Entity名はcamel記法にします。例えば、テーブルがAAA_BBBならエンティティはAaaBbbになります。カラム名とプロパティ名の関係も同様。
  • xxx.dao
    • Entityに一対一にDaoを作成します。
    • Dao名はエンティティ名+Daoになります。
  • xxx.logic
    • 複数のユースケースで共通に用いられるロジックを記述します。
    • ロジック用のインターフェース、メソッドは次のようにして見つけます。
      • アクティビティ分析をします。
      • 個々のアクティビティを「xxxをyyyする」という形で記述します。
      • xxxがロジック用のインターフェース名になり、yyyがメソッド名になります。
    • Logicで扱われるデータは、DTOではなくEntityです。
    • 一般的にはLogicにDaoがDIされるでしょう。
  • xxx.dto
  • xxx.helper
    • ユーティリティ用のクラスですが、パラメータ的な設定項目があったり、他のクラスをDIする必要があるもの。
  • xxx.util
    • staticなメソッドで実現できるユーティリティクラス。

クラス名、メソッド名、パッケージ構成のルールも決まっているので、誰でも簡単にできるはず。