設計忘れからやってはいけない対症療法

 設計忘れからやってはいけない対症療法

ちゃんと詳細設計とか画面定義とかしないと痛い目みるよ、という失敗談です。反面教師にしてください。

188fa094614c1d9ec7dd01d4c568e4ca?s=128

mashirou1234

July 30, 2019
Tweet

Transcript

  1. 設計忘れからやってはいけない対症療法 代口勇真<@yu_mashirou> SekkeiKaigi

  2. はじめに ・DDDなどの設計ではなく仕様設計書の話になりま す。

  3. Typo

  4. Typo

  5. Typo 対処療法 : ☓ ↓ 対症療法 : ◦

  6. LTの目的 • 笑いネタではありませんがネタにしました • 基本設計・詳細設計の大切さ • 巷でよく聞く「仕様書はない/仕様書はソースコード」が発生 する要因は多分こんな感じで起きる(一因) • 一応Happy

    End(True End)です。安心してください(?)
  7. 結論

  8. 結論 _人人人人人人人_ > 論より設計 <  ̄Y^Y^Y^Y^Y^Y ̄   徹底しないと≪地獄≫が始まる……

  9. ことのはじまり #いつもここから

  10. ~前提で進んでいたこと~ ・新規案件で技術検証を行い、採択の上 開発が進むような進行。 ・外部会社との連携が必要になった。 ・期間は2月~5月で検証/開発を経て1次 リリース(予定) ・当初サーバサイドは一人のスタートだっ た。 ・後に増えるのは知っていた。(何人までか は把握していない)

    ・インフラは別チームに依頼する。
  11. ~前提で進んでいたこと~ ・新規案件で技術検証を行い、採択の上 開発が進むような進行。 ・外部会社との連携が必要になった。 ・期間は2月~5月で検証/開発を経て1次 リリース(予定) ・当初サーバサイドは一人のスタートだっ た。 ・後に増えるのは知っていた。(何人までか は把握していない)

    ・インフラは別チームに依頼する。 ~ 差異 ~ • 実際に増えた人員は2名で3人体制 → フルで動き始めたのは4月から、足並みが若干不安 定な進行 • インフラチームに依頼したら無理と返ってきた(案件 が建て込みすぎて手が増やせない) → 検証しているうちに自チームでインフラも管理しない と厳しいことが判明 • 環境開発を共通化できるようにするタスクが出来た → 一つ前の開発で環境違いで相当時間を取られた記 憶があった → HomeSteadからDocker(Laradock) • リリースは6月末(7月運用開始) →伸びた!
  12. 仕事がいっぱい • 最大の誤算はインフラ構築もスケジュールに加わったこと • インフラ構成図など誰も書いたことないので自分が書いた • ローカル環境のDockerに変更する作業もスケジュール圧迫の要因に この時点で一度詳細設計の見直しを行えば地獄だけは避けれたかもしれない(結果論)

  13. 「ぼく、何かやっちゃいました?」 #やらかしすぎた

  14. 担当したタスクを紹介 今回は全体の構成やら要件定義から詳細設計に落とし込む部分と開発を担当しました。 • 技術検証 – 外部提供されたツールの検証 • AWS構成図作成 • AWS使用料金試算

    • AWS要件策定調査 • 環境構築土台準備 • 管理画面開発
  15. あれ? なにか忘れている気が……

  16. 担当したタスクを紹介 今回は全体の構成やら要件定義から詳細設計 に落とし込む部分を担当しました。 • 技術検証 – 外部提供されたツールの検証 • AWS構成図作成 •

    AWS使用料金試算 • AWS要件策定調査 • 環境構築土台準備 • 管理画面開発 • ? • ?
  17. 担当したタスクを紹介 今回は全体の構成やら要件定義から詳細設計 に落とし込む部分を担当しました。 • 技術検証 – 外部提供されたツールの検証 • AWS構成図作成 •

    AWS使用料金試算 • AWS要件策定調査 • 環境構築土台準備 • 管理画面開発 • 管理画面・画面定義書 • AWS全体構成表
  18. None
  19. やりました /(^o^)\

  20. この事実が判明したのが 4月中旬終わりのことでした。

  21. ※この時点では6月に1次リリース予定でした。

  22. やばいですね☆

  23. やってはいけない対症療法

  24. やってはいけない対症療法 作り忘れたのやばいな…… どうしよう

  25. やってはいけない対症療法 そうだ! 作りながら設計と 画面定義すれば なんとかなるのでは!?

  26. やってはいけない対症療法 そうだ! 作りながら設計と 画面定義すれば なんとかなるのでは!?

  27. やってはいけない対症療法 そうだ! 作りながら設計と 画面定義すれば なんとかなるのでは!? 全体的にスケジュールが遅れた根本的な原因

  28. 原因 作り忘れたのやばいな…… どうしよう

  29. 原因 作り忘れたのやばいな…… どうしよう この時点で速やかにスケジュールの確認を行い 画面定義書のガントチャートを敷き直すことで 重症で済ませられかもしれない……(結果論)

  30. やってはいけない対症療法 作りながら画面設計も 7割くらいの完成だ! 一度レビューして 貰って先進もうっと

  31. やってはいけない対症療法 大体出来たので 確認お願いしますー

  32. やってはいけない対症療法 大体出来たので 確認お願いしますー ありがとうー 確認して……ん?

  33. やってはいけない対症療法 へっ、そうなんですか? あれ、画面定義書って運用 チームに最初のイメージを 伝えてない気がするけど

  34. やってはいけない対症療法 最初って必要ないって話 だったと記憶してますが それに投稿画面はあるけど 確認するための画面も必要か もね、この感じだと

  35. やってはいけない対症療法 確かに必要という話は開 発チーム内ではしましたが …… 投稿画面はあるのは良いとして 結果を確認するための画面も 必要だと思うけど……

  36. やってはいけない対症療法 これは…… これは……

  37. やってはいけない対症療法 これは…… これは…… 認識齟齬

  38. やってはいけない対症療法 「なぜ認識齟齬が起きたのか」

  39. やってはいけない対症療法 「なぜ認識齟齬が起きたのか」 実は両者とも齟齬は起きていない。

  40. やってはいけない対症療法 @yu_mashirou の解釈 これは…… ・基本的にサーバ・画面設計はお任せするとい う話 →作るのはこっち責任でいいか           by @yu_mashirou ・運用側は開発側が用意した管理画面を使用

    するという話 →ある程度は融通効くからそこまで時間かから ないやり方にしよう           by @yu_mashirou
  41. やってはいけない対症療法 @yu_mashirou の解釈 マネージャーの解釈 ・基本的にサーバ・画面設計はお任せ する話 →早めに運用側に出してイメージを先 行で定着してもらう考えでいた ・運用側は開発側が用意した管理画 面を使用するという話

    →画面設計定義書を運用側に提示す る予定だった
  42. やってはいけない対症療法 「なぜ認識齟齬が起きたのか」

  43. やってはいけない対症療法 「なぜ認識齟齬が起きたのか」

  44. やってはいけない対症療法 「課題・疑問点」 • 画面定義書を「どのタイミングで、いつまでにやる必要」があったのか • バッファを確保する考慮をしていたか • 作業の分担に問題はなかったのか • スケジュールの進行の理解はあったのか

  45. やってはいけない対症療法 「課題・疑問点」 • 画面定義書を「どのタイミングで、いつまでにやる必要」があったのか • バッファを確保する考慮をしていたか • 作業の分担に問題はなかったのか • スケジュールの進行の理解はあったのか

  46. やってはいけない対症療法 スケジュール ・期間は2月~5月で検証/開発を経て1 次リリース(予定) →後に6月末リリースになった 対応した日 ・4月中旬 →5月中旬に追加実装画面を追加 画面定義書を「どのタイミングで、いつまでにやる必要」があったのか

  47. やってはいけない対症療法 スケジュール ・期間は2月~5月で検証/開発を経て1 次リリース(予定) →後に6月末リリースになった 対応した日 ・4月中旬 →5月中旬に追加実装画面を追加 画面定義書を「どのタイミングで、いつまでにやる必要」があったのか いつまでにやる必要があった?

    ・3月上旬から設計する必要があった
  48. やってはいけない対症療法 スケジュール ・期間は2月~5月で検証/開発を経て1 次リリース(予定) →後に6月末リリースになった 対応した日 ・4月中旬 →5月中旬に追加実装画面を追加 画面定義書を「どのタイミングで、いつまでにやる必要」があったのか いつまでにやる必要があった?

    ・3月上旬から設計する必要があった →3月はインフラ構成図を書きながら検 証していた →先んじて検証ソースを書いていたの で若干先行して開発が進んでいたので 画面を頭の中で組みながら実装してい た
  49. やってはいけない対症療法 「課題・疑問点」 • 画面定義書を「どのタイミングで、いつまでにやる必要」があったのか • バッファを確保する考慮をしていたか • 作業の分担に問題はなかったのか • スケジュールの進行の理解はあったのか

  50. やってはいけない対症療法 @yu_mashirouの考え ・当初からインフラ込みだったのでかな りギリギリのスケジュールの想定でいた (スケジュールも同様) 結果 ・先方都合で1ヶ月くらいずれ込んだの で首の皮一枚つながった状態でどうに かリリースできた バッファを確保する考慮をしていたか

    考慮していた? まるで考慮していなかった。 追加実装する前提でないまま開発を進 めていた
  51. やってはいけない対症療法 「課題・疑問点」 • 画面定義書を「どのタイミングで、いつまでにやる必要」があったのか • バッファを確保する考慮をしていたか • 作業の分担に問題はなかったのか • スケジュールの進行の理解はあったのか

  52. やってはいけない対症療法 Aさん 1.開発作業(一番重要な部分) 2.インフラ(Lambda)の構築作業 作業の分担に問題はなかったのか Bさん 1.技術検証作業 2.AWSインフラ構築作業 3.REST API実装(サーバ)

  53. やってはいけない対症療法 @yu_mashirouの作業 1.技術検証 2.AWSインフラ構築(本構築前演習) 3.インフラ構成図作成作業 4.定義書作成作業(インフラ・サーバ) 5.チケット・タスク振り分け作業 6.管理画面開発(サーバ) 作業の分担に問題はなかったのか

  54. やってはいけない対症療法 @yu_mashirouの作業 1.技術検証 2.AWSインフラ構築(本構築前演習) 3.インフラ構成図作成作業 4.定義書作成作業(インフラ・サーバ) 5.チケット・タスク振り分け作業 6.管理画面開発(サーバ) 作業の分担に問題はなかったのか 一人で過剰に作業している

  55. やってはいけない対症療法 「課題・疑問点」 • 画面定義書を「どのタイミングで、いつまでにやる必要」があったのか • バッファを確保する考慮をしていたか • 作業の分担に問題はなかったのか • スケジュールの進行の把握はできていたのか

  56. やってはいけない対症療法 状況 ・ギリギリのスケジュール ・一人で倍以上抱えたタスク ・タスクを消化するために残業 ・初めての作業がほとんど(開発除く) ・他の案件の差し込み対応が2回ほど スケジュールの進行の把握はできていたのか

  57. やってはいけない対症療法 状況 ・ギリギリのスケジュール ・一人で倍以上抱えたタスク ・タスクを消化するために残業 ・初めての作業がほとんど(開発除く) ・他の案件の差し込み対応が2回ほど スケジュールの進行の把握はできていたのか できてない

  58. 結果 間に合ったの?

  59. 結果 無事リリース 間に合ったの?

  60. 結果 実際 ・間に合ったけど問題は残ったりして いた ・1次リリースのために急場でデプロ イしたので大問題に気が付かなかっ た 間に合ったの? アプリケーション側でHTTPSリダイレクト処 理を入れるのを忘れた図↓

  61. 結論 _人人人人人人人_ > 論より設計 <  ̄Y^Y^Y^Y^Y^Y ̄   徹底しないと≪地獄≫が始まる……

  62. 自己紹介 - 柚口ましろう(代口勇真) - Twitter: @yu_mashirou - 生態: へんなひと・開発者 -

    好物:アイマス(橘ありす)とPHPとCloudFrontと音ゲー 株式会社C-Gardenという会社に設立費用出したのでどうやら役員らしい…… こんな アイコンで活 動 するなど
  63. EOF