きっかけと構想
自分はDLSiteという同人作品ダウンロード販売サイトで音声作品を聴くのですが、サイト自体はたまに見る程度だったのでその時々の売れ筋なんかは知りませんでした。
受動的なスタンスで明確にアンテナをはらなくても情報が入ってくるようにできないかなと考えた時に思いついたのが、DLSiteの音声作品を自動的にLINEで紹介してくれるボットを作成してしまうことでした。余談ですがなぜLINEなのかというと、業務でLINE APIを扱っているのでナレッジがあるというのと、自分が最も確認するSNSツールだったからです。
要件とシステム構成
自分が実現したかった要件は以下です。
- 商品APIがないのでサイトをスクレイピングして疑似商品APIに近いものを作る
- 無料で運用したい
- 定期配信をしたいのでバッチ的な運用をしたい
- フリーワード検索的なこともしたい
当初はPythonのFlaskで実装したものをAzure Functionsに載せるようなことも考えていましたが、最終的には以下のシステム構成としました。
Google Apps Scriptはクラウド上で動くJavaScriptベースのスクリプトで常時接続が可能です。また機能としてバッチ処理も対応しているので、商品情報の取得を含む処理を毎日自動的に実行できるようトリガー設定することで定期配信の要件も満たすことができました。
LINEのAPIの中でユーザーの入力に対する応答(リプライ)は無料で使用できますが、システム側からの配信(プッシュ配信)は無料プランだと月の上限数があります。もっともアカウントの使用者が自分しかいない現状であれば問題なく運用できる想定です。
実装のサマリと成果物
LINE Developersにアカウントを新規作成し、MessagingAPIのWebhookにGASで作成したコードのエンドポイントを設定しました。これでLINEのトーク画面からGASのコードがつながった形です。
あとはコード内からDLSiteにアクセスして適宜情報を取得し、必要な要素をLINEのフレックスメッセージ(カルーセルテンプレート)に整形して配信しています。実装には直接関係ないですがフレックスメッセージシミュレーターがあるのでメッセージ形式のデザインもラクラクです。
以下実際に動作している画面です。
デイリー配信(左)とフリーワード検索(右)
あとがき
日次配信されるので前よりも情報が入るようになり、日々の楽しみが増えました。
ものごとを能動的に確認するクセがない自分にとっては有用なツールだと感じており、また最初に抱いていた「どうにかできないかな?」という悩みに対してITソリューションを生み出せたことに我ながらではありますが感動しています。
生活していくためにお仕事は必要ですが、その仕事の中で培われた経験が人生をより豊かにするというのはとても幸せなことだと思いますので、ただ仕事を仕事だけで終わらせず自分の人生にどう活かせるか、日々考えていきたいですね。


