performance-optimization
Webアプリケーションのパフォーマンス向上を目的としたスキルで、サーバーサイドレンダリング、CSSのベストプラクティス、JavaScriptの最適化手法に関するガイドラインを提供します。ページ速度の改善やボトルネックの解消が必要な場面で活用できます。
description の原文を見る
Performance optimization guidelines for web development including server-side rendering, CSS best practices, and JavaScript optimization
SKILL.md 本文
パフォーマンス最適化
Webアプリケーション、テーマ、フロントエンドインターフェースを開発する際に、以下のパフォーマンス最適化の原則を適用してください。
コアパフォーマンス原則
- クライアント側のJavaScriptではなく、サーバーサイドレンダリングを最初の原則として優先する
- クライアント側のJavaScriptを最小化し、バンドルサイズを削減してTime to Interactiveを向上させる
- Core Web Vitalsの最適化: LCP、FID、CLS
- パフォーマンスを継続的に測定し、ベースラインを確立する
- すべてのアーキテクチャ上の決定がパフォーマンスに与える影響を検討する
サーバーサイドレンダリング
- 可能な限りサーバー側でコンテンツをレンダリングする
- ストリーミングレンダリングを使用してTime to First Byteを高速化する
- レンダリングされたコンテンツの適切なキャッシング戦略を実装する
- レンダリングを遅延させるリソースをブロックしない
- 該当する場合は静的コンテンツを事前レンダリングする
CSSベストプラクティス
セレクタ効率
- スタイリングにはIDセレクタを避け、代わりにクラスを使用する
- 詳細度を0 1 0に保つ
- セレクタの深いネストを避ける(最大3レベル)
- BEMなどの命名規則を使用して可読性を向上させる
- 要素セレクタよりもクラスセレクタを優先する
CSS構成
- 色、間隔、繰り返される値にCSS変数を使用する
- 関連するスタイルを論理的にグループ化する
- 未使用のCSSを削除してペイロードを削減する
- ファーストビュー上のコンテンツについてはクリティカルCSSのインライン化を検討する
- 複雑なレイアウトではCSS containmentを使用する
レイアウトパフォーマンス
- レイアウトスラッシング(強制的な同期レイアウト)を避ける
- アニメーションにはtransformとopacityを使用する(GPU加速)
- ペイントおよびcomposite操作を最小化する
- will-changeは控えめで意図的に使用する
- floatおよびpositioningよりもflexboxとgridを優先する
JavaScript最適化
コード構成
- コード構成にはモジュールパターンを使用する
- プライベートメソッドには適切なインジケータを付ける
- letより定数を優先し、varを避ける
- ネイティブAPIで十分な場合は外部依存関係を避ける
- コードを論理的で読み込み可能なチャンクに分割する
読み込み戦略
- 重要でないJavaScriptを遅延読み込みする
- 独立したスクリプトには非同期読み込みを使用する
- 大規模なアプリケーション向けコード分割を実装する
- コンポーネントとルートを遅延読み込みする
- 重要なリソースを事前読み込みする
ランタイムパフォーマンス
- イベントハンドラを適切にデバウンス・スロットルする
- ビジュアル更新にはrequestAnimationFrameを使用する
- 長時間実行の同期操作を避ける
- 効率的なDOM操作パターンを実装する
- CPU集約的なタスクにはWeb Workersを使用する
アセット最適化
画像
- フォールバック付きの最新形式(WebP、AVIF)を使用する
- srcsetを使用したレスポンシブ画像を実装する
- ファーストビュー下の画像を遅延読み込みする
- すべての画像を最適化・圧縮する
- 適切な画像サイズを使用する
フォント
- 必要な文字のみを含むようフォントをサブセット化する
- パフォーマンス向上のためfont-display: swapを使用する
- 重要なフォントを事前読み込みする
- フォントバリエーションの数を制限する
- ブランド化されていないテキストではシステムフォントの使用を検討する
キャッシング戦略
- 静的アセットに対して適切なキャッシュヘッダを実装する
- キャッシュ無効化用にバージョン付きファイル名を使用する
- CDNキャッシングを効果的に設定する
- オフラインサポート用のService Workersを実装する
- 必要に応じてAPIレスポンスをキャッシュする
アーキテクチャパターン
テーマとコンポーネントアーキテクチャ
- コードを論理的なセクションとブロックに整理する
- 保守性のための適切なフォルダ構造を使用する
- 関心の明確な分離を実装する
- 再利用可能で合成可能なコンポーネントを作成する
- コンポーネントのAPIと使用方法をドキュメント化する
設定と環境設定
- 設定を明確なグループと共に論理的に整理する
- 明確で説明的な命名規則を使用する
- 複雑さを削減するための条件付きロジックを実装する
- 適切なデフォルト値を提供する
- ビルド時に設定を検証する
国際化パフォーマンス
- すべてのテキストが翻訳可能であることを確認する
- 翻訳を効率的に読み込む(ロケール別に分割)
- 適切なロケール検出を使用する
- 翻訳済みコンテンツを適切にキャッシュする
- 右から左(RTL)レイアウトへの影響を検討する
測定と監視
- 本番環境での洞察にはReal User Monitoring(RUM)を使用する
- ベースライントラッキング用の合成監視をセットアップする
- Core Web Vitalsを継続的に監視する
- CI/CDでパフォーマンスバジェットをトラッキングする
- パフォーマンス低下を分析し、対応する
データベースパフォーマンス
- クエリを最適化し、適切なインデックスを使用する
- コネクションプーリングを実装する
- 頻繁にアクセスされるデータにはキャッシングを使用する
- 大規模な結果セットをページネーションする
- 遅いクエリを監視し、定期的に最適化する
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- mindrally
- リポジトリ
- mindrally/skills
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/mindrally/skills / ライセンス: Apache-2.0
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。