筋肉とプログラミング、その他アウトプットをしていきます。APIを使用し、ページごとのセッション数を取得したコードについてまとめ背景コーポレートサイトのブログ記事の人気ランキングを実装のために、ブログの記事ごとのセッション数を取得する必要がありました。APIを使用しデータを取得し、実装しました。Analyticsでできること。Analyticsは、シェアNo.1のアクセス解析ツールで、Googleアナリティクスを使えば、Webサイト運営に必要なデータはほぼ見ることができます。リアルタイムの利用状況ユーザーの基本属性ユーザーがどこから来たかサイト内でのユーザーの動きWebサイトの成果などです。以下の記事をご参照ください。必要な情報、秘匿情報は各種ファイルに記述しました。@analytics::AnalyticsReportingService.newまずクラスので必要な情報を定義していきます。今回はこのように定義しました。中身は、秘匿情報、環境ごとに取得したいのでcredentialsに記述しました。dimension_typeデータの取得の期間、メトリックとディメンション(条件のようなもの)を引数で渡せるように定義しました。将来、異なる情報を取得したいときにもこのクラスを使用できます。endinitializeが呼び出されたときに認証を行なっています。taskにてクラスをインスタンス化させます。その際に、今回取得したいデータの条件を引数として渡してあげます。}get_reportingメソッドでGAからのデータを取得します。endとなっており、先ほど引数で渡した条件からデータを取得しています。その際にview_idを渡していますが、これはconfig/environments/以下の環境ごとのファイルにそれぞれ定義しています。endここで、dbに存在する。ブログ記事のデータを取得し、GAと同じuid(url)のもののsessions_countを更新させる処理を行なっています。レコード数は少ないとは思いますが、大量にデータを扱っても良いようにfind_eachを使用しました。https://blog.toshimaru.net/rails-find_each/また、1件ずつsqlを発行するのは、処理的によくないのでbulk_insertのupsert_allを使いました。searchを使用しているため、upsert_allして値を更新したらreindexをしないといけないからです。最後にAPIを使用するのは初めてだったので、最初はqiitaの丸写しに近いものでしたが、コードレビューを行なってもらい、より自分の実装したいものになっていきました。内容の理解やrubyの理解も深まりました。同じ処理でも、よりパフォーマンスの良い処理、実は省くことのできる記述などがありました。jsonファイルではなく必要な情報だけ環境変数に記述すれば良いところなど。最初にqiitaからヒントを得るのは悪くないと思いますが、そこからコピペしたものの中身はどうなっているのか何が必要なもので、何が不必要なのか削れる処理はないかよりパフォーマンスをあげるにはをもう少し自分で考え、実装できるようにしないとなと思いました。RESTクールなURIとはURI月別アーカイブはてなブログをはじめよう!takuma521さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。