雲のメモ帳

猫とクラウドと旅行が好きなインフラエンジニアです。 日々の調べたことや興味が持ったことをこのブログにアウトプットします。

PythonとGoogle スプレッドシートを使って、Instagramユーザー情報の簡易分析環境を作ってみた

これはなに?

Instagramの簡易分析環境をPythonとGoogle スプレッドシート使ってみました。Instagramのインサイトって日ごとの細かいフォロワー数の変化や30日以上過去のデータが見れないので、GoogleSpreadsheetを簡易DB&BIツールとして利用して日ごとの変化や30日以上データを参照できるようにしてみました。

以前投稿した以下の記事の応用のような感じです。
www.cloudnotes.tech

環境

  • コード実行環境 : AWS

    • Lambda(pytho3)
    • CloudwatchEvents
  • 可視化: Google Spread sheet

  • 利用API
    • Instagram Graph API
    • Google Sheets API

機能概要

特定のインスタグラムの以下の情報を1日一回取得し、GoogleSpreadsheetに書き込み、可視化する。

  1. フォロワー数(followers_count)
  2. フォロー数(follows_count)
  3. 投稿数(media_count)

取得したデータを可視化したイメージは以下です。 フォロワー数の推移を可視化してみました。

f:id:ykoomaru:20210911214941p:plain

可視化自体はスプレットシートの機能で実施しているので、表現の仕方は自分の分析したい内容によって自由に変更することができます。

構成概要

構成としてはシンプルでCloudwatchRulesを利用してLambdaを定期実行して、インスタの特定のユーザー情報を取得し、その結果をGoogleSpreadsheetに書き込んでいます。
ユーザー情報を取得する際に利用しているのは、Instagram Graph APIで、スプレッドシートへの書き込みはGoogle Sheets API を利用しています。

f:id:ykoomaru:20210911220759p:plain

スプレットシートの書き込んでいるイメージ画像は以下のような感じです。 date以外の項目はInstagram Graph APIで取得した内容をそのまま書き込んでいます。dateはLambdaが実行した日時です。
f:id:ykoomaru:20210911214440p:plain

実行コード(Lambda)

ご参考までにLambda上で実行しているコードと処理概要を載せておきます。スプレットシート関連で事前にトークン取得しないといけなかったりするので、必要に応じて以下の記事を参照してください。
Google Spread Sheets に Pythonを用いてアクセスしてみた - Qiita

処理概要

  1. 各API実行のためのパラメータ入力
    1. Instagram API / 分析対象のInstagramユーザー名
    2. Google Sheets API (トークンはLambdaの環境変数に入れてます)
  2. GoogleSpreadsheet情報取得
  3. 分析対象のInstagramユーザーのフォロー数、フォロワー数、投稿数を取得
  4. コードを実行した日付を取得 YYYYMMDD
  5. 同日にユーザー情報すでに書き込みしていないかチェック。
    1. 書き込み済み: スプレットシートに書き込まずコードを終了する
    2. 未書き込み : 3. 4.で取得した情報をスプレットシートに書き込む

ソースコード

gist5c9a157394294fcfc74fa8e774104fb6

最後に

この分析環境の費用ですが、スプレッドシートは無料ですし、Lambdaも毎日数十秒起動するだけなのでほぼ無料で運用できています。インスタを分析する外部サービスはいくつかありますが、外部サービスを使うのに不安がある方は本ブログのような構成で自前で分析環境つくってみるといいかもしれません!