Shunya Ueta

go-ga-toppages, ga-top-pages-py: 静的サイトジェネレーターで作成したサイトの人気ページをGoogle Analytics(GA4)で集計して、マークダウン形式で書き出すPythonとGoのスクリプト

表題の通り、静的サイトジェネレーターで作成したサイトの人気ページを Google Analytics(GA4)で集計して、マークダウン形式で書き出す Python と Go のスクリプトを公開した。

動機

このサイトは、静的サイトジェネレーターの Hugo を使って構築している。 だが静的サイトジェネレーター(SSG)は、アクセスログを利用した人気記事機能を提供しておらず、自分のサイトでも提供してみたいけど、SSG からは公式には提供されない機能… と思っていた。 だが、フューチャー技術ブログさんのサイトを見ていると静的サイトジェネレーターを使っているはずなのに人気記事機能を提供しており、ソース1をみてみると、あ、そうか自分の Google Analytics のデータを使えばできるんだなと目からウロコの気持ちになり、今回のスクリプトを書いた。

現在は、サイトのトップページにアクセスユーザー数を軸にした 1 年間の人気記事を表示するようにした。

後から見返すと楽しいと思うのでスクリーンショットも以下に残しておく。

Blog Google Analytics base top ranking page

今は、実行結果をクリップボードに貼り付けて、コピペしている。機運があれば CI で定期更新が可能になるように対応してみても面白そう。 非常に満足。

動機としては、@chezou さんの記事や 2 @morygonzalez さんの記事3で自分のブログを改造するモチベーションが湧いたのがことの始まりな気がする。

全てが自分でコントロール可能なのは本当に OSS の醍醐味ですね。素晴らしい

ChatGPT を活用しつつ書いてみた感想

ChatGPT を使いつつ、Google Analytics のデータを基に直近 1 年間の人気記事 top10 記事一覧を作成するスクリプトを作成した。 感想としては、最近のライブラリだとまともにコード生成してくれないし、そのデバッグにあまり馴染みの深くない言語で挑戦すると時間を取られる。

なので、諦めて公式ドキュメントを見て、スクリプトを書いて、適宜追加したい修正を ChatGPT に最小限の大きさで聞いた。 また、プロンプトに GA4 に対応したスクリプトを書きたいと記述しても GA4 に対応するパッケージ自体が GPT の学習対象に入っていないので、GA4 ではない元の Universal Analytics を扱うためのパッケージをひたすら推されて、その判明にも時間を取られたりした。

Python で書いた後は、Go の勉強がてら、Google analytics に基づいてアクセス数ランキング 1op10 を作成しようとしたら、GCP 関係のパッケージは Python がめちゃくちゃ豊富で、Go は同様のパッケージがそもそも存在しない or 未成熟なことが多く、またあったとしてもそのパッケージに対してそもそもやってきた系統の記事がそもそもなくて驚いた。

ということでまずは、Python で集計スクリプトを書き上げた。なんだかんだ ChatGPT で楽しようとしたら 1n 振り回されて、使うの諦めたら 30m で動かせた。 Rye や Ruu を知り、試しに使ってみましたがノンストレスで使えました。

その後、Go の勉強がてら、慣れた Python で書いた後に、ChatGPT で Go に変換して修正していった。 この方法だと間違った生成はほぼされなかった。

こういう自分のやりたいことのためにコード書くのって集中できるし、何より楽しい。

余談

個人的にはポータビリティが高いので、利用形式としては Go の方が圧倒的に好みです。 マシン変わるたびに Rye のインストールとかしたくないですし、Go のインストールのみで終わるのは凄い。 また、発展的に CI に組み込んで定期的に作成したい場合も、圧倒的に Python と比べると Go は楽だと思う。

---

関連しているかもしれない記事


📮 📧 🐏: 記事への感想のおたよりをおまちしてます。 お気軽にお送りください。 メールアドレス入力があればメールで返信させていただきます。 もちろんお返事を希望せずに単なる感想だけでも大歓迎です。

このサイトの更新情報をRSSで配信しています。 お好きなフィードリーダーで購読してみてください。

このウェブサイトの運営や著者の活動を支援していただける方を募集しています。 もしよろしければ、Buy Me a Coffee からサポート(投げ銭)していただけると、著者の活動のモチベーションに繋がります✨

#blog #python #go #hugo