Help us understand the problem. What is going on with this article?

❤️ブロガーの皆さん❤️"愛されBI"❤️はじめましょ❤️(Pythonで図表作れる人向け)

image.png

ブロガーの皆様、「ブログのアクセス情報をGoogle Analyticsよりもいい感じに、自分のブログページでウォッチしたい!」、「自分だけのダッシュボードが欲しい!」と思ったことはないでしょうか?

実はレンタルサーバーを使って簡単に実現できます。
→トップ画像の実物はこちら(https://napinavi.com/?page_id=821)

この記事は、

  • データ分析に興味を持っていて
  • レンタルサーバーでブログ運営されている方
  • レンタルサーバーでブログ運営しようか迷っている方

に向けて、レンタルサーバーでダッシュボードを作る方法をお届けするべく書いております。
該当しない方、ごめんなさいm(_ _)m

なお、私のブログ環境は、以下の通りです。

  • ブログソフト:wordpress
  • サーバー:ConoHa Wing

レンタルサーバーは以下の2種類ありますが、私の環境は後者(カスタマイズ性低いやつ)にあたります。

  • 自由にカスタマイズできる専用サーバー、VPS(Virtual Private Server)
  • 自由なソフトウェアインストールが禁止されている共用サーバー(←僕の環境)

でもご安心を。私のようにカスタマイズの自由度が低い共有サーバーでも、下記条件をクリアしていれば大丈夫です!

  • 既にPythonがインストールされている
  • ジョブスケジューラーが使える

これからレンタルサーバーでブログ開設しようと考えている方へ。
私の環境を立ち上げにかかった時間と、コストも紹介しておきます。
詳細は、私のブログにまとめております。

  • 時間:
    • 作業環境を決めるまでに3日くらい
    • 実際にサーバー契約してブログっぽいものが出来上がるまでに2-3日
    • 今後のブログ更新/メンテナンスに数時間/週(見込み)
  • 費用:
    • ブログ立上げにかかった費用は1万1296円(サーバーレンタル費用1年分のみ、ドメイン代込)
    • 今後のブログ運営にかかる費用は1万1296円/年(来年度のサーバーレンタル費用)

前置きが長くなりましたが、この記事ではこんな内容をお届けできればと思います。

  • 「愛されBI」って何ぞや?
  • 「愛されBI」の作り方
  • 躓いたこと・対処法
  • 「愛されBI」を作ることの素晴らしさ
  • てか、あんた誰よ?

「愛されBI」って何ぞや?

タイトルにある「愛されBI」とは、自分や読者が確認したくなるようなブログ関連の統計情報リアルタイムに更新されるページのことです。私が作った造語ですが、元ネタは、メルカリOBで現在「株式会社 Growth Camp(グロースキャンプ)」でご活躍されている樫田さんの「愛されダッシュボード」に感銘を受け、命名させていただきました。

この記事ではなく、「愛されダッシュボード」にご興味が沸いた方は、樫田さんの記事をご覧ください。ここまで読んでいただきありがとうございました。

私の「愛されBI」では冒頭に示したような画像が5分置きに更新される仕様となっています。こちらのページからアクセスできますので、イメージが沸かない方はぜひご覧ください。

「愛されBI」の作り方

ここでは、Pythonを使って、簡単な図表が作れることは前提として、Pythonを使って

  1. どのように統計データを収集するのか
  2. どのようにリアルタイムに図表を更新するのか

に焦点を絞りたいと思います。1. に関しては、Google Analytics APIとTwitter APIを使っているだけです。

次に、2. に関して作ったものは以下のようなものです。
実は、私のエンジニアレベルが雑魚すぎて、あんまり難しい技術は使っていないので、勘の良い方はこれだけで再現できてしまうと思います。

無題のプレゼンテーション (3).jpg

具体的なタスクはこれだけです。めちゃくちゃ簡単ですね。。。

  1. Twitter/Google Analytics APIの利用申請をする(1-2時間で終わる!)
  2. Twitter/Google Analytics APIを叩くPythonプログラムを作る(人のを丸パクリ・・・)
  3. 取得データから図表を作り保存するPythonプログラムを作る(精一杯愛を注ぐ!)
  4. 「愛されBI」のページに、画像へのリンクを埋め込む(秒で終わる)

一応ですが、それぞれの概要も説明しておきます。

1. Twitter API/Google Analytics APIの利用申請をする

Twitterに関しては、僕のブログに使える機能や参考にしたリンクを掲載しています。
Googleに関しては、以下の記事を参考にさせていただきました。

なお、Google Analyticsのコンテンツについては掲載不可との噂を聞いていたのですが、下記の記事によると公開可能っぽいです。

2. Twitter API/Google Analytics APIを叩くPythonプログラムを作る

Twitterに関しては、1. と同じく、僕のブログにまとめています。
Googleに関して、下記の記事のプログラムがカスタマイズに優れていて秀逸だと思ったので、そのまま拝借しました。

3. 取得データから図表を作り保存するPythonプログラムを作る

「愛せるかどうか」を左右する最も大事なところです。
技術的な問題はさておき、自分が把握すべき数字、読者が興味を持つ数字が何なのかを考えることからはじめましょう。
上記が考えられていれば、最終形は、それぞれのブログで違っていいと思います。
ご参考までに、「愛され図表」を設計するにあたり、私が考えたポイントを記載させていただきます。

  • そもそも自分のブログのKGI(Key Goal Indicator)は何だろう?
  • KGIを達成するために日単位、週単位、月単位に確認すべきことはなんだろう?
  • Google AnalyticsやTwitter Analyticsだと届かない痒いところはどこ?

4. 「愛されBI」のページに、画像へのリンクを埋め込む

こんな感じで、画像のリンクを貼るだけです。簡単ですね。
image.png

躓いたこと・対処法

躓いたことは以下の通りです。

  • ジョブスケジューラーで実行するとコードが動かんやん
  • Matplotlibで日本語が文字化けするけどフォントインストールできんやん
  • レンタルサーバー上でコーディングするの大変やん

対処法を紹介します。ご参考になれば幸いです。

ジョブスケジューラーで実行するとコードが動かんやん

python [働きもの].pyって実行していた時は動いて画像を吐き出してくれたのに、ジョブスケジューラーにコマンドを登録すると、画像更新が止まってしまう。

このような状況になった場合、pythonコマンド名、実行対象のpythonファイル名、pythonファイルに含まれるディレクトリ名(特に画像の出力先)が相対パスになっていないか、を確認してください。全て絶対パスでなければ動きません。

pythonコマンドの絶対パスは、レンタルサーバーの提供元の情報を確認するのが良いと思います。私が使っているConoHa Wingについてはこちらをご覧ください。
image.png

Matplotlibで日本語が文字化けするけどフォントインストールできんやん

共用サーバーでは、sudo権限が伴うような操作が禁止されているはずです(少なくとも、私の環境はNGでした)。なので、Matplotlibで日本語が文字化けする現象への対処が厄介でした。

こちらは、japanize_matplotlibのインポートで対処できました。
japanize_matplotlibの使い方は、下記の記事を参考にしました。

もう1点、留意事項です。pip installコマンドは使えるのですが、ユーザー権限で実行する必要があります。ですので、
pip install 【インストールしたいモジュール名】 --user
と、--userをつけましょう。

レンタルサーバー上でコーディングするの大変やん

レンタルサーバー上なので、いい感じのエディターを入れられず、

  1. ローカルで作成したコードを、レンタルサーバーにアップして、細かい調整はサーバー上で使い慣れないviでやる
  2. 新しく機能追加したい時は、レンタルサーバーからコードをダウンロードして、ローカルで編集して、1. に戻る

と、すごく非効率な作業をしていました。

ある程度動くことが確認できたら、git使いましょう。。。
これまで本番環境にアップする経験が多くなく、gitのありがたみが分かりませんでしたが、本日から心を改めます。

「愛されBI」を作ることの素晴らしさ

  1. Google AnalyticsやTwitter Analyticsでは手が届かない自分仕様のレポートが出てくる。結果、ブログ愛が深まる
  2. データ加工や分析のいい練習になる

いいことずくめですね。デメリットと言えば、「愛されBI」が気になって、仕事が手に付かないことくらいでしょうか。。

2.に関しては言わずもがなだと思うので、1.に関してだけ補足します。
1.について、私が思う具体的なメリットはこうです。

  • 頁別に正確な集計ができる
    • 頁タイトル別の集計だと、途中で頁タイトルを変更している場合に、別頁だと見做されてしまいます。一方、頁のurl別だと、同一頁なのに別頁だと見做されることがあります(関連リンクを踏んでる場合に発生します)
    • Google Analytics APIから情報を取得し、自分で名寄せすることでこの問題を解決できました。
  • 自分がウォッチしたいKGIに基づきレポートを構成できる
    • Google AnalyticsのデフォルトレポートはPV(頁ビュー)、ユーザー数、セッション数起点で構成されていますが、私はKGIをブログ閲覧時間としていたので、見たい情報が確認しにくい状況でした。
    • Google Analytics APIで閲覧時間を含む様々な情報を提供してくれており、必要な情報を取得し集計することでこの問題を解決できました。Google Analytics APIで取得できる情報の詳細は下記が参考になりました。まずは適当にググって概要を掴んだ上で参照されるのが良いと思います。
  • Twitter、Google Analyticsなどの複数ソースを関連付けて分析できる
    • 私のブログの集客はTwitterに依存しているので、Twitterでの告知がどのように影響しているかは非常に重要です
    • Twitter APIのデータと、Google Analyticsのデータを紐付けることで、該当頁のリンクを含むTweetがブログ集客に与える影響をウォッチできるようになるはずです(現在、開発中)
  • ABテストの結果をリアルタイムにモニタリングできる
    • 時にはTwitterを使ってABテストをしたい、なんてこともあるでしょう。Twitter Analyticsは、そのようなカスタマイズには対応しておらず、「愛されBI」を作らないにせよ、自分で分析する必要があります。
    • 「愛されBI」上にABテストの速報値が掲載されたらどうでしょうか。愛が深まりますよね(現在、開発中)

はい、すばらしいですね。

てか、あんた誰よ?

簡潔にまとめるはずが、思ったよりも長文になってしまいました。。
ここまで読んで下さった方は、多少記事に興味を持っていただいた方だと思うので、簡単に自己紹介をさせていただきます。

私、日系のレガシー企業でデータサイエンティスト見習いをしている者です(分析歴1.5年くらい)。
自社の案件だけだと、成長しなさそうだなあ、と危機感を覚え、ブログやTwitterを題材に分析をはじめました。

最後に、自己紹介になりそうな投稿を紹介させていただき、この記事を締めくくりたいと思います。
長文にも関わらず、最後までご覧いただきありがとうございました。

ふう。需要がなさそうな記事を書いてしまった気がする。。

matt_sad
新卒で経営コンサルを数年間経験。現在は事業会社にてデータ利活用案件の企画〜実行に携わっています。
https://napinavi.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした