フルスタックエンジニアのノウハウ
2020.11.14    2022.06.12

WebサイトのPVの「月末予測」を教えてくれるBOTを作る

この記事の動画版はこちら(画像クリックでYoutubeに飛びます)

チャンネル登録お願いします!


今回作るツールは・・・


今回は、WebAPIの活用事例として、自分が管理するWebサイトのアクセスデータを取得し、それを元に月末の到達予測を計算、そしてそれを定期的に報告してくれる自動化プログラムをPHPを使って作っていきます。


なお、「WebAPIとは何か?」という基本的な部分については、以下の記事で説明しているので、興味のある方は併せてご覧ください。


関連記事

WebAPIで他のサービスと連携する


それでは早速作っていきましょう!


設計




①Webサイトのアクセスデータは、Google Analyticsで計測しているので、まずは、AnalyticsのAPIから現時点のPVを取得します。


②取得したら、PHP側で「このペースで月末まで行くとPVはどのくらいになるか」を計算


③それを自分宛てにメールで報告します。


ざっとこんな感じですね。


それでは、これに沿ってプログラミングしていきます。



Google Analytics Reporting APIを有効にする


まずは、Google Cloud Platformで「Google Analytics Reporting API」を有効にしておきます。





AnalyticsのAPIのライブラリはcomposerで提供されているので、インストールします。


composer require google/apiclient:^2.0


これで、下準備はOKです。



サイトのPVを取得


では、実際にアクセス数を取得するプログラムを書いていきましょう。


オフィシャルサイトでサンプルが公開されているので、今回はこれを雛形として使います。



サンプルソース内のVIEW_IDの部分は、自分のWebサイトのIDに書き換えます。


$VIEW_ID = "<REPLACE_WITH_VIEW_ID>";


これでOKですね。一度実行してみましょう。


データが取得出来ているようです。


次は、取得値を調整していきます。


データの取得期間を当月の月初にして、


// Create the DateRange object.
$dateRange = new Google_Service_AnalyticsReporting_DateRange();
$dateRange->setStartDate(date('Y-m-01'));
$dateRange->setEndDate("today");


取得するデータはセッションではなくページビューに変更します。


// Create the Metrics object.
$sessions = new Google_Service_AnalyticsReporting_Metric();
$sessions->setExpression("ga:pageviews");
$sessions->setAlias("pageviews");


ドキュメントを見ると、目的のデータは「reports > data > rows > metrics > values」に入っているようなので、




今回はそれを直接取り出すようにします。


$pageview = $response[0]->getData()->getRows()[0]->getMetrics()[0]->getValues()[0];


これでOKですね、実行してみましょう。


今月の月初から今日までのPVが取得できました。


月末の到達予測の計算


続いて、月末の到達予測を計算させます。


先ほど取得したデータを「今日の日付(つまり月初からの経過日数)」で割ると、1日当たりの平均PVが割り出せます。


それに、今月の日数(11月なら「30」)を掛けると、月末の到達予測が分かりますね。


// 月末予測値
$future_pageview = round(($pageview / date('d')) * date('t'));


あくまで、現状の推移のまま行った場合の単純計算ですが、目安としては役に立ちます。


これを表示させるようにして、実行してみると、


echo "月末到達予測:{$future_pageview}<br>";
echo "現時点のPV:{$pageview}<br>";


このようにWebサイトの月末予測値も表示されました。


ついでに、目標とのチェックも出来るようにしてみましょうか。


例えば、このサイトの月間目標が50000PVだとすると、本日時点で到達していなければならないPVは、「目標 ÷ 月の日数 × 今日の日付」ですね。


// 目標値
$plan = 50000;
$plan_pageview = ceil(($plan / date('t')) * date('d'));


確実に達成できるように、端数は切り上げにしておきます。


これも表示されてみましょう。


echo "月末到達予測:{$future_pageview}<br>";
echo "現時点のPV:{$pageview}(適正値:{$plan_pageview})<br>";



これで、目標との差もチェック出来るようになりました。



自分宛てに毎朝メール


これを自分宛てに毎朝メールするようにしましょう。


$mail_body = "月末到達予測:{$future_pageview}".PHP_EOL;
$mail_body.= "現時点のPV:{$pageview}(適正値:{$plan_pageview})";

mb_send_mail(MAIL_ADDRESS, '【REPORT BOT】サイトアクセス状況', $mail_body);


実行してみると、



メールが届きました。


テストはOKなので、このPHPプログラムをCRONに登録します。

毎朝7時に実行させるようにしましょう。


00 07 * * * /usr/bin/php /path/to/file/report_bot.php



これで、自分自身は寝ていても、毎朝7時に最新情報が自動取得・計算され、メールで報告されるようになりました。


毎朝メールをチェックして、目標との差が開いているようであれば、何らかの施策を行うようにすれば良いですね。目標に到達出来そうな予測であれば、安心して1日を過ごせそうです。



完成


という訳で今回は「サイトのPVを取得し月末予測を計算するプログラム」を作成してみました。


今回は1サイトだけでしたが、VIEW_IDをループして処理すれば、複数のWebサイトを一気に分析し、まとめてメールで報告させることも可能です。


また、PVだけでなく他の指標も追加したり、例えばデータベースに保存されている独自のデータとマージして解析、レポーティングしたり、予測値も、単純計算だけでなく変動要素なども考慮した計算にするなど、色々な拡張も可能かと思います。


Webサイトの管理を受託している場合は、クライアントへの報告レポートの作成も少し楽になりそうですね!


有料の解析ツールなどを使わなくても、プログラミングが出来れば、欲しいデータだけ自分好みに取り出すことが出来ます。


こういった機械的に出来る作業はプログラムにやらせて、自分は戦略やアイデアを練ることに注力するというのが、これからのAIの時代には求められていくと思います。


皆さんも是非、プログラミングスキルを学んで、色々な作業を自動化してみてください。


なお、僕の講座では、未経験の方でも1ステップずつクリアしていくことで、実践的なプログラミングスキルを身につけられるようになっています。

興味があれば是非ご参加ください。


おすすめ記事