税理士ドットコムの 技術的挑戦 #tapioca_lt

E1dbe585427fa87cbfb0f4dbcebc3b2f?s=47 mizuki_r
February 03, 2020

税理士ドットコムの 技術的挑戦 #tapioca_lt

2020/02/03 タピオカLT 4杯目の発表資料です

E1dbe585427fa87cbfb0f4dbcebc3b2f?s=128

mizuki_r

February 03, 2020
Tweet

Transcript

  1. 税理士ドットコムの 技術的挑戦 2020/02/03 タピオカLT 4杯目 @mizuki_r

  2. @mizuki_r • エンジニア 2 2018年10月から税理士ドットコム に参加。開発、採用から雑務まで何 でもござれ。最近はミニ四駆アプリ の沼に沈んでいる about me

    こんな人です
  3. 僕のシャイニングスコーピオン

  4. 本日のテーマ

  5. 最近、税理ドットコム内で やってみてる実験の一部を ご紹介

  6. 背景

  7. 税理士ドットコム • 日本最大級の税理士/税務ポータルサイト • 税理士紹介、Q&A、ニュースなど • サービス開始: 2006年 • エンジニア:

    社員x1, 業務委託x5
  8. 自分のポジション • 開発マネージャー • テックリード • エンジニア(フロント・バック・インフラ)

  9. 技術スタック • PHP 7.2 • Yii Framework 1.1 • JavaScript

    • jQuery 3.4 • Vue 2.6
  10. Yii Framework • 大規模なウェブアプリケーションを迅速に 開発するための、高性能な、コンポーネン トベースの PHP フレームワーク • 速い?

    ... 安全? ... プロが使える? ... 次の プロジェクトに合っている? ... Yes, it is! • いわゆるフルスタックフレームワーク
  11. None
  12. どうしたものか…

  13. 実装上の問題

  14. 実装上の問題 • Controllerにベタ書きされた実装 • あらゆるところに偏在するModel(≒ ActiveRecord) • 危険なテンプレートエンジンPHP • 責務分担、開放閉鎖、PHP5的な実装、etc…

  15. やりたいこと

  16. やりたいこと 上位から疎なコードを分離 ルーター 古い仕組み 新しい仕組み

  17. 現実 とても密結合 誰がルーティングするの??? 既存のモデル・DB
 作り直す??? リダイレクト

  18. 現実的な問題 • ActiveRecordがあらゆるところに偏在して いるの分離が困難 • コードの関係性が密結合、不適切な分断が されている • コスト感…

  19. アイディア

  20. こうすればいいんじゃね? New WAF Controller Router Yii Controller Router Request 404

    NotFound Model 既存リソース の参照
  21. アイディア • 新しいフレームワークでリクエストを受け る • 新しいフレームワークのルーティングが 404ならYiiのルーティングを実行 • modelなどの移管が難しい既存のリソース を再利用可能

  22. 実装してみた

  23. 技術選定 • Slim Frameworkを採用 • 軽量、ルーティング・コンテナ・コントローラーを提 供している • 読める •

    PSR準拠 • ルーターもFastRouteを使っているので差し替えが容 易そう
  24. Container • Ray.DiΛ༻͍ͯॲཧͷந৅Խͱ஫ೖΛߦ͍ͬͯΔ • ଟػೳ͔ͭڧྗɻ͜Ε͕ແ͍ͱ΍ͬͯΒΜͳ ͍ • SlimͷContainerΛRay.DiͰஔ͖׵͑Δ • PHPΞυΧϨͰॻ͍ͨهࣄ

  25. Slimで404をハンドル

  26. 解説 • YiiとSlimのアプリを初期化 • このタイミングでDBとかのコンポーネントが作られる • SlimのHTTP-Exceptionをハンドルし、404のときにYiiのア プリを実行 • runすることでURLを解析しControllerを実行し、exitする

    • 新しい実装はSlimで書きつつ、Webの窓口をYiiから引き剥が すことができる
  27. まとめ

  28. まとめ • フレームワークの移管についてのアイディアをご 紹介しました • まとめて移管せずとも、段階的な移管は可能そう • なお、本番反映は見送りました。 • パフォーマンス的にどうか?

    まだ健闘の余地は ある
  29. 終わりに • レガシーコードとの戦いは、色々な発見や 挑戦があって面白い • まだ誰も試したことないチャレンジ、アイ ディアを見たい • ぜひ興味ある方はお声がけください!

  30. 次回 ビジネスロジックからYiiを消し去りたい? よろしい、ならば Clean Architecture だ ػձ͕͋Ε͹…