推し活のためのプロダクト作成【GASを利用】
目次
はじめに
こんにちは。2023年10月テク二ケーション入社のH.K.です。
現在は、Pythonの開発案件に参画中ですが、業務終了後や休日の時間を「推し活」に使うことが好きなオタクでもあります。今回は、私が業務で培ったシステムの考え方を推し活に活かした経験を書きたいと思います。
推しのスケジュールを追いかけたい!
私の推しは、テレビやラジオなどに出演する際には、出演が決定したことは各種SNSで告知してくれます。しかし、いざ番組の放送が始まるタイミングでのお知らせポストは皆無です。そのため、気がついたら出演が終わっていた、という事態が私の中で多発していました。
そこで、まずは出演告知のポストを見かける度に、個人的にGoogleカレンダーに登録していくようにしました。自分だけの問題ならこれで解決しますが、周囲のオタク仲間も同じように出演番組を見逃すことに悩んでいることが判明しました。せっかくならカレンダー登録したスケジュールをオタク仲間みんなで共有したいという気持ちが芽生えます。
共有カレンダー作成!しかし……
GoogleカレンダーにはURLを通じて、公開カレンダーを自分のスケジュールに登録できる機能があります。最初はこちらを作成して、必要な人に登録して貰おうと考えました。しかし「Googleカレンダーは仕事で利用していて、推しの予定は登録しにくい」「登録方法がわかりにくい」との声が複数上がり、好評とは言えませんでした。そこで、Googleカレンダーの登録スケジュールを、開始時刻数分前にポストするX(旧Twitter)を開設し、ポスト通知をXから受け取ったりタイムラインでリマインドしたりできるようにしたい、と思い至ります。
GASプログラム作成
利用していたカレンダーがGoogleカレンダーであったこともあり、無料でcronのように指定した時間ごとに自動でプログラムを起動できる機能があることも決め手となり、Google App Scriptでプログラムを作成することにしました。以下プログラム作成時のポイントです。
まずはGoogleカレンダーと連携させるためにCalendarApp関数を用いてスケジュール情報を取得させます。この時にカレンダーIDが必要になるため、カレンダーの設定画面から「xxxxxxxxxxxxxxxx@group.calendar.google.com」といった形式のIDをコピーしておきます。
そして、カレンダーには予定の開始時刻と終了時刻が同一の『○○ラジオ開始』といったスケジュールを登録しておきます。こうすることで、毎分起動するプログラムのトリガーの上で、開始時刻の数分前に一度のみスケジュールを取得してXへのポスト処理をすることが容易になります。
一番の肝であるXへのポスト機能ですが、APIのClient IDとsecretのペアの取得が必要になります。こちらは、少し前までは申請にはポストに利用するアカウントに電話番号の登録が必須かつ申請後数日しないと諸々のAPIキーが取得できませんでしたが、2024年7月時点では電話番号登録も必要なくなり、APIキーも即時発行できるようになりました。相変わらず少し長めの英文で申請理由を綴らないといけないのは変わりありませんが、大きな良い変化かと思います。
GASを利用したXへのポスト方法として、ネット上で紹介されているライブラリやコードは古くなって使えないものも多いため、『OAuth2 Twitter GAS』で検索すると比較的利用できる可能性の高い情報が見つかるかと思います。
現在の課題と実務に生かせる知識
プログラム作成後は無事にスケジュールを自動ポストしており、仲間内ではおおむね好評なプロダクトを生み出せて嬉しい一方、課題も見えてきました。そもそものスケジュールの登録抜け漏れです。ここは告知ポストの内容を自動登録する形で追加開発を行う予定でいます。
今回のプロダクトの作成は一人で企画から開発、リリース、運用を行いました。その中でユーザーの意見を取り入れる大切さや、やりたいことの実現に向けてデータ登録の仕様をしっかり検討することの大切さを学びました。これらは実務においても、活かせる経験だと思います。
実務の経験がオタク活動を豊かにするためのプロダクト作成に繋がり、その逆もまた然りな良い循環の中で今後も成長していきたいです。