Upgrade to Pro — share decks privately, control downloads, hide ads and more …

名付けのためにクラス図を元に会話しよう/Let's-use-class-diagram-to-communicate-with-client

kirimaru
November 24, 2021

 名付けのためにクラス図を元に会話しよう/Let's-use-class-diagram-to-communicate-with-client

kirimaru

November 24, 2021
Tweet

More Decks by kirimaru

Other Decks in Programming

Transcript

  1. 名付けのために
    クラス図を元に会話しよう
    オブジェクト指向LT会 vol.3 #ooltjp
    きり丸(水上 皓登)@nainaistar

    View full-size slide

  2. 名前:きり丸(水上 皓登)
    twitter:nainaistar
    GitHub:hirotoKirimaru
    ブログ:きり丸の技術日記
    https://nainaistar.hatenablog.com/
    2
    これから
    クラス図大事!
    って発表するけど、
    正直クラス図作るのつらい

    View full-size slide

  3. エンジニアの仕事は
    概念に名前を付けること

    View full-size slide

  4. 前回の登壇:
    Code Smellsの
    Primitive Obsessionに
    気を付けて設計する
    ラクス様
    リーダブルコード LT会
    Vol2

    View full-size slide

  5. 全ての概念について
    名前がついているわけではない
    他人に言われて初めて
    名前がついていることに気づく
    概念も多い

    View full-size slide

  6. クラス図を使って
    概念の関係性を深堀り
    する機会を作ろう!

    View full-size slide

  7. 今日のゴール

    View full-size slide

  8. クラス図を使えば
    もっと概念を理解する
    きっかけ作りができることを学ぶ

    View full-size slide

  9. クラス図を書くために大事なこと
    ● 多重度
    ● 関連端名
    この2つだけ覚えてほしい!

    View full-size slide

  10. 多重度について
    クラス間の関係が次のどれかであるか分かるだけで、
    クラス間の関係を推し量ることができます。
    ● 1:1
    ● 1:多
    ● 多:多

    View full-size slide

  11. 関連端名について
    分析において
    「最重要要素」
    だと私は考えています。

    View full-size slide

  12. 関連端名について
    関連端名とは、関連先クラスに対して持つ役割を記述したもの。
    なぜ重要かというと、
    この特定のクラスから見た別クラスを表現する言葉に
    業務に詳しい人が業務上で使用している名前に
    知識が詰まっているからです。

    View full-size slide

  13. ECサイトの例
    カートと商品の関係性

    View full-size slide

  14. ECサイトの例
    購入履歴と商品の関係性

    View full-size slide

  15. ECサイトの例
    カートと購入履歴と商品の関
    係性

    View full-size slide

  16. 注意!
    異なるモデルが業務で表現している概念で一致していることが
    分かったからと言って、
    永続化(テーブル)を一致させる必要はありません。
    それはそれ。
    これはこれ。

    View full-size slide

  17. クラス図も更に分類できる
    ● 概念クラス図
    ● 設計クラス図

    View full-size slide

  18. 概念クラス図について
    業務の概念、クラス間の関係を掴むためのクラス図です。
    概念を掴むものなので、多対多で紐づけても問題ありません。
    複雑なドメインであるほど、まずは概念で理解することが必要です。
    概念クラス図の関連であれば、関連端名を導きやすいです。

    View full-size slide

  19. 設計クラス図について
    概念クラス図をアプリとして実装できるように
    制約を付与したクラス図です。
    一般的なクラス図は設計クラス図を指すことが多いです。
    ● システム制約
    多対多だと実装できないため、中間に別の概念を加えて1対多にする等。
    ● 業務制約
    一度に購入できる数は10個まで、
    リモートワーク申請できるのは月に5日まで 等々。

    View full-size slide

  20. 設計クラス図の注意点
    概念クラス図を元に設計クラス図を作成している場合は、
    概念クラス図で記載されている関係を壊してはいけません。
    概念クラス図だとアプリケーションを作成できない為に、
    異なる実装クラス図を作ってしまうことはありがちです。
    どうしても実装できない場合は、概念クラス図を変更しましょう。

    View full-size slide

  21. できればモデリングツールを使ってほしい
    astah*等のモデリングツールだと、
    概念クラス図を作成したのちに、
    容易に設計クラス図に落とし込めます。
    概念クラス図を修正すると、参照しているすべてのクラス図も
    変更できるので、変更漏れがなくなります。
    PlantUMLやPowerPointだとできないため、
    メンテナンスコストが高いのが非常に難点です。

    View full-size slide

  22. モデリングツール例
    ● astah*
    チェンジビジョン社。iPad版はクラス図しか書けない。
    ● EnterpriseArchitect
    SparxSystems社。チームでの開発を想定している。
    ● Rational Rhapsody
    IBM社。組み込み系で良く使われており、NASAの火星探索機とかも使わ
    れてるらしい。
    ● Papyrus
    Eclipseで無料で使える。

    View full-size slide

  23. まとめ
    多重度・関連端名を重要視してクラス図を作り、
    業務に詳しい人と会話するきっかけを作りましょう。
    また、クラス図には概念クラス図・設計クラス図があります。
    制約を気にしない概念クラス図を元に、
    業務に詳しい人と会話するきっかけを作りましょう。

    View full-size slide

  24. クラス図を使えば
    もっと概念を理解する
    きっかけ作りができる!

    View full-size slide

  25. ブログ
    UMLは覚えておくべき(クラス図編)

    View full-size slide

  26. 話すこと / 話さないこと
    ● ●
    話すこと 話さないこと

    View full-size slide

  27. 対象者 / 非対象者
    ● ●
    対象者 非対象者

    View full-size slide

  28. 登壇を見た人への期待するアクション

    アクション

    View full-size slide