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

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

mizuki_r
February 03, 2020

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

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

mizuki_r

February 03, 2020
Tweet

More Decks by mizuki_r

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

  3. 僕のシャイニングスコーピオン

    View Slide

  4. 本日のテーマ

    View Slide

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

    View Slide

  6. 背景

    View Slide

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

    View Slide

  8. 自分のポジション
    • 開発マネージャー
    • テックリード
    • エンジニア(フロント・バック・インフラ)

    View Slide

  9. 技術スタック
    • PHP 7.2
    • Yii Framework 1.1
    • JavaScript
    • jQuery 3.4
    • Vue 2.6

    View Slide

  10. Yii Framework
    • 大規模なウェブアプリケーションを迅速に
    開発するための、高性能な、コンポーネン
    トベースの PHP フレームワーク
    • 速い? ... 安全? ... プロが使える? ... 次の
    プロジェクトに合っている? ... Yes, it is!
    • いわゆるフルスタックフレームワーク

    View Slide

  11. View Slide

  12. どうしたものか…

    View Slide

  13. 実装上の問題

    View Slide

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

    View Slide

  15. やりたいこと

    View Slide

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

    View Slide

  17. 現実
    とても密結合
    誰がルーティングするの???
    既存のモデル・DB

    作り直す???
    リダイレクト

    View Slide

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

    View Slide

  19. アイディア

    View Slide

  20. こうすればいいんじゃね?
    New WAF
    Controller
    Router
    Yii
    Controller
    Router
    Request 404 NotFound
    Model
    既存リソース
    の参照

    View Slide

  21. アイディア
    • 新しいフレームワークでリクエストを受け

    • 新しいフレームワークのルーティングが
    404ならYiiのルーティングを実行
    • modelなどの移管が難しい既存のリソース
    を再利用可能

    View Slide

  22. 実装してみた

    View Slide

  23. 技術選定
    • Slim Frameworkを採用
    • 軽量、ルーティング・コンテナ・コントローラーを提
    供している
    • 読める
    • PSR準拠
    • ルーターもFastRouteを使っているので差し替えが容
    易そう

    View Slide

  24. Container
    • Ray.DiΛ༻͍ͯॲཧͷந৅Խͱ஫ೖΛߦ͍ͬͯΔ
    • ଟػೳ͔ͭڧྗɻ͜Ε͕ແ͍ͱ΍ͬͯΒΜͳ
    ͍
    • SlimͷContainerΛRay.DiͰஔ͖׵͑Δ
    • PHPΞυΧϨͰॻ͍ͨهࣄ

    View Slide

  25. Slimで404をハンドル

    View Slide

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

    View Slide

  27. まとめ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide