技術

機能追加の実装前は機能にフォーカスしたユースケース図を書こう

Webサービスやビジネスアプリで機能追加をするときは、コーディング前に機能単位のユースケース図のドキュメントを作ったほうがいいという話です。

ドキュメント嫌いのエンジニア

私自身もそうなんですが、エンジニアはドキュメント嫌いの人が多いです。おそらくSIerの多重請負でExcel方眼紙が蔓延しているのが、主な理由でしょう。

なので

「ユースケース図作ってもどうせ見ないのでいらないです」
「テスト書くのでそれが設計書変わりになるのでドキュメントいらないです」

という人もいるかと思います。

しかし、ここでいっているのはユースケース図。SIerがつくる詳細設計書や、コードの処理フロー図とは別の話です。ああいうのはコードを無理矢理Excelに表現しているだけで、本当に誰も必要としないドキュメントです。コードを先に書いて、それを元にExcelドキュメントを作るという順序が逆になることも往々にありますしね。

ユースケース図とは

ユースケース図はステークスホルダーの結合が処理レベルで追える資料です。

ユースケースでよく見るのは、人型のアイコンとアクションを書き込んだ図形を紐付けているやつです。全機能を1枚に盛り込んだドキュメントをよく見ます。要件整理の段階ではこれでもいいのですが、いざ実装フェーズになるとこの資料は見づらいものとなっていることでしょう。

私は必要な部分、つまり機能にフォーカスしたユースケースを、画面やAPIなどを盛り込んでもう少し細かいレベルにしたドキュメントを作っています。

機能にフォーカスしたユースケース図のサンプル

例えばチケット管理システムの構築で、以下のような要件があったとします。

管理者がチケットを作成して、作成したチケットを管理者と担当者に通知する。

これをユースケースで表すと以下の様になります。

要件整理レベルだとこれでいいのですが、これは実装する人にはとってはほとんど役に立ちません。これを実装に使えるユースケース図にすると、以下になります。

今回の例のような簡単な機能の場合は、ユースケース図を書くまでもないかも知れません。フロントもバックエンドも全部自分一人でやって、簡単な処理しかない機能とかならユースケース図は無くてもいいと思います。書いたとしても手書きのメモレベルでいいかもしれません。

ただチームでやる場合や、少し複雑な機能などにはユースケース図はあったほうがいいです。関係者との認識合わせや、実装前の整理に役立ちます。

機能にフォーカスしたユースケース図を作る利点

機能にフォーカスしたユースケース図を作る利点は以下の通りです。

  • 関係者と認識あわせしやすい
  • コーディング前の頭の整理になる
  • 必要機能の見落としに気づくこともある
  • 後の要件変更とかに役立つ

上でも少し触れましたが、関係者との認識合わせに役立ちます。機能追加はチームでやることがほとんどです。フロントとバックエンドで担当が分かれている場合は、作成する画面とバックエンドで必要な処理の認識合わせが必要ですし、ビジネスサイドの人が動作確認をしたりすることもあります。こういうときに、ユースケース図があると認識合わせに役立ちます。

またこういった資料を作ることで、実装前の頭の整理になります。また資料を作っている段階で、必要機能の欠如や、前提条件の考慮不足などにも気づくことがあります。素早くコーディングに移る行動力も大事ですが、その前に一度整理しておけば、手戻りも防げて、最終的にはより早く実装を終えられることもあります。

さらにこういうユースケース図があれば、後々の要件変更や追加を検討するときに役立ちます。ああ、ここはこういう作りになっているからこういう制約があるとか、ここも変更する必要があるとかがわかります。実際問題、作った本人でも忘れていることがほとんどです。コードをさらっと見れば思い出せることがほとんどですが、機能にフォーカスしたユースケース図があれば、役に立つことが多々あります。

そんなドキュメント作っている時間ないよ

便利なのはわかった。でもそんなドキュメント作っている余裕はないよ。と、思われるかもしれません。実際、開発業務は時間に追われていることがほとんどです。

しかし、リファクタや仕様変更を考慮すると、テストを書かないより書いた方が最終的には実装が早く終わるのと同じように、ユースケース図も書いた方がトータルでみれば実装が早く終わります。

また、このドキュメントを作らなくても、こういったことを思考する時間は使っています。ユースケース図のドキュメント作成も大半は思考に使っています。ユースケース図のお絵かき事態は、慣れればたいして時間はかかりません。つまりドキュメントを作ろうが作らなかろうが、使っている時間はほぼ同じです。ならば少しの時間を捻出して、ユースケース図を残しておいた方がいいと思います。

おすすめツール

最後にオススメツールの紹介です。結論を言えば、現在ではdraw.ioです。

ツールで必須なのは画像などへのエスポート機能です。そして重要視したいのは、多くの人にとっての編集のしやすさです。作画ツールは他にもありますが、draw.ioはフリーで使えますし、ほとんどの人が使ったことがあるでしょう。

ユースケース図は一度リリースしてしまえば、変更する事はほとんどないのですが、やはり編集しやすいにこしたことはありません。もし編集しやすさを考慮しないのであれば、極論を言えば手書きを写真キャプチャでもいいということになりますが、さすがにこれは許されません。

Visioは有料ですし、それほど広まっていないので使える人は限られています。Google Cloud Architectureも出始めで、まだ現場でのシェアはありません。今後、どうなるかはわかりませんが、draw.ioを使っておけば間違いないでしょう。