[試] WordPressプラグイン SNS Count Cache | シェア数キャッシュで表示速度改善

[試] WordPressプラグイン SNS Count Cache | シェア数キャッシュで表示速度改善

WordPressにおけるSNSシェア数の取得・表示方法に新たな選択肢を!

Twitter、Facebook、Google+、はてなブックマークのシェア数をキャッシュするWordPressプラグインを開発、正式リリースしたので紹介します。

SPONSORED LINK

アウトライン

WordPressプラグイン SNS Count Cacheとは

SNS Count Cacheとは、Twitter、Facebook、Google+、はてなブックマークのシェア数をキャッシュするWordPressプラグインです。

表示時にネットワークを介さずキャッシュ経由でシェア数を取得できるようになるため、複数の記事、複数のSNSにまたがるシェア数取得時に表示速度の改善が見込めます。

SNS Count Cache開発の背景

最近は、ブログとソーシャルメディアのつながりが重要になってきており、記事をアピールするためにシェア数を表示しているサイトが多くなってきました。

個別記事だけでなく、以下の様にTOPページの各記事への表示を検討しているサイトも多くなってきているのではないでしょうか。

intro-wordpress-plugin-sns-count-cache-02

ただし、単純にSNS提供のAPI経由でシェア数を直接取得するよう実装すると、表示速度が遅くなってしまう場合がよくあります。

これは、対象記事が多いためその分だけシェア数の取得に時間がかかるようになるためです。

このボトルネックを解消し、表示速度の改善を図ることがこのプラグインの目的です。

参考まで、当プラグインを活用してシェア数を表示したトップページの速度評価を掲載しておきます。計測サイトは、GTmetrixPingdomです。

15記事 x SNS 4種類(はてなブックマーク、Twitter、Facebook、Google+)の計60個のシェア数を表示しているにもかかわらず、ページ読込時間が1秒代前半と比較的よい結果が得られています。※もちろんこのプラグインの効果だけではなく、その他様々な施策を実施した総合的な結果です。

intro-wordpress-plugin-sns-count-cache-03 intro-wordpress-plugin-sns-count-cache-04

SNS Count Cacheの動作

SNS Count Cacheの動きについて解説します。

動作概要

SNS Count Cacheの動作について概念図を示します。

intro-wordpress-plugin-sns-count-cache-01

キャッシュプラグインというとアクセスした際にその情報をキャッシュするイメージを持たれる方が多いかと思いますが、このプラグインはSNSのシェア数取得と表示処理と完全に分離します。要は取得と表示が非同期に行われるということです。

具体的には、SNS Count Cacheプラグインがバックグラウンドで定期的にシェア数の取得を行いキャッシュに保存します。表示は、必要なタイミングでキャッシュから随時シェア数を取得するといった形になるわけです。

表示時にSNSのシェア数を取得をネットワークを介してではなく、キャッシュを介して取得する形になるので、取得処理が高速化されます。

シェア数取得の頻度と一度に対象とする記事数

現時点では、以下の図の通り、10分ごとに20記事ずつシェア数を取得し、キャッシュに保存する仕様となっています。

最後の記事のシェア数キャッシュが済んだら、また最初の記事に戻って取得しなおすといった処理を繰り返します。

intro-wordpress-plugin-sns-count-cache-06

尚、シェア数を取得する間隔と一度に対象とする記事数は、今後設定で変更できるよう修正する予定です。

キャッシュ処理の詳細

キャッシュの保存・取得処理には、WordPress Transients APIを使用しています。キャッシュデータは、基本的にWordPressのデータベース(wp_optionsテーブル)に期限付きで保存されます。期限が来れば自動的に削除されるのでゴミが残ることはありません。

尚、当プラグインは上記APIを使用することでオブジェクトキャッシュと連携し、データベースではなくオブジェクトキャッシュ上にシェア数をキャッシュさせることが出来るよう実装しています。

例えば、ファイルキャッシュ方式のオブジェクトキャッシュを使用していれば、ファイルとしてキャッシュされますし、APC等のメモリキャッシュ方式の場合はメモリ上にキャッシュさせることが可能になります。

一般的にデータベースからの情報取得は重い処理となるため、オブジェクトキャッシュと併せて使用するとより表示速度の改善が期待できます。

SNS Count Cacheの利用方法

インストール方法

審査を受け、すでにWordPress公式レポジトリに登録済みです。

WordPress管理画面から[プラグイン] → [新規追加] → [プラグインのインストール]画面の検索から「SNS Count Cache」を検索し、当該プラグインをインストールし、有効化して下さい。

設定は特に必要ありません。

intro-wordpress-plugin-sns-count-cache-07

個別にプラグインをダウンロードし、インストールしたい場合は、WordPress管理画面から[プラグイン] → [新規追加] → [プラグインのインストール] → [アップロード]でダウンロードしたzipファイルを選択し、アップロードして下さい。

intro-wordpress-plugin-sns-count-cache-08

プラグインのzipファイルは、以下よりダウンロード可能です。

WordPress Plugin SNS Cout Cache

シェア数のキャッシュ参照方法

以下4つの関数を使用することで、キャッシュからシェア数を取得可能です。キャッシュがそもそも存在しない場合は、何も返しません。

現在利用中のWordPressテーマのindex.php、home.php、archive.php等のループ内でご使用下さい。

関数説明
get_scc_twitter()Twitterシェア数の取得
get_scc_facebook()Facebookシェア数の取得
get_scc_gplus()Google+シェア数の取得
get_scc_hatebu()はてなブックマーク数の取得

 

以下は、サンプルコードです。

基本的にWordPressのquery_posts(), get_posts() and WP_Query()等のループ処理内で使用します。ループ内で現在の記事に関するシェア数を自動で参照してくれます。

尚、関数を使用するだけでは、数字しか返ってきません。表示するためにサンプルコードの様にechoを使用する必要があります。

ちなみにfunction_exists関数で事前の関数有無チェックは行うようにして下さい。なくても動作はしますが、プラグイン無効化時等、関数が非登録となった場合にページが正常に表示されなくなります。

シェア数のキャッシュ有無確認方法

そもそも対象の記事に関してシェア数が取得されているのか気になる方がでてくるかと思います。そのためのにキャッシュ状況確認用のページを設定画面に設けています。

以下の通り、WordPress管理画面 → [設定] → [SNS Count Cache]の画面で確認可能です。

intro-wordpress-plugin-sns-count-cache-09

SNS Count Cache利用時の留意事項

オブジェクトキャッシュの使用有無やそのキャッシュ設定に依存しますが、プラグインやテーマの更新時に取得済みキャッシュが自動的にクリアされる場合があります。

再度取得されるまでキャッシュからシェア数が取得できなくなるので、あらかじめご了承ください。これは仕様です。

またページ表示時に都度SNSからシェア数を取得するわけではないので、実際のシェア数とキャッシュを通じて表示されるシェア数に乖離が発生する場合があります。

まとめ

WordPressにおけるSNSシェア数の取得・表示方法に新たな選択肢を!

代表的なSNS(Twitter、Facebook、Google+、はてなブックマーク)のシェア数をキャッシュするWordPressプラグインを紹介しました。

今後ですが、以下の対応を検討しています。

  1. SNSからシェア数を取得・キャッシュする間隔と一度に取得対象とする記事数の設定機能
  2. シェア数を取得・キャッシュ可能なSNS拡充

本エントリ公開後にバージョンアップを行いました。下記エントリも併せてご確認下さい。

[試] シェア数表示に新たな選択肢を!WordPressプラグイン SNS Count Cacheアップデート

限られた余暇時間の中で可能な範囲での対応となりますが、ご要望等がありましたらこちらからお問い合わせ頂くか、Twitterで@marubon_jp宛にメンションを頂けると幸いです。