Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
税理士ドットコムの 技術的挑戦 2020/02/03 タピオカLT 4杯目 @mizuki_r
Slide 2
Slide 2 text
@mizuki_r • エンジニア 2 2018年10月から税理士ドットコム に参加。開発、採用から雑務まで何 でもござれ。最近はミニ四駆アプリ の沼に沈んでいる about me こんな人です
Slide 3
Slide 3 text
僕のシャイニングスコーピオン
Slide 4
Slide 4 text
本日のテーマ
Slide 5
Slide 5 text
最近、税理ドットコム内で やってみてる実験の一部を ご紹介
Slide 6
Slide 6 text
背景
Slide 7
Slide 7 text
税理士ドットコム • 日本最大級の税理士/税務ポータルサイト • 税理士紹介、Q&A、ニュースなど • サービス開始: 2006年 • エンジニア: 社員x1, 業務委託x5
Slide 8
Slide 8 text
自分のポジション • 開発マネージャー • テックリード • エンジニア(フロント・バック・インフラ)
Slide 9
Slide 9 text
技術スタック • PHP 7.2 • Yii Framework 1.1 • JavaScript • jQuery 3.4 • Vue 2.6
Slide 10
Slide 10 text
Yii Framework • 大規模なウェブアプリケーションを迅速に 開発するための、高性能な、コンポーネン トベースの PHP フレームワーク • 速い? ... 安全? ... プロが使える? ... 次の プロジェクトに合っている? ... Yes, it is! • いわゆるフルスタックフレームワーク
Slide 11
Slide 11 text
No content
Slide 12
Slide 12 text
どうしたものか…
Slide 13
Slide 13 text
実装上の問題
Slide 14
Slide 14 text
実装上の問題 • Controllerにベタ書きされた実装 • あらゆるところに偏在するModel(≒ ActiveRecord) • 危険なテンプレートエンジンPHP • 責務分担、開放閉鎖、PHP5的な実装、etc…
Slide 15
Slide 15 text
やりたいこと
Slide 16
Slide 16 text
やりたいこと 上位から疎なコードを分離 ルーター 古い仕組み 新しい仕組み
Slide 17
Slide 17 text
現実 とても密結合 誰がルーティングするの??? 既存のモデル・DB 作り直す??? リダイレクト
Slide 18
Slide 18 text
現実的な問題 • ActiveRecordがあらゆるところに偏在して いるの分離が困難 • コードの関係性が密結合、不適切な分断が されている • コスト感…
Slide 19
Slide 19 text
アイディア
Slide 20
Slide 20 text
こうすればいいんじゃね? New WAF Controller Router Yii Controller Router Request 404 NotFound Model 既存リソース の参照
Slide 21
Slide 21 text
アイディア • 新しいフレームワークでリクエストを受け る • 新しいフレームワークのルーティングが 404ならYiiのルーティングを実行 • modelなどの移管が難しい既存のリソース を再利用可能
Slide 22
Slide 22 text
実装してみた
Slide 23
Slide 23 text
技術選定 • Slim Frameworkを採用 • 軽量、ルーティング・コンテナ・コントローラーを提 供している • 読める • PSR準拠 • ルーターもFastRouteを使っているので差し替えが容 易そう
Slide 24
Slide 24 text
Container • Ray.DiΛ༻͍ͯॲཧͷநԽͱೖΛߦ͍ͬͯΔ • ଟػೳ͔ͭڧྗɻ͜Ε͕ແ͍ͱͬͯΒΜͳ ͍ • SlimͷContainerΛRay.DiͰஔ͖͑Δ • PHPΞυΧϨͰॻ͍ͨهࣄ
Slide 25
Slide 25 text
Slimで404をハンドル
Slide 26
Slide 26 text
解説 • YiiとSlimのアプリを初期化 • このタイミングでDBとかのコンポーネントが作られる • SlimのHTTP-Exceptionをハンドルし、404のときにYiiのア プリを実行 • runすることでURLを解析しControllerを実行し、exitする • 新しい実装はSlimで書きつつ、Webの窓口をYiiから引き剥が すことができる
Slide 27
Slide 27 text
まとめ
Slide 28
Slide 28 text
まとめ • フレームワークの移管についてのアイディアをご 紹介しました • まとめて移管せずとも、段階的な移管は可能そう • なお、本番反映は見送りました。 • パフォーマンス的にどうか? まだ健闘の余地は ある
Slide 29
Slide 29 text
終わりに • レガシーコードとの戦いは、色々な発見や 挑戦があって面白い • まだ誰も試したことないチャレンジ、アイ ディアを見たい • ぜひ興味ある方はお声がけください!
Slide 30
Slide 30 text
次回 ビジネスロジックからYiiを消し去りたい? よろしい、ならば Clean Architecture だ ػձ͕͋Ε…