GJ CarelyがTwitterの世界へ!
こんにちは、iCAREサーバーサイドエンジニアの寺井(@krpk1900_dev)です。
今回はCarelyとは別のアプリケーションであるTwitter GJ Carelyを新たに開発したので、それについて書いていきたいと思います。
まず、GJ Carelyって何?
iCAREの初代VPoEであるとしさんが、3年前の2019年に開発されたSlackアプリケーションです。
ありがとうを伝えたい相手とGJ Carelyを一緒にメンションすると、GJ Carelyがリプライでポイントを通知してくれます。
感謝のメッセージがオフィスのディスプレイに投影されてみんなが目にしたり、毎週の全体定例でランキングが発表されて称え合ったりと、「日々の小さなことでも言葉にして仲間に感謝を伝える文化」の定着に大きく貢献してくれています。
Twitter GJ Carelyを開発しました!
GJ CarelyはSlackアプリケーションなので、これまではSlackの外の世界で活躍することは困難でした。
一方で、iCAREメンバーはSlack以外だとTwitterでもコミュニケーションを頻繁に取っています。
そこで、今回GJ CarelyがTwitterでも羽ばたけるように、新たなアプリケーションを個人開発しました!
言語としてPythonを選択
今回開発したTwitter GJ Carelyは、Slackアプリケーションである本家GJ Carelyとはまったくの別アプリケーションとして開発したため、ゼロから技術選定を行いました。
iCAREではサーバーサイド開発にRubyを使用しているため、Twitter GJ Carelyも他のエンジニアの方が精通しているRubyで開発することで拡張性とメンテナンス性を高めたかったのですが、後述する理由によりPythonで実装しました。
Twitter GJ Carelyは私にとってちょうど10個目の個人開発サービスになりますが、Pythonで開発したサービスは初めてだったので、言語仕様を調べながらの実装になりました。
なぜPythonを選択したか?
Twitter GJ CarelyがTwitter上でメンションを常時監視したり自動でリプライする処理を簡便化するために、Twitter APIをラップしているライブラリを探す必要がありました。
Rubyを選択した場合は、twitterというgemとsimple_twitterというgemの2つが有力候補でしたが、twitter gemはメンテナンスが2年前に止っておりTwitter API v2に対応していないこと、simple_twitter gemはOAuth2.0のアプリケーション単独認証の設定がどうしてもうまくいかなかったことが原因で、Ruby以外の言語を採用する選択肢を検討し始めました。
調査を進めていくと、PythonはTwitter Botを開発する際によく使われており、tweepyという継続的にメンテナンスが行われているライブラリが存在していることも分かったので、Pythonを選択することに決定しました。
システム構成図
今回開発したTwitter GJ CarelyはSlackアプリケーションである本家GJ Carelyとは別のアプリケーションですが、GJポイントやユーザー情報は共通のデータを利用するためにDBは共有する構成にしました。
また、本家GJ CarelyはWebアプリケーションのためデプロイにAWS Elastic Beanstalkを使用していますが、Twitter GJ Carelyは常駐型プログラムのためEC2インスタンスにデプロイしました。
どうやって使うの?
本家GJ Carelyの仕様とほとんど同じですが、ありがとうを伝えたい人とGJ Carely公式アカウントを同時にメンションして、感謝の言葉をテキストで伝えるだけで使うことができます。
メンションすると、公式アカウントが自動でリプライを行い、感謝を受け取った人のGJポイントを増やして通知してくれます。
もちろんこのポイントはSlack内で使っているポイントと共通になっています。
Slack版の本家GJ Carelyでは何人同時にメンションしても問題なく動作しますが、Twitterでは140文字制限があるため、同時にメンションできるのは2人までになっています。
また、もう一点本家と大きく異なる点は、iCAREの社員でない方でも使えるという点です。
ありがとうを送る側、送られる側のどちらでも使用可能です。
つまり、iCAREの社員同士で感謝を伝えるときはもちろん、産業医の方やお客様に対してもGJを送ることができます!
外の世界に拓けたTwitter GJ CarelyによってiCAREの素敵な文化が外の世界にも拡がっていき、最終的に「社外からのありがとう」がTwitter GJ Carelyによって運ばれて来るような日がもし実現したら、開発者としてすごく幸せです。
ぜひみなさん使ってみてください!