SlideShare une entreprise Scribd logo
1  sur  55
UML速習会
図で表現するということ
住友孝郎/Takao Sumitomo
シゴトでココロオドル
• 住友 孝郎(Takao Sumitomo)
• たぶんAndroidアプリ開発者
• その他
– 電子工作
– OpenCV
– 技術同人誌の執筆
• Twitter:@cattaka_net
• ウォンテッドリー株式会社所属
自己紹介
シゴトでココロオドル
UMLとは
シゴトでココロオドル
• Unified Modeling Languageの略
• 複数の図から構成される表現方法
• OMG(Object Management Group)が管理
• 様々な側面から対象を描くことができる
概要
シゴトでココロオドル
• 一般的な表記法
– フローチャート
– バブルチャート
– データフロー図
• 主な問題
– 表現力が弱い
– オレオレ記法を入れざるを得ない
なぜUMLか
シゴトでココロオドル
• オレオレ記法が入ると、、、
– 描いた人にしかわからない
– 矛盾が発生しやすい
• なので、こなれた表記法を使いましょう
– すなわちUMLを用いる
なぜUMLか
シゴトでココロオドル
• スケッチとして
• 設計図として
• プログラミング言語として
何に使えるか
シゴトでココロオドル
• 紙に描けないものは実装できない
• 実装できても正しく動いてるか確認できない
主張
もちろん設計の全てを描き出す必要はない
シゴトでココロオドル
• 主語-動詞-目的語の関係
– 例:「ファイル送信機能」は「チャット機能」を拡張する
• 物やデータの移動の関係
– 例:「商品」を「倉庫」からお客様のところへ配送する
余談:オレオレ記法に見られる矢印
これらを区別なく描くとグラフを見た人が混乱する
シゴトでココロオドル
UMLの使った開発の進め方
シゴトでココロオドル
• 実装は大きく3つの側面がある
実装の三面図
実装
振る舞い 構造
相互作用
シゴトでココロオドル
• 実装の幻を思い浮かべる
実装
の幻
開発の進め方1
シゴトでココロオドル
• 3つの側面の図を描く
開発の進め方2
実装
の幻
振る舞い図 構造図
相互作用図
シゴトでココロオドル
• お互いの図に矛盾が無いことを確認する
開発の進め方3
振る舞い図 構造図
相互作用図
シゴトでココロオドル
• 実際の実装を作っていく
開発の進め方4
振る舞い図 構造図
相互作用図
本物
の
実装
シゴトでココロオドル
UMLの各図の紹介
シゴトでココロオドル
• 構造図
– オブジェクト図
– クラス図
– パッケージ図
– コンポーネント図
– コンポジット構造図
– 配置図
UMLの図の種類
• 振る舞い図
– ユースケース図
– アクティビティ図
– ステートマシン図
• 相互作用図
– コミュニケーション図
– シーケンス図
– タイミング図
– 相互作用概要図
シゴトでココロオドル
• ユーザー視点でシステムの振る舞いを描く
• システムの要件とその関連の整理に便利
振る舞い図:ユースケース図
シゴトでココロオドル
• ユーザー視点でシステムの振る舞いを描く
• システムの要件とその関連の整理に便利
振る舞い図:ユースケース図
シゴトでココロオドル
• 書き方
– 登場人物を洗い出す
– ユースケース(やりたいこと)をリストアップする
– 登場人物とユースケースを図に描き出す
– それぞれの関連の線を引く
振る舞い図:ユースケース図
シゴトでココロオドル
振る舞い図:ユースケース図
シゴトでココロオドル
• 順次処理や並列処理を表記できる
• フローチャートに似た表記法である
• 開始ノードから終了ノードへの一連の流れで表す
振る舞い図:アクティビティ図
シゴトでココロオドル
• 描き方
– 登場人物を洗い出す
– 登場人物のアクション(やること)をリストアップす
る
– アクションを図に描き出す
– それぞれの順序の線を引く
振る舞い図:アクティビティ図
シゴトでココロオドル
振る舞い図:アクティビティ図
シゴトでココロオドル
• 相互作用の順序を厳密に表すことが出来る
• 横方向にオブジェクトを並べて表記する
• 上から下へ時系列順に表記する
• マルチスレッド処理の記述に威力を発揮する
相互作用図 :シーケンス図
シゴトでココロオドル
• 描き方
– 登場人物を洗い出す
– 登場人物間のメッセージ(やりとり)をリストアップ
する
– メッセージの順番を整理する
– 登場人物のライフラインを引く
– メッセージをライフライン上に描いていく
相互作用図:シーケンス図
シゴトでココロオドル
• オブジェクト間の相互作用を表す
• オブジェクト間の接続(関係)を表す
相互作用図:コミュニケーション図
シゴトでココロオドル
• 描き方
– 登場人物を洗い出す
– 登場人物間のメッセージ(やりとり)をリストアップ
する
– 登場人物を図に描く
– 登場人物間で関連があるものに線を引く
– 番号を振りならがメッセージを書き込んでいく
相互作用図:コミュニケーション図
シゴトでココロオドル
• システムの構造を表現する
• システム全体の構成を見渡せる
構造図:コンポーネント図
シゴトでココロオドル
• 描き方
– コンポーネントを洗い出す
– 各コンポーネントが提供する機能を洗い出す
– 各コンポーネントが必要とする機能を洗い出す
– 提供する機能と必要とする機能を繋いでいく
構造図:コンポーネント図
シゴトでココロオドル
• クラス間の構造や関連を表現する
• ER図のように多重度の表現にも強い
構造図:クラス図
リンク
コンポジション
シゴトでココロオドル
• 描き方
– 登場するクラスを洗い出す
– 関連するものに線を引く
– ユースケースなどから多重度を決定する
– 必要な属性や操作を埋めていく
構造図:クラス図
シゴトでココロオドル
例:反社チェックをUMLで描く
実装
の幻
振る舞い図 構造図
相互作用図
シゴトでココロオドル
反社チェックをアクティビティ図で描く
シゴトでココロオドル
反社チェックをシーケンス図で描く
シゴトでココロオドル
例:Syncの全体設計をUMLで描
く
実装
の幻
振る舞い図 構造図
相互作用図
シゴトでココロオドル
Syncの全体設計をユースケース図をUMLで描く
シゴトでココロオドル
Syncの全体設計をコンポーネント図をUMLで描く
シゴトでココロオドル
例:認証の流れをUMLで描く
実装
の幻
振る舞い図 構造図
相互作用図
シゴトでココロオドル
認証の流れをアクティビティ図
シゴトでココロオドル
認証の流れをシーケンス図
シゴトでココロオドル
認証の流れをコミュニケーション図
シゴトでココロオドル
実装
の幻
振る舞い図 構造図
相互作用図
例:Syncアプリの構成をUMLで
描く
シゴトでココロオドル
Syncアプリの構成をクラス図で描く
シゴトでココロオドル
Syncアプリの状態遷移をステートマシン図で描く
シゴトでココロオドル
実習:UMLで書こう
シゴトでココロオドル
• コンソールアプリの三目並べ
• 先手と後手が交互に入力する
• 勝負がつくと終了する
お題:三目並べ
シゴトでココロオドル
ユースケース図
シゴトでココロオドル
アクティビティ図
シゴトでココロオドル
クラス図
シーケンス図
シゴトでココロオドル
まとめ
シゴトでココロオドル
• メリット
– 矛盾が発生しにくい
– 一つの事象を複数の方面から捉えられる
– 他人との意思疎通に使える
• デメリット
– 冗長な表記が多い
– 図の数が多い
UMLについて
シゴトでココロオドル
• UMLに限らず物事をモデル化して捉えよう
• 自身の思考のモデルを増やそう
• 意思疎通を取る手段を増やそう
最後に
シゴトでココロオドル
ご清聴ありがとうございました

Contenu connexe

Tendances

Tendances (20)

StreamPaaSのご紹介
StreamPaaSのご紹介StreamPaaSのご紹介
StreamPaaSのご紹介
 
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data science
 
畳み込みLstm
畳み込みLstm畳み込みLstm
畳み込みLstm
 
JVS:フリーの日本語多数話者音声コーパス
JVS:フリーの日本語多数話者音声コーパス JVS:フリーの日本語多数話者音声コーパス
JVS:フリーの日本語多数話者音声コーパス
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
 
Data Engineering Meetup #1 持続可能なデータ基盤のためのデータの多様性に対する取り組み
Data Engineering Meetup #1 持続可能なデータ基盤のためのデータの多様性に対する取り組みData Engineering Meetup #1 持続可能なデータ基盤のためのデータの多様性に対する取り組み
Data Engineering Meetup #1 持続可能なデータ基盤のためのデータの多様性に対する取り組み
 
Spring boot 勉強会
Spring boot 勉強会Spring boot 勉強会
Spring boot 勉強会
 
九州大学教育ビッグデータプロジェクト ~ラーニングアナリティクス(LA)の活用~
九州大学教育ビッグデータプロジェクト ~ラーニングアナリティクス(LA)の活用~九州大学教育ビッグデータプロジェクト ~ラーニングアナリティクス(LA)の活用~
九州大学教育ビッグデータプロジェクト ~ラーニングアナリティクス(LA)の活用~
 
Transformerを雰囲気で理解する
Transformerを雰囲気で理解するTransformerを雰囲気で理解する
Transformerを雰囲気で理解する
 
Marp Tutorial
Marp TutorialMarp Tutorial
Marp Tutorial
 
MIRU2013チュートリアル:SIFTとそれ以降のアプローチ
MIRU2013チュートリアル:SIFTとそれ以降のアプローチMIRU2013チュートリアル:SIFTとそれ以降のアプローチ
MIRU2013チュートリアル:SIFTとそれ以降のアプローチ
 
時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?
 
セミナー資料「STAR-CCM+ クラウド活用ハンズオンセミナー with Rescale」
セミナー資料「STAR-CCM+ クラウド活用ハンズオンセミナー with Rescale」セミナー資料「STAR-CCM+ クラウド活用ハンズオンセミナー with Rescale」
セミナー資料「STAR-CCM+ クラウド活用ハンズオンセミナー with Rescale」
 
LLM+LangChainで特許調査・分析に取り組んでみた
LLM+LangChainで特許調査・分析に取り組んでみたLLM+LangChainで特許調査・分析に取り組んでみた
LLM+LangChainで特許調査・分析に取り組んでみた
 
[DL輪読会]Diffusion-based Voice Conversion with Fast Maximum Likelihood Samplin...
[DL輪読会]Diffusion-based Voice Conversion with Fast  Maximum Likelihood Samplin...[DL輪読会]Diffusion-based Voice Conversion with Fast  Maximum Likelihood Samplin...
[DL輪読会]Diffusion-based Voice Conversion with Fast Maximum Likelihood Samplin...
 
Cv20160205
Cv20160205Cv20160205
Cv20160205
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
 
型安全性入門
型安全性入門型安全性入門
型安全性入門
 
【DL輪読会】Flow Matching for Generative Modeling
【DL輪読会】Flow Matching for Generative Modeling【DL輪読会】Flow Matching for Generative Modeling
【DL輪読会】Flow Matching for Generative Modeling
 
【DL輪読会】Flamingo: a Visual Language Model for Few-Shot Learning 画像×言語の大規模基盤モ...
【DL輪読会】Flamingo: a Visual Language Model for Few-Shot Learning   画像×言語の大規模基盤モ...【DL輪読会】Flamingo: a Visual Language Model for Few-Shot Learning   画像×言語の大規模基盤モ...
【DL輪読会】Flamingo: a Visual Language Model for Few-Shot Learning 画像×言語の大規模基盤モ...
 

Similaire à Uml速習会

Eclipse modeling 勉強会 はじめに
Eclipse modeling 勉強会 はじめにEclipse modeling 勉強会 はじめに
Eclipse modeling 勉強会 はじめに
Akira Tanaka
 

Similaire à Uml速習会 (9)

勉強会資料 Uml概要
勉強会資料 Uml概要勉強会資料 Uml概要
勉強会資料 Uml概要
 
Xtext And Grails20091218
Xtext And Grails20091218Xtext And Grails20091218
Xtext And Grails20091218
 
「FireMonkeyの仕組み」
「FireMonkeyの仕組み」「FireMonkeyの仕組み」
「FireMonkeyの仕組み」
 
RTミドルウェアサマーキャンプ資料2022.pdf
RTミドルウェアサマーキャンプ資料2022.pdfRTミドルウェアサマーキャンプ資料2022.pdf
RTミドルウェアサマーキャンプ資料2022.pdf
 
プロ用CMSフレームワークテーマ「echo」のご紹介
プロ用CMSフレームワークテーマ「echo」のご紹介プロ用CMSフレームワークテーマ「echo」のご紹介
プロ用CMSフレームワークテーマ「echo」のご紹介
 
ビジネスロジック実装進化論 - An Evolution of Business Logic Implementation
ビジネスロジック実装進化論 - An Evolution of Business Logic Implementationビジネスロジック実装進化論 - An Evolution of Business Logic Implementation
ビジネスロジック実装進化論 - An Evolution of Business Logic Implementation
 
Eclipse modeling 勉強会 はじめに
Eclipse modeling 勉強会 はじめにEclipse modeling 勉強会 はじめに
Eclipse modeling 勉強会 はじめに
 
みくみくまうすについて&Unity で使えるコーディングノウハウ
みくみくまうすについて&Unity で使えるコーディングノウハウみくみくまうすについて&Unity で使えるコーディングノウハウ
みくみくまうすについて&Unity で使えるコーディングノウハウ
 
HoloLens Demo
HoloLens DemoHoloLens Demo
HoloLens Demo
 

Plus de Takao Sumitomo

Plus de Takao Sumitomo (20)

僕は上スワイプでBottomSheetを出したかっただけなんだ
僕は上スワイプでBottomSheetを出したかっただけなんだ僕は上スワイプでBottomSheetを出したかっただけなんだ
僕は上スワイプでBottomSheetを出したかっただけなんだ
 
sharedUserIdを使った俺得開発ツールの作り方
sharedUserIdを使った俺得開発ツールの作り方sharedUserIdを使った俺得開発ツールの作り方
sharedUserIdを使った俺得開発ツールの作り方
 
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
 
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンドCamera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド
 
アプリを成長させるためのログ取りとログ解析に必要なこと
アプリを成長させるためのログ取りとログ解析に必要なことアプリを成長させるためのログ取りとログ解析に必要なこと
アプリを成長させるためのログ取りとログ解析に必要なこと
 
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
 
高速でトライ&エラーを するために気をつけてること
高速でトライ&エラーを するために気をつけてること高速でトライ&エラーを するために気をつけてること
高速でトライ&エラーを するために気をつけてること
 
Maker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきた
Maker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきたMaker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきた
Maker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきた
 
Viewを動的に変化させるアプローチ
Viewを動的に変化させるアプローチViewを動的に変化させるアプローチ
Viewを動的に変化させるアプローチ
 
プロダクトを育てるのにGoogleのサービスが助けてくれること
プロダクトを育てるのにGoogleのサービスが助けてくれることプロダクトを育てるのにGoogleのサービスが助けてくれること
プロダクトを育てるのにGoogleのサービスが助けてくれること
 
AdapterToolboxでRecyclerViewを楽にする
AdapterToolboxでRecyclerViewを楽にするAdapterToolboxでRecyclerViewを楽にする
AdapterToolboxでRecyclerViewを楽にする
 
エンジニアがプロダクト育成を始めるまでにやったこと
エンジニアがプロダクト育成を始めるまでにやったことエンジニアがプロダクト育成を始めるまでにやったこと
エンジニアがプロダクト育成を始めるまでにやったこと
 
Wantedlyのテスト事情
Wantedlyのテスト事情Wantedlyのテスト事情
Wantedlyのテスト事情
 
用途に合わせたアニメーションの実装方法
用途に合わせたアニメーションの実装方法用途に合わせたアニメーションの実装方法
用途に合わせたアニメーションの実装方法
 
potatotips (iOS/Android開発Tips共有会) 第19回 資料
potatotips (iOS/Android開発Tips共有会) 第19回 資料potatotips (iOS/Android開発Tips共有会) 第19回 資料
potatotips (iOS/Android開発Tips共有会) 第19回 資料
 
SQLiteDatabaseを無理矢理覗く
SQLiteDatabaseを無理矢理覗くSQLiteDatabaseを無理矢理覗く
SQLiteDatabaseを無理矢理覗く
 
開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程
 
テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜
 
勉強会資料 データ構造とアルゴリズム
勉強会資料 データ構造とアルゴリズム勉強会資料 データ構造とアルゴリズム
勉強会資料 データ構造とアルゴリズム
 
Firefox OSの何が嬉しいか
Firefox OSの何が嬉しいかFirefox OSの何が嬉しいか
Firefox OSの何が嬉しいか
 

Uml速習会