Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
税理士ドットコムの 技術的挑戦 #tapioca_lt
Search
mizuki_r
February 03, 2020
Technology
320
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
税理士ドットコムの 技術的挑戦 #tapioca_lt
2020/02/03 タピオカLT 4杯目の発表資料です
mizuki_r
February 03, 2020
More Decks by mizuki_r
See All by mizuki_r
FrontendUp_新規事業で_Remixを採用した理由と対策.pdf
rymizuki
0
260
PHPを始めて1年、レガシーシステムにどう向き合っているか #phpstudy
rymizuki
1
850
モダンとレガシー #gotandaem
rymizuki
0
600
Vuexに型を付けるパターンを調べた #gotandajs
rymizuki
0
160
DockerでNodeの開発は厳しいのか? #gotandajs
rymizuki
3
430
マネージャー!きみは何者だ! #gotandaem
rymizuki
0
1.9k
物語を楽しむための物語論
rymizuki
0
570
失敗と向き合う
rymizuki
0
1.6k
社内勉強会と組織の成長を考える
rymizuki
1
2.8k
Other Decks in Technology
See All in Technology
Kiro Crewしか勝たん!?
miu_crescent
PRO
0
180
DMMブックスのNext.js化を加速させるAI活用 / Migrating DMM Books to Next.js with AI
kentarom
1
330
書籍『生成AIの安全性入門』の入門
wataoka
0
210
いま、生成AIにKaggleをどこまで 任せられるか — ROGIIコンペでの進め方とTips
k951286
3
1.4k
Self Healing Rollouts: Automating Production Fixes with Agentic AI
kdubois
0
150
Amazon S3 Tablesに全部任せてみた結果——コンパクション/スナップショット管理は本当に手放せるか
shigeruoda
0
370
Bet AI Day 2026丨How We Bet AI: AIとともに働く場をつくる
layerx
PRO
1
2.2k
AI活用の現在地、 ちゃんと見えてますか?/XPfest-2026
visional_engineering_and_design
0
140
いかに伝えるか 〜新卒エンジニアの教育のための、ライトノベル活用の一例
ikedon
1
190
[RSJ26] NarrativeFlow: Flow-Based Vision-Language-Action Model Using Robot Velocity Fields
keio_smilab
PRO
0
150
JAWS-UG初心者支部#88わいわい初心塾(夏休みの宿題やったかGit編)
otsuki
0
120
その指示、Bobにしっかり伝わってる?初心者でも即実践できる プロンプト/コンテキスト設計のコツ
muehara
0
120
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
570
The Curse of the Amulet
leimatthew05
2
14k
Claude Code のすすめ
schroneko
67
230k
Building AI with AI
inesmontani
PRO
1
1.2k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
400
The untapped power of vector embeddings
frankvandijk
2
1.9k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Are puppies a ranking factor?
jonoalderson
2
3.9k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
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 だ ػձ͕͋Ε…