せっかくモデル図描くのなら、嬉しいことが多い方がいいよね!
by
Shin Kuboaki
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Object-Oriented Conference 2024 せっかくモデル図描くのなら、 嬉しいことが多い⽅がいいよね! 久保秋 真(チェンジビジョン) 2024年3⽉24⽇ 2024/03/24 ©Change Vision Inc. Object-Oriented Conference 2024 #ooc_2024_b
Slide 2
Slide 2 text
Object-Oriented Conference 2024 2 はじめに、ごめんなさい • 概要の肝⼼なところ、お約束が守れませんでした… • このセッションでは、上に挙げたような、あまりモデル図が活⽤できて いない⽅に向けて、モデル図の利⽤シーンや、モデル図を活⽤する⽅法 を紹介します。 2024/03/24 ©Change Vision Inc.
Slide 3
Slide 3 text
Object-Oriented Conference 2024 3 今⽇の話題 • みんな、モデルを作らなくなった…? • モデルを作らなくなったのはなぜか • これまでの時代とこれからの時代 • 再びモデルの必要性が⾼まる • 次の時代に備える • いまのうちに培っておくべきちから • いまの仕事の中で培う⽅法 • それに使えるツールと⽅法 2024/03/24 ©Change Vision Inc.
Slide 4
Slide 4 text
Object-Oriented Conference 2024 みんな、モデルを作らなくなった…? 2024/03/24 ©Change Vision Inc.
Slide 5
Slide 5 text
Object-Oriented Conference 2024 5 Googleでトレンドを調べてみた※1 • どうやらUMLやオブジェクト指向のモテ期は過ぎた? • 特別ではなく⼀般的なものになった模様 • ということは、みんなUMLでモデル図を描いているってこと? 2024/03/24 ©Change Vision Inc. 2004/1 2014/1 2024/1 ※1 https://bit.ly/3PzLaQq
Slide 6
Slide 6 text
Object-Oriented Conference 2024 でも2020年のOOCに出展したときは… ©Change Vision Inc. 2024/03/24 astah*を 知らない 😭 モデリングはしない、 or スケッチどまり PlantUML or 描画系
Slide 7
Slide 7 text
Object-Oriented Conference 2024 7 どうして作らなくなったの? • 以前は…頼れるモデルがなかったからかも? • システムの構造や振舞いは⾃前で作っていた • 実装する前に考えることが多かった • 実装技術の発展にフレームワーク等が追いつけていなかった • RailsやSpringBootが登場する前のことって覚えていますか? 2024/03/24 ©Change Vision Inc. ※1 SmalltlakのSystem Browserの例 https://cuis-smalltalk.github.io/TheCuisBook/A-brief-introduction-to-the-system-Browser.html もっともっと昔: クラス図もなかった時代 (Smalltalkのブラウザ) でも、この時代に戻って いるような印象…
Slide 8
Slide 8 text
Object-Oriented Conference 2024 8 どうして作らなくなったの? • いまは、頼れる環境がある • ⾯倒⾒のよい、リッチなフレームワークとサポートライブラリがある • 普遍的な構造や要素の構築は、ライブラリやフレームワークに移動した • ベースを継承すれば、アプリの構造はできている • デザインパターンに沿って実装できる ©Change Vision Inc. 2024/03/24
Slide 9
Slide 9 text
Object-Oriented Conference 2024 9 どうして作らなくなったの? • モデルの関⼼はドメインモデルへ移った • 業務フロー、ビジネスロジック • 会社の利益構造やDXのために重要な、業務領域固有のもの • そして、ドメイン駆動設計(DDD)がやってきた • 業務領域の開発において、モデルはとても⼤切 2024/03/24 ©Change Vision Inc. 翔泳社 https://www.shoeisha.co.jp/book/detail/9784798121963f 増⽥さんほかDDDなすごい⽅々の有益な セッションがあるので、私はここには踏 み込まないでおきますね…(笑)
Slide 10
Slide 10 text
Object-Oriented Conference 2024 10 どうして作らなくなったの? • さらに使えるドメインモデルも既にある分野では… • 安定して使えるモデルがあるから、それを使えばよい • 似たサイトの資産があれば、同じような作りを提案できる • 遵法な商売はどこでも似ていてるのがわかった • 販売、財務、給与、在庫管理、CMS、eコマース、... etc. • 楽天にお店を出すなら、店舗と品物のデータを作れば済む • だからSAPやSalesforceが席巻した(UIのことは…) • 実装になってから考えることが減った • すぐ実装できるなら、作って動くものをユーザーに⾒てもらえる • 設計書を作って、「これでちゃんと作るから」って約束しなくても済む ©Change Vision Inc. 2024/03/24
Slide 11
Slide 11 text
Object-Oriented Conference 2024 11 どうして作らなくなったの? • フレームワークとドメインモデルが揃ったから • 他⼈から提供済みのものを使えば済む領域が増えた • アプリ(フロントエンド)が差分開発のホットポイント 2024/03/24 ©Change Vision Inc. フレームワーク インフラ アプリ ドメインモデル フロントエンド ✓ ✓ ✓ ✓: 使うモデル
Slide 12
Slide 12 text
Object-Oriented Conference 2024 12 どうして作らなくなったの? • モデルを作るにしてもツールが⼀⻑⼀短 2024/03/24 ©Change Vision Inc. ドローイングツール PlantUML モデリングツール ◯ 記法に縛られない 共同編集できるもの が多い Webから使える テキスト形式 コードリポジトリと の相性がよい ⾃動レイアウト 記法や制約をガイドす る モデル要素として扱う △ 記法や制約をガイド する 図としてしか扱えな い 複雑な図を描く 頭に図が浮かばない とコードが書けない レイアウトの指定 専⽤アプリが必要 共同編集 コードリポジトリとの 相性が悪い
Slide 13
Slide 13 text
Object-Oriented Conference 2024 13 どうして作らなくなったの? • ウェブページやUIにUMLは向かない? • かつてはモデルでUIをなんとかしようとしていた • 「UML User Interface」で検索すると⾒つかるのは論⽂ばかり • 本だとだいたい1990年代 • Building Web Applications with UML • User Interaction and Interface Design with UML • Constructing the User Interface with Statecharts • その後はあまり取り上げられていない • 最近は、どんなふうに捉えているか • 本質的にはデータストリーム系の処理になっている • 関数型を使っていなくても、関数型になじむような処理が向いている 2024/03/24 ©Change Vision Inc.
Slide 14
Slide 14 text
Object-Oriented Conference 2024 14 どうして作らなくなったの? • 「モデルは使う時代」になった • 業務ドメインの既存モデル+リッチなフレームワークとライブラリ • 実装して試す⽅がはやくなった • ⼤部分の設計が済んでいるのなら、すぐ実装できる • 新しく作る場所のコードを作れば済むから • UIは、モデルで書くよりコードを試したほうが可否がわかる • 視覚的な確認、動作のフィーリング、Seleniumなどによる⾃動テスト • 設計書とかモデル図が、みんな同じに⾒える • 現状のモデルで表せている部分は差が少ないから • でも、モデルは必要 • ドメインモデルもフレームワークも使っているんだから 2024/03/24 ©Change Vision Inc.
Slide 15
Slide 15 text
Object-Oriented Conference 2024 15 組込み現場はちょっと違う • ドローン制御の例 2024/03/24 ©Change Vision Inc. 事例は、平鍋、ドローンの数学・物理・制御基礎より https://speakerdeck.com/hiranabe/math-physics-and-dynamics-of-drone-in-hakoniwa 航⾏等の機能を ドローンにやらせる ドローンをちゃんと⾶ばす (操作量を求めてドローンへ渡す) ドローンから位置や 姿勢の情報を得る ドローンへの 航⾏の指⽰ 全体がドローンを使ったアプリのモデル ドローンを制御するためのモデル ドローンを制御する際の座標系 (操作や観測の対象)
Slide 16
Slide 16 text
Object-Oriented Conference 2024 16 組込み現場はちょっと違う • ドローン制御の例(続) 2024/03/24 ©Change Vision Inc. 事例は、平鍋、ドローンの数学・物理・制御基礎より https://speakerdeck.com/hiranabe/math-physics-and-dynamics-of-drone-in-hakoniwa 得られた操作量の計算 式をコードに変換 ローターの推⼒・トルクから 機体の位置と姿勢を求める 計算⽅法を定める ローターの推⼒・トルク から機体の位置と姿勢を 求める⽅法のモデル
Slide 17
Slide 17 text
Object-Oriented Conference 2024 17 組込み現場はちょっと違う • かつては⼿書きを信じていた • ⼝頭で頼む → 特定の領域の制御と実装の経験値の⾼い職⼈が請負う → アセンブラやCで書く → 実機で動かす • モデリングとかいう代物は相⼿にされなかった • 「なんとか⽣成とかそれ⼤丈夫なん?」 • プログラムで作ったコードなんぞ信⽤できんら • 「モデル?なに?それって動くの?」 • 動かんなら作らんのと同じやな • 「うちのアセンブラコードのほうが、⼩さくて早くて正確よ」 2024/03/24 ©Change Vision Inc.
Slide 18
Slide 18 text
Object-Oriented Conference 2024 18 組込み現場はちょっと違う • いまは「怖くてコードは⼿で書かせられない」 • リーンバーン、ハイブリッド、複合動作…で、やること増えすぎ • ⼿書きコードでは制御不可能に • ⼈はモデルは作るけどコードは作らない • 考えながらコードを書くのは危険(安全や品質のためにも) • 数式をモデルとしたシミュレーション → 動作に必要なコードを全て⽣成 → HILSや実機で実⾏ • MATLAB/Simulinkとオートコーダー(コード⽣成器)が普及 • シミュレーションして動くとわかってからコード⽣成 • 設計の情報をもっとコードからモデルへ移す • ちゃんとしたシミュレーションのためにも • 欲しいコードに到達するためにも 2024/03/24 ©Change Vision Inc.
Slide 19
Slide 19 text
Object-Oriented Conference 2024 19 オブジェクト指向の変遷 • オブジェクト指向の発展の歴史※1 2024/03/24 ©Change Vision Inc. ※1 「オブジェクト指向の発展の歴史」⽇経クロステック https://xtech.nikkei.com/it/article/lecture/20070710/277100/
Slide 20
Slide 20 text
Object-Oriented Conference 2024 20 オブジェクト指向の変遷 • まずプログラミングから始まった • Smalltalkは1970年代、Javaは1995年、Rubyは1998年※1 • 構造化とかERとかステートマシンは割と古い • オブジェクト指向分析・設計の元 • 構造化やERは1970年代、HarelのStatechartsが1987年 • オブジェクト指向分析・設計は上記の20年後 • S-MやBoochやOMTで1990年代後半 • モデリング記法が統⼀されるのはさらに10年後 • UMLのドラフト(0.98)が1998年、UML 2.0は2004年 ©Change Vision Inc. 2024/03/24 ※1 初の公開の年、誕⽣は1993年2⽉24⽇(毎年のメジャーリリース⽇) https://logmi.jp/tech/articles/279858
Slide 21
Slide 21 text
Object-Oriented Conference 2024 21 UML以前はこんな時代だった • オブジェクト分析と設計 : オブジェクト指向21⼿法の解説と徹底⽐較 • アンドリュー T.F.ハット (編), 1995. • 世界中の先⽣⽅が、オブジェクト指向分析・設計の必要性を説いていた • でも、こんなにたくさんあったら、同じ⼿法使える⼈を調達できない… 2024/03/24 ©Change Vision Inc.
Slide 22
Slide 22 text
Object-Oriented Conference 2024 22 再び歴史は繰り返す(かもしれない) • 実は、いまは「プログラミングの時代-その2」 • みなさんがモデルを作らなくなって5年?10年? • もうすぐ実装やってられない時代に(組込みをみよ) • Smalltalkを思い出す(彼らはOOをわかっている連中だった) • そして、「分析・設計の時代-その2」がやってくる • 実装段階では対処が難しい、煩わしいことが増えてくる • セキュリティ、セーフティ、⼤規模なIoT・System of Systems • そして、その煩わさに対処する分析・設計⼿法が出てくる • ⽣成系AIの台頭が予感させている? ©Change Vision Inc. 2024/03/24
Slide 23
Slide 23 text
Object-Oriented Conference 2024 23 再び歴史は繰り返す(かもしれない) • 新しい仕事のやり⽅に変わり始めている(すでに) • 既に世の中の何処かにあるもの使う⼈ • ⽣成系AIに頼んでやってもらうことが増える • 新しい道を作る⼈ • 「⽣成系AIへ焚べる」ような成果を⽣み出す ©Change Vision Inc. 2024/03/24
Slide 24
Slide 24 text
Object-Oriented Conference 2024 24 再び歴史は繰り返す(かもしれない) • 新しい⽅法に合う⼿法や記法がほしくなる • 表現⼒の拡⼤ • ⼿法や記法を⽀援するツールも必要になる • 作るものはコードではなくなるだろう • モデル、AIへの⼊出⼒の⾼度化 • より設計で決め、記載することが多くなる • 実装しながら決めていたことがらが、設計(モデル)に移る ©Change Vision Inc. 2024/03/24
Slide 25
Slide 25 text
Object-Oriented Conference 2024 次の時代に備える 2024/03/24 ©Change Vision Inc.
Slide 26
Slide 26 text
Object-Oriented Conference 2024 26 どんなちからを備えるべきか • 分析や設計についてモデルで考える頭が必要 • コードを書きながら考えていたことが、設計(モデル)へ移る • 考えていたことをモデルの情報として表現できる • 具体的なコードのない(動かせない)場⾯でも • システムの要件や機能、構造や振舞いを検討できる • 分析や設計はモデルで表現・議論するちからが必要 • その表記はUMLではなくなっているかもしれないが… • AIに対しても、コードではなくモデルでやり取りすることになる • ⾃然⾔語であっても、AIと交換できるなら話すことばはモデルになる 2024/03/24 ©Change Vision Inc.
Slide 27
Slide 27 text
Object-Oriented Conference 2024 27 コードで考えるからモデルで考えるへ • いまはコードで済むことを別の表現でも表せるように • コードでは済ませられない話に合わせられるように • コードじゃないと表せないと思い込まない • 「わかりにくいから図にしてこい」 • どうして図の⽅が、コードや⽂章よりわかりやすいんでしょう? • 2つあります • 「図のほうがわかりやすい」を活かすには • モデルの持つ効⽤を知る • それに⾒合う整理と表現に慣れておく 2024/03/24 ©Change Vision Inc.
Slide 28
Slide 28 text
Object-Oriented Conference 2024 28 モデルを⽬に⾒える形で表現する • 実際に図を描いてみる • 頭に浮かべるだけでなく、⼿やツールを使って • ぼんやりとしたものは、他⼈やAIと共有できない • ⾒える形、送受できる形で表して、初めて他へ伝えられる • 図を描くにはなんらかの表記が必要 • 数式、回路図、Simulink • UML、SysML、将来登場する表記法? • 図を描くにはツールが必要 • ホワイトボード • ドローイングツール • モデリングツール? 2024/03/24 ©Change Vision Inc.
Slide 29
Slide 29 text
Object-Oriented Conference 2024 29 モデルで詳細を表現できるようになる • コードで伝えていたことと同様な情報を伝える • モデルの情報とプロセスが適⽤する変換規則からコードが作れる • システムの構成要素や振舞いのデータ化(テーブル化) • モデルには機能・仕様のことばが使われる • ドメイン駆動の主張が⽣き残る • コードにはドメインのことばが残っているべき • プラットフォームとドメインのつながりもモデルで表す 2024/03/24 ©Change Vision Inc.
Slide 30
Slide 30 text
Object-Oriented Conference 2024 30 モデルで詳細を表現できるようになる • コードに直すのに必要になる情報をモデルに収める • プロセスが適⽤する変換規則もモデルで表してみる • レガシーなコードもクラスなりライブラリにみなして • 詳細を記載するならモデリングツールが必要 • 詳細を記載する記法に対応している • 詳細を編集できる機能をツールのエディタが持っている • 特性(属性や操作と)識別できるように保存できる • モデル要素の間の整合をとる • システムは複数のモデル図の組合せで表す • 複数のモデル中の要素や情報の整合を⼈が担保するのはムリ 2024/03/24 ©Change Vision Inc.
Slide 31
Slide 31 text
Object-Oriented Conference 2024 31 PlantUMLのコードをツールで編集してみよう • AI等でPlantUMLでモデルを作ってもらう • もしくは、他の⽅法で作成したPlantUMLのコード 2024/03/24 ©Change Vision Inc. @startuml class main_task class OS class touch_sensor{ +is_pressed() : void } class motor main_task --> OS driver --> motor porter --> touch_sensor class porter{ +transport() : void } main_task --> porter porter --> OS class driver{ -dr_power : int +init() : void +turn_left() : void +turn_right() : void +stop() : void } class color_sensor porter --> touch_sensor class ultrasonic_sensor{ +get_distance() : void } class speaker class timer{ +start() : void +stop() : void +is_timedout() : bool +is_started() : boolean } porter --> timer timer --> OS porter --> speaker porter --> ultrasonic_sensor porter --> driver porter --> color_sensor @enduml
Slide 32
Slide 32 text
Object-Oriented Conference 2024 32 PlantUMLのコードをツールで編集してみよう • プラグインを使ってツールへインポートする 2024/03/24 ©Change Vision Inc.
Slide 33
Slide 33 text
Object-Oriented Conference 2024 33 PlantUMLのコードをツールで編集してみよう • モデル図を確認する • できたモデル図と頭の中で考えていたモデルとの違いを確認する • モデルを編集して情報を増やす • ⼊出⼒が思った通りでないなら • プラグインの不備 2024/03/24 ©Change Vision Inc.
Slide 34
Slide 34 text
Object-Oriented Conference 2024 34 PlantUMLのコードをツールで編集してみよう • モデルングツールで編集して… 2024/03/24 ©Change Vision Inc.
Slide 35
Slide 35 text
Object-Oriented Conference 2024 35 PlantUMLのコードをツールで編集してみよう • PlantUMLへ書き戻す 2024/03/24 ©Change Vision Inc.
Slide 36
Slide 36 text
Object-Oriented Conference 2024 まとめ 2024/03/24 ©Change Vision Inc.
Slide 37
Slide 37 text
Object-Oriented Conference 2024 37 まとめ • モデルは使う時代になった • 歴史が繰り返すなら、ふたたびコードからモデルへと移る • 実はAIの台頭がその端緒 • 再びモデルの必要性が⾼まる • 次の時代に備える • モデルで考える頭 • モデルを⽬に⾒える形に表現する • 精密なモデルで表現する • いまの仕事の成果でやってみてる • いまあるツールを使ってやってみる ©Change Vision Inc. 2024/03/24
Slide 38
Slide 38 text
Object-Oriented Conference 2024 38 モデリングツールへの要求も変わった • 困っている場所は移動した • これまでツールが⽀援していたところから、違うところへ移動した • いま困っているところを解消する⼿段になる • いまかかっている⼿間を、コードを書いて試すより素早く楽にできるか • そこではオブジェクト指向やUMLとは別の表現がいるのかも • いまの開発環境にフィットする機能・使⽤感がいる • Webブラウザで利⽤できる(インストールレス) • 共同編集、分散編集とマージ • モデルや図の版管理、成果群のタグづけ • 開発環境との⼊出⼒(API、オートメーション) • ⽂書の中の図なら埋め込みが、できないなら⽂書が作れる ©Change Vision Inc. 2024/03/24 うちもまだまだ がんばります!
Slide 39
Slide 39 text
Object-Oriented Conference 2024 39 Q&A • みなさんの聴講の⽬的は果たせましたか? • このセッションで得られたことはなんですか? • なにから始めますか? ©Change Vision Inc. 2024/03/24
Slide 40
Slide 40 text
Object-Oriented Conference 2024 せっかくモデル図描くのなら、 嬉しいことが多い⽅がいいよね! 久保秋 真(チェンジビジョン) 2024年3⽉24⽇ 2024/03/24 ©Change Vision Inc. Object-Oriented Conference 2024 ありがとうございました