
2025.03.07
メール対応担当の8割以上が「カスハラ被害」に クレームのハード化・長期化を防ぐ4つの対策
Serverless×Slackでアプリを作ってみた話(全1記事)
リンクをコピー
記事をブックマーク
坂部健一氏:最後にLTというかたちで参加させていただきます。余興みたいなかたちで聞いていただければと思います。「Serverless×Slackでアプリを作ってみた話」を発表させていただきます。よろしくお願いします。
まず自己紹介をさせてください。
坂部健一と申します。ネット上ではsaken649と名乗っていることが多いです。26歳、エンジニア歴3年半のまだまだクラウド勉強中のエンジニアです。オープンストリームという会社でここ1年くらいずっとC#を書くような仕事をしておりました。
趣味でちょっと作曲をやっています。クラスメソッドさんの広報キャラクターの「めそ子」というキャラクターがいるんですが、歌手デビューするということで。おめでとうございます。
(会場笑)
楽曲コンテストということで、デビュー曲を募集していたというのがありまして、私の作った曲が採用されて、めそ子のデビュー曲になりました。
(会場拍手)
発表というか発売されてないんですけれども(注:2019年6月2日現在、配信済み)、発売された暁には、この曲名がいかにもAWSな感じの曲https://creofuga.net/audios/154540( 『Future Method ~Amazing World Symphony~』)をぜひよろしくお願いします。
今のは閑話なんですが、ここから本題です。ServerlessとSlackで、アプリのつもりだったんですけど、Botを作ってみました。
どんなBotかと申しますと、例えば変数名とかメソッド名の命名に困ったときに、「ユーザー名を取得する」というような感じで日本語で問い合わせをすると、右側のようにgetUsernameをローワーキャメルケースで返してみたり。例えばget以外にも単語ごとに、fetchとかそういった候補がありますよといったような提案をしてくれるBotになってます。
デモをしてみたいと思います。
さっきローワーキャメルだったのでスネークケースでやってみます。「ユーザーを更新する」とやると、このようにスネークケースでupdate_userと返ってくるというような、ちょっとしたBotを作ってみました。
どのような技術で実現したかと言うと、Cloud Functions for Firebaseの上でNode.jsとExpressを動かしています。英語の単語を翻訳する部分はcodicというサービスのAPIを使って実現をしております。使ってみた所感としまして、ちょっとしたBotのバックエンドにFirebaseはアリかもしれないと思いました。
まず業務の中で変数名とか命名の大喜利が開催されることが多くて、そんなときに命名を提案してくれるようなBotがあったらいいなと思ったんですが、わざわざそのためにサーバーを作って置いておくというのはちょっと嫌なので、思いつきをサーバー管理せずにオンライン稼働できるようなものとして、ちょっとFirebaseを考えてみました。
Node.jsのスクリプトを書いてコマンド一発でデプロイしてすぐ動いちゃうので、非常に手軽だなと思ったところです。
今までAWSとかも触ってきた中で動かすまでには一苦労でしたが、そういったこともなかったのが非常によかったと思っています。
Slackのイベントを投げる先のエンドポイントの設定もFirebaseのお作法ももちろんあるんですけど、Expressベースで気軽に適当にサクッと書いてもわりと動いてしまうというのがけっこういいなと思いました。
クラウドなんですけれども、ローカルで開発がほぼ完結してしまうというのが大きな特徴じゃないかなと思っております。ローカルでCloud Functionsを再現するエミュレーターが存在しまして、それをngrokというような固定URLから特定のポートにポートフォワードするようなサービスと連携すると、だいたいローカルだけで開発が済んじゃいます。
「クラウドなのにどうしてローカルで全部やってるんだろう?」という感じはありましたが、そういったことも実現できてしまいます。今回Cloud Functionsを使いましたが、それ以外にもFirestoreやAuthenticationのようなサービスでもローカルのエミュレーターから普通に呼べます。動確のためにわざわざデプロイがいらないというところで、気軽に作るにはすごくいいなと思いました。
お金の話です。基本的にはFirebaseは無料でけっこう使えるなと思いました。思いつきを気軽に稼働させるにはこれ以上ないくらい強い味方だと思います。
今回だとcodicのように、Googleの外と通信をするには若干課金しないといけません。従量制のプランもありまして、どうぜたいした規模じゃないので従量制でもたいしてお金はかかっていません。今日までのところでもぜんぜん請求はきてませんでした。
環境変数まわりなど、ちょっとしたハマりポイントは確かにあります。
Node.jsをお使いの方ならわかると思うんですけれども、process.envというのを環境変数で引っ張れるんですが、それが取れなくて「なんだこれは?」となったところで、Firebaseの作法に則ればそれも解決できます。
要はドキュメントにそのへんはちゃんと書いてありました。Bot程度を作るのであればドキュメントだけで解決するというのは非常に気軽に使えるところだと思います。
ちょっと駆け足になってしまったんですが、総括としましては、思いつきでオンライン稼働させやすい。
ローカルからだいたい動かせちゃうのでスピーディーに開発がしやすい。基本的には無料でできて、ちょっとした課金をすれば外部との通信もできる。そしてハマるポイントはあるんですけれども、だいたいドキュメントで解決する。このあたりが気軽にBotを動かしやすい要因であって、Firebaseが選べるんじゃないかなと思います。
さっきデモしたNameThinkingというちょっとしたBotをGitHubに置いておきましたので、ご興味ある方はこちらにアクセスしてみてください。業務をちょっとだけ楽にするかもしれないSlack BotをFirebaseで。そんなこともServerlessの事始めとしてやってみるのはいかがでしょうか。
ご静聴ありがとうございました。
(会場拍手)
2025.03.12
SNSで炎上している研究者は「研究者として正しい」 人文学のプロ・阿部幸大氏が説く“強い意見を出せない時代”に対する考え方
2021.09.30
「なぜセーラー服で出社してはいけないの?」 さくらインターネット・江草陽太氏の自由な発想の源
2025.03.11
自分よりできる人を採用し、ゴリ押しで権限委譲 東大発スタートアップに学ぶ、組織を伸ばすマネジメント
2025.03.13
改正後のiDeCoと退職金の受け取り方の事例 「改悪」は本当か? プロが真相と狙いを解説
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
2025.03.12
新規事業を継続するかどうかを見極める2パターンの判断軸 会社の規模別「撤退基準」の設け方
2025.03.14
三流の上司と一流の上司の違い 部下の心を動かす科学的アプローチ
2025.03.12
年収別iDeCoの税制メリット 1年で軽減される税負担をプロが試算
2015.11.24
人は食事をしないとどうなるか 餓死に至る3つのステップ
2025.03.05
「一人前のエンジニア」になるために必要なこと 未経験からフルスタックエンジニアへの道筋