13K Views
March 18, 22
スライド概要
2013/11/9 DevLove甲子園発表資料 チーム創 4階裏 で発表したもの。
SlideShareから2022/3/18に移行。2022/3/18時点でSlideShareの閲覧数は「144 likes/35,736 views」でした。
モデリングもしないで アジャイルとは何事だ?
イメージは こんな感じ?
自己紹介 原田 巌 @iwaoRd 「人生、全速力で回り道」 モデモデ言ってるSIer勤務
今日の話 も・で・り・ん・ぐ
とある現場のモデリング 客A「・・・と言う訳で、業務が流れていく わけです」 客B「特にあの業務が・・・とかできるよう にしたいのです」 客C「じゃあ、@iwaoRdさん、、、
客ABC「描いてみて!!」
Context(背景) • • • • • 愛情溢れるSIerの現場の話です お客様との間に壁があります 社内でも組織間に壁があります 現場でいろんな会社の人と壁があります お客様はエンドユーザと壁があります
制約! でも、現場の壁(窓ガラス)は貼り物NGです!
壁はモデル書き放題なのに!
モデル書いていますか?
どんなモデル書いていますか?
私は現場でモデルを描いてます まぁ、ほとんど お見せ できませんが!
モデルの意義 モデルで得たいものってなんだろう?
例えば、モデルを通した会話 「あの基本情報はいつ展開されますか?」 「枠取りで順番が決定されます」 「ファイリングによって出来たモノは割付 してから統合した方がいいです」 お客様の業務で使われる専門用語。 それを一緒に使う日常会話。
共通認識
でも最近のモデルの評価って
これって美味しいの? ユースケース図
現代の地獄絵図 ユースケース記述
分かるんだけど・・・無駄? シーケンス図
分かるようで分からない ロバストネス図
流行っているけど、正しいの? 難解! ドメインモデル
巻き起こる様々な問題 「お前のモデルは正しくない」 m9(^Д^) もはや全面戦争!
さて、もう一回聞きます モデルって必要ですか?
こんな事言ってますが・・・
モデルは必要だよ!!
モデルとは? もう一度、モデルについて考えましょう
モデルアンチパターン モデルが成果物である だから、全部がモデルで書かれていないと いけない。
モデルアンチパターン モデルは万人が分からないといけない だから、明日から来た人がモデルだけ見て、 理解できないといけない
モデルってドキュメント? アジャイルマニフェスト ここらへん?
アジャイルのドキュメント こんな記事を読みました 「2タイプのアジャイル文書 ― 2種類しかない」 http://www.infoq.com/jp/news/2009/08/agile-documentation • プロジェクトで働くチームメンバ全員が 必要とする文書 • 製品と一緒に出荷される文書 こうゆう文書は必要だよね!?
モデルって? • プロジェクトで働くチームメンバ全員が 必要とする文書 この役割を持っているべきだと思う。 そしてそれを生み出す活動がモデリング。
アジャイル時代のモデリング <<平鍋さんの記事>> Modeling in the Agile Age: What to Keep Next to Code to Scale Agile Teams http://www.infoq.com/articles/kenji-modeling-agile
重要なのは? 1)全体感、目的、知識の共有 ビッグピクチャとして全体を捕えること。 システムの背骨を築くこと。 そしてなによりユビキタス言語を築くこと。 2)実装のための設計をすること 素早くより良い設計を手に入れること。 なにより良いコードを書き上げること。
分析 と 設計 そのためにモデリングをする必要がある!
分析/設計すること 問題を明らかにして、解決の仕組みを作る そのために 相手や自分の頭の中を形にする、 言語化する これって大変。 でも、直ぐにコードを組んだって同じ問題が起 こる。
その為に現場でのモデリング ホワイトボードの前にペンを持って立つ!
その為に現場でのモデリング 1. ホワイトボードの前にペンを持って立つ 2. 話を聞く 3. とにかく図を書く 時にモデルが書けない場合は図解で書く 4. 客の話を繰り返しながら図を説明する 5. 「そんなんじゃない」と言われる 6. 2に戻る
分かったこと • モデリングを通した学び場の形成 • モデリングを通して共通認識の形成に向 けたコミュニケーションが産まれる
完成したモデルを渡すんじゃない 納品すれば終了なんて、そちも悪よのぅ
でも、ちょっと待った
現場のアンチパターンの話 だからと言って、一緒に形にすれば良い問題で もない。 聞いた事をモデルにする。 ユースケースから要求を明らかにする。 シナリオをウォークスルー出来るモデルを書く。 でも、何かが足らない!
デザイン あ
デザイン問答 すべてのモノの形や仕組みには理由がある
わ け
つまりモデルには 理由を考えることが重要 「なんで、その形にしたのか?」 「箱を結ぶ線にどんな意味があるのか?」 「その責務はそこが良いのか?」 より良いアイデアを得る為に考えぬいた末 に辿り着ける境地
現場でのモデリングの一幕 モデルを元に話しても何か納得感がない時 のお客様の一言。 客S 「いろいろ説明貰ったけど、挙げて 貰っている概念って、僕にとっては コレは“枠”で何か入れる“箱”の イメージなんだよね」
キタ━━(゚∀゚)━━!!!!
現場での新しい発見!! お客様の何気ない一言。 ヒントを元にモデルを見直すと全てがしっくり くる言葉が見つかる事がある。 ドメイン駆動設計 第8章より 「最も重要な洞察の中には、突如として現れて、 プロジェクト全体に衝撃を与えるものもあるの だ」 ブレイクスルー ⇒
モデルから得られるモノ 増田さんのDDD勉強会に参加して学んだ事 • 業務の現場にある肌感覚 • 業務アプリケーションの設計のコツ • 進むべき方向が分かる
ほしいもの 欲しいのは出来上がった図ではなく、 作るモノの理由だと思う。 モデリングの過程で得られる知識(学び) 本質
またまた ちょっと待ったー!
ある境界から奥にある暗黒面 シュヴァルツシルト半径 分析中毒 ハマったら抜け出せない
目的 モデルを書く目的を失ってはいけない。 何も考えずにモデリングしても意味が無い。
より良いモノを作るために モデリングはなにより動くコードの為。 モデリングとコードの価値損益分岐点 モ デ リ ン グ の メ リ ッ ト 損益分岐点 スタートダッシュ時の モデリングのメリット 動くコードが重要
<<アジャイルソフトウェア開発の奥義より>> 第6章 プログラミングエピソード より Bobおじさんがボウリングゲームを始める 時にやったこと 1. 図解 2. UMLダイアグラムの作成 1 4 5 4 14 5 6 29 Game 10 Frame 1…3 Throw ※Bobおじさんはこの後にダイアグラムは何の役にも立たなかったと言っていたけどね♪
アジャイルな設計方法 作るモノをいろいろな視点で見る大切さ モデラーとプログラマの視点でシステムを見ること
コードとモデリング 【バードビュー】 欲しいモノを叶える力を 私達は持っている!
持って帰って実践してみて! より良い設計/コードの為に 明日から出来るモデリング
その1 クラス図と図解のラフスケッチ 簡単に書いて頭整理 形にすると気付く事
その2 ペアモデリング 二人以上で話す事 人に話すと矛盾が分かる ぼっちな人は・・・
Rubber Ducking • 全てを知る大先生 • 彼に聞けば全て分かる • 嘘だと思うなら、やっ てごらん? 要は禅問答
その3 とにかく書いてみる! モデリングの閃光弾! 暗闇の戦場に突撃する必要はない 人と話す時、ホワイトボードの前に立ちペ ンを握るだけ!
「描いてみて!!」
モデリングは難しくない 「大丈夫、怖くない」
まとめ • 問題や目的、本質を明確にする • 理解して理解される“場”を創る なにより 価値あるコードを実現する為に
モデリングしてみませんか? も・で・り・ん・ぐ
忘れてはいけない Context重要 モデルもモデリングも銀の弾丸ではない 戦術の一つとして用意しておいて欲しい
何より大切なもの
考え抜く事! Think!! 深く!深く! 深く!深く!
以上、ご静聴ありがとうございました
次回、予告
●おわり●