第4章:速度低下を招くSWELL設定と失敗例
SWELLは高速化に優れたテーマですが、不適切な設定や使用方法によっては、かえってサイトの表示速度を低下させてしまうことがあります。ここでは、陥りがちな失敗例とその対策について解説します。
4.1. 過剰なアニメーションやエフェクトの利用
SWELLには、スクロールアニメーションやブロック単位のアニメーションなど、多彩なエフェクト機能が備わっています。これらはサイトに動きと魅力を与えますが、過剰に多用するとJavaScriptの処理量が増え、レンダリング速度に悪影響を及ぼします。
- 失敗例: ページのほとんどの要素にアニメーションを設定し、動きが多すぎてサイト全体が重く感じる。
- 対策: アニメーションは本当に必要な場所、ユーザー体験を向上させる場所に限定して使用しましょう。特にファーストビューでのアニメーションは、初期ロード時間を意識し慎重に検討すべきです。
4.2. 大容量画像の未圧縮・未最適化使用
これはSWELLに限らずWordPressサイト全般に言えることですが、高解像度の写真をそのままアップロードするケースは非常に多いです。
- 失敗例: スマートフォンで撮影した数MBの画像を、何の処理もせずに記事内に複数枚配置する。表示サイズは小さくても、元のデータは大きいままなので、ページのロードに時間がかかる。
- 対策: 前章で述べたように、アップロード前にWebP形式への変換、適切なサイズへのリサイズ、圧縮を徹底しましょう。SWELLの遅延読み込み機能は活用しつつも、そもそもの画像容量を減らすことが重要です。
4.3. 多くのWebフォントやアイコンフォントの読み込み
SWELLはGoogle Fontsとの連携がスムーズですが、複数のフォントファミリーや太さを読み込むと、その分HTTPリクエスト数とファイルサイズが増加します。
- 失敗例: サイトデザインのために、Google Fontsから複数の日本語フォントや英語フォントのバリエーション(Regular, Bold, Italicなど)を大量に読み込んでいる。
- 対策: 使用するフォントファミリーと太さは必要最低限に絞りましょう。SWELLのテーマカスタマイザーでGoogle Fontsの読み込み方法を「display:swap」や「非同期読み込み」に設定し、レンダリングブロックを軽減することも重要です。
4.4. 外部サービスとの連携によるJavaScriptの肥大化
SNSシェアボタン、コメントシステム(Disqusなど)、広告スクリプト、アフィリエイトタグなど、外部サービスから提供されるJavaScriptは、サイトのパフォーマンスに大きな影響を与えます。
- 失敗例: 複数のSNSシェアボタンを設置し、各サービスからのJSファイルを読み込んでいる。
- 対策: 外部スクリプトの必要性を再評価し、本当に必要なものだけに絞り込みましょう。可能な限り、SWELLが提供する標準機能や、より軽量な代替手段を検討してください。例えば、SWELLには標準のシェアボタン機能があります。
4.5. WordPressのデフォルト機能の無効化忘れ
SWELLは一部のWordPressコア機能を無効化する設定を提供していますが、自身でさらに調整が必要な場合もあります。
- 失敗例: 絵文字やXML-RPCなどの不要な機能が有効なままになっており、余計なリクエストが発生している。
- 対策: SWELLのカスタマイザーで「高速化」設定を確認し、不要な機能を無効化しましょう。さらに、子テーマのfunctions.phpを使って、WordPressが読み込む他の不要なスクリプトやスタイルシートをデキューすることも有効です。
これらの失敗例を避けることで、SWELLが持つ本来の高速性能を維持し、さらに向上させることができます。
第5章:上級者向け!SWELLテーマカスタマイズでのさらなる高速化
SWELLの標準機能と基本的な最適化に加えて、子テーマを活用したより深いレベルのカスタマイズを行うことで、サイトの表示速度をさらに向上させることが可能です。これは、開発者向けの知識が必要となりますが、SWELLの柔軟性を最大限に活かす方法です。
5.1. functions.phpでのフックを活用したカスタマイズ
SWELLはWordPressの一般的なフック(アクションフック、フィルターフック)に加えて、独自のフックも提供しています。これらを子テーマのfunctions.phpで利用することで、SWELLの挙動を細かく制御し、パフォーマンスを最適化できます。
- 不要なWordPress標準スクリプト/スタイルシートのデキュー:
WordPressはデフォルトで多くのスクリプトやスタイルシートを読み込みますが、SWELL環境では不要なものもあります。例えば、GutenbergブロックエディタのCSSがフロントエンドで読み込まれる場合、それをデキューすることでCSSのファイルサイズを削減できます。
function removewpblockcss() { wpdequeuestyle( 'wp-block-library' ); wpdequeuestyle( 'wp-block-library-theme' ); } addaction( 'wpenqueuescripts', 'removewpblockcss', 100 );他にも、絵文字関連のJSやCSSを完全に削除するコードなども有効です。
- SWELLの特定の機能の無効化:
SWELLが提供する特定のアニメーションやJavaScript機能が不要であれば、それらをフックを使って無効化することができます。SWELLの公式ドキュメントには、多くの機能フックが公開されており、不要な機能を特定してデアクティベートすることで、JavaScriptの読み込み量を削減できます。
// 例: SWELLの特定のJSを無効化するフィルター (SWELLの公式ドキュメントでフック名を確認) addfilter( 'swellshouldloadsomejsfeature', 'returnfalse' ); - カスタムCSS/JSの最適化とインライン化:
子テーマのCSSやJSファイルを極力小さくし、HTTPリクエスト数を減らすために、少量であればfunctions.php内で直接インライン化することも検討できます。ただし、インライン化しすぎるとHTMLが肥大化し、キャッシュ効率が落ちるため、慎重な判断が必要です。
5.2. キャッシュプラグインとの組み合わせ方
SWELLは内部キャッシュ機能も持っていますが、より強力なページキャッシュやオブジェクトキャッシュを実現するために、外部のキャッシュプラグインを併用することも有効です。ただし、SWELLとキャッシュプラグインの相性や設定によっては、かえって問題を引き起こす可能性もあります。
- SWELL推奨/互換性のあるプラグイン: SWELLは特定のキャッシュプラグインとの互換性情報を提供している場合があります(例:LiteSpeed Cache, WP Rocket)。これらのプラグインを使用する際は、SWELLの高速化設定と重複しないように注意し、適切に連携させることが重要です。
- ページキャッシュの活用: サーバーサイドでのページキャッシュは、WordPressのデータベースクエリやPHP処理をスキップし、高速なHTML出力を可能にします。
- オブジェクトキャッシュの活用: RedisやMemcachedなどのオブジェクトキャッシュを導入することで、データベースへのクエリ数を減らし、動的なコンテンツの表示速度を向上させます。
5.3. サーバーサイドの最適化との連携
SWELLのテーマ設定だけでは解決できない根本的な速度向上には、サーバー側の最適化が不可欠です。
- Nginx/Apacheの設定: サーバーソフトウェアの設定を最適化し、Gzip圧縮やBrotli圧縮を有効化することで、転送データ量を削減できます。また、ブラウザキャッシュのヘッダー設定も重要です。
- PHPバージョンのアップグレード: 最新のPHPバージョン(PHP 8.0以上推奨)は、以前のバージョンと比較して処理速度が大幅に向上しています。常に最新の安定版を利用するようにしましょう。
- HTTP/2、HTTP/3の活用: これらのプロトコルは、複数のリクエストを同時に処理できるため、ページのロード時間を短縮します。利用しているサーバーが対応しているか確認し、有効にしましょう。
これらの上級者向けテクニックは、サイトのパフォーマンスを極限まで高めるための手段です。実施する際は、必ずバックアップを取り、段階的にテストしながら進めることをお勧めします。
第6章:よくある質問と回答
Q1: SWELLを使っているのにPageSpeed Insightsのスコアが低いのはなぜですか?
A1: SWELLはデフォルトで高速なテーマですが、スコアが低い場合、主に以下の原因が考えられます。
- 画像が最適化されていない: 大容量の画像ファイルが多数使われていると、SWELLの遅延読み込み機能を使っても初期表示が遅くなります。WebP変換、サイズ調整、圧縮を徹底しましょう。
- 外部スクリプトの読み込み: Google Analytics、広告、SNSウィジェットなど、多くの外部JavaScriptがパフォーマンスを低下させている可能性があります。必要なものに絞り、非同期読み込みを徹底してください。
- サーバー環境: 低速なサーバーや古いPHPバージョンを使用していると、テーマの性能を十分に引き出せません。高速なサーバーへの移行やPHPバージョンの更新を検討しましょう。
- 過剰な機能やコンテンツ: 多くのブロックやアニメーション、Webフォントを使いすぎると、その分リソースが増加し、スコア低下につながります。
Q2: プラグインなしで画像最適化は可能ですか?
A2: はい、可能です。プラグインなしでの画像最適化の主な方法は以下の通りです。
- 手動WebP変換: SquooshなどのオンラインツールやPhotoshopなどの画像編集ソフトで画像をWebP形式に変換してからアップロードします。
- サイズ調整と圧縮: 画像を記事内で表示する最大サイズに合わせてリサイズし、さらにTinyPNGのようなツールで圧縮してからアップロードします。
- SWELLの遅延読み込み: SWELLの機能として画像、iframeの遅延読み込みを有効にすることで、初期ページのロード時にすべての画像を読み込むのを防ぎます。
これらの手間を省きたい場合はプラグインも選択肢になりますが、手動での最適化は完全にコントロールできる利点があります。
Q3: Google Fontsの読み込みを高速化する具体的な方法は?
A3: Google Fontsの高速化には、以下の方法が有効です。
- SWELLカスタマイザーでの設定: 「テーマカスタマイザー > 高速化 > Webフォント」で、Google Fontsの読み込み方法を「非同期読み込み」または「display:swapを適用する」に設定します。これにより、フォントの読み込み中にテキストが表示されないFOIT(Flash of Invisible Text)やFOUT(Flash of Unstyled Text)を軽減できます。
- 使用フォントの厳選: 必要なフォントファミリーや太さのバリエーションを最小限に絞り込み、読み込むフォント数を減らします。
- ローカルホスト: 非常に上級者向けの選択肢ですが、Google Fontsをダウンロードして自分のサーバーでホストし、CSSで指定することで、外部リクエストを減らすことができます。
Q4: SWELLの子テーマを使って、何が無効化できますか?
A4: SWELLの子テーマのfunctions.phpでは、主に以下のものを無効化・調整できます。
- WordPress標準の不要なスクリプト/スタイルシート: 絵文字関連のJS/CSS、GutenbergブロックエディタのCSS(フロントエンドで不要な場合)、jQuery Migrateなど。
wpdequeuescript()やwpdequeuestyle()を使います。 - SWELLの特定のJS/CSS: SWELL開発者が提供しているフックやフィルターを利用して、特定の機能(例:一部のアニメーションJS)を無効化できます。公式ドキュメントで利用可能なフックを確認しましょう。
- XML-RPC: セキュリティとパフォーマンスのために、XML-RPCを完全に無効化するコードを追加できます。
ただし、無効化する際は、サイトの機能に影響がないか十分にテストしてください。
Q5: SWELLでCDNは必要ですか?
A5: 必須ではありませんが、CDNを導入することで、特にグローバルなアクセスが多いサイトや、画像・動画などの静的コンテンツが多いサイトでは、さらなる速度向上が期待できます。
CDNは、画像やCSS、JavaScriptなどの静的ファイルを世界中に分散配置されたサーバーから配信することで、ユーザーに最も近いサーバーからコンテンツを提供し、ロード時間を短縮します。SWELL自体はCDN機能を持っていないため、Cloudflareのような外部サービスを導入することになります。CDNはサーバーの負荷軽減にも寄与します。