TechFeed Experts Night #26
SIer での受託開発を経て、2012 年に株式会社サイバーエージェントに入社。プロダクト開発の傍ら、エンジニア組織のマネジメントに従事。2018 年に株式会社メルカリに入社後は、株式会社メルペイの Frontend チームの立ち上げや Web 版の「メルカリ」の刷新、メルカリアプリのコードベース刷新を牽引した後に、執行役員 VP of Engineering としてメルペイのエンジニアリング部門を管掌。2023 年 4 月にデジタル庁入庁。2023 年 7 月に株式会社ハウテレビジョン入社、執行役員プロダクト本部長に就任。mond 認定回答者、TechFeed 公認エキスパート (Web 標準技術 • JavaScript)。
IE11 の終了から早 1 年…ブラウザエンジンが Chromium 寡占になる懸念はありつつも、日本におけるモダンブラウザは定着したと言って良い (StatCounter Global Stats)。
Web Standards Interop 2022 でも触れた通り、Interop により Web 標準技術の相互運用性が持続的に改善されている。Interop 2023 の焦点は Container Queries や Custom Properties の @property など。
@property
HTML 標準で提供されている UI は Web 黎明期にデザインされたもので、そのプラットフォームニュートラルな性質も相まって、長らく Web 開発者は UI の実装に苦労してきた。
<dialog> 要素などの実用的な UI も追加されたが、より現代のユースケースに即した UI インキュベーションを行う W3C の Open UI によって、<selectlist> 要素のような試験的な UI 要素が提案されている。
<dialog>
<selectlist>
ブラウザエンジンが複数種類存在する限りブラウザ間の差はなくならないが、IE11 を中心とした後方互換性の考慮は大きく削減された。Interop によるモダンブラウザ間の相互運用性の向上も、Web アプリケーション実装のベースラインを大幅に前進させている。
Figma の性能や Squoosh のコーデックは WASM で実現していたり、Astro v3 の View Transition API サポートなど、プロダクトによって優れた技術の導入も進んでいる。
Node.js のエコシステムは、今や Web 開発に無くてはならない存在になった。Deno や Bun といった実行環境や Cloudflare Workers のようなサービスも新たに登場し、JavaScript Runtime の相互運用性の改善を目指す WinterCG が組成された。
JavaScript の実装は Babel や TypeScript によるトランスパイルが一般化した。実行環境は Node.js に留まらず、実行速度の向上を目指して Go/Rust で実装された esbuild や swc、Biome などのツールチェインが登場した。
Facebook ですら JSX が市民権を得ると思わなかったが、TypeScript の JSX サポートや VS Code といったエディタの TypeScript サポートなど、Language Server Protocol 実装がある型付きテンプレートエンジン として、品質と生産性の向上に寄与している。
Next.js on Vercel や Remix on Cloudflare といった、アーキテクチャだけでなくデプロイ環境といった開発者体験を統合的にサポートするフレームワークとプラットフォームの組み合わせが登場している。
Virtual DOM が実現する HTML の差分描画はアプリケーションの状態に応じたページの高速な再描画を実現し、昨今の UI ライブラリの多くはこの概念を踏襲している。これは単一方向のデータフロー設計である Flux を一般化させた。
アプリケーションの要件に応じたアーキテクチャの試行錯誤が繰り返され、概念が成熟していく。Universal JavaScript や Jamstack などのパラダイムが発明された。MPA への揺り戻しをブラウザ実装の最適化である bfcache が後押しする。
サーバーサイドエンジニアが Backend を実装してマークアップエンジニアが HTML/CSS を実装する時代から、Node.js が成すエコシステムの普及と成熟によって Software Engineer (Frontend) が Web アプリケーション全域をカバーしつつある。
.@1000ch さんの「フロントエンドの責務が広がってバックエンドを飲み込んでいる」という話があって、これは結構象徴的だなと思いました。たとえばフロントエンドエンジニア向けのミートアップでCDNが話の中心になるというのは隔世の感があります。 #高速化_findy— FUJI Goro (@__gfx__) March 22, 2023
.@1000ch さんの「フロントエンドの責務が広がってバックエンドを飲み込んでいる」という話があって、これは結構象徴的だなと思いました。たとえばフロントエンドエンジニア向けのミートアップでCDNが話の中心になるというのは隔世の感があります。 #高速化_findy
セマンティックで HTML を使いつつ、@layer/@container クエリ, :has(), CSS Nesting など CSS の新機能を抑えていく。Sass や Autoprefixer は役目を終えつつある。
:has()
JavaScript は ES2015 をベースにしつつ、実利と投資を含めて ES2016+ を前提にして差し支えない。TypeScript も積極的に導入し、target も同様に ES2015+ で問題ない。
Node.js とそのエコシステムは Web 開発にとって今や欠かせない。要件に応じて UI ライブラリとビルドツールを選びながら、ベストプラクティスを模索していく。
Frontend Developer Roadmap を参考に、Software Engineer (Frontend) としての分化する専門性を磨いていく。