アプリ開発日記 #166 再設計中。。。

新しく作るアプリ

いつも期限前日に焦ってしまう人のためのスケジュール管理アプリを作ろうと考えています。

今日の作業

ユースケースおよび、クラス図の構成を改めで考え直すことにしました。

まずは、ユースケースがアプリをもとに作成されていたため、これをアプリを使って何がしたいかという大きな枠組みで考えるようにしました。
結果、アプリとは一見関係ないようなユースケースを作成することとなりました。

ただ、今までの設計ではアプリによりすぎたユースケースを作成していたため、現実世界をうまく表現できず、結果としてユースケース層が十分に働いていないように感じていました。
そのため、今回の変更でユースケース層がすっきりしたように感じました。

さらに、ユースケースを書きだす際に、「こと」を意識するようにしました。
簡単に言うと何をするか、そのアクションについて書きだすようにしました。

また、書き出すアクションについても、「登録する」、「検索する」のようなアプリで行う機能ではなく、現実で行う「仕事を受注する」のようなアクションとして書き出すようにしました。
その後、書き出したアクションの中から、アプリで実行するアクションを探し、アプリの機能として落とし込むようにしました。

次に、修正したユースケースを使用して、クラス図のユースケース層のクラスを修正しました。
また、一部のShareフォルダに入っていたクラスをユースケース層に移動しました。

こちらも結果として、クラス図がすっきりしたように感じます。

実際の修正の効果については、実際にプログラムを書いて確認してみようと思います。

明日以降の作業

再設計の内容でプログラムを修正する

今後の課題

<<大量の設計書がなくても、過不足なく使用を説明できるようにしたい>>

アプリが複雑になると設計書の量が増えてしまいます。
しかし、すべての設計書の整合性を取りながら、アプリを修正することは結構大変だと思います。

今回も、複数の設計書の間で不整合が起きていたことで、バグを作りこむところでした。

そのため、仕様を説明するためのドキュメントについて、もっといい感じでまとめられるようにしたいです。<>
アプリケーションサービスや、ドメインモデル、ドメインサービスのそれぞれの役割を明確に定義できていなかった、そして十分に理解できていなかったため、実装時に実装するレイヤーが違うものがいくつか表れてしまいました。

そのため、改めてアプリケーションサービスや、ドメインモデル、ドメインサービスのそれぞれの役割を明確に定義できるようにしたいと思います。