## クラス図 ```plantuml skinparam classAttributeIconSize 0 left to right direction skinparam class { ArrowColor black } entity 利用ユーザー{ 名前 メールアドレス ユーザーID ログインID ログインパスワード ログイン状態 作成日時 アクティブ状態 最終操作日時 } entity 代表ユーザー{ ワークスペースID } entity 招待ユーザー{ ユーザーID メールアドレス チャンネルID 作成日時 } package ユーザー情報 <<Database>> { } package "Infrastructure" #ffa500{ class 利用ユーザーアクティブ状態管理リポジトリ{ アクティブ状態取得(ユーザー: 利用ユーザー):string アクティブ状態更新(ユーザー: 利用ユーザー):void } class 利用ユーザー管理リポジトリ{ 利用ユーザー作成(ユーザー: 利用ユーザー):void 利用ユーザー削除(ユーザーID :uuid):void 利用ユーザー更新(ユーザー: 利用ユーザー):void 利用ユーザー取得(ユーザーID :uuid):利用ユーザー ログイン(ユーザー名 :string, パスワード: string):void ログアウト(ユーザーID :uuid):void } class 代表ユーザー管理リポジトリ{ 代表ユーザー作成(ユーザー: 代表ユーザー):void 代表ユーザー削除(ユーザーID :uuid):void 代表ユーザー取得(ユーザーID :uuid):代表ユーザー } class 招待ユーザー管理リポジトリ{ 招待ユーザー作成(ユーザー: 招待ユーザー):void 招待ユーザー削除(ユーザーID :uuid):void 招待ユーザー取得(ユーザーID :uuid):招待ユーザー } } package "Domain Service"{ interface 利用ユーザーアクティブ状態管理リポジトリIF{ アクティブ状態取得(ユーザー: 利用ユーザー):string アクティブ状態更新(ユーザー: 利用ユーザー):void } } package "Domain Service"{ interface 利用ユーザー管理リポジトリIF{ 利用ユーザー作成(ユーザー: 利用ユーザー):void 利用ユーザー削除(ユーザーID :uuid):void 利用ユーザー更新(ユーザー: 利用ユーザー):void 利用ユーザー取得(ユーザーID :uuid):利用ユーザー ログイン(ユーザー名 :string, パスワード: string):void ログアウト(ユーザーID :uuid):void } } package "Domain Service"{ interface 代表ユーザー管理リポジトリIF{ 代表ユーザー作成(ユーザー: 代表ユーザー):void 代表ユーザー取得(ユーザーID :uuid):代表ユーザー 代表ユーザー削除(ユーザーID :uuid):void } } package "Domain Service" #b0c4de{ interface 招待ユーザー管理リポジトリIF{ 招待ユーザー作成(ユーザー: 招待ユーザー):void 招待ユーザー取得(ユーザーID :uuid):招待ユーザー 招待ユーザー削除(ユーザーID :uuid):void } } 利用ユーザー管理リポジトリIF <|..利用ユーザー管理リポジトリ 利用ユーザー管理リポジトリ-->利用ユーザー 代表ユーザー--|>利用ユーザー 代表ユーザー管理リポジトリIF <|..代表ユーザー管理リポジトリ 代表ユーザー管理リポジトリ-->代表ユーザー 利用ユーザーアクティブ状態管理リポジトリIF <|..利用ユーザーアクティブ状態管理リポジトリ 利用ユーザーアクティブ状態管理リポジトリ-->利用ユーザー 招待ユーザー管理リポジトリIF <|..招待ユーザー管理リポジトリ 招待ユーザー管理リポジトリ-->招待ユーザー 利用ユーザー管理リポジトリ-->ユーザー情報 代表ユーザー管理リポジトリ-->ユーザー情報 招待ユーザー管理リポジトリ-->ユーザー情報 package "Application Service"{ class アクティブ状態取得サービス{ アクティブ状態を取得する(ユーザー: 利用ユーザー):string } class アクティブ状態更新サービス{ アクティブ状態を更新する(ユーザー: 利用ユーザー):void } } package "Application Service"{ class 利用ユーザー作成サービス{ 利用ユーザーを作成する(ユーザー: 利用ユーザー):void } class 利用ユーザー削除サービス{ ユーザーを削除する(ユーザーID :uuid):void } class 利用ユーザー更新サービス{ ユーザーを更新する(ユーザー: ユーザー):void ユーザーをログインする(ユーザー名 :string, パスワード: string):void ユーザーをログアウトする(ユーザーID :uuid):void } class 利用ユーザー取得サービス{ 利用ユーザーを取得する(ユーザーID :uuid):利用ユーザー } } package "Application Service"{ class 代表ユーザー作成サービス{ 代表ユーザーを作成する(ユーザー: 代表ユーザー):void } class 代表ユーザー削除サービス{ 代表ユーザーを削除する(ユーザーID :uuid):void } class 代表ユーザー更新サービス{ 代表ユーザーを更新する(ユーザー: 代表ユーザー):void } class 代表ユーザー取得サービス{ 代表ユーザーを取得する(ユーザーID :uuid):代表ユーザー } } package "Application Service" #afeeee{ class 招待ユーザー作成サービス{ 招待ユーザーを作成する(ユーザー: 招待ユーザー):void } class 招待ユーザー削除サービス{ 招待ユーザーを削除する(ユーザーID :uuid):void } class 招待ユーザー取得サービス{ 招待ユーザーを取得する(ユーザーID :uuid):招待ユーザー } } skinparam class { ArrowColor Black } アクティブ状態取得サービス-->利用ユーザーアクティブ状態管理リポジトリIF アクティブ状態更新サービス-->利用ユーザーアクティブ状態管理リポジトリIF skinparam class { ArrowColor SeaGreen } 利用ユーザー作成サービス-->利用ユーザー管理リポジトリIF 利用ユーザー削除サービス-->利用ユーザー管理リポジトリIF 利用ユーザー更新サービス-->利用ユーザー管理リポジトリIF 利用ユーザー取得サービス-->利用ユーザー管理リポジトリIF skinparam class { ArrowColor Red } 代表ユーザー作成サービス-->代表ユーザー管理リポジトリIF 代表ユーザー削除サービス-->代表ユーザー管理リポジトリIF 代表ユーザー更新サービス-->代表ユーザー管理リポジトリIF 代表ユーザー取得サービス-->代表ユーザー管理リポジトリIF skinparam class { ArrowColor Blue } 招待ユーザー作成サービス-->招待ユーザー管理リポジトリIF 招待ユーザー削除サービス-->招待ユーザー管理リポジトリIF 招待ユーザー取得サービス-->招待ユーザー管理リポジトリIF package "Presentation"{ class 利用ユーザー管理サービス{ 利用ユーザーを作成する(ユーザー: 利用ユーザー):void 利用ユーザーを削除する(ユーザーID :uuid):void 利用ユーザーを更新する(ユーザー: 利用ユーザー):void 利用ユーザーを取得する(ユーザーID :uuid):利用ユーザー 利用ユーザーをログインする(ユーザー名 :string, パスワード: string):void 利用ユーザーをログアウトする(ユーザーID :uuid):void } } package "Presentation"{ class 代表ユーザー管理サービス{ 代表ユーザーを作成する(ユーザー: 代表ユーザー):void 代表ユーザーを削除する(ユーザーID :uuid):void 代表ユーザーを更新する(ユーザー: 代表ユーザー):void 代表ユーザーを取得する(ユーザーID :uuid):代表ユーザー } } package "Presentation" #ffb6c1{ class 招待ユーザー管理サービス{ 招待ユーザーを作成する(ユーザー: 招待ユーザー):void 招待ユーザーを削除する(ユーザーID :uuid):void 招待ユーザーを取得する(ユーザーID :uuid):招待ユーザー } } package "Presentation" #ffb6c1{ class アクティブ状態管理サービス{ アクティブ状態を取得する(ユーザー: 利用ユーザー):string アクティブ状態を更新する(ユーザー: 利用ユーザー):void } } skinparam class { ArrowColor SeaGreen } 利用ユーザー管理サービス-->利用ユーザー作成サービス 利用ユーザー管理サービス-->利用ユーザー削除サービス 利用ユーザー管理サービス-->利用ユーザー更新サービス 利用ユーザー管理サービス-->利用ユーザー取得サービス skinparam class { ArrowColor Red } 代表ユーザー管理サービス-->代表ユーザー作成サービス 代表ユーザー管理サービス-->代表ユーザー削除サービス 代表ユーザー管理サービス-->代表ユーザー更新サービス 代表ユーザー管理サービス-->代表ユーザー取得サービス skinparam class { ArrowColor Blue } 招待ユーザー管理サービス-->招待ユーザー作成サービス 招待ユーザー管理サービス-->招待ユーザー削除サービス 招待ユーザー管理サービス-->招待ユーザー取得サービス skinparam class { ArrowColor #696969 } アクティブ状態管理サービス-->アクティブ状態取得サービス アクティブ状態管理サービス-->アクティブ状態更新サービス skinparam class { ArrowColor SeaGreen } 利用ユーザー作成サービス->利用ユーザー 利用ユーザー削除サービス->利用ユーザー 利用ユーザー更新サービス->利用ユーザー 利用ユーザー取得サービス->利用ユーザー skinparam class { ArrowColor Red } 代表ユーザー作成サービス->代表ユーザー 代表ユーザー削除サービス->代表ユーザー 代表ユーザー更新サービス->代表ユーザー 代表ユーザー取得サービス->代表ユーザー skinparam class { ArrowColor Blue } 招待ユーザー作成サービス->招待ユーザー 招待ユーザー削除サービス->招待ユーザー 招待ユーザー取得サービス->招待ユーザー package "UI" #98fb98{ class 利用ユーザー管理画面{ ユーザー: 利用ユーザー } class ログイン画面{ ユーザー名: string パスワード: string } class ログアウト画面{ ユーザーID :uuid } class 初期設定画面{ ユーザー: 利用ユーザー } class 代表ユーザー作成画面{ ユーザー: 代表ユーザー } class 招待ユーザー作成画面{ ユーザー: 利用ユーザー } } skinparam class { ArrowColor SeaGreen } 利用ユーザー管理画面-->利用ユーザー管理サービス ログイン画面-->利用ユーザー管理サービス ログアウト画面-->利用ユーザー管理サービス 初期設定画面-->利用ユーザー管理サービス skinparam class { ArrowColor Red } 代表ユーザー作成画面-->代表ユーザー管理サービス skinparam class { ArrowColor Blue } 招待ユーザー作成画面-->招待ユーザー管理サービス skinparam class { ArrowColor #cd853f } class チャットボット管理ドメイン #fffacd { アクティブ状態を更新する() } hide チャットボット管理ドメイン circle チャットボット管理ドメイン->アクティブ状態管理サービス skinparam class { ArrowColor #Black } ログイン画面->アクティブ状態管理サービス ログアウト画面->アクティブ状態管理サービス 利用ユーザー管理画面->アクティブ状態管理サービス skinparam class { ArrowColor #c71585 } class メッセージ管理ドメイン #db7093 { 利用ユーザー情報を取得する() } hide メッセージ管理ドメイン circle メッセージ管理ドメイン->利用ユーザー管理サービス skinparam class { ArrowColor #4169e1 } class チャンネル管理ドメイン #6495ed { 利用ユーザー情報を取得する() 代表ユーザー情報を取得する() アクティブ状態を更新する() アクティブ状態を取得する() } hide チャンネル管理ドメイン circle チャンネル管理ドメイン->利用ユーザー管理サービス チャンネル管理ドメイン->代表ユーザー管理サービス チャンネル管理ドメイン->招待ユーザー管理サービス チャンネル管理ドメイン->アクティブ状態管理サービス 'ログインログアウト、利用ユーザー管理からアクティブ状態管理サービスへ線を引く' ``` - [上の図を見やすくしたもの](//www.plantuml.com/plantuml/png/xLfVRzjK57_tfxXgNpQ9JaLiOusgQeKAb3T4nGTmd9lEMkfKZZC4MHvcgwXPLL5WsjHj5RGRQFpP7mHCcmhxCdTnjc_1hUFXrByRz_IqaVP07gh8FkTtp_sTutD-r-d5Pc3xGMkvRZKlkzwAxTlBmgdRpUPy4FXkfHN8ijFm5jqlfPYswh8MYA0XV7VfKY2ghY-Tm6ruLjvNjArvtszy_c6Ztl15fMuxbwsEPKalS8ClH6_jv_wD1ohwIKL_g_2f_jksXFxqDZTwtOtagufszcz6lwfmLqLT5VscmkVfdSojl91UUgZ29ogyhw8_39TKz8rsLj7Z1B4Bz_lNdyQhwydbb__SZTSsuri_nblXKC0lz-wzsZ44d6A6ZnFysydtvpg2p3DUlzDxiOgUi8lYBLzJqRra9nlwVcAFiQveakqbUG0wZbPxF_mkPcSNxC2ks4qvDoVQ-yQP-KJPg_bsC_1RJj3ovOIOhDNiSzFJIPnfDZ5X_KSx_SslLFIBYhPL-4n5Q_gxTaa_w328zjJmfPB1x7JfIiEj5k3qkjTVRzq_TP0_KMgrtEgXll6TF-ERJquWXgzlzbxS6X43cYT8-Q8xuAqBNvHq2bnlwHsHAzUI6DmOH0LOkohKE6k74TB9ifbMCpsRw63C9fW1as10o2RuqhA0va03Ffh5DA23aGOm0nh0W403-D9e0FEKXbmBM6Wiswud5gL_nNNan63BhXT8lsOxalhubpzwYnl0_msWGyqteK50liVG8dYFEQFPq8aIavLfvsnLvWWZj18WR0pDXDSG48b16Bb3YDchPyuGhQceKrDpQ6bX_gUchfeCqR8mUA8r5LK7ZvQMXSaeYebeJKNLCQ6bTOHqe0HDwM0wq-D6v-4vDx-oKdSTEt0RsJEDEXSVIXN-bVJYxtHVBffnAlmsTRYsfS9rsg11WJPgw9d3o0MGcc80nQfmvBGaBPgQcdQD-nq5CZmT4Oet8t61R6HoES9cUuJwI1sAbaO_64pcIWQDJwraj2wkPBId7ZMmaY4CVZtZqkHwHckiQZu3r981Qsh9P7vGCiKr8oRjcjIVDXoCgBM3rbWxP4M3vpDgxQ0rltP6YYhQqf0qnk6iy7tQehG_zgNqzWqf8qlFHR90ioZ3Xm-83o8V4BF312nc-rDPrKHJ6YfekQ95AQsH3uWySm6HPm8WX-SFwYsfYQPq7n2eHQjI-WWR47bX06Oj-XDVDgKN93rwWlG6TlpA507ftHL1o3EM4HLVO07ac8KfBiENfnr2-OnwHiSk1uylxCOWqSOijY0LoMygbVFEkst2w-UngwpZwwMtLFaWWMOPWFE4ZuMZX8-5uvgFXHE9f79mvfiNfAWXFXQIoiT2KlbOI2fDqg1YCAz8aJvyB6ILZqLdWdbaCTKquMX2SyIoe3lYpesE9tMaC9KXuUX0SqGUw8x8Wydnv2I_gGe9qfxkYFinEMO3_hEo7kip5sgLcGiKeTw_iVTwUpSRw8T9NNWdCIn2Yy2q6dqZEhFxPb4AQ-GKA2m3mzpuZdGxlllzgmSFUuzkypPDU8rP34p_yH-1UH5tcDqF2WI6kRafMr0DT4_CCTqPaalrF5P3_6ybokJcT1nSYJ8PYV_rfZzldguT5KKgt4imdwM0KLTV7oHIJ5Ohxq_Fl2SqK7PAn9-qyYBxj5xbabkLX1KSrtVgCeqe_uzbfeZEdvqv9wj73WZELxJmpU5W-8TQ4gkIW8ExuE1GAmepoDlOHUbLMylrVm40) --- ## 備考 - 代表ユーザー、招待ユーザーの管理機能を追加 - 細かいところで利用ユーザーと使い勝手が異なりそうなので分離 - 実践の色が全て同じだとわかりにくいので、煩雑な箇所には色を付けた - 外部のドメインはメッセージ管理ドメインとチャンネル管理ドメイン - [color code](https://www.colordic.org/) ```plantuml skinparam classAttributeIconSize 0 left to right direction class Chatサービス利用ユーザー #ffe4b5 { } hide Chatサービス利用ユーザー members hide Chatサービス利用ユーザー fields hide Chatサービス利用ユーザー circle Chatサービス利用ユーザー-->利用ユーザー管理画面 Chatサービス利用ユーザー-->ログイン画面 Chatサービス利用ユーザー-->ログアウト画面 class Chatサービス代表ユーザー #ffe4b5 { } hide Chatサービス代表ユーザー members hide Chatサービス代表ユーザー fields hide Chatサービス代表ユーザー circle Chatサービス代表ユーザー-->招待ユーザー作成画面 Chatサービス代表ユーザー-->利用ユーザー管理画面 Chatサービス代表ユーザー-->ログイン画面 Chatサービス代表ユーザー-->ログアウト画面 class Chatサービス招待ユーザー #ffe4b5 { } hide Chatサービス招待ユーザー members hide Chatサービス招待ユーザー fields hide Chatサービス招待ユーザー circle Chatサービス招待ユーザー-->初期設定画面 class 初期ユーザー #ffe4b5{ } hide 初期ユーザー members hide 初期ユーザー fields hide 初期ユーザー circle 初期ユーザー-->代表ユーザー作成画面 ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up