【技術分野】ブログの運営方法について
最終更新:2021年01月25日 13時20分19秒(初公開:2021年01月25日 13時19分04秒)
のむらやです、
とても良い質問をいただいたので、質問者の許可を得てお話させていただく事にしました。
まずはこの場を借りて改めまして、この度のご質問と内容の掲載許可をいただきありがとうございます。
質問内容が嬉しかったのでのむらや、少々興奮しておりましていつも以上にウザったいテンションになっておりますが、お付き合いいただけるとありがたいです。
Q. 質問対応の自動化とかどうやってるんですか?
A.LINEの公式アカウントで受けて、個人のLINEやSlackに通知を流してそこから返信しています。
サイトの技術要件として、
- GatsbyJS(Javascript - React)
- CSS in JS(emotion)
- API(ヘッドレスCMS / microCMS)
- 各社ホスティングサービス
という話をしてきました。
が、質問者さんは純粋に「どうやってブログを管理・運営しているのか」が気になったようで、そちらのお話をしたことはなかったな、と気付かされました。
つまり、技術要件は気にしないでLINEでのコメント対応をどうやっているとか、公式アカウントからだとメッセージに気付きにくいのでは?等の運営面が気になったそうです。
私もこの点について取り上げなかったので、この機会に解説します。
質問の対応を自動化する
制限事項を確認する
まず、静的サイトという都合上コメントフォームは設置できません。
やってやれない事はないんですが、コメントの度に裏で重たいビルドを走らせたり、あるいは掲載してよいかどうか判断する仕組みを備えた専用のサービスみたいなものを作るのはどうかなぁ、と懐疑的になっています。
ユーザーコミュニケーションはしたいけど、せっかく爆速サイトを作るために静的サイトにしたのに、動的サービスを使うのもおかしな事をしているなぁ、と技術的に気持ち悪く感じたというのもあります。
そこで、コメントフォームではなくLINE公式アカウントを使うことで、ユーザーにも記事コメントの返信に気付きやすい仕組みを整える事を優先しました。
LINE公式アカウントを運用してみて
記事を充実させたいコメントを求めるのではなく、ユーザーとコミュニケーションを図る事を目的としたアプローチです。
この方法は、必然的に非公開でコメントのやり取りができるので、質問者としても安心できるという面もありますが、それ以上に気軽さがコメントフォームと比べて圧倒的に高いのです。
とはいえ、公式アカウントは不便です。
個人アカウントと違って通知に気付きにくかったり、そもそも通知が鬱陶しいという理由でオフブロックされたりしがちです。
コミュニケーションが目的なので、宣伝は比較的しないように心がけていますが、新しい記事を通知してほしくて登録された方もいらっしゃいます。
そして、LINEの仕組み上、どの人に通知をしてどの人に通知をしない、という細かな挙動調整が難しかったのです。
これを実現可能にしたのが、LINE MessageAPIです。
LINE MessagingAPIでできること
LINE公式アカウントに何かしらのメッセージを受けたら、Webhookを発信する事ができます。
受信先で細かい制御をしてあげればよいので、ここはLINE-GASのノウハウを使ってサクッと実装しました。
いったんGASなどAPIサーバーに取り込めば、後はどこへでも渡せます。LINE-GAS-SlackとかLINE-GAS-LINE(個人)につなぎ、コメントがあった事を手元で確認できるようにしました。
また、送信時点については、予め通知ONにするかどうかをGoogleスプレッドシートなどで管理しておき、必要であれば発信するようにします。
具体的には、通知をするユーザーとのリプライトークンを持っておき、何かメッセージを発信したい場合はGASなどから送信すればよいのです。
今回の場合、microCMSで更新した情報をユーザーに通知したいので、microCMSのWebhookにGASを入れて、GASからLINEBOTに情報を渡してメッセージを送信するようにしています。
なお、ユーザーに最新記事の通知をONにするかどうかはLIFFとかを使うと簡単に設定できます。設定値をGASで受け取ってスプレッドシートに書けばよいです。
ちょっと設計上の話が多くて混乱しますが、図にすれば簡単です。
(後日書きます)
技術要件
設計
- LINE BOT(ノンプログラミング)
- GAS
- Slack(ノンプログラミング)
GASの部分の管理が大変です。
システム全体のコントローラーとして、また各部分のインターフェースになっているので、何をやっているのかをしっかり管理する必要があります。
ファイルでいうと
- メッセージ受信の通知と転送
- 通知のON/OFF制御
- 新着記事の送信制御
送信管理はスプレッドシートでやっているので、ここだけはまだ救いがあります。
サービス一覧
- LINEBOT
- LINE MessageAPI
- Google Apps Scripts(GAS)
- Googleスプレッドシート
- Slack
- LINE(個人)
補足:通知
- MicroCMS: Webhook
- GAS
- LINEBOT
総括
技術要件は大した事はないのですが、使っているサービスがとにかく多いので設計が難しいです。
設計さえしっかり把握できれば、実装は大したことがないので、ちょっとGASを勉強したら簡単に実装できると思います。