JavaScript の技術勉強会 (Kyoto.js) に参加してきました

JavaScript の技術勉強会 (Kyoto.js) に参加してきました

こんにちは。最近、約 3 年ぶりに 京阪電車 を利用した k-so16 です。特急の車両が豪華でワクワクしながら乗車していました (笑)

2023/5/26 に開催された Kyoto.js 19 へ参加しました。本記事では、当日のイベントの概要について紹介します。

概要

Kyoto.js は、京都で開催されている JavaScript に関する技術勉強会のコミュニティ です。フロントエンドに限らず、 JavaScript に関する技術全般を対象 としています。

今回参加した勉強会では、以下の内容の発表を聴講しました。

  • セッション枠
    • JavaScript を利用したジェネラティブアート
    • 表エディターをフルスクラッチした話
    • 半同期的ペアレビューの提案
    • フロントエンドのパフォーマンス改善を計測する話
  • LT 枠
    • SPA でデータを URL で共有する方法
    • レガシーなフロントエンドとの戦った話
    • p5.js と JPEG Decoder

本記事では、特におもしろいと感じた、フロントエンドのパフォーマンス改善の計測についての発表について紹介します。

「フロントエンドのパフォーマンス改善を計測する話」の概要

フロントエンドのパフォーマンスの改善の軸として、 快適な表示の実現表示速度の向上 の 2 つが挙げられていました。それぞれの軸を実現するものの例として、次の内容が挙げられていました。

  • 快適な表示の実現
    • あとからロードされた要素が表示されることによる表示領域のズレを軽減
    • Accessiblity の向上
  • 表示速度の向上
    • 応答速度の向上
    • コンテンツの表示速度の向上
    • ユーザーが操作できるまでの時間の短縮

パフォーマンスを計測する指標として、ページのダウンロード開始時間を表す TTFB (Time To First Byte) や、最初のコンテンツが表示された時間を表す FCP (First Contentful Paint) など、さまざまな指標が提唱されてきました。これらの指標のうち、 Google は ページの UX にかかわる重要な指標 として、以下の 3 つを挙げているとのことです。

  • LCP (Largest Contentful Paint): 最大のコンテンツの表示時間
    • ページ読み込み完了の指標
  • FID (First Input Delay): 最初に操作が可能になるまでの時間
    • ページの応答性の指標
  • CLS (Cumulative Layout Shift): ページの表示中に発生したコンテンツのズレの指標
    • 視覚的安定性の指標

この 3 つを利用して評価する CWV (Core Web Vitals) という指標もあります。 Google は CWV を改善することを推奨 しています。ただし、 CWV の改善は SEO に有利ということではない ようです。

パフォーマンスの改善効果を検証するために、発表内では CWV を計測する手段として Sentry が紹介されていました。 Sentry はフロントエンドで発生したエラーを収集できるほか、さまざまなブラウザの CWV もダッシュボード上で計測できるとのことです。

Sentry を利用することで、フロントエンドで発生したエラーを収集できることは、過去に参加した勉強会で聞いていましたが、パフォーマンス計測もできることは今回初めて知りました。パフォーマンスの指標も、今回初めて聞くものが多かったので、非常に勉強になりました。

懇親会

セッションの後の懇親会にも参加しました。懇親会では登壇者の方と直接話すこともでき、とても良い機会を得られました。

自分の知らない技術についての話を聞けたり、他の参加者の方を交えて意見交換ができたりと、自分にとって良い刺激になりました。特に、ペアレビューと関連して、ペアプログラミングについての議論が熱く交わされていました。

所感

今回の勉強会では、パフォーマンスの計測の話からアートに関するものまで、幅広い範囲の発表を聴講できました。特にコーディングによるアート作品の作成については、なかなか聞く機会がないので、とても興味深い内容でした。

聴講した発表で聞いた技術は、自分でも試してみたいと感じるものが多く、とても良い刺激になりました。特に興味深いと感じたパフォーマンス計測の話のほかに、データを URL で共有する方法や p5.js と JPEG Decoder の話など、機会を見つけて試してみたいと思います。

以上、 k-so16 でした。

k-so16