【Python自動化】ブクログ × BIツール | iPadで読書のデータ管理

Python・GAS・DS
ワタシ

ども、らーにゃです。今回はPython × Data Portalの活用についてまとめます。

最近BIツールって言葉をよく耳にするがどう活用できるものか…?

スゴそうではあるものの、あまり身近でないのでは…?

ここ数年で業務中の会話で出てくることがグッと増えてきたBIツール、一体これはどういったものか。

色々なことができる便利ソフト・概念でありますが、実は業務だけでなく個人利用でも効力を発揮します。

今回の論点整理

さて、今回ですがGoogle Data Portalのダッシュボードを作るにあたり

「普段の読書の状況をダッシュボード化して見える化する」

ということを実現させます。

これの結論からいえば、ブクログというサービスを使い蓄積した結果をGoogle Data Portalに連携すれば自動で出来ます

私はブクログを使っていますが、類似サービスを使っている人でもエクスポートの機能があれば基本的には問題なくできるはずです。

読書の習慣をつけたい人であれば、BIツールを活用して定期的にリマインドすることで意識が向かいやすくなるので備忘録的に記載します。

ポイントになるのは以下の3点です。

今回の論点
  • Google Data Portalとは
  • ブクログデータをGoogle Driveで連携
  • Google Colabでスプレッドシートへ連係

    順に触れていきます。

    情報の更新
    2023年現在、サービス名がLookerに変更しております。下記、Lookerとしてご覧ください!

    Google Data Portalの活用ポイント

    Google Data Portalとは

    まずGoogle Data PortalとはBIツールといわれるツールの一つでGoogleが提供する無料のイケてる見える化ツールです。

    ところで、そもそもBIツールとは何なのか?

    このBIツールのBIとはビジネス・インテリジェンスの省略語でして、wikiると下記のような説明がなされています。

    ビジネスインテリジェンス(英: Business Intelligence、BI)は、経営・会計・情報処理などの用語で、企業などの組織のデータを、収集・蓄積・分析・報告することにより、経営上などの意思決定に役立てる手法や技術のこと

    Wikipediaより

    BIツールとはビジネスでの意思決定やデータ解釈のスピードを向上させるために出てきた概念でありツールであるということです。

    ただ、世界的に見ると、PowerBI(Microsoft)とtableau(BIツールの老舗)がシェアでいうと2トップです。

    しかし、これはあくまで商用利用が主で、割高だったり、ムダに高機能すぎたりして個人がライトに使うことは想定していません。

    仕事柄、PowerBI、tableauもいじりますが、個人がお試し的にやるのであれば無料でクラウドに特化したGoogleで試すのがオススメです。

    とっても軽くて、そして何よりも完全無料でGoogle アカウントさえあれば、割となんでもできるというのが強みです。

    ただ、これら以外にもBIツールは色々存在し、色々な紹介サイトもありますので、色々試してみるのがベストではあります。

    ■ご参考リンク(無料で使えるBIツール)

    次からはGoogle Data Portalに焦点を合わせて、どのように使っていけば良いかを考えます。

    ワタシ

    データで見る世界になるにあたりBIツールの基礎知識は取得必須ですね。

    ブクログとスプレッドシートへの自動連係

    では、次にブクログの読書データの連携についてです。

    今回はiPadでデータを引き抜いて下準備することを想定しています。

    まずはiPadで公式HPにアクセスします。

    ■ご参考リンク(ブクログのホーム)

    (※アプリではなくブラウザのHPに入ります)

    その後に、右上の「本棚マーク」をクリックします。

    その後に、中段の右側にあるスパナのマークをクリックし、その中から「エクスポート」を見つけてクリックします。

    そうするとダウンロードしたファイルをプレビュー的に見ることができます。

    ブクログでエクスポートしたデータはラベルの行がないのでここは、後述のPythonでの前処理工程で付与します。

    ※注意書きも出ているようにZaim無料会員の場合だと一部データが引き抜けないのでご注意下さい!

    ここで右上の「共有↑」ボタンを押してGoogle Driveを選択してファイルを指定のフォルダに格納させます。

    最後に右上の「アップロード」を選択すれば、ファイルの格納は完了です。

    後は、Pythonでこのデータを読み込んでスプレッドシートに自動連係をしていきます。

    ツマ

    普段の読書量が見える化できるのは良いね

    Google Colabでスプレッドシートへ連係

    さて、次に格納したファイルをスプレッドシートに流し込んでいきます。

    今回はiPadで全てを完結するため、ブラウザ上でGoogle Colaboratoryを使ってデータを読み込みます。

    iPadを利用したGoogle Colaboratoryの使い方は下記でまとめているので初めての人はご参考にしてください。

    ■ご参考リンク(iPadでGoogle Colabを使ってTwitter分析)

    データの連携プログラム

    今回はPythonでスプレッドシートへのデータ連携を行います。

    下記のコードを部分修正して実行すれば基本的にOKです。

    import pandas as pd
    import numpy as np
    import gspread_dataframe as gs_df
    from google.colab import auth
    from oauth2client.client import GoogleCredentials
    from google.colab import drive
    
    
    #まずはこれでGoogle Driveにマウントする
    drive.mount('/content/drive')
    
    #ファイルを格納したフォルダを指定して、パスを通す
    %cd "/content/drive/MyDrive/★ここは指定のフォルダ"
    
    #ファイルを読み込む(sepでタブ区切り, 文字コードが化けているのでshift-jisで読み込み) 
    df = pd.read_csv('★格納したファイル名', sep=",",encoding = "shift-jis")
    print(df.head())
    
    #ヘッダーがないためヘッダーをつける
    header = ["-","BookID1","BookID2", "Category", "Rate", "Status", "Opinion",  "Tag", "Memo","First Time", "Last Time", "Title", "Author", "Pubulisher", "Year", "Type","Pages"]
    df2 = df.copy()
    df2.columns=header
    
    #Google Spread Sheetも上記と同様にマウントする
    auth.authenticate_user()
    gc = gspread.authorize(GoogleCredentials.get_application_default())
    
    #書き込みたいSpreadSheetのワークシートを指定する
    ss_id = "★指定のワークシートのID"
    workbook = gc.open_by_key(ss_id)
    worksheet = workbook.worksheet("シート1")
    
    #まずは指定のワークシートの値をクリア
    worksheet.clear() 		
    
    #先ほどの読み込んだデータ(data1)を参照して書き込み
    gs_df.set_with_dataframe(worksheet, df2)
    変更する箇所
    • フォルダ指定:”★ここは指定のフォルダ”の箇所にフォルダ名
    • ファイル指定:”★格納したファイル名”の箇所にファイル名
    • シートの指定:”★指定のワークシートのID”の箇所にスプレッドシートID

    1つ目と2つ目はそのまんまの意味で、上記でDLしたファイル名と格納したフォルダ先を指定します。

    ここで、ブクログから落としたローデータは普通に読み込むと文字化けする上にヘッダーがありません。

    そのため、encoding = “shift-jis” で読み込み、headerを作って ○○.columns=headerで追加することで前処理を行います。

    3つ目に関しては後述します。

    ツマ

    基本コピペでいいから楽だね

    Google DriveやスプレッドシートとのAPI連携

    次に、他のGoogleサービスとの連携ですが、事前準備なく、恐ろしく簡単に連携出来ます。

    先に述べたコードを順に実行していくと下記の箇所で実行後に謎のURLとボックスがでます。

    これは、コードを実行してそれでOKということではなく

    「指定のURL先にいってトークンを発行させて下のボックスにコピペしろ」

    という指示ですので、言われた通りにやりましょう。

    上記のリンクを踏むとGoogle アカウントの認証画面に推移するのでOK、OKと進んでいくと、下記の画面になります。

    ここで出てきたコードをコピペして先ほどのボックスに入れてエンターをします。

    そうすると、このGoogle ColaboratoryとGoogle Drive, Google Spreadsheetがマウントされて連携できます。

    ワタシ

    最初は何を求められているのか分からなかったりしますね

    スプレッドシートのIDの該当箇所

    また、Google SpreadSheetのss_idは開きたいスプレッドシートを開き、下記の部分をコピペします。

    ↓ss_idとして必要な箇所↓

    https://docs.google.com/spreadsheets/d/★ここがスプレッドシートのss_idの該当箇所★/edit#gid=0

    (上記の画像でいうと赤く■囲った箇所です)

    尚、小ネタ的な話ですが、iPadでスプレッドシートをブラウザで開くには、Google Driveアプリでリンクのコピーを取得し、それをブラウザに張り付ければOKです。

    これでiPad上でURLを取得したり、今回は関係ないですが、Google Apps Scriptのコードを書いたりすることが出来ます。

    これで無事, スプレッドシートへの連携が出来ました。

    あとは、Google Data Portal上でスプレッドシートのデータを参照してダッシュボードを好みにすればOKです。

    ワタシ

    一連の流れを一度作ってしまえば自力で拡張することは簡単です。

    まとめ

    今回ポイントしてまとめてきたのは以下の3点です。

    抑えたいポイント
      • GAS, Google Data Portalとは
        ▷Googleが無料で提供する自動化・ビジュアル化ツール
      • ブクログデータをGoogle Driveで連携
        ▷公式HPからダウンロードしてGoogle Driveへアップロード
      • Google Colabでスプレッドシートへ連係
        ▷アップロードしたファイルを参照してコードで自動連携

        上記を順に追っていけば、簡単に自分の時間の使い方が見える化できます。

        普段使っている現状の時間の活動状況が見えると、ムダ時間を排除するために必要なことが考えられます。

        そして何と言っても凄まじいのが、なんと全部無料!ということです。

        これはデータ分析が好き嫌い関わらず、だれもが覚えておくべき内容だと思います。

        今後も大量データ社会になることは間違いないので、身近なところからデータを整理して自分で分析する習慣を共に作っていきましょう(‘ω’)ノ

        ご精読頂きありがとうございました!
        m(_ _)m

        ▼オススメ参考書▼

        ▼おすすめの動画学習(Udemy)

        プログラミング言語の人気オンラインコース >>プログラミング講座はコチラから

        ※評価が4.0以上かつ割引時のコンテンツは特にオススメです!

         動画でGoogleの設定からしてくれるモノもあります!