$30 off During Our Annual Pro Sale. View Details »

Findy アーキテクチャ Conference 2024/アーキテクト誕生とこれから スター...

atama plus
November 26, 2024
4.5k

Findy アーキテクチャ Conference 2024/アーキテクト誕生とこれから スタートアップ 7年の成長と痛み

2024年11月26日に開催された「Findy アーキテクチャ Conference 2024」に弊社の鵜飼(Lead Software Architect)が登壇しました。

▼イベント情報
https://architecture-con.findy-tools.io/2024/top

▼開発チームの情報発信リンク集
https://linktr.ee/atama_plus_dev

atama plus

November 26, 2024
Tweet

More Decks by atama plus

Transcript

  1. ⓒ atama plus Inc. メインストーリー スタートアップの成⻑と共に、「エンジニア」として プロダクト / ソフトウェア構造 /

    ひと / 組織 と向き合った結果、「アーキテクト」になりました 「アーキテクチャはあとから、答え合わせがくる」 をテーマに振り返ります 4
 今⽇お話ししたいこと
  2. ⓒ atama plus Inc. メインストーリー 5
 今⽇お話ししたいこと アーキテクチャ価値の発⾒ プロダクト多⾓化 2021年

    継続改善 2022年 事業多⾓化 2023年 アーキテクチャに向き合う ⼈‧チームに向き合う 組織構造に向き合う コロナ 2020年
  3. ⓒ atama plus Inc. 全国の塾‧予備校を通じて⽣徒に提供 8
 会社概要 導⼊教室数 8
 4000


    提供元=学習塾 まなび島、次世代型個別指導 おがわ塾 全国47都道府県で、利⽤可能に (24年3⽉時点)
  4. ⓒ atama plus Inc. メインストーリー 10
 今⽇お話ししたいこと アーキテクチャ価値の発⾒ プロダクト多⾓化 2021年

    継続改善 2022年 事業多⾓化 2023年 アーキテクチャに向き合う ⼈‧チームに向き合う 組織構造に向き合う コロナ 2020年
  5. ⓒ atama plus Inc. 全社を挙げて⾃宅学習に対応 • 社内で発案があったのが2020年2⽉中旬 • 1週間後に「Web版」臨時提供開始のプレスリリース •

    スマホや⾃宅のPCで学習し、塾の先⽣は電話やZoomでフォロー • 3⽉2⽇の全国⼀⻫休校に間に合った 15
 2. コロナ
  6. ⓒ atama plus Inc. 16
 創業時の技術選定(2017年) 2. コロナ タブレットアプリ REST

    API サーバー 塾のタブレットで使うアプリ スタートアップでネイティブアプリの開発は ⼤変そう!
  7. ⓒ atama plus Inc. 17
 創業時の技術選定(2017年) 2. コロナ タブレットアプリ REST

    API サーバー Cordova • Webの技術でモバイルアプリが作れる ◦ ネイティブアプリとして配信 ◦ WebView内でSPAが動く Ionic • ネイティブアプリのUIを再現して くれる • Angular 2 + TypeScript (ちょうどIonic 2が出たタイミング)
  8. ⓒ atama plus Inc. Web版 • もともとa+アプリの中⾝はSPA • S3に上げて、CloudFront⽴てて、ドメイン割り当てれば動く •

    ⼤変だったのは、スマホサイズの対応くらい (どちらかというと塾の皆様や弊社のビジネスサイドの対応⼒がすごかった) 18
 2. コロナ
  9. ⓒ atama plus Inc. Web版 • 緊急事態 ⾔(2020年4⽉7⽇) までに500教 以上で導⼊

    • 社会の変化に対応できたことが 会社が⼤きく成⻑する1つの きっかけに 19
 2. コロナ
  10. ⓒ atama plus Inc. メインストーリー 24
 今⽇お話ししたいこと アーキテクチャ価値の発⾒ プロダクト多⾓化 2021年

    継続改善 2022年 事業多⾓化 2023年 アーキテクチャに向き合う ⼈‧チームに向き合う 組織構造に向き合う コロナ 2020年
  11. ⓒ atama plus Inc. 別のプロダクトをつくる 26
 3. プロダクトの多⾓化 別プロダクト 学習体験

    atama+の学習体験を 別のプロダクトでも使いたい 学習体験
  12. ⓒ atama plus Inc. 学習体験を共通で使いたい プロダクトが違えば仕様は異なる 27
 3. プロダクトの多⾓化 同じコンテンツ

    同じアルゴリズム 同じ学習画⾯ 同じ学習データ 異なるユーザーモデル 異なるカリキュラム でも「学習」の技術資産はコアな価値、共通で使いたい
  13. ⓒ atama plus Inc. a+の学習体験を切り出す サーバー側はマシだった • レイヤー状のモジュール管理 • 学習コアを再利⽤できた

    28
 3. プロダクトの多⾓化 プレゼンテーション層 のモジュール群 アプリケーション層 の機能モジュール群 学習コア層 のモジュール 依存の⽅向、⼤事!
  14. ⓒ atama plus Inc. a+の学習体験を切り出す ⼤変だったのはフロントエンド • アプリはまるっと プレゼンテーション層の扱い •

    学習体験部分だけを切り出せない (ユーザーモデルや認証に直依存) 29
 3. プロダクトの多⾓化 アプリ (プレゼンテーション層) ユーザーモデル 学習画⾯ 認証機能
  15. ⓒ atama plus Inc. 「学習基盤」を括りだす 学習機能を分離分割、ライブラリとしてパッケージ化 • モジュラーモノリスのモジュールに フォークして作った新プロダクトの⼀部を「サンプル」として取り込み •

    学習基盤だけを利⽤して別プロダクトを作れる状態を担保 37
 3. プロダクトの多⾓化 別プロダクト 学習体験 学習体験 学習基盤 モジュール
  16. ⓒ atama plus Inc. 「学習基盤」を括りだす ⼤規模なリファクタやリアーキテクティングを⾏い、 保守性が上がるなど、⾊々な副次効果も ソフトウェア‧アーキテクチャと本気で向き合えた 38
 3.

    プロダクトの多⾓化 詳細 言えないですが、最近になって 
 予想もしなかった別プロダクトで 
 学習基盤が活躍しそうです 

  17. ⓒ atama plus Inc. 学び 42
 3. プロダクトの多⾓化 アーキテクチャの価値を知っていたから、 リスクに気付けた

    ソフトウェアの構造と向き合って、 多くの知識と経験を得られた アーキテクチャは⼤事 でも、答え合わせから学ぶことがいちばん⼤事!
  18. ⓒ atama plus Inc. メインストーリー 43
 今⽇お話ししたいこと アーキテクチャ価値の発⾒ プロダクト多⾓化 2021年

    継続改善 2022年 事業多⾓化 2023年 アーキテクチャに向き合う ⼈‧チームに向き合う 組織構造に向き合う コロナ 2020年
  19. ⓒ atama plus Inc. タスクフォースをチーム化 45
 4. 継続的な改善 学習基盤構築 タスクフォース

    Kibanチーム 技術資産である 学習基盤を再利⽤可能にする ソフトウェア構造を⾒直し 多様な技術資産を構築する アーキテクチャを 継続的に改善
  20. ⓒ atama plus Inc. 他チームとの関係性が課題に 46
 4. 継続的な改善 Kibanチーム 開発チーム

    どんどん新しい機能が増える ソフトウェアの構造も⼀緒に考えら れるよう巻き込んで欲しい‧‧‧ 新しい機能は作らず、広い範囲に ⼤きな変更を⼊れていく あのチーム、なにやってるんだろ?
  21. ⓒ atama plus Inc. チームミッションを考える 49
 4. 継続的な改善 元々のゴール ソフトウェア構造を⾒直す

    技術資産を構築する チームで出たワード 設計のスペシャリスト集団 ソフトウェア構造の進化をリード 各開発チームの活動をサポート エンジニアリング アーキテクト?
  22. ⓒ atama plus Inc. 意識の変化 50
 4. 継続的な改善 チームで出たワード 設計のスペシャリスト集団

    ソフトウェア構造の進化をリード 各開発チームの活動をサポート ソフトウェアだけではなく、 ソフトウェアを作る「⼈」とも向き合う
  23. ⓒ atama plus Inc. ⼈へのアプローチ②:Clean Architectureワークショップ 52
 4. 継続的な改善 ⽬的

    • 迷った時に⽴ち返れるような共通の価値観の醸成 • 「ソフトウェア設計」の意味を、各⾃が理解し考えられる 内容 • エンジニア全員参加、グループワーク×3時間 • 「Clean Architecture」を肴に、対話を通じて、 atama plusのプロダクト開発における「ソフトウェア設 計」を⼀緒に考える
  24. ⓒ atama plus Inc. 答え合わせ 57
 4. 継続的な改善 ソフトウェアの構造と向き合った エンジニアリングのチームが

    「ソフトウェア設計のスペシャリスト集団」を ⾃負するチームになった ⼈と向き合って、 「アーキテクト」の前⾝となる組織が出来た
  25. ⓒ atama plus Inc. メインストーリー 59
 今⽇お話ししたいこと アーキテクチャ価値の発⾒ プロダクト多⾓化 2021年

    継続改善 2022年 事業多⾓化 2023年 アーキテクチャに向き合う ⼈‧チームに向き合う 組織構造に向き合う コロナ 2020年
  26. ⓒ atama plus Inc. もう1つの事業の柱:オンライン塾 60
 5. 事業の多⾓化 塾向け既存事業 オンライン塾事業

    既存の塾‧予備校を経由して ⽣徒に利⽤してもらう 直営のオンライン塾から ⽣徒にプロダクトを届ける
  27. ⓒ atama plus Inc. 事業部別の組織分割 組織上のメリット • 事業ごとの迅速な意思決定 経営上のメリット •

    事業責任の明確化 • 事業ごとの予算管理 プロダクトは?? • 検証段階で限界が‧‧ 62
 5. 事業の多⾓化 塾向け 既存事業 オンライン塾 事業 塾向け 事業部 オンライン塾 事業部 プロダクト
  28. ⓒ atama plus Inc. 同⼀プロダクトで複数事業展開する難しさ • 新事業と既存事業のニーズがコンフリクト ◦ 新事業:いかに新しい価値を探して育てるか ◦

    既存事業:いかに顧 に届く価値を最⼤化するか • 調整が⼤変 ◦ 新事業で⼊れたい変更が既存事業では不要 ◦ どんなに欲しい変更でも、B2Bでは導⼊に時間がかかる ▪ 顧 にオペレーションの変更をお願いする • どの職種も認知負荷が⾮常に⾼い ◦ 多様な顧 や事業形態、全部を全員で⾒る 63
 5. 事業の多⾓化
  29. ⓒ atama plus Inc. 複数事業のプロダクトをどう作るか 「ソフトウェア設計のスペシャリスト」に相談が来た • 複数事業のプロダクトを複数の組織で作りたい ◦ プロダクトをどんな設計‧構造にすればよいか?

    ◦ どうしたら複数の開発チームでうまく分担できるか? ソフトウェアの構造だけ考えても解が無い = ソフトウェアと開発組織の構造を⼀緒に設計する 67
 5. 事業の多⾓化
  30. ⓒ atama plus Inc. 世の中のプラクティスを探す 『チームトポロジー』 よし、『ちいとぽ』で⾏こう! 68
 5. 事業の多⾓化

    価値あるソフトウェアを すばやく届ける適応型組織設計 チームとアーキテクチャーが 同時に進化する実践的モデル
  31. ⓒ atama plus Inc. チームトポロジーに沿った4つの作戦 69
 5. 事業の多⾓化 作戦① バリューストリームに沿った組織

    作戦② 所有をベースにしたプロセス運⽤ 作戦③ プロダクトを分離 作戦④ 依存の⽅向をルール化
  32. ⓒ atama plus Inc. チームトポロジーに沿った4つの作戦 70
 5. 事業の多⾓化 作戦① バリューストリームに沿った組織

    作戦② 所有をベースにしたプロセス運⽤ 作戦③ プロダクトを分離 作戦④ 依存の⽅向をルール化
  33. ⓒ atama plus Inc. 作戦①:バリューストリームに沿った組織 価値の流れ(バリューストリーム)に沿って 組織分けする 71
 5. 事業の多⾓化

    「ストリームアラインドチーム」 価値を届ける仕事の流れに沿って働くチーム 流れの中で他のチームに仕事を引き継がない
  34. ⓒ atama plus Inc. 作戦①:バリューストリームに沿った組織 2つの事業は、 それぞれのバリューストリーム • それぞれの価値を •

    それぞれの顧 に • それぞれのフローで届ける 72
 5. 事業の多⾓化 塾向け 既存事業 オンライン塾 事業 塾向け ストリーム オンライン塾 ストリーム プロダクト
  35. ⓒ atama plus Inc. 作戦①:バリューストリームに沿った組織 2つの事業は、 それぞれのバリューストリーム • それぞれの価値を •

    それぞれの顧 に • それぞれのフローで届ける でも「学習」は 共通のコアバリューでは? 73
 5. 事業の多⾓化 塾向け 既存事業 オンライン塾 事業 塾向け ストリーム オンライン塾 ストリーム プロダクト 学習基盤
  36. ⓒ atama plus Inc. 作戦①:バリューストリームに沿った組織 「学習体験」もユーザーに価値を届ける 1つのバリューストリーム 74
 5. 事業の多⾓化

    塾向け既存事業 オンライン塾事業 塾向け ストリーム オンライン塾 ストリーム 学習体験 ストリーム 学習基盤
  37. ⓒ atama plus Inc. チームトポロジーに沿った4つの作戦 75
 5. 事業の多⾓化 作戦① バリューストリームに沿った組織

    作戦② 所有をベースにしたプロセス運⽤ 作戦③ プロダクトを分離 作戦④ 依存の⽅向をルール化
  38. ⓒ atama plus Inc. 作戦②:所有をベースにしたプロセス運⽤ オーナーシップ = 各チームの認知負荷を下げる • ドメインや実装の知⾒が貯まる

    • コミュニケーションが明確になる 所有の原則 • 所有していないコードは実装を勝⼿に変更しない • 他から利⽤されているコードは、仕様を勝⼿に変 更しない 76
 5. 事業の多⾓化 「ソフトウェアシステムのすべてのパーツの オーナーは単⼀のチームである必要がある。」
  39. ⓒ atama plus Inc. 作戦②:所有をベースにしたプロセス運⽤ コードを各組織に振り分けて所有 • バリューストリームに沿った組織 × 3

    • プラットフォームを⾒る組織 × 1 全部を全員で⾒るのをやめる • ⼀⾒、煩雑で⼿間が増えそうだが • 認知負荷を下げつつ、本来必要なインタラクションを促す 77
 5. 事業の多⾓化
  40. ⓒ atama plus Inc. チームトポロジーに沿った4つの作戦 78
 5. 事業の多⾓化 作戦① バリューストリームに沿った組織

    作戦② 所有をベースにしたプロセス運⽤ 作戦③ プロダクトを分離 作戦④ 依存の⽅向をルール化
  41. ⓒ atama plus Inc. 作戦③:プロダクトを分離 事業それぞれのアプリを作る 最初は枠だけを複製 • 同じ仕様から始めて、 だんだん分岐

    • それぞれが作った機能は それぞれで所有 79
 5. 事業の多⾓化 塾向けApp オンライン塾 App 枠だけ複製 機能A 機能B 利⽤ カスタマイズ
  42. ⓒ atama plus Inc. チームトポロジーに沿った4つの作戦 81
 5. 事業の多⾓化 作戦① バリューストリームに沿った組織

    作戦② 所有をベースにしたプロセス運⽤ 作戦③ プロダクトを分離 作戦④ 依存の⽅向をルール化
  43. ⓒ atama plus Inc. 作戦④:依存⽅向のルール 83
 5. 事業の多⾓化 新規事業 既存事業

    学習体験 表層 深層 依存 依存 変化 激しい表層
 依存されずに一番身軽に 新事業 変化に振り回されない コアな学習がいち ん深層
 会社 一番重要な価値を支える
  44. ⓒ atama plus Inc. 事業の構造 コミュニケーション構造 (プロセス) 開発組織の構造 コンウェイの法則 86


    5. 事業の多⾓化 開発組織の コミュニケーション 構造に ソフトウェアの構造 が⼀致する ソフトウェアの構造 (アーキテクチャ)
  45. ⓒ atama plus Inc. 事業の構造 コミュニケーション構造 (プロセス) 開発組織の構造 逆コンウェイ作戦 87


    5. 事業の多⾓化 望む ソフトウェア構造に 組織構造を 合わせる ソフトウェアの構造 (アーキテクチャ)
  46. ⓒ atama plus Inc. BAPOモデル (Jan Bosch) Business, Architecture, Process, and

    Organization 
 88
 5. 事業の多⾓化 逆コンウェイ の延⻑ 開発組織の構造 コミュニケーション構造 (プロセス) P
 O
 [B] 事業 [A] アーキテクチャ [P] プロセス [O] 組織 の順に推進 事業の構造 B
 ソフトウェアの構造 (アーキテクチャ) A

  47. ⓒ atama plus Inc. 事業∕組織∕プロセス∕ソフトウェアの構造をなるべく⼀致させる atama plusが認知負荷を減らすために取った作戦 89
 5. 事業の多⾓化

    事業の構造 ソフトウェアの構造 (アーキテクチャ) コミュニケーション構造 (プロセス) 開発組織の構造
  48. ⓒ atama plus Inc. atama plusが認知負荷を減らすために取った作戦 90
 5. 事業の多⾓化 作戦①

    バリューストリームに沿った組織 作戦② 所有をベースにしたプロセス運⽤ 作戦③ プロダクトを分離 作戦④ 依存の⽅向をルール化
  49. ⓒ atama plus Inc. 作戦①:バリューストリームに沿った組織分け 91
 5. 事業の多⾓化 事業構造に 組織構造を合わせる

    事業の構造 ソフトウェアの構造 (アーキテクチャ) コミュニケーション構造 (プロセス) 開発組織の構造
  50. ⓒ atama plus Inc. 作戦①:バリューストリームに沿った組織分け 92
 5. 事業の多⾓化 事業構造に 組織構造を合わせる

    ただし 「学習体験」は1つの バリューストリーム (逆コンウェイ) 事業の構造 ソフトウェアの構造 (アーキテクチャ) コミュニケーション構造 (プロセス) 開発組織の構造
  51. ⓒ atama plus Inc. 作戦②:所有をベースにしたプロセス運⽤ 93
 5. 事業の多⾓化 事業の構造 ソフトウェアの構造

    (アーキテクチャ) コミュニケーション構造 (プロセス) 開発組織の構造 回るような プロセスの設計
  52. ⓒ atama plus Inc. 作戦③:プロダクトを分離 94
 5. 事業の多⾓化 事業の構造 ソフトウェアの構造

    (アーキテクチャ) コミュニケーション構造 (プロセス) 開発組織の構造 プロダクトの構造も 変更
  53. ⓒ atama plus Inc. 作戦④:依存⽅向のルール 95
 5. 事業の多⾓化 事業の構造 ソフトウェアの構造

    (アーキテクチャ) コミュニケーション構造 (プロセス) 開発組織の構造 構造を維持するためのルール
  54. ⓒ atama plus Inc. 事業/組織/プロセス/ソフトウェアの構造の⼀致 96
 5. 事業の多⾓化 コンウェイの法則 事業の構造

    ソフトウェアの構造 (アーキテクチャ) コミュニケーション構造 (プロセス) 開発組織の構造
  55. ⓒ atama plus Inc. 事業/組織/プロセス/ソフトウェアの構造の⼀致 97
 5. 事業の多⾓化 ②所有をベースに したプロセス

    「学習体験」は1つの バリューストリーム ①バリューストリーム に沿った組織分け ④依存の⽅向をルール化 ③プロダクトを分離 事業の構造 ソフトウェアの構造 (アーキテクチャ) コミュニケーション構造 (プロセス) 開発組織の構造
  56. ⓒ atama plus Inc. 2プロダクト、3ストリーム 98
 5. 事業の多⾓化 塾向け ストリーム

    オンライン塾 ストリーム 学習体験 ストリーム 塾向け既存事業 オンライン塾事業 塾向けApp 依存 依存 学習基盤 オンライン塾App 依存
  57. ⓒ atama plus Inc. 2プロダクト、3ストリーム オンライン塾事業: ⼤胆に新しい機能を追加できる 塾向け既存事業: 新事業からの影響を最⼩限に、顧 価値の最⼤化を図れる

    学習体験: ⼀体感を持った組織でコアバリューを育てられる 事業構造の⼤きな変化に対応できた 99
 5. 事業の多⾓化
  58. ⓒ atama plus Inc. 答え合わせ 102
 5. 事業の多⾓化 事業/組織/プロダクト/ソフトウェアの構造は連動する ソフトウェア構造と向き合っても、

    ソフトウェアを開発するチームと向き合っても、 それだけでは⼤きな変化に適応できない
  59. ⓒ atama plus Inc. 学び 103
 5. 事業の多⾓化 ソフトウェアの構造は組織全体の構造の1要素 エンジニアリングの枠を超えて

    組織全体と⼀緒に考えていかなければならない これこそ、アーキテクトにしかできない仕事!
  60. ⓒ atama plus Inc. メインストーリー 105
 今⽇お話ししたいこと アーキテクチャ価値の発⾒ プロダクト多⾓化 2021年

    継続改善 2022年 事業多⾓化 2023年 アーキテクチャに向き合う ⼈‧チームに向き合う 組織構造に向き合う コロナ 2020年
  61. ⓒ atama plus Inc. メインストーリー 106
 今⽇お話ししたいこと アーキテクチャが 突然の変化に対応できた プロダクト多⾓化

    2021年 継続改善 2022年 事業多⾓化 2023年 ソフトウェア構造を必死で改善し 知識と経験を得た 設計のスペシャリストを⾃負して 皆でアーキテクチャを作るように 事業の変化と向き合って アーキテクトの責任を実感した コロナ 2020年