Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

READYFORにおける複雑なドメインとレガシーシステムとの戦い方

Hiroshi Ito
February 16, 2020

 READYFORにおける複雑なドメインとレガシーシステムとの戦い方

Object-Oriented Conference 2020の、READYFORによるランチスポンサーセッションです。

Hiroshi Ito

February 16, 2020
Tweet

More Decks by Hiroshi Ito

Other Decks in Technology

Transcript

  1. 11 「プロジェクト」をめぐるさまざまなコンテキスト #ooc_2020 #ooc_a プロジェクト はじめる 支 援 審査 プロジェクト

    ページ作成 入出金・売上管理 契約書作成 データ分析 *実際よりも単純化してい ます
  2. 18 READYFORシステムを境界づけられたコンテキストから整理する #ooc_2020 #ooc_a SoE 実行者コン テキスト 支援者コン テキスト SoC

    審査・業務 オペレーション コンテキスト SoR 決済・会計 コンテキスト データ分析 コンテキスト それぞれのコンテキストで必要とされる「プロジェクト」モデルの責務を整 理していく SoE = System of Engagement ▪ ユーザーエンゲージメントのため のシステム ▪ UXが大事 SoR = System of Record ▪ 記録のためのシステム ▪ データ設計が大事 SoC = System of Control ▪ 状態遷移を伴う様々なワークフロー ▪ *READYFOR内で共有している独自の概念
  3. 22 #ooc_2020 #ooc_a ▪ ソフトウェアとしての価値(技術的資産) = 技術的純資産 + 技術的負債 あくまでアナロジーなので「純資産」や「負債」といった完璧なラベル付けができる

    わけではないことに注意 技術的純資産 技術的負債 ソフトウェア としての価値 (技術的資産) そのソフトウェアが生み 出す価値すべて - Webサービスの機能 - 新しいユーザー体験 - 新規事業 - 人的コスト削減 - 等々 新たな機能開発を阻害するような設計や実 装等 例 - 3000行を超える巨大なモデル - 複雑な画面遷移実装 - 複雑なAdmin… - テストがない... 等々 開発を促進するような設計や実装等 例 - 複雑な概念をシンプルに表現した実装 - 再利用可能なモジュール - 適切な粒度とカバレッジをもった自動テス ト 等々 BS(バランスシート)のアナロジーとしての技術的負債
  4. 26 #ooc_2020 #ooc_a 技術的純資産に対して技術的負債が多い場合の成長速度 技術的純資産 技術的負債 技術的純資産 技術的負債 技術的純資産 技術的負債

    技術的純資産 技術的負債 初 期 に 生 み 出 す 価 値 は 大 き い 利子を支払うかのごとく開発スピードは一気に逓減していく *技術的負債(Technical Debt)というアナロジーは、初期の大きな借り入れによる大きな資産形成ができる が、時間軸に沿って利子を支払い続けなければいけないということを表現している
  5. 29 #ooc_2020 #ooc_a リファクタリングという概念 技術的純資産 技術的負債 技術的純資産 ソ フ ト

    ウ ェ ア の 価 値 リファクタリング ソフトウェアとしてのの価値は変えずに内 部の負債を返却 技術的負債 技術的純資産 技術的負債 技術的純資産 技術的負債 その先の開発スピードに加速をつける
  6. 36 #ooc_2020 #ooc_a 新しいお金の流れを作る、リードバックエンドエンジ ニア募集! 【必須要件】 ・コンピューターサイエンスの基礎知識 ・Ruby on Rails

    を用いた Web アプリケーションの開発/運用経験 ・DDDの実践的な理解と開発現場に適用した経験 【歓迎要件】 ・モノリシックに実装されている SoEとSoRの分離・リファクタリング経験 ・Java/Scala/Go/Rustなど、静的型付けを持った言語の利用経験 ・Webフロントエンド (SPA) の知識 ・機械学習/データサイエンス領域の知識 ・OSSコントリビュート、カンファレンス登壇、書籍執筆等の技術発信経験 https://www.wantedly.com/projects/414310
  7. 37 #ooc_2020 #ooc_a 新たな資金流通エコシステムの基盤をつくる、決済 ・会計エンジニア募集! 【必須要件】 ・コンピューターサイエンスの基礎知識 ・決済、会計、銀行口座管理等、お金の動きにまつわるシステム開発経験 ・要件定義、設計、実装、テスト、リリースまでのシステム開発工程全てに関わった 経験

    【歓迎要件】 ・アジャイル開発経験 ・Java/Scala/Go/Rustなど、静的型付けを持った言語の利用経験 ・Webフロントエンド (SPA) の知識 ・自動テストの実装経験 ・OSSコントリビュート、カンファレンス登壇、書籍執筆等の技術発信経験 https://www.wantedly.com/projects/414299
  8. 38 #ooc_2020 #ooc_a 資金調達の新たなスタンダード、READYFORフロ ントエンドエンジニア募集! 【必須要件】 ・HTML/CSS/JavaScriptの知識を有する方 ・セマンティックを意識した HTML5によるマークアップ経験がある方・ CSS3を用い

    たWebデザインの実装・実務経験 ・React/Vue.js/AngularJSなどを用いたSPA/SSR開発経験 ・Git を用いたチームでの開発経験 【歓迎要件】 ・Atomic Design を活用した UI コンポーネント開発 ・TypeScriptなどの型システムを持った言語の利用経験 ・UI/UXデザインへの知識 ・スクラムなどアジャイル開発手法を用いたチーム開発経験 ・Ruby on Rails を用いた Web アプリケーションの開発経験 ・OSSコントリビュート、カンファレンス登壇、書籍執筆等の技術発信経験 https://www.wantedly.com/projects/411396
  9. 39 #ooc_2020 #ooc_a 急成長中のベンチャーで品質管理をお任せする、 一人目のQAエンジニア募集! 【必須要件】 ・ソフトウェア品質保証の基礎知識 ・QAの実務経験 ・検証項目の設計、実施経験 【歓迎要件】

    ・QAチームの立ち上げ経験 ・アジャイル開発経験 ・金融機関のシステム開発経験 ・Autify等e2eの自動テストSaaSの利用経験 ・e2e、Integration Test、Unit Test等レイヤー問わず自動テストの実装経験 https://www.wantedly.com/projects/414292