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
200
税理士ドットコムの 技術的挑戦 #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
410
モダンとレガシー #gotandaem
rymizuki
0
370
Vuexに型を付けるパターンを調べた #gotandajs
rymizuki
0
87
DockerでNodeの開発は厳しいのか? #gotandajs
rymizuki
3
310
マネージャー!きみは何者だ! #gotandaem
rymizuki
0
1.4k
物語を楽しむための物語論
rymizuki
0
410
失敗と向き合う
rymizuki
0
990
社内勉強会と組織の成長を考える
rymizuki
1
2.1k
Webpackのビルド時間を1/3にした話 #gotandajs
rymizuki
9
3.7k
Other Decks in Technology
See All in Technology
SPA・SSGでSSRのようなOGP対応!
simo123
2
150
NGINXENG JP#2 - 1-NGINX-エンジニアリング勉強会-きょうの見どころ
hiropo20
0
110
NGINXENG JP#2 - 3-NGINX Plus・プロダクトのアップデート
hiropo20
0
240
Deep Neural Networkの共同学習
hf149
0
290
インフラ技術基礎勉強会 開催概要
toru_kubota
0
170
OCI技術資料 : ロード・バランサー 詳細 / Load Balancer 200
ocise
2
7.2k
ラズパイとGASで加湿器の消し忘れをLINEでリマインド&操作
minako__ph
0
150
FlexScan HD2452Wの 後継を探して
tring
0
6.3k
金属加工屋の営業マンがSTマイクロで・・・
usashirou
0
160
CES_2023_FleetWise_demo.pdf
sparkgene
0
120
OpenShift.Run2023_create-aro-with-terraform
ishiitaiki20fixer
1
300
API連携に伴う規制と対応 / Regulations and responses to API linkage
moneyforward
0
160
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
38
7.7k
Teambox: Starting and Learning
jrom
124
7.9k
WebSockets: Embracing the real-time Web
robhawkes
58
6k
Rails Girls Zürich Keynote
gr2m
87
12k
Reflections from 52 weeks, 52 projects
jeffersonlam
338
18k
Making the Leap to Tech Lead
cromwellryan
117
7.7k
Gamification - CAS2011
davidbonilla
75
4.1k
The MySQL Ecosystem @ GitHub 2015
samlambert
240
11k
How To Stay Up To Date on Web Technology
chriscoyier
779
250k
BBQ
matthewcrist
75
8.1k
Fireside Chat
paigeccino
16
1.8k
Code Review Best Practice
trishagee
50
11k
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 だ ػձ͕͋Ε…