PageSpeed の「レンダリングを妨げるリソースの除外」対策でJS読み込み速度改善

PageSpeed Insights の表示で、「レンダリングを妨げるリソースの除外」をせよと指示されるケースの JavaScript の対策です。

JavaScript がレンダリングを妨げるリソース

上図では、JavaScript の jQuery などライブラリファイルがレンダリングを妨げるリソースとして指摘されています。

改善対策

JavaScript の読み込みを遅らせることで、レンダリングの妨げにならないようにします。基本的には遅延ロードなどをすれば点数改善ができます。

link タグに defer 属性を追加

JavaScript の遅延読み込みには、async と defer があるそうなのですが、今回は defer を使います。

元のタグ

以下のように外部 JS を読み込んでいた箇所が PageSpeed の指摘です。

<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"
             crossorigin="anonymous">

改善したタグ

defer 属性を足します。

<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"
             crossorigin="anonymous" defer>

script タグの最後に defer を足しています。一番後ろに書きましたが、属性なので script タグ内のどこに足しても大丈夫です。

PageSpeed で指摘された読み込み JS には全部 defer を足しておくとパフォーマンス改善が期待できます。

パフォーマンスの確認

PageSpeed Insights を確認して「レンダリングを妨げるリソースの除外」という記述で該当の JS(jquery-3.2.1.slim.min.js)が消えていれば OK です。

パフォーマンスへの影響

defer 属性で PageSpeed の点数に改善がみられました。

defer 設定前の点数

defer 設定なしでは、モバイル41点でした😇

defer 無しの js 読み込みの点数

defer 設定ありの点数

defer ありでは点数が改善しました。

defer を js 読み込み設定後の点数

モバイルで、17点の改善です😁
defer 設定、やる価値のある対応ですね。

WordPress の wp_head() でライブラリが出力される場合は?

当記事でご紹介した手法を WordPress で使う場合は wp_head() をカスタマイズする必要がある場合があります。wp_head() で出力される JavaScript に defer 属性を付与するには、functions.php で wp_head() の出力を変更します。

以下の記事も合わせてご覧ください。

参考

Eliminate render-blocking resources

PageSpeed で「レンダリングを妨げるリソースの除外」対策でCSS速度改善

PageSpeed Insights の表示で、「レンダリングを妨げるリソースの除外」をせよと指示されるケースの対策です。

レンダリングを妨げるリソース

CSS がレンダリングを妨げているようなので、CSS の読み込みを送らせます。

link タグに preload と style を追加

PageSpeed で指摘された CSS を読み込んでいるタグを修正します。

元のタグ

以下のように外部 CSS を読み込んでいた箇所が PageSpeed の指摘です。

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

改善したタグ

rel=”preload” と as=”style” を足します。

<link rel="stylesheet" rel="preload" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" as="style">

rel 属性に preload して欲しいという記述と、リソースを style と指定しました。この指定、以前はブラウザごとに実装に差があったようなのですが、最近は概ね対応してきているようです。

パフォーマンスの確認

PageSpeed Insights を確認して「レンダリングを妨げるリソースの除外」という記述が消えていれば OK です。

パフォーマンスへの影響

CSS のプリロードの影響はモバイルでは少し改善し、
デスクトップは大きなポイント改善となりました。

preload 設定前の点数

preload 設定なしでは、モバイル65点でした😇

モバイル CSS の preload なし

デスクトップは79点

デスクトップ CSS の preload なし

preload 設定ありの点数

preload ありでは点数が改善しました。
モバイルで+3点、デスクトップで+15点です。

モバイル CSS の preload あり
デスクトップ CSS の preload あり

モバイルで+3点、デスクトップで+15点改善されました。
レンダリングを妨げるリソース部分が改善されたようでよかったです😁

しっかり改善したようなので、preload は対応する価値がありそうですね。

WordPress の wp_head() の場合は?

当記事でご紹介した手法を WordPress で使う場合は wp_head() をカスタマイズする必要がある場合があります。wp_head() で出力される style.css などに preload 属性を付与するには、functions.php で wp_head() の出力を変更します。

以下の記事も合わせてご覧ください。

参考

Eliminate render-blocking resources

rel=”preload” によるコンテンツの先読み – HTML: HyperText Markup Language | MDN

PageSpeed で「テキスト圧縮の有効化」対策で速度改善

当記事では PageSpeed Insights の表示で、「テキスト圧縮の有効化」をせよと指示されるケースの対策と改善手法をご紹介します。


テキストリソースを gzip や deflate で圧縮せよという指摘

上図ではテキストリソースの JavaScript や CSS を圧縮して通信量を抑えるように指摘されています。
この対策について見ていきましょう。

改善対策

テキスト圧縮は、ウェブサーバーが返すリソースへ圧縮の指定がよくある手法です。

gzip と deflate の指定を追加

Apache などの Web サーバーで gzip や deflate の圧縮指定をします。
圧縮指定をすれば PageSpeed の表示が消えて、速度改善が期待できます。

具体的な設定はサーバーに合わせた指定をしてください。

レンタルサーバーは .htaccess に指定

Web サーバーの設定を直接変更できないレンタルサーバーなどは、.htaccess に記述して deflate の圧縮指定を追加できる場合があります。

ご利用のレンタルサーバーの設定を確認してください。

以下は Apache を利用しているケースでの .htaccess の圧縮指定の紹介です。
.htaccess の IfModule mod_rewrite.c タグ内に AddOutputFilterByType DEFLATE を追加します。

<IfModule mod_rewrite.c>
    AddOutputFilterByType DEFLATE text/html
</IfModule>

これは HTML だけしか指定していないので、他にも追加する場合は後ろに複数追加できます。

<IfModule mod_rewrite.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/js application/x-javascript application/javascript
</IfModule>

js と css が PageSpeed の指摘にありましたので追加しました。

パフォーマンスへの影響を確認

再度 PageSpeed Insights を確認します。

deflate 設定前の点数

deflate の指定前は37点でした。

deflate 設定後の点数

こちらが deflate 設定後の点数です。

37点から66点になっています😁
29点の改善となりました。

この結果を踏まえると、速度改善では gzip と deflate の圧縮をまず検討するべきと言えますね。

参考

mod_deflate – Apache HTTP サーバ バージョン 2.2

PageSpeed でフォントの「過大なネットワーク ペイロードの回避」対策で速度改善

PageSpeed Insights の表示で、「過大なネットワーク ペイロードの回避」をせよと指示されるケースの対策です。
指摘された中でもウェブフォントが上位に挙がっているので、フェブフォント向けの速度改善対応となります。

ネットワークペイロードの回避

PageSpeed の指摘としてはフォントのロードに負担がかかるので遅延読み込みをせよとあります。

改善対策

負担をかけているのはウェブフォントなので、CSS を改善して読み込みを遅延読み込みさせます。

CSS で font-display 指定を swap にする

CSS の @font-face を利用してフォントを遅延読み込みさせます。
CSS を編集して @font-face に swap を設定します。

    @font-face {
        font-family: 'Noto Sans Japanese';
        font-style: normal;
        font-weight: 100;
        src: url(//fonts.gstatic.com/ea/notosansjapanese/v6/NotoSansJP-Thin.woff2) format('woff2'), url(//fonts.gstatic.com/ea/notosansjapanese/v6/NotoSansJP-Thin.woff) format('woff'), url(//fonts.gstatic.com/ea/notosansjapanese/v6/NotoSansJP-Thin.otf) format('opentype');
        font-display: swap;
    }
    
    @font-face {
        font-family: 'Noto Sans Japanese';
        font-style: normal;
        font-weight: 200;
        src: url(//fonts.gstatic.com/ea/notosansjapanese/v6/NotoSansJP-Light.woff2) format('woff2'), url(//fonts.gstatic.com/ea/notosansjapanese/v6/NotoSansJP-Light.woff) format('woff'), url(//fonts.gstatic.com/ea/notosansjapanese/v6/NotoSansJP-Light.otf) format('opentype');
        font-display: swap;
    }

今回の PageSpeed の指摘では Google の Noto Sans Japanese が原因だったので、そこに font-display を追加しています。

font-display で swap を指定しておけば、font のロード待ちを回避してくれます。

swap 指定のフォント表示

パフォーマンスの確認

PageSpeed Insights を確認して「過大なネットワーク ペイロードの回避」という記述が消えていれば OK です。

パフォーマンスへの影響

実はこのウェブフォントのロードは大きな影響があります。

swap設定前の点数

swap 設定なしでは、0点でした😇

Swap なしのロード

swap ありの点数

swap ありでは点数が大幅に改善しました。

なんと驚きの36点もの改善となりました😁

まとめ

ウェブフォント読み込みを CSS の指定から速度改善しました。
ウェブフォントの普及は広がっていきますので、「過大なネットワーク ペイロードの回避」は速度改善では外せない項目となりそうです。

参考

If You Can Read This Fonts Work

Discord と GitHub の連携

Discord と GitHub を連携することによって、GitHub の更新情報をリアルタイムで把握することができます。おすすめです!

この記事では、Discord と GitHub のウェブフック連携についてご紹介します。

Discord側

Discord では「サーバー設定」 > 「ウェブフック」からウェブフックを作成します。
このウェブフック URL をコピーして GitHub に登録します。

GitHub側

GitHub で Discord への通知を登録したいリポジトリに移動します。
以下の手順で進めます。

  • Settings
  • Webhooks
  • Add webhook
  • Payload URL へウェブフックを入力し、末尾には、/github
  • ContentsType は application/json
  • 通知はお好みに

GitHub への変更が、Discord へ通知されたら OK です。

参考

ドメイン移管時の手順

ドメイン移管の手順をご紹介します。

  • 認証鍵(Authorization Info)を受けとり、送信する
  • DNSもしくはネームサーバーの設定をする
  • Whois情報の更新をする

移管最大の課題は、認証鍵のやりとりです。認証鍵でエラーなく移管できればその後の障害はほぼなしでいけます。

認証鍵(Authorization Info)の登録

ドメイン移管の手続き時には認証鍵の登録が必要です。
ドメイン運営会社ごとに手続きが異なる場合がありますので、移管でエラーが発生した場合はドメインの運営会社に問い合わせると役立ちます。

DNSやネームサーバーの設定

ドメインの移管が成功すると、DNSもしくはネームサーバーの設定をして、表示したいサーバーを指定します。

ここがどうなるかはケースバイケースですね。
レンタルサーバーならばネームサーバーになるでしょう。

Whoisの設定

ドメイン移管後にはWhois情報を確認します。

Whois情報が正しくない場合は修正しましょう。

Discord bot 開発に必要な ID

Discord の bot 開発では、bot の TOKEN 以外にも様々な ID が必要になります。
これら ID の取得方法をご紹介します。

  • guild id
  • channel id
  • user id

よく使うのは、これら guild id、channel id、user id などでしょうか。
Discord ではサーバーの ID のことを guild id と呼びますので、ここは覚えておきます。

開発者モードの有効化

Discord のアプリから設定を行います。
Discord > Preferences から設定画面を開きます。

テーマ > 開発者モードを ON にします。

開発者モードを有効に

右クリックで ID コピー

開発者モードになると、各種項目から、右クリックで「IDをコピー」という項目が追加されます。

サーバー名やチャンネルを名を右クリックして ID をコピーしてみましょう。
必要な18桁の ID を取得できます。

参考

ユーザー/サーバー/メッセージIDはどこで見つけられる? – Discord

Discord ボット開発

Discord の Bot 開発をサポートする記事です。

Discord の Application を登録

はじめに、Discordの「Developerサイト」からアプリケーション登録を行います。

New Application からアプリを登録します。

アプリケーション名に、sample-bot と名前をつけました。
Create を押下してアプリケーションを作成します。

Bot を登録

管理画面の左メニューから Bot を選択します。

Add Bot からボットを追加します。

アプリにボットを追加するか聞かれるので、YES, do it! を押下します。

Bot 登場と表示されます

ボットが作成されました。

Token を生成

Bot のページから Token を生成できます。

Bot を公開する URL をコピー

Bot 公開には、公開 URL の発行がわかりやすいです。
メニューから OAuth2 のページに移動します。OAUTH2 URL GENERATOR という見出しがあるので、SCOPES の bot にチェックを入れます。

Bot 公開 URL

Bot 公開用の URL が生成されます。そちらの URL から Bot を招待してください。

おまけ

開発でよく使う ID については、以下に記事としました。

Broken Link Checker でリンクエラーをチェック

リンク切れチェックの必須のプラグイン Broken Link Checker のご紹介です。

メリット

WordPress の運用では、リンク切れ修正作業が必ず必要になります。
リンクとは時によって無効になることがあるからです。

リンクは常にアクセスできるように運用していきましょう。

使い方

プラグインを有効にするだけで、投稿内のリンクを確認できます。
Broken Link Checker 内から修正や修正後のリンク切れのチェックをできます。

参考

dynamic_sidebar() の使い方

ウィジェットエリアを呼び出すために dynamic_sidebar() を使用します。

テーマ作成では頻出の関数でしょうか。

メリット

WordPress を使いこなすにはウィジェットの活用が効果的です。
会社ページによくある「お知らせ」のようなエリアを作るには dynamic_sidebar() が便利です。

sidebar という名前がついていますが、ウィジェットを呼び出せるので直感的にはわかりにくい気がします。

使い方

ウィジェットを表示したい場所で dynamic_sidebar() を呼びます。

<?php dynamic_sidebar(サイドバーの名前かID); ?>

例えば、newsという名前のウィジェットを呼び出したい場合は引数に名前を渡します。

<?php dynamic_sidebar('news'); ?>

参考

https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/dynamic_sidebar