Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
税理士ドットコムの 技術的挑戦 #tapioca_lt
mizuki_r
February 03, 2020
Technology
0
180
税理士ドットコムの 技術的挑戦 #tapioca_lt
2020/02/03 タピオカLT 4杯目の発表資料です
mizuki_r
February 03, 2020
Tweet
Share
More Decks by mizuki_r
See All by mizuki_r
PHPを始めて1年、レガシーシステムにどう向き合っているか #phpstudy
rymizuki
1
380
モダンとレガシー #gotandaem
rymizuki
0
330
Vuexに型を付けるパターンを調べた #gotandajs
rymizuki
0
83
DockerでNodeの開発は厳しいのか? #gotandajs
rymizuki
3
260
マネージャー!きみは何者だ! #gotandaem
rymizuki
0
1.3k
物語を楽しむための物語論
rymizuki
0
390
失敗と向き合う
rymizuki
0
900
社内勉強会と組織の成長を考える
rymizuki
1
2k
Webpackのビルド時間を1/3にした話 #gotandajs
rymizuki
9
3.6k
Other Decks in Technology
See All in Technology
JFrog 最新情報 - JFrog DevOps プラットフォームの今までとこれから / jfrog-update-for-devopskaigi-2022
tsuyo
0
150
サイボウズの アジャイル・クオリティ / Agile Quality at Cybozu
cybozuinsideout
PRO
4
2k
多様な成熟度のデータ活用を総合支援するKADOKAWA Connectedのデータ組織について
kadokawaconnected
PRO
0
190
HoloLens2とMetaQuest2どちらも動くWebXRアプリをBabylon.jsで作る
iwaken71
0
180
JJUG2022_spring_Keycloak (Red Hat Single Sign-on)
tinoue
0
200
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
3
9k
1人目QA奮闘記/QA Engineer's Struggle
mii3king
2
1k
ROS再入門-はじめてのSLAM-
miura55
0
380
視座とアジャイル / shiza_and_agile
kyoshimoto
0
180
Custom GitHub Actions by Java
kazamori
0
280
誰が正解を知っているのか / Who knows the right answer
takaking22
1
220
覗いてみよう!現場のスクラムチーム
tkredman
0
970
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
16
8.3k
Git: the NoSQL Database
bkeepers
PRO
415
59k
Code Review Best Practice
trishagee
43
9.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
181
15k
Designing for Performance
lara
597
63k
jQuery: Nuts, Bolts and Bling
dougneiner
56
6.4k
Imperfection Machines: The Place of Print at Facebook
scottboms
253
12k
How To Stay Up To Date on Web Technology
chriscoyier
780
250k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
100
5.9k
Product Roadmaps are Hard
iamctodd
34
6.5k
Robots, Beer and Maslow
schacon
152
7.1k
Creatively Recalculating Your Daily Design Routine
revolveconf
207
10k
Transcript
税理士ドットコムの 技術的挑戦 2020/02/03 タピオカLT 4杯目 @mizuki_r
@mizuki_r • エンジニア 2 2018年10月から税理士ドットコム に参加。開発、採用から雑務まで何 でもござれ。最近はミニ四駆アプリ の沼に沈んでいる about me
こんな人です
僕のシャイニングスコーピオン
本日のテーマ
最近、税理ドットコム内で やってみてる実験の一部を ご紹介
背景
税理士ドットコム • 日本最大級の税理士/税務ポータルサイト • 税理士紹介、Q&A、ニュースなど • サービス開始: 2006年 • エンジニア:
社員x1, 業務委託x5
自分のポジション • 開発マネージャー • テックリード • エンジニア(フロント・バック・インフラ)
技術スタック • PHP 7.2 • Yii Framework 1.1 • JavaScript
• jQuery 3.4 • Vue 2.6
Yii Framework • 大規模なウェブアプリケーションを迅速に 開発するための、高性能な、コンポーネン トベースの PHP フレームワーク • 速い?
... 安全? ... プロが使える? ... 次の プロジェクトに合っている? ... Yes, it is! • いわゆるフルスタックフレームワーク
None
どうしたものか…
実装上の問題
実装上の問題 • Controllerにベタ書きされた実装 • あらゆるところに偏在するModel(≒ ActiveRecord) • 危険なテンプレートエンジンPHP • 責務分担、開放閉鎖、PHP5的な実装、etc…
やりたいこと
やりたいこと 上位から疎なコードを分離 ルーター 古い仕組み 新しい仕組み
現実 とても密結合 誰がルーティングするの??? 既存のモデル・DB 作り直す??? リダイレクト
現実的な問題 • ActiveRecordがあらゆるところに偏在して いるの分離が困難 • コードの関係性が密結合、不適切な分断が されている • コスト感…
アイディア
こうすればいいんじゃね? New WAF Controller Router Yii Controller Router Request 404
NotFound Model 既存リソース の参照
アイディア • 新しいフレームワークでリクエストを受け る • 新しいフレームワークのルーティングが 404ならYiiのルーティングを実行 • modelなどの移管が難しい既存のリソース を再利用可能
実装してみた
技術選定 • Slim Frameworkを採用 • 軽量、ルーティング・コンテナ・コントローラーを提 供している • 読める •
PSR準拠 • ルーターもFastRouteを使っているので差し替えが容 易そう
Container • Ray.DiΛ༻͍ͯॲཧͷநԽͱೖΛߦ͍ͬͯΔ • ଟػೳ͔ͭڧྗɻ͜Ε͕ແ͍ͱͬͯΒΜͳ ͍ • SlimͷContainerΛRay.DiͰஔ͖͑Δ • PHPΞυΧϨͰॻ͍ͨهࣄ
Slimで404をハンドル
解説 • YiiとSlimのアプリを初期化 • このタイミングでDBとかのコンポーネントが作られる • SlimのHTTP-Exceptionをハンドルし、404のときにYiiのア プリを実行 • runすることでURLを解析しControllerを実行し、exitする
• 新しい実装はSlimで書きつつ、Webの窓口をYiiから引き剥が すことができる
まとめ
まとめ • フレームワークの移管についてのアイディアをご 紹介しました • まとめて移管せずとも、段階的な移管は可能そう • なお、本番反映は見送りました。 • パフォーマンス的にどうか?
まだ健闘の余地は ある
終わりに • レガシーコードとの戦いは、色々な発見や 挑戦があって面白い • まだ誰も試したことないチャレンジ、アイ ディアを見たい • ぜひ興味ある方はお声がけください!
次回 ビジネスロジックからYiiを消し去りたい? よろしい、ならば Clean Architecture だ ػձ͕͋Ε…