tl;drLINEの会話をSlackに流し込む皆さん向けのプロダクトを作りました。開発班(この12月から出来た新しい班です!)のwhywaitaです。tl;drの項目で大体終わっているのですが、とりあえず作りましたのでご報告。最近某社でインターンを始めまして、その職場でGolangを書き始めたところ楽しくなってしまったのでお勉強用に以前から欲しかったbotを作ってみました。botとして常駐させておいて、botに話しかけるとその結果がSlackに通知されるものです。LINEの問題点LINEはそのアカウントの作りやすさから爆発的にユーザを増やし、様々な要因(以前からユーザが多かったSkypeのスマートフォン移植が最初期はとても使いづらかった、等)が相まって、日本では現在も多くのユーザが存在します。トークを手助けするスタンプの存在だけでなく、お店のアカウントをフォローしておく事でクーポンが受け取れたり、LINEアカウントをプラットフォームとしたゲームアカウント、最近ではLINEアカウントを用いて電子決済を行えるようになるなど、急成長を進めているプロダクトです。LINEには問題点が1つあります。複数端末での利用が考えられていない事です。アカウントログインがかなり排他的な実装になっており、携帯端末を移行する際も事前に処理を行っていないとトークのログが追えない所か、最悪アカウントにログインすら出来ない事態になってしまい、私の周りでも「携帯が変わったのでLINEのアカウントも変わった」という話がよく聞こえてきます。現在はPCからログインする事で利便性が少しは高まっていますが、やはり通知能力が異常に低いと言って間違いではないでしょう。これを解決する為に、近年エンジニア界隈で流行している「Slack」にLINEの会話通知をそのまま通知し、連絡が来ている事に素早く気づけるソリューションを開発しました。APIというのを使っています。以前のAPIと比較して最近はグループに参加させる事も可能なので、ログの保存について難しいLINEにおいてもSlackに投げる事で保存し続ける事が出来ます。APIをそのまま叩く事にしました。問題点(ハマった点)LINEの設定でグループに入れなかった今回の新APIの大きな特徴としてグループ会話に参加出来るようになったのですが、何故か招待を行っても参加してこなかったので少し悩みました。Managerの設定を変更することで参加出来るようになっていました。1度参加させる設定にしていたはずなのですが、どうやら外れていたようです。1度確認してみるのをお勧めします。変更する事でグループに参加させる事が出来ました。最初に部屋を作ってから人を募集するのが「グループ」この違いに最初ハマりました。最初は私のアカウントとbotアカウントで開発を行っており、上手く行ったのでグループに参加させて遊んでみたのですが、残念ながら動かず...後でAPIのリファレンスを読んでいて気づいたのですが、この3つは全く別の処理として扱われているようです。(実はこの辺の処理は公開リポジトリには反映されていません、プライベートな方にはあるのですが、グループIDなどがそのまま書いてあるのでそのまま公開は出来ず...時間が出来たら反映しておきます)Herokuでgolangを動かす折角プログラミングという物を始めたので、わざわざサーバを用意せずにHeroku上でやってみました。いうファイルをリポジトリに用意してpushする事でそれが反映されるのですが、最初に以下のように書いていた所動作しませんでした。main.goそれもそのはずで、そもそもHerokuはbuildpackによって生成されたバイナリを起動させます。Golangはコンパイルした後は1つのバイナリになるため、そのバイナリ名を書く必要がありました。そのため、以下のように記載する事で上手く動きました。ファイルの記載がよく分からない事が挙げられますが、これはHerokuの公式ドキュメントを読む事で十分理解する事が出来ました。APIを用いる事でグループにbotを参加させる事ができ、その会話も取得する事が出来るようになったのですが、「どのグループからの通知なのか」は分かっても、「そのグループに参加している誰の発言なのか」は残念ながら分かりませんでした。この件についてはIssueも上がっているのですが、LINEの方によって全てクローズされており、「この機能を提供する予定は今の所ない」と明言されています。https://github.com/line/line-bot-sdk-java/issues/40この会話には3人発言しているのですが、残念ながらその3人を区別する術がありません。まとめこれでLINEの通知は全て気づけるようになりました。実際にとあるLINEグループで運用されていたのですが、誰が発言しているのか分からない問題が顕著となってしまい、最終的に私の個人slack(と言いながら参加者が20人ぐらい居ますが)のプライベートチャンネルに引っ越す事になりました。Slackは最高ですね。