2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
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の事始めとしてやってみるのはいかがでしょうか。
ご静聴ありがとうございました。
(会場拍手)
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05