以下の内容はhttps://ozaki25.hatenadiary.jp/entry/2023/12/11/214450より取得しました。
社内ツールから生まれたOSS "ts-remove-unused" によるフロントエンド開発の効率化と品質の向上
ts-remove-unused
- https://github.com/line/ts-remove-unused
- export付いてるのに利用されてないコードを削除してくれる
- exportがなければlintでき付けるけどexportあると気づきづらい
- なぜ作ったか
- コンポーネントライブラリを置き換える時にデッドコードが大量に発生した
- 依存関係をたどる必要があり簡単に削除できない
- 構文の解析
- TypeScript Compiler APIで操作できる
- TypeScript Compiler APIをラップしたts-morphというライブラリもある
- 振り返って
- 全部のケースをカバーできなくても手動でやるより効率化できた
ヤフーのユーザー 5,400 万人から"同意"を得るための技術
プライバシーポリシーの同意モジュール
- 合併に際して新しいポリシーの同意画面のSDKを作った
- 苦労した点
- 影響度
- ヤフーサービス利用者5400万人
- サービスの利用体験に影響する
- 広告に影響が内容シビアな速度
- 法的/ビジネス的影響度
- 対象範囲
- 様々なOS/ブラウザ/通信環境
- 数千万台のデバイスで安定動作が必要
- 1つのミスや考慮不足が致命的な問題に
- シェア0.1%でも無視できない
- 保守性
- 開発後は案件先の担当者だけで運用できるように
- エラーコードを細かく整備
- コードを見ただけでどこでどんなエラーが起きたか分かるように
管理画面向けUIコンポーネントの設計 - Web componentsでフレームワーク非依存を目指す
- Tamada Akihiro (spring-raining)さん
- LINE公式アカウントの管理画面
- Vueファイル2600超え
- 機能が多岐だが利用頻度はまちまち
- Bootstrap4をカスタマイズした独自ライブラリ
- 問題なく使えてるがCSSへのパッチが増えていき変更困難に
- Tailwindへの移行を徐々に
- BootstrapのckassがTailwindと重複するのでprefixつけたり
- TailwindはユーティリティなのででCSSフレームワークを作ろうとするとUIコンポーネントを作る必要がある
- 今後他の画面でも使われるかもしれないのでVue依存はダメ
- WebComponentsで作ろうか
WebComponents
- フレームワークに依存しないUIコンポーネントを提供できる
- ShadowDOMでスコープ分離できる
- いろいろ問題が
- WebComponentsの開発
- litを使ってる
- ClassベースなのがFE開発とコンテキストスイッチを切り替える必要あり
- litのmixinがTS対応が難しい
- Zag
- https://zagjs.com/
- UIコンポーネント実装のためのライブラリ
- ArkやPandaCSSはZagベース
- FWに依存しない実装でReact/Vue/Solidに対応
- litにも対応可能
- Classベースではない
- ステートマシンで状態管理を抽象化できる
- WebComponentsからの脱却も見据えることができる
- custom-element-manifest
- WebComponentsをReactなどで使えるようにラップしたい
- jsonで宣言してコンポーネントを自動生成する
- SSR対応
- エコシステムとしてはまだ
- 今回の事例ではSSR必要なかった
- Declarative ShadowDOM
- SSRでShadowDOMを使える技術
- まだ全ブラウザで使えるわけではないので今後に期待
まとめ
- WebComponentsはFW非依存の選択肢としてはよい
- Zagによるふるまいの分離がいい
- 将来を考えたエスケープハッチが重要
Web Componentsを使ったUIコンポーネント
リニューアルで学んだ通説の捉え方
- SP版Webの技術刷新
- 技術スタック
- Before:jQuery/PHP
- After:React/Redux AsyncThunk
- リニューアル後
- ReduxToolkitを使ってもパフォーマンスは大きく落ちなかった
以上の内容はhttps://ozaki25.hatenadiary.jp/entry/2023/12/11/214450より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます
不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14