Upgrade to Pro — share decks privately, control downloads, hide ads and more …

共創するアーキテクチャ ~チーム全体で築く持続可能な開発エコシステム~ / Co-Creati...

共創するアーキテクチャ ~チーム全体で築く持続可能な開発エコシステム~ / Co-Creating Architecture - A Sustainable Development Ecosystem Built by the Entire Team

登壇者名:佐藤 拓人
登壇したイベントタイトル:共創するアーキテクチャ ~チーム全体で築く持続可能な開発エコシステム~
登壇したイベントのURL:https://architecture-con.findy-tools.io/
登壇したイベントの登壇者URL:https://architecture-con.findy-tools.io/2024/sessions?m=2024/mdl/special/qvcBPprK

More Decks by 株式会社ビットキー / Bitkey Inc.

Other Decks in Technology

Transcript

  1. Copyright © 2023 Bitkey Inc. All right reserved. 共創するアーキテクチャ ~チーム全体で築く

    持続可能な開発エコシステム~ 株式会社ビットキー 佐藤 拓人 2024/11/26
  2. 2 Copyright © 2023 Bitkey Inc. All right reserved. モブプロ

    x BDD x イベントストーミング はいいぞ!! 2. 「なに」が言いたいの? 結論
  3. 3 Copyright © 2023 Bitkey Inc. All right reserved. 自己紹介

    佐藤 拓人 Sato Takuto 2015.04 2019.05 2020.01 大学(建築学専攻)卒業後、 株式会社ワークスアプリケーションズに入社 会計システムのソフトウェア開発を担当 特に財務会計の仕訳関連 ビットキーへ参画 ECサイトの開発 / 保守、社内システムの開発 TaKuTyの開発 今のHome事業の前身となるResidenceチームに配属 bitlockを扱う管理画面やバックエンド、appの開発に 従事 Now Homeプロダクトの技術責任者 複雑な事象を読み解いて構造化し、抽象化 / 汎用化で きるように設計し、低コストで多くの価値をだせる開 発をすることを好む
  4. 5 Copyright © 2023 Bitkey Inc. All right reserved. Outline

    1. ソフトウェアアーキテクチャに「どう」向き合う? 2. 「なに」が言いたいの? 3. 「どのような」取り組みしたの? 4. 「なんで」いいの? 4-1. チーム外に訴求できる成果 4-2. 解決するのは「分断」だが、「分解」は大切 4-3. 対話からすべてがはじまる 5. まとめ
  5. 6 Copyright © 2023 Bitkey Inc. All right reserved. 1.

    ソフトウェアアーキテクチャに「どう」向き合う?
  6. 7 Copyright © 2023 Bitkey Inc. All right reserved. ▪

    イメージ • クリーンアーキテクチャ • マイクロサービス • モジュラーモノリス • PubSub • Event Sourcing • CQRS 1. ソフトウェアアーキテクチャに「どう」向き合う? ソフトウェアアーキテクチャとは?
  7. 8 Copyright © 2023 Bitkey Inc. All right reserved. ▪

    考えてみよう! 「ソフトウェアアーキテクチャ」とはなんなのか? 「ソフトウェアアーキテクチャ」で求められるもの / 求めるべきものは? 1. ソフトウェアアーキテクチャに「どう」向き合う? ソフトウェアアーキテクチャとは?
  8. 9 Copyright © 2023 Bitkey Inc. All right reserved. ▪

    アーキテクチャとは? • 建築物の設計や構造を指す言葉 • 家やビルを建てる際の「設計図」 ▪ 家を建てる場合 • 間取りや部屋の配置、使用する材料、配 管や電気配線など全体の計画が必要 1. ソフトウェアアーキテクチャに「どう」向き合う? ソフトウェアアーキテクチャとは?
  9. 10 Copyright © 2023 Bitkey Inc. All right reserved. ▪

    ソフトウェアアーキテクチャとは? • システム全体の設計図 • どのような部品(コンポーネント)で構成 されているかを明らかにする • 部品がどう連携して動作するのかを示す もの ▪ なぜ重要か? • アーキテクチャがしっかりしていると、 システムの性能や拡張性、保守性が向上 します。 1. ソフトウェアアーキテクチャに「どう」向き合う? ソフトウェアアーキテクチャとは?
  10. 11 Copyright © 2023 Bitkey Inc. All right reserved. 「ソフトウェアアーキテクチャ」の目的

    = 良い「設計図」 1. ソフトウェアアーキテクチャに「どう」向き合う? ソフトウェアアーキテクチャの意義
  11. 12 Copyright © 2023 Bitkey Inc. All right reserved. ▪

    良い「設計図」を描くことで • 全体のビジョンや方向性が明確になる • 技術スタックやフレームワークが適切に選定される • インフラの知見やクリーンアーキテクチャなどの設計手法が反映される ▪ 「ソフトウェアアーキテクチャ」に関するトピックとしても... • 良い「設計図」を描くための考え方やスキルが多く話される 1. ソフトウェアアーキテクチャに「どう」向き合う? ソフトウェアアーキテクチャとは?
  12. 13 Copyright © 2023 Bitkey Inc. All right reserved. 「ソフトウェアアーキテクチャ」の目的

    = 良い「設計図」 1. ソフトウェアアーキテクチャに「どう」向き合う? ソフトウェアアーキテクチャの意義
  13. 14 Copyright © 2023 Bitkey Inc. All right reserved. 「ソフトウェアアーキテクチャ」の目的

    = 良い「設計図」 1. ソフトウェアアーキテクチャに「どう」向き合う? ソフトウェアアーキテクチャの意義 本当?
  14. 15 Copyright © 2023 Bitkey Inc. All right reserved. ▪

    良い設計図があれば、良いソフトウェアが作れるのか? • 良い設計図があれば、良い建物が建てられるわけではない • 実際には建設員がいて、彼らのスキルや工法も非常に大切 ▪ 設計図はいつ誰が作るのか? • 設計図も一度作成して完了...とはならない • アジャイル開発のように継続的にインクリメントし続ける開発手法がある • DDDのように外界の変化に柔軟に対応できるようにする設計手法がある • 誰かが良い設計をするだけでは不十分で、チームで対応できることに価値が ある 1. ソフトウェアアーキテクチャに「どう」向き合う? ソフトウェアアーキテクチャの意義
  15. 16 Copyright © 2023 Bitkey Inc. All right reserved. 「ソフトウェアアーキテクチャ」の目的

    ≠ 良い「設計図」 1. ソフトウェアアーキテクチャに「どう」向き合う? ソフトウェアアーキテクチャの意義
  16. 17 Copyright © 2023 Bitkey Inc. All right reserved. 「ソフトウェアアーキテクチャ」の目的

    ≒ 良い「設計図」を継続的にチームで 進化させ続けることができる仕組み 1. ソフトウェアアーキテクチャに「どう」向き合う? ソフトウェアアーキテクチャの意義
  17. 18 Copyright © 2023 Bitkey Inc. All right reserved. ソフトウェアアーキテクチャは

    チームの進化を導くコンパスであるべき 1. ソフトウェアアーキテクチャに「どう」向き合う? ソフトウェアアーキテクチャの意義
  18. 19 Copyright © 2023 Bitkey Inc. All right reserved. 「ソフトウェアアーキテクチャ」の目的

    ≒ 良い「設計図」を継続的にチームで 進化させ続けることができる仕組み 1. ソフトウェアアーキテクチャに「どう」向き合う? ソフトウェアアーキテクチャの意義 まだまだ完全にはできていない... でも改善している!!
  19. 20 Copyright © 2023 Bitkey Inc. All right reserved. 1.

    「なに」をして、「どう」なったか 2. 「どんな」設計図に進化させられたか 1. ソフトウェアアーキテクチャに「どう」向き合う? ソフトウェアアーキテクチャの意義
  20. 22 Copyright © 2023 Bitkey Inc. All right reserved. 「ソフトウェアアーキテクチャ」の目的

    ≒ 良い「設計図」を継続的にチームで 進化させ続けることができる仕組み 2. 「なに」が言いたいの? 結論
  21. 23 Copyright © 2023 Bitkey Inc. All right reserved. モブプロ

    x BDD x イベントストーミング はいいぞ!! 2. 「なに」が言いたいの? 結論
  22. 24 Copyright © 2023 Bitkey Inc. All right reserved. 3.

    「どのような」取り組みしたの?
  23. 25 Copyright © 2023 Bitkey Inc. All right reserved. ▪

    こんな課題がある状態だった... • ファイルごとに異なる設計や実装の仕方が異なる... • メンバー間で広がるスキルや知識の格差... • 属人性が極まってなぜそうなっているのかわからない... • 作りっぱなしでメンテがされない。チームに知っている人がいない... • 問題が起きて発覚するが、知らないから改修コストが非常に高い... • 設計の意図がわからないから、修正方法の妥当性が判断しづらい... Before 3. 「どのような」取り組みしたの?
  24. 26 Copyright © 2023 Bitkey Inc. All right reserved. ▪

    こんな課題がある状態だった... • ファイルごとに異なる設計や実装の仕方が異なる... • メンバー間で広がるスキルや知識の格差... • 属人性が極まってなぜそうなっているのかわからない... • 作りっぱなしでメンテがされない。チームに知っている人がいない... • 問題が起きて発覚するが、知らないから改修コストが非常に高い... • 設計の意図がわからないから、修正方法の妥当性が判断しづらい... Before 3. 「どのような」取り組みしたの? どう改善した?
  25. 27 Copyright © 2023 Bitkey Inc. All right reserved. モブプロ

    x BDD x イベントストーミング はいいぞ!! 結論 3. 「どのような」取り組みしたの?
  26. 28 Copyright © 2023 Bitkey Inc. All right reserved. ▪

    モブプロ • みんなでプログラミング • タイピストやナビゲータなど役割を 分けて実施する • 共通認識が取りやすい • ペアプロと組み合わせることもある ▪ 課題 • 進行が難しい... • 準備不足だと議論が発散しやすい... 「モブプロ」って? 3. 「どのような」取り組みしたの?
  27. 29 Copyright © 2023 Bitkey Inc. All right reserved. ▪

    BDD • Behavior-Driven Development = 振舞駆動開発 • 「振る舞い」を事前に自然言語で 定義して、これを実現するための テストを書いてから実装をする • Given / When / Then 形式 ▪ 課題 • 「振る舞い」の明確化が大変 • 考慮漏れが発生しやすい 「BDD」って? 3. 「どのような」取り組みしたの?
  28. 30 Copyright © 2023 Bitkey Inc. All right reserved. ▪

    イベントストーミング • DDD(=ドメイン駆動開発)で用い られるドメイン整理の手法 • ドメインエキスパートを含めてド メイン知識を特定のフォーマット に則って整理する ▪ 課題 • 整理内容から実装に落とし込むの が難しい... 「イベントストーミング」って? 3. 「どのような」取り組みしたの?
  29. 31 Copyright © 2023 Bitkey Inc. All right reserved. モブプロ

    x BDD x イベントストーミング 一緒にやることに意義がある! 結論 3. 「どのような」取り組みしたの?
  30. 32 Copyright © 2023 Bitkey Inc. All right reserved. モブプロ

    BDD イベスト ・進行が難しい ・準備不足だと議論が発散しやすい 相乗効果 3. 「どのような」取り組みしたの? ・「振る舞い」の明確化が大変 ・考慮漏れが発生しやすい ・整理内容の実装への落とし込みが難しい
  31. 33 Copyright © 2023 Bitkey Inc. All right reserved. イベスト

    モブプロ BDD ・進行が難しい ・準備不足だと議論が発散しやすい ・洗い出した観点ごとに  テスト→実装→リファクタ  を繰り返す ・やることが限定されて進行が  非常にスムーズに! 相乗効果 3. 「どのような」取り組みしたの? ・「振る舞い」の明確化が大変 ・考慮漏れが発生しやすい ・整理内容の実装への落とし込みが難しい
  32. 34 Copyright © 2023 Bitkey Inc. All right reserved. モブプロ

    イベスト BDD ・進行が難しい ・準備不足だと議論が発散しやすい ・洗い出した観点ごとに  テスト→実装→リファクタ  を繰り返す ・やることが限定されて進行が  非常にスムーズに! ・QAチームもイベストに参加 ・イベスト段階でQA視点も含めて整理 ・イベストの整理内容をもとに振る舞いを定義 ・プロセスが型化され、考慮漏れも低減! チーム全員で整理した内容を 元にモブプロしながら 落とし込み 相乗効果 3. 「どのような」取り組みしたの? ・「振る舞い」の明確化が大変 ・考慮漏れが発生しやすい ・整理内容の実装への落とし込みが難しい
  33. 35 Copyright © 2023 Bitkey Inc. All right reserved. BDD

    イベスト モブプロ ・進行が難しい ・準備不足だと議論が発散しやすい ・洗い出した観点ごとに  テスト→実装→リファクタ  を繰り返す ・やることが限定されて進行が  非常にスムーズに! ・QAチームもイベストに参加 ・イベスト段階でQA視点も含めて整理 ・イベストの整理内容をもとに振る舞いを定義 ・プロセスが型化され、考慮漏れも低減! ・開発メンバー全員イベストに参加 ・モブプロで議論しながら実装 ・ドメインの知識が深まりナレッジも  チームで共有されるように 相乗効果 3. 「どのような」取り組みしたの? ・「振る舞い」の明確化が大変 ・考慮漏れが発生しやすい ・整理内容の実装への落とし込みが難しい
  34. 36 Copyright © 2023 Bitkey Inc. All right reserved. モブプロ

    x BDD x イベントストーミング を組み合わせることで 個別に実施した際の課題が解決! 3. 「どのような」取り組みしたの? 相乗効果
  35. 37 Copyright © 2023 Bitkey Inc. All right reserved. ▪

    自立性が向上した • 「型」に則ることで属人性を排除し、チームの自立性が大きく向上した! ▪ 自然と分割されるようになった • 分割して関心ごとを限定することで取り組みやすくなった! • ドメインの分割、モブプロのタスク分割、外部品質/内部品質の分割... ▪ 絶対的な対話の増加 • 対話の頻度が大きくに向上して属人化が圧倒的に減少した • チーム内外との対話により思考が深まり、アイデア発案が増えた 「どう」なったか 3. 「どのような」取り組みしたの?
  36. 38 Copyright © 2023 Bitkey Inc. All right reserved. 「どう」なったか

    良い「設計図」を継続的にチームで 進化させ続けることができる仕組み を整えることができた! 3. 「どのような」取り組みしたの?
  37. 40 Copyright © 2023 Bitkey Inc. All right reserved. 4-1.

    客観的な成果 (≒外部品質)
  38. 41 Copyright © 2023 Bitkey Inc. All right reserved. 4-1.

    客観的な成果 ▪ 成果 • 評価戻りが減った • より楽しく開発できるようになった! • 仕様が分からなくなったり、疑問を持ったりした時の拠り所ができた! • 評価戻りや問い合わせが誰でも対応できるようになった! • QAから機能追加の提案が多く出るようになった! • ベロシティをほぼキープした状態で実現できた! • 大規模リプレイス案件を問題なくリリース&運用できた! 「どう」変わった?
  39. 42 Copyright © 2023 Bitkey Inc. All right reserved. 4-1.

    客観的な成果 ▪ 成果 • 評価戻りが減った • より楽しく開発できるようになった! • 仕様が分からなくなったり、疑問を持ったりした時の拠り所ができた! • 評価戻りや問い合わせが誰でも対応できるようになった! • QAから機能追加の提案が多く出るようになった! • ベロシティをほぼキープした状態で実現できた! • 大規模リプレイス案件を問題なくリリース&運用できた! 「どう」変わった?
  40. 43 Copyright © 2023 Bitkey Inc. All right reserved. 4-1.

    客観的な成果 ▪ 成果 • 評価戻りが減った • より楽しく開発できるようになった! • 仕様が分からなくなったり、疑問を持ったりした時の拠り所ができた! • 評価戻りや問い合わせが誰でも対応できるようになった! • QAから機能追加の提案が多く出るようになった! • ベロシティをほぼキープした状態で実現できた! • 大規模リプレイス案件を問題なくリリース&運用できた! 「どう」変わった?
  41. 44 Copyright © 2023 Bitkey Inc. All right reserved. ・対外チームとの連携

    ・開発チームの雰囲気 ・外部品質 ・アウトプット量 ...総じてポジティブな結果に! 4-1. 客観的な成果 「どう」変わった?
  42. 45 Copyright © 2023 Bitkey Inc. All right reserved. 4-2.

    「設計図」の進化 (=内部品質)
  43. 54 Copyright © 2023 Bitkey Inc. All right reserved. 2.

    サービス紹介 homehubは「暮らし」に関わる様々な体験を実現する。その中心にあるのがスマートロック
  44. 56 Copyright © 2023 Bitkey Inc. All right reserved. 4-2.

    解消したいのは「分断」。でも「分割」は大切
  45. 59 Copyright © 2023 Bitkey Inc. All right reserved. 2.

    サービス紹介 homehubは「暮らし」に関わる様々な体験を実現する。その中心にあるのがスマートロック
  46. 63 Copyright © 2023 Bitkey Inc. All right reserved. 3-2.

    解消したいのは「分断」。でも「分割」は大切 どう実装していた? ・解錠できる 
 ・オートロックの設定ができる 
 ・解錠施錠ログを見ることができる 

  47. 64 Copyright © 2023 Bitkey Inc. All right reserved. 3-2.

    解消したいのは「分断」。でも「分割」は大切 どう実装していた? ・解錠できる ・オートロックの設定ができる ・解錠施錠ログを見ることができる 住んでいる人が1人で利用する 

  48. 65 Copyright © 2023 Bitkey Inc. All right reserved. 3-2.

    解消したいのは「分断」。でも「分割」は大切 どう実装していた? 家族や友達と利用する 

  49. 66 Copyright © 2023 Bitkey Inc. All right reserved. 3-2.

    解消したいのは「分断」。でも「分割」は大切 どう実装していた? 管理会社や仲介会社、清掃業者など 
 が利用する 

  50. 67 Copyright © 2023 Bitkey Inc. All right reserved. 3-2.

    解消したいのは「分断」。でも「分割」は大切 どう実装していた? 解錠するための手段も様々 

  51. 68 Copyright © 2023 Bitkey Inc. All right reserved. 3-2.

    解消したいのは「分断」。でも「分割」は大切 どう実装していた? 解錠できるようにする 
 デバイスも様々 

  52. 69 Copyright © 2023 Bitkey Inc. All right reserved. 3-2.

    解消したいのは「分断」。でも「分割」は大切 どう実装していた? 解錠できるようにする 
 場所も様々 

  53. 70 Copyright © 2023 Bitkey Inc. All right reserved. bitlock

    MINI bitreader+ bitlink homehub Entrance 電子錠A ・・・ 3-2. 解消したいのは「分断」。でも「分割」は大切 どう実装していた?
  54. 71 Copyright © 2023 Bitkey Inc. All right reserved. bitlock

    MINI bitreader+ bitlink homehub Entrance 電子錠A 社員 入居者 入居者家族 設置業者 仲介業者 ・・・ ・・・ 3-2. 解消したいのは「分断」。でも「分割」は大切 どう実装していた?
  55. 72 Copyright © 2023 Bitkey Inc. All right reserved. bitlock

    MINI bitreader+ bitlink homehub Entrance 電子錠A 社員 入居者 入居者家族 設置業者 仲介業者 ・・・ ・・・ アプリ解錠 手ぶら解錠 パスコード NFCカード 顔認証 ・・・ 3-2. 解消したいのは「分断」。でも「分割」は大切 どう実装していた?
  56. 73 Copyright © 2023 Bitkey Inc. All right reserved. bitlock

    MINI bitreader+ bitlink homehub Entrance 電子錠A 社員 入居者 入居者家族 設置業者 仲介業者 ・・・ ・・・ アプリ解錠 手ぶら解錠 パスコード NFCカード 顔認証 ・・・ 入居契約 ユースケース 内見予約 ユースケース 従業員権限付与 ユースケース 原状回復工事 ユースケース ・・・ 解錠するヒト、デバイス、解錠方法 
 …の組み合わせで制御が必要 
 ユースケースに制御が集中して 
 実装が大変... 
 3-2. 解消したいのは「分断」。でも「分割」は大切 どう実装していた?
  57. 74 Copyright © 2023 Bitkey Inc. All right reserved. 3.

    概念的な抽象化 アクセスコントロール 入居契約 ユースケース 内見予約 ユースケース 従業員権限付与 ユースケース 原状回復工事 ユースケース ・・・ アクセス
 コントロール
 ヒト 空間 デバイス 「誰がいつどこに何で解錠できるか」という 観点で抽象化し、統一的に管理
  58. 75 Copyright © 2023 Bitkey Inc. All right reserved. 3.

    概念的な抽象化 アクセスコントロール 入居契約 ユースケース 内見予約 ユースケース 従業員権限付与 ユースケース 原状回復工事 ユースケース ・・・ アクセス
 コントロール
 ヒト 空間 デバイス 〇〇さんに△△にアクセス 
 できるようにして欲しい 
 ▢▢を使ってにアクセスして! 

  59. 76 Copyright © 2023 Bitkey Inc. All right reserved. 3.

    概念的な抽象化 アクセスコントロール 入居契約 ユースケース 内見予約 ユースケース 従業員権限付与 ユースケース 原状回復工事 ユースケース ・・・ アクセス
 コントロール
 ヒト 空間 デバイス △△にアクセス 
 できるのが誰か教えて 
 〇〇さんと〇〇さんだよ 

  60. 77 Copyright © 2023 Bitkey Inc. All right reserved. 3.

    概念的な抽象化 アクセスコントロール 入居契約 ユースケース 内見予約 ユースケース 従業員権限付与 ユースケース 原状回復工事 ユースケース ・・・ アクセス
 コントロール
 ヒト 空間 デバイス 解錠に関する制御を管理しやすいように 
 抽象化したモデルを用意する 

  61. 78 Copyright © 2023 Bitkey Inc. All right reserved. 3.

    概念的な抽象化 アクセスコントロール 入居契約 ユースケース 内見予約 ユースケース 従業員権限付与 ユースケース 原状回復工事 ユースケース ・・・ アクセス コントロール ヒト 空間 デバイス いろんなデバイスを 
 統一的に管理するために機能役割を整理 
 - LockDevice:解錠にまつわる機能、実際にドアを解錠すことができる - AuthDevice:認証にまつわる機能、 NFCカードや顔、パスコードで解錠できるか のチェックをし、解錠可能であれば解錠デバイスに解錠コマンドを投げる - LinkDevice:デバイスをネットワークとつなげ、コマンドを実行する - StrageDevice:ロッカーなどものを格納する機能をもつデバイス
  62. 79 Copyright © 2023 Bitkey Inc. All right reserved. 3.

    概念的な抽象化 アクセスコントロール 入居契約 ユースケース 内見予約 ユースケース 従業員権限付与 ユースケース 原状回復工事 ユースケース ・・・ アクセス コントロール ヒト 空間 デバイス いろんなデバイスを 
 統一的に管理するために機能役割を整理 
 - LockDevice:解錠にまつわる機能、実際にドアを解錠すことができる - AuthDevice:認証にまつわる機能、 NFCカードや顔、パスコードで解錠できるか のチェックをし、解錠可能であれば解錠デバイスに解錠コマンドを投げる - LinkDevice:デバイスをネットワークとつなげ、コマンドを実行する - StrageDevice:ロッカーなどものを格納する機能をもつデバイス
  63. 80 Copyright © 2023 Bitkey Inc. All right reserved. 3.

    概念的な抽象化 アクセスコントロール 入居契約 ユースケース 内見予約 ユースケース 従業員権限付与 ユースケース 原状回復工事 ユースケース ・・・ アクセス コントロール ヒト 空間 デバイス いろんなデバイスを 
 統一的に管理するために機能役割を整理 
 - LockDevice:解錠にまつわる機能、実際にドアを解錠すことができる - AuthDevice:認証にまつわる機能、 NFCカードや顔、パスコードで解錠できるか のチェックをし、解錠可能であれば解錠デバイスに解錠コマンドを投げる - LinkDevice:デバイスをネットワークとつなげ、コマンドを実行する - StrageDevice:ロッカーなどものを格納する機能をもつデバイス
  64. 81 Copyright © 2023 Bitkey Inc. All right reserved. 3.

    概念的な抽象化 アクセスコントロール 入居契約 ユースケース 内見予約 ユースケース 従業員権限付与 ユースケース 原状回復工事 ユースケース ・・・ アクセス コントロール ヒト 空間 デバイス いろんなデバイスを 統一的に管理するために機能役割を整理 - LockDevice:解錠にまつわる機能、実際にドアを解錠すことができる - AuthDevice:認証にまつわる機能、 NFCカードや顔、パスコードで解錠できるか のチェックをし、解錠可能であれば解錠デバイスに解錠コマンドを投げる - LinkDevice:デバイスをネットワークとつなげ、コマンドを実行する - StrageDevice:ロッカーなどものを格納する機能をもつデバイス
  65. 82 Copyright © 2023 Bitkey Inc. All right reserved. 3.

    概念的な抽象化 アクセスコントロール 入居契約 ユースケース 内見予約 ユースケース 従業員権限付与 ユースケース 原状回復工事 ユースケース ・・・ アクセス コントロール ヒト 空間 デバイス いろんなデバイスを 統一的に管理するために機能役割を整理 - LockDevice:解錠にまつわる機能、実際にドアを解錠すことができる - AuthDevice:認証にまつわる機能、 NFCカードや顔、パスコードで解錠できるか のチェックをし、解錠可能であれば解錠デバイスに解錠コマンドを投げる - LinkDevice:デバイスをネットワークとつなげ、コマンドを実行する - StrageDevice:ロッカーなどものを格納する機能をもつデバイス
  66. 83 Copyright © 2023 Bitkey Inc. All right reserved. 4.

    実装への反映 アクセスコントロール 入居契約 ユースケース 内見予約 ユースケース 従業員権限付与 ユースケース 原状回復工事 ユースケース ・・・ アクセス
 コントロール
 ヒト 空間 デバイス 汎用的な粒度のモデルで実装 
 EntityやDBなど 

  67. 84 Copyright © 2023 Bitkey Inc. All right reserved. 4.

    実装への反映 アクセスコントロール 入居契約 ユースケース 内見予約 ユースケース 従業員権限付与 ユースケース 原状回復工事 ユースケース ・・・ アクセス コントロール ヒト 空間 デバイス 汎用的な粒度のモデルで実装 EntityやDBなど 良い感じに整理できた! …と思っていたが...
  68. 85 Copyright © 2023 Bitkey Inc. All right reserved. 入居契約

    ユースケース 内見予約 ユースケース 従業員権限付与 ユースケース 原状回復工事ユー スケース ・・・ アクセス
 コントロール
 ヒト 空間 デバイス 設置 ユースケース 設定変更 ユースケース 設置や設定など「解錠」以外の 
 ユースケースもある 
 3-2. 解消したいのは「分断」。でも「分割」は大切 落とし穴
  69. 86 Copyright © 2023 Bitkey Inc. All right reserved. 入居契約

    ユースケース 内見予約 ユースケース 従業員権限付与 ユースケース 原状回復工事ユー スケース ・・・ アクセス コントロール ヒト 空間 デバイス 設置 ユースケース 設定変更 ユースケース 設置や設定などのユースケースでも 同じモデルを使っていた 3-2. 解消したいのは「分断」。でも「分割」は大切 落とし穴
  70. 87 Copyright © 2023 Bitkey Inc. All right reserved. 入居契約

    ユースケース 内見予約 ユースケース 従業員権限付与 ユースケース 原状回復工事ユー スケース ・・・ アクセス
 コントロール
 ヒト 空間 デバイス 設置 ユースケース 設定変更 ユースケース 設置や設定などのユースケースでも 
 同じモデルを使っていた 
 いろんなデバイスの固有値が 
 まとめられて使いづらい... 
 3-2. 解消したいのは「分断」。でも「分割」は大切 落とし穴
  71. 88 Copyright © 2023 Bitkey Inc. All right reserved. 5.

    落とし穴 アクセスコントロール 入居契約 ユースケース 内見予約 ユースケース 従業員権限付与 ユースケース 原状回復工事ユー スケース ・・・ アクセス コントロール ヒト 空間 デバイス 設置 ユースケース 設定変更 ユースケース 設置や設定などのユースケースでも 同じモデルを使っていた いろんなデバイスの固有値が まとめられて使いづらい ... あれ?扱いづらいな...
  72. 89 Copyright © 2023 Bitkey Inc. All right reserved. 最初の「設計」は間違っていなかったはず

    でも... いつの間にか使いづらくなってしまった 3-2. 解消したいのは「分断」。でも「分割」は大切 落とし穴
  73. 90 Copyright © 2023 Bitkey Inc. All right reserved. 「分割」は大切!

    結論 3-2. 解消したいのは「分断」。でも「分割」は大切
  74. 91 Copyright © 2023 Bitkey Inc. All right reserved. ▪

    イベントストーミング • 関連性の強いドメインでまとめ たイベントストーミングマップ というものを生成する • このマップ生成過程で「解錠」 「設置」が明確で異なる領域で あることが認知できた 3-2. 解消したいのは「分断」。でも「分割」は大切 解決手段
  75. 92 Copyright © 2023 Bitkey Inc. All right reserved. 入居契約

    ユースケース 内見予約 ユースケース 従業員権限付与 ユースケース 原状回復工事ユー スケース ・・・ アクセス
 コントロール
 ヒト 空間 解錠用 デバイス 設置 ユースケース 設定変更 ユースケース 解錠コンテキスト 
 設定コンテキスト 
 bitlock 電気錠A ・・・ 3-2. 解消したいのは「分断」。でも「分割」は大切 解決手段
  76. 93 Copyright © 2023 Bitkey Inc. All right reserved. 入居契約

    ユースケース 内見予約 ユースケース 従業員権限付与 ユースケース 原状回復工事ユー スケース ・・・ アクセス コントロール ヒト 空間 解錠用 デバイス 設置 ユースケース 設定変更 ユースケース 設置や設定用として 
 デバイスごとにモデルをわけて管理する 
 解錠コンテキスト 設定コンテキスト bitlock 電気錠A ・・・ 「解錠」のためのモデルとし 
 QueryModelとしてデバイスごとの 
 モデルから生成される仕組みとした 
 3-2. 解消したいのは「分断」。でも「分割」は大切 解決手段
  77. 94 Copyright © 2023 Bitkey Inc. All right reserved. 課題と学び

    ▪ 分割の重要性 • そもそも分割は良くないものとどこかで思い込んでいた... • 分割することで責務を明瞭にすることができた ▪ モデルの目的を明確に • よく考えれば「解錠」のためのモデルだったが明確にできていなかった • チームに背景や意図を丁寧に共有できていなかった ▪ チームで対話を • 機能の開発が必要な範囲とその周辺をなんとなく考慮して実装しており、全 体を対話しながら進める場がなかった 3-2. 解消したいのは「分断」。でも「分割」は大切
  78. 95 Copyright © 2023 Bitkey Inc. All right reserved. 3-3.

    対話からすべてがはじまる
  79. 96 Copyright © 2023 Bitkey Inc. All right reserved. 3.

    対話からすべてがはじまる デバイスの設置 DB 認証認可の部分を プラットフォームで管理 デバイスを利用可能な 状態にする 設置状況はDBで管理 プラットフォーム
  80. 97 Copyright © 2023 Bitkey Inc. All right reserved. プラットフォーム

    DB 暗号化の準備 暗号化の準備 3. 対話からすべてがはじまる デバイスの設置
  81. 98 Copyright © 2023 Bitkey Inc. All right reserved. プラットフォーム

    DB 暗号化の準備 解錠できるように 鍵穴の登録 暗号化の準備 解錠できるように 鍵穴の登録 3. 対話からすべてがはじまる デバイスの設置
  82. 99 Copyright © 2023 Bitkey Inc. All right reserved. プラットフォーム

    DB デバイス識別子の取得 バッテリーの取得 ファームウェアの更新 暗号化の準備 解錠できるように 鍵穴の登録 暗号化の準備 解錠できるように 鍵穴の登録 デバイス識別子の登録 バッテリーの登録 各種設置状況の登録 3. 対話からすべてがはじまる デバイスの設置
  83. 100 Copyright © 2023 Bitkey Inc. All right reserved. プラットフォーム

    DB デバイス識別子の取得 バッテリーの取得 ファームウェアの更新 暗号化の準備 解錠できるように 鍵穴の登録 有効化 NFCカードやパスコード 利用の準備 暗号化の準備 解錠できるように 鍵穴の登録 NFCカードやパスコード 利用の準備 デバイス識別子の登録 バッテリーの登録 各種設置状況の登録 3. 対話からすべてがはじまる デバイスの設置
  84. 101 Copyright © 2023 Bitkey Inc. All right reserved. DB

    デバイス識別子の取得 バッテリーの取得 ファームウェアの更新 暗号化の準備 解錠できるように 鍵穴の登録 有効化 NFCカードやパスコード 利用の準備 暗号化の準備 解錠できるように 鍵穴の登録 NFCカードやパスコード 利用の準備 デバイス識別子の登録 バッテリーの登録 各種設置状況の登録 3. 対話からすべてがはじまる デバイスの設置 やることいっぱい!
  85. 102 Copyright © 2023 Bitkey Inc. All right reserved. DB

    デバイス識別子の取得 バッテリーの取得 ファームウェアの更新 暗号化の準備 解錠できるように 鍵穴の登録 有効化 NFCカードやパスコード 利用の準備 暗号化の準備 解錠できるように 鍵穴の登録 NFCカードやパスコード 利用の準備 デバイス識別子の登録 バッテリーの登録 各種設置状況の登録 3. 対話からすべてがはじまる デバイスの設置 さらにデバイスによっては...
  86. 103 Copyright © 2023 Bitkey Inc. All right reserved. DB

    デバイス識別子の取得 バッテリーの取得 ファームウェアの更新 暗号化の準備 解錠できるように 鍵穴の登録 有効化 NFCカードやパスコード 利用の準備 暗号化の準備 解錠できるように 鍵穴の登録 NFCカードやパスコード 利用の準備 デバイス識別子の登録 バッテリーの登録 各種設置状況の登録 親機の登録 子機の登録 親機子機の連動 3. 対話からすべてがはじまる デバイスの設置
  87. 104 Copyright © 2023 Bitkey Inc. All right reserved. DB

    デバイス識別子の取得 バッテリーの取得 ファームウェアの更新 暗号化の準備 解錠できるように 鍵穴の登録 有効化 NFCカードやパスコード 利用の準備 暗号化の準備 解錠できるように 鍵穴の登録 NFCカードやパスコード 利用の準備 デバイス識別子の登録 バッテリーの登録 各種設置状況の登録 親機の登録 子機の登録 親機子機の連動 3. 対話からすべてがはじまる デバイスの設置 もっと複雑...
  88. 105 Copyright © 2023 Bitkey Inc. All right reserved. DB

    デバイス識別子の取得 バッテリーの取得 ファームウェアの更新 暗号化の準備 解錠できるように 鍵穴の登録 有効化 NFCカードやパスコード 利用の準備 暗号化の準備 解錠できるように 鍵穴の登録 NFCカードやパスコード 利用の準備 デバイス識別子の登録 バッテリーの登録 各種設置状況の登録 親機の登録 子機の登録 親機子機の連動 デバイス
 3. 対話からすべてがはじまる デバイスの設置
  89. 106 Copyright © 2023 Bitkey Inc. All right reserved. DB

    デバイス識別子の取得 バッテリーの取得 ファームウェアの更新 暗号化の準備 解錠できるように 鍵穴の登録 有効化 NFCカードやパスコード 利用の準備 暗号化の準備 解錠できるように 鍵穴の登録 NFCカードやパスコード 利用の準備 デバイス識別子の登録 バッテリーの登録 各種設置状況の登録 親機の登録 子機の登録 親機子機の連動 デバイス 3. 対話からすべてがはじまる デバイスの設置 「デバイス」という一つの共通の モデルで表現するのは厳しい...
  90. 108 Copyright © 2023 Bitkey Inc. All right reserved. 「対話」の中で生まれた言葉

    を大切にする! 結論 3. 対話からすべてがはじまる
  91. 109 Copyright © 2023 Bitkey Inc. All right reserved. 3.

    対話からすべてがはじまる 解決方法 ▪ イベントストーミング • ドメインエキスパートとシステ ムに依らない言葉でフローを整 理 • 対話の中で生まれた言葉をベー スにモデルを生成 • 不必要に共通化や抽象化しない ほうが良いモデルを作成できる こともある
  92. 110 Copyright © 2023 Bitkey Inc. All right reserved. デバイス

    
 ないと困る値がないかも... 状態遷移も自由 設置途中かも しれないしれない いろんな可能性がある してはいけない状態に 遷移できてしまう 常に状態を気にしながら 操作しなければならな い... 3. 対話からすべてがはじまる 解決方法
  93. 111 Copyright © 2023 Bitkey Inc. All right reserved. デバイス

    
 状態遷移も自由 設置途中かも しれないしれない いろんな可能性がある 3. 対話からすべてがはじまる 解決方法
  94. 112 Copyright © 2023 Bitkey Inc. All right reserved. 3.

    対話からすべてがはじまる 解決方法
  95. 113 Copyright © 2023 Bitkey Inc. All right reserved. 3.

    対話からすべてがはじまる 解決方法 状態は限定的で明 瞭
 次の遷移先と 
 その条件も明瞭 
 できること保持して いる値も明瞭 

  96. 114 Copyright © 2023 Bitkey Inc. All right reserved. 課題と学び

    ▪ 対話の中で生まれた言葉や整理の活用 • 1人、開発者だけの整理はどうしても偏りが生まれやすい • 職種横断で対話した中で生まれた言葉や整理は認知負荷が低いことが多い ▪ できること・できないことをIFで明確にする • 「なんでもできる」は「なんにもできない」と同義 • IFで明瞭となっていることで使う的に迷わない ▪ 対話の時間 • 設計や実装してレビュー...といったプロセスよりモブプロ・モブワークのほ うが、より深い議論をすることができるようになる 3. 対話からすべてがはじまる
  97. 116 Copyright © 2023 Bitkey Inc. All right reserved. 「ソフトウェアアーキテクチャ」の目的

    ≠ 良い「設計図」 ソフトウェアアーキテクチャの意義 4. まとめ
  98. 117 Copyright © 2023 Bitkey Inc. All right reserved. 「ソフトウェアアーキテクチャ」

    ≒ 良い「設計図」を継続的にチームで 進化させ続けることができる仕組み ソフトウェアアーキテクチャの意義 4. まとめ
  99. 118 Copyright © 2023 Bitkey Inc. All right reserved. 留意点

    ▪ スキル・知識がいらないわけではない • 前提としてスキルや知識は一定レベルは必要 • アーキテクトのように秀でた開発者がいることは望ましい ▪ その上で大切にしたいこと • チームで考えて改善ができる状態を大切にしたい • スキル・知識に依存しすぎずとも、改善のサイクルが実現したい 4. まとめ
  100. 119 Copyright © 2023 Bitkey Inc. All right reserved. 要因の整理

    ▪ 改善した要因 • 抽象度が高く、範囲が広大であったこと • 設計/モデリングをする人が限定的だった • 理解度にばらつきが大きかったこと • 対話が限定的であったこと 4. まとめ
  101. 120 Copyright © 2023 Bitkey Inc. All right reserved. 要因の整理

    ▪ 改善した要因 • 抽象度が高く、範囲が広大であったこと -> イベントストーミングを用いて分割 • 設計/モデリングをする人が限定的だった -> 分割をした上で、モブプロなどで対話して進める • 理解度にばらつきが大きかったこと -> イベントストーミングやモブプロといった対話重視のプロセスに • 対話が限定的であったこと -> イベントストーミングやモブプロといった対話重視のフレームワーク 4. まとめ
  102. 121 Copyright © 2023 Bitkey Inc. All right reserved. BDD

    イベスト モブプロ ・進行が難しい ・準備不足だと議論が発散しやすい ・洗い出した観点ごとに  テスト→実装→リファクタ  を繰り返す ・やることが限定されて進行が  非常にスムーズに! ・QAチームもイベストに参加 ・イベスト段階でQA視点も含めて整理 ・イベストの整理内容をもとに振る舞いを定義 ・プロセスが型化され、考慮漏れも低減! ・開発メンバー全員イベストに参加 ・モブプロで議論しながら実装 ・ドメインの知識が深まりナレッジも  チームで共有されるように 相乗効果 3. 「どのような」取り組みしたの? ・「振る舞い」の明確化が大変 ・考慮漏れが発生しやすい ・整理内容の実装への落とし込みが難しい
  103. 122 Copyright © 2023 Bitkey Inc. All right reserved. 良かったこと

    ▪ 自立性 • 「型」に則ることで属人性を排除し、チームの自立性が大きく向上した ▪ 分割 • ドメインの分割、モブプロのタスク分割、外部品質内部品質の分割 • 分割することで関心ごとを限定し、取り組みやすくなった ▪ 対話 • 常に対話できるようになり、属人化が大幅に減少した • ビジネスサイドとのコミュニケーションも活性化して、よりドメインの理解 を深めた上で取り組めるようになった 4. まとめ
  104. 123 Copyright © 2023 Bitkey Inc. All right reserved. 「ソフトウェアアーキテクチャ」

    に向き合うためのプロセスを整えた! モブプロ x BDD x イベントストーミングの良さ 4. まとめ
  105. 125 Copyright © 2023 Bitkey Inc. All right reserved. 「ソフトウェアアーキテクチャ」

    ≒ 良い「設計図」を継続的にチームで 進化させ続けることができる仕組み 5. まとめ 結論
  106. 126 Copyright © 2023 Bitkey Inc. All right reserved. モブプロ

    x BDD x イベントストーミング はいいぞ!! 5. まとめ 結論
  107. 127 Copyright © 2023 Bitkey Inc. All right reserved. まとめ

    ▪ ソフトウェアアーキテクチャに必要なもの • チームの進化を導くコンパス ▪ モブプロ x BDD x イベントストーミング • 相乗効果もあり、自立性向上、分割の推進、対話による属人性の排除などを 実現 • 開発プロセス運営においても良好な結果を得ることができた • 設計やモデリングのプロセスにおいても対話や型化されたプロセスを経て今 まで以上に取り組みやすい土壌の生成ができた 4. まとめ