Cybozu Frontend Monthly #18
イベント概要
サイボウズフロントエンドマンスリー は、サイボウズ社内で行っているフロントエンド情報共有会「フロントエンドウィークリー」の公開版です。
その月に気になったフロントエンドの情報を、サイボウズのフロントエンドエキスパートチームのメンバーが共有していきます。
このイベントのハッシュタグは #サイボウズフロントエンドマンスリー です。
※フロントエンドウィークリーとは
毎週火曜の 17:00 〜 18:00
で社内向けに行っているフロントエンドの気になる記事を紹介する会です。2016年3月15日から行われています。
ハッシュタグ
#サイボウズフロントエンドウィークリー
で実況しています。
zennのpublicationにてウィークリーのまとめも投稿していますので、ぜひこちらもご覧ください。 https://zenn.dev/p/cybozu_frontend
開催日
2021年12月20日
イベントページ
https://cybozu.connpass.com/event/233823/
配信URL
https://www.youtube.com/watch?v=xUjTDMCPLUM
メンバー
コンテンツ
⛄️ 1月〜3月のまとめ
ブラウザ関連
- SmartHR が Internet Explorer サポート終了のお知らせを出した
- Agenda for the 80th meeting of Ecma TC39
- Enabling Popups - MicrosoftEdge/MSEdgeExplainers
<popup>
という新しい HTML 要素の提案
- Upgrading DevTools’ architecture to the modern web
- 大規模で歴史の長いChromeのDevToolsの移行をどのように進めたのか、移行での学びなどがまとまった動画
- Compat2021: Eliminating five top compatibility pain points on the web
- ブラウザ互換性の問題を改善するCompat2021という取り組みについて紹介した記事
- :focus-visible 周りのブラウザ実装が進んだ
- How MDN’s site-search works - Mozilla Hacks - the Web developer blog
- リニューアルしたMDNのサイト内検索のしくみの話
- Error Cause in JavaScript - DEV Community
- Errorのコンストラクタの第2引数に他のエラーを渡すことができるプロポーザル。紹介当初はstage3だったが、現在はstage4になりES2022に取り入れられた。
- TC39 2020 March 03/09
- TC39 2020 March 03/10
- littledan/proposal-module-fragments
- Module Fragments というインラインでモジュールを定義できる構文のプロポーザル
- LaytoutShiftを効率的にdebugする (web.dev)
- Requesting performance isolation with the Origin-Agent-Cluster header
- Site Isolation の Origin で Isolation するための機能の話
OSS 関連
その他
- State of JS 2020
- 2020 JavaScript Rising Stars
- Don’t Use Inverted Color Cues on Toggle Buttons
- Classi にフロントエンドエキスパートチームを作った話
- Using AbortController as an Alternative for Removing Event Listeners | CSS-Tricks
- AbortController を jQuery の once 関数みたいな一度実行したら消えるタイプのイベントリスナーの代替として使う話
- Front-End Performance Checklist 2021 — Smashing Magazine
- Introducing Env: a better way to read environment variables in JavaScript - Human Who Codes
- ブラウザにサーバーサイドから環境変数を流し込む際に陥りがちな罠と、それを回避するために作られた@humanwhocodes/envについての記事
- How We Improved SmashingMag Performance
- JAMStack 上で React を使って構築した Web サイトのパフォーマンスを最適化し、Core Web Vitals のメトリクスを改善した手法の話。
- Maximally optimizing image loading for the web in 2021
- Core Web Vitals を指標として画像読み込みを最適化する手法を簡単なコード付きで紹介してる
- Post-Spectre Web Development
- Spectre以降のWeb開発について脅威モデルと対策の実践例が解説されているドキュメントがW3CのWorking Draft(草案)として公開された
- Announcing the Deno Company
- Denoが目指していくものや、資金調達して実際に開発を進めていくことなどを発表
ゲスト
3月
ヤフー株式会社
印象に残っている記事など
SmartHR が Internet Explorer サポート終了のお知らせを出した : @nakajmg
2021年は多くの企業がIE11のサポートを終了する動きを見せていた。弊社も6月にお知らせを出し、2022年6月でサポートを終了する予定。
この一連のIE11のサポート終了の動きはMicrosoftが自社サービスでのIE対応の終了のお知らせを出したことに起因しているところが多い。
レガシーなブラウザのサポート終了への流れを喜ぶ一方で、SafariがIEのような存在になりつつあるという問題提起がなされています。
State of JS 2020: @nus3_
2020年の調査結果ではフロントエンドフレームワークとして利用率がそこまで高くなかったNext.jsですが、2021年にはSvelteの作者のRich HarrisさんのVercelへのジョインやNext.js CONFなど、様々な発表がありました。実際にプロダクションにNext.jsを採用するといった記事を見ることも多かったように思います。
2020年に興味を持たれたビルドツールとしてGoやRustで実装されたesbuildやSWCが挙げられていました。2021年にはViteがesbuildを、Next.jsがSWCをそれぞれ採用しました。また、JavaScriptツールチェーンとして現在開発中のRomeでもRustが採用されたりと、JavaScript周りのツールがGoやRustで実装されたものが使われることが増えました。
State of JS 2021がどのような結果になるのか楽しみですね!
🌸 4月〜6月のまとめ
リリースなど
- TypeScript 4.3
- 「Angular 12」正式リリース。Webpack 5正式サポート、IE11のサポートが非推奨、Strictモードがデフォルトに、「Ivy」レンダリングエンジンへの移行が事実上完了など
- Parcel 2 beta 3
- Storybook 6.2
- Storybook 6.3
- video-dev/hls.js v1.0.0
- Headless UI v1.0 – Tailwind CSS
- webpack/webpack v5.30.0
- V8 release v9.1 · V8
- Jest27
- vanilla-extract 1.0.0
- lighthouse v8
- Prettier 2.3.1
- Release v3.1.0 Pluto · vuejs/vue-next
- Release v9.0.0 · mochajs/mocha
- Release v10.0.0 · puppeteer/puppeteer
- Electron 13.0.0 | Electron Blog
ブラウザ関連
- Chrome
- Safari
- tc39
- IE
- Internet Explorer は Microsoft Edge へ – Windows 10 の Internet Explorer 11 デスクトップアプリは 2022 年 6 月 15 日にサポート終了 - Windows Blog for Japan
- progfay/benefit-from-end-of-ie: List of APIs that will be available due to IE termination
- Proposal for dropping ie11 support in Vue 3 #296
- JSer.info #540 フォローアップ: オープンソースの予算、フレームワークでのIE 11サポート終了の時期
- 当社製品・サービスでのInternet Explorer 11サポート終了について(2021/6/17更新) | サイボウズからのお知らせ
- IE11 サポート終了の歴史 | blog.jxck.io
イベント
- WebAssembly Summit
- Google I/O
- Front-End Test Fest | Jun 8 2021
- JavaScript Web Engines Hackfest 2021 · Igalia/webengineshackfest Wiki
- Prisma Day 2021
- OpenJS World 2021 - OpenJS Foundation
- Next.js Conf 2021
OSS 関連
- React
- The Plan for React 18 – React Blog
- New React Docs · Issue #3308 · reactjs/reactjs.org
- React 18 alpha版発表まとめ
- アップグレードの容易さが重視されていたり、Concurrent Rendering、Automatic Batching、Suspenseの機能追加などが含まれている。また、Strict ModeでのuseEffectの動作の変更など破壊的変更もある。
- 5 Advanced React Patterns(From 1013Youmeeeさん@マンスリー)
- Vue
- What’s new in Vue 3.1? | Ninja Squad
- @vue/compatでVue 2からマイグレーションできたり、IEサポート終了したりしました。
- Vue with Vite by kazupon
- Viteを使ったVueのアプリケーション開発についてのスライド
- What’s new in Vue 3.1? | Ninja Squad
- Prisma
- Prisma’s Data Guide
- データベースの動作や選定やPrismaでの使い方についてのドキュメント
- MongoDB database connector | Prisma Docs
- MongoDBをPrismaをつなげる方法についてのドキュメント
- Prisma’s Data Guide
- Node.js
- Pure ESM package
- sindresorhusが自身のnpmパッケージをESM Onlyで配布していくことを発表
- Next.js で Node.js の API がいつ入ったのかわかる表を作る
- deps: add Yarn 1.22.5 by arcanis · Pull Request #37277 · nodejs/node
- corepack is 何?
- 利用するパッケージマネージャーを管理するツールがNode.js本体に入った
- Pure ESM package
その他
- GraphQL Code Generator で TypeScript の型を自動生成する - クックパッド開発者ブログ
- Best practices for cookie notices(from lacolacoさん@マンスリー)
- Keeping third-party scripts under control(from lacolacoさん@マンスリー)
- noteのフロントエンドApp分割
- Introducing Aurora
- Start building with the Notion API Beta
- レシピサービスのフロントエンドを Next.js と GraphQL のシステムに置き換えている話 - クックパッド開発者ブログ(from hokacchaさん@マンスリー)
- レシピサービスのフロントエンドに CSS in JS を採用した話 - クックパッド開発者ブログ(from hokacchaさん@マンスリー)
ゲスト
4月
Classi株式会社
5月
株式会社stand.fm
6月
クックパッド株式会社
- @hokaccha (現Ubie Discovery)
印象に残っている記事など
Internet Explorer は Microsoft Edge へ – Windows 10 の Internet Explorer 11 デスクトップアプリは 2022 年 6 月 15 日にサポート終了 - Windows Blog for Japan: @shisama_
2022/6/15(日本時間 2022/6/16)に Microsoft は IE のサポートを終了します!
サイボウズ製品も2022/6/12にサポートを終了予定です!
Microsoftからも関連の記事が多く出ました。
- Windows 10 長期サービス チャネル (LTSC) 次期リリースについて - Windows Blog for Japan
- 「毎秒約 579 件のパスワード攻撃 (英語) が仕掛けられており、この課題に対応できるブラウザーが必要とされています。」
- 1 日 5000 万件の Password atack、ブロックした脅威のあるメール 300 億件…
- 「Internet Explorer 11 デスクトップ アプリケーションのサポート終了」の発表に関連する FAQ - Windows Blog for Japan
- Internet Explorer から Microsoft Edge への移行ガイドライン | Japan Developer Support Internet Team Blog
The Plan for React 18: @sajikix
今年の6月、この記事でReact v18 の計画が発表され、同時にalpha版が公開されました。 また、Introducing React 18ではReact v18で以下のようなアップデートがなされるという発表が行われました。
- すぐに利用できる機能改善
- Automatic batching
- SSR での Suspense サポート
- Susupenceの修正
- v18からオプトインできるようになるConcurrent features
- startTransition
- useDeferredValue
- Streaming SSR with selective hydration
v18へのアップグレード自体は容易であることが強調されていますが、内部的にはレンダリングやライフサイクル自体の考え方などが変わってくるアップデートであることが伺えます。 その後も10月に新しいReact Docs BETAが公開され、12月のReact Conf 2021では上記の機能を中心について詳しい解説がなされました。
正式版のリリースは来年の初めとなりそうですが、今後もReactの行く末に目が離せなさそうです。
🌞 7月〜9月のまとめ
リリースなど
- Vue v3.2
<script setup>
の追加や Web Components 出力の対応など
- petite-vue
- ビルド無しで利用できる軽量版のVue.js
- TypeScript v4.4
typeof
による型の絞り込みが少し賢くなった、catch句が受け取る変数がunknownになった、など
- SWR v1.0
- Special thanks to Toru Kobayashi
- Prettier 2.4
- TypeScript4.4サポートなど
- Prisma 3
- MicrosoftSQLServerなどサポートDBの追加や、リレーション周りの強化
- Lit 2
- Vite 2.6
- React Native v0.65
- Electron 14.0.0
- Storybook 6.3
- Webpack 5サポートなど
- React GUI
- FacebookからでたReactのUIライブラリ的なもの
- npm v7.20
npm pkg
コマンドの追加
ブラウザ関連
- Firefox
- Chrome
- TC39 2021 July 7/13,14,15
- TC39 2021 August 8/31
- TC39 2021 September 9/1
- IE
- 標準APIなど
- shared element transition API
- ページ遷移時にフェードなどの遷移アニメーションをつけれるAPIの提案と解説
- Using CSS Module Scripts to import stylesheets
- CSS Module ScriptsがChromeに適用された
- CSS Nesting ModuleのDraft
- CSSのネストできる仕様ドラフトがで出た
- CSS accent-color
- cssにaccent-colorプロパティが追加された話
- shared element transition API
OSS 関連
- Partytown
- WebWorkerと同期的なXHRを利用してJavaScript Sandbox環境を構築するライブラリ&アプローチの話
- RomeがRustへの書き換えを発表
- フロントエンドツールチェインの大統合を目指すRomeがRustへの書き換えを発表し、同時にRust人材を募集し始めた。
- Prisma Day 2021
- Prismaのオンラインカンファレンス。MongoDBコネクタのサポートなどに言及された。
その他
- axios - Project dead?
- メンテナから回答があったことで解決した模様
- Vue.js has been selected as Wikimedia Foundation’s future JavaScript framework - Wikitech-l - lists.wikimedia.org
- WikimediaがVue.jsの採用を発表した
- メルカリShops のフロントエンド
- Deno on MDN
- MDN掲載のサポート環境表記にDenoが追加された
- Modern web apps without JavaScript bundling or transpiling
- Rails作者のDHHによるRailsとモダンフロントエンド周りに関する記事
- Safari isn’t protecting the web, it’s killing it | HTTP Toolkit
- Safari固有の問題や他ブラウザとの乖離が大きくなっているよ、という記事
- Just JavaScript
- Dan Abramov氏が作ったJSのメンタルモデルを学ぶ教材サイト
- Managing Focus Transitions in Slack
- slackのフォーカス管理UI周りの話
ゲスト
7月
Ubie Discovery
8月
note株式会社
インターン
9月
株式会社SmartHR
印象に残っている記事など
Modern web apps without JavaScript bundling or transpiling : @mugi_uno
Ruby on Rails 作者であるDHHがモダンフロントエンドへの解釈とRailsの今後の方向性について書き綴った記事です。 長くWebアプリケーション開発を牽引している Ruby on Rails ですが、Babelによるトランスパイルやwebpackによるバンドルといったフロントエンドの潮流に乗る形で、Webpackerが導入されました。 そして2021年末となった現在、多くのサービス・ライブラリがIE11のサポート終了を発表したことも一つの要因として、Native ESMやimport mapsの実践利用も少しずつ現実味を帯びてきたこともあり、Ruby on Rails の時期バージョン(Rails 7.x)以降ではフロントエンド周りで大きい変更がありそうです。
フロントエンドに閉じない領域で広く影響力を持つフレームワークだと思うため、フロントエンドに特化していたエンジニアのみならず、大きな規模でのパラダイムシフトの片鱗を感じさせる記事でした。
Why are hyperlinks blue?@__sakito__
リンクのデフォルトスタイルはなぜ青いのか、それを歴史から解説している記事です。
結論から話すと、急に青いハイパーリンクが登場したらしいです。 このことについて記事の最後に考察があります。 最初に青いハイパーリンクになったのはモザイクからなのですが、カラーモニターが流行ってたからという結論になってました。 その後モザイクが標準ブラウザになり、モザイクの UI が Web のデファクトになった流れが IE や Netscape に受けつがれたという見解。
あと、WWW ができたときに、ブラウザは白黒しかなく、白黒の濃淡だけでリンクを示していたので色覚障害のために下線が引かれたのも面白かったです。
ブラウザの歴史を簡易的に知ることもでき、「なぜこのようなUIになっているのか」について深く考えたことがなかったので、 歴史から学ぶことができて面白い記事でした。
🍁 10月〜12月のまとめ
リリースなど
- Nuxt.js v3 beta
- Next.js v12
- LighitHouse v9.0
- Remix v1
- React 18 Beta
- Deno Deploy Beta 3
- Deno v1.16
- Deno v1.17
ブラウザ関連
イベント
OSS 関連
印象に残っている記事など
Vercel welcomes Rich Harris, creator of Svelte: @sosukesuzuki
Svelte や Rollup の作者として知られている Rich Harris 氏が Vercel に入社しました。Rich Harris 氏はこれから Svelte にフルタイムで取り組むそうです。
また記事内では、Svelte は将来的には Egde First であることについても言及されています。従来のウェブアプリケーションと、最近の SPA の良いとこどりをしたいわゆる “Transitional Apps” を構築するツールとして、Svelte に期待しているようです。
また、Rich Harris 氏の入社によって Svelte の OSS としてのガバナンスが変更されることはないそうです。
Deno joins TC39: @b4h0-c4t
Deno が TC39 にジョインしました。
TC39WG においては下記 3 つの機能について取り組んでいくと表明していました。
- tc39/proposal-asset-references
- tc39/proposal-explicit-resource-management
- tc39/proposal-async-iteration