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

Laravelで作られたAPI基盤を ADRで書き直した話

月澤拓哉
September 25, 2022

Laravelで作られたAPI基盤を ADRで書き直した話

助太刀の提供する全てのサービスのAPI基盤はPHP(Laravel)で書かれています。
リリース当初はオフショアを中心に生のPHP、その後は開発チームを内製化しLaravel(MVC)に移行させつつ開発を進めていたのですが、サービスの成長と共にControllerとModelの処理の責務が煩雑になり、結果として肥大化したファイルが残されることになりました。
今回は、それらの問題を解決するために助太刀のAPI基盤を(ほぼ)全てMVCからADRパターンで書き直したので、その過程で感じた導入メリットやデメリット、助太刀での運用事例などをお話しします。

月澤拓哉

September 25, 2022
Tweet

Other Decks in Programming

Transcript

  1. Copyright©2021 Sukedachi Inc. All Right Reserved 自己紹介 ❏ 名前: 月澤

    拓哉(つきさわ たくや) ❏ 仕事: 助太刀という会社で開発部のマネージメントをしてます     もともとPHPとかJavaとか書いてました ❏ twitter: @tksw_009 ❏ LinkedIn: https://www.linkedin.com/in/takuya-tsukisawa ❏ Meety:
  2. Copyright©2021 Sukedachi Inc. All Right Reserved 助太刀ってなに? ❏ 職人さんと工事会社の事業者マッチング ❏

    建設業の正社員求人媒体 ❏ 2017年創業 ❏ 累計18万事業者 ❏ 今年18.5億の資金調達済み 助太刀が提供するサービス 建設業界の人手不足 や人材確保の難しさ をITで解決するサービス
  3. Copyright©2021 Sukedachi Inc. All Right Reserved 5年間の歩み 創業からの開発体制の流れ 助太刀のバックエンド PHP

    / フレームワーク無し PHP / Laravel(MVC) PHP / Laravel(ADR) 2017年 創業時に調達した金額をオフショア先に投資 事業者マッチングサービスの拡大 社内に業務委託エンジニアを入れ始める 開発を一部社内で行う体制へ 開発のメインを内製化(現在) 2022年
  4. Copyright©2021 Sukedachi Inc. All Right Reserved 出てきた課題 • 創業当初はオフショア先が得意だったPHP(生)でバックエンド構築 •

    社内に業務委託エンジニア入れてLaravelへ移行(MVC) • 様々なサービスの新規展開 (バックエンドは1つのリポジトリ) • そして巨大化するController層 / 密結合になるService層 • 社内にエンジニアが増えてきて開発体制の内製化が進む 創業からのまとめと課題 ビジネスロジックの部分で密結合になってしまったところを刷新し、コードの保 守性と可読性を向上させるため社内メンバーでADRを採用
  5. Copyright©2021 Sukedachi Inc. All Right Reserved MVCからADRへ Action (Controller) Domain

    (Model) Responder (View) HTTPリクエスト HTTPレスポンス ビジネスロジックの やりとり ADRパターンおさらい • 1クラス1アクション • 1リクエストに対してシンプルな構成 • 1クラスの責務を明確にできる
  6. Copyright©2021 Sukedachi Inc. All Right Reserved MVCからADRへ Responderの部分 • Viewに相当

    • Domainの処理結果をもとに 表示上で必要な処理を行う
  7. Copyright©2021 Sukedachi Inc. All Right Reserved まとめ • メリット ◦

    可読性向上 ▪ 1actionの責務(ビジネスロジック)が 1domain (domain部分を見れば何をしているかわ かる) ▪ responderで、view(ユーザーに見える表示部分)にまつわるロジックを集約できる • デメリット(今後の課題) ◦ ファイル数多くなる(命名規則とかちゃんとしないと) ◦ Domain部分のビジネスロジックが複雑になる(抽象化されていない) ◦ 本来responderに書くべき処理もdomainに書いちゃうこととかある 採用してみた結果
  8. Copyright©2021 Sukedachi Inc. All Right Reserved 助太刀の今後 ❏ 残ってる旧API群を直しつつアプリを前に進める ❏

    バックエンドのアーキテクチャを再設計中 ❏ エンジニアもデザイナーも採用してさらに組織拡大を目指す ❏ エンジニア向けミートアップやります ↓