2024.12.10
“放置系”なのにサイバー攻撃を監視・検知、「統合ログ管理ツール」とは 最先端のログ管理体制を実現する方法
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.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
2024.12.09
10点満点中7点の部下に言うべきこと 部下を育成できない上司の特徴トップ5
2024.12.09
国内の有名ホテルでは、マグロ丼がなんと1杯「24,000円」 「良いものをより安く」を追いすぎた日本にとって値上げが重要な理由
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.12.10
職場であえて「不機嫌」を出したほうがいいタイプ NOと言えない人のための人間関係をラクにするヒント
2024.12.12
今までとこれからで、エンジニアに求められる「スキル」の違い AI時代のエンジニアの未来と生存戦略のカギとは
PR | 2024.11.26
なぜ電話営業はなくならない?その要因は「属人化」 通話内容をデータ化するZoomのクラウドサービス活用術
PR | 2024.11.22
「闇雲なAI導入」から脱却せよ Zoom・パーソル・THE GUILD幹部が語る、従業員と顧客体験を高めるAI戦略の要諦
2024.12.11
大企業への転職前に感じた、「なんか違うかも」の違和感の正体 「親が喜ぶ」「モテそう」ではない、自分の判断基準を持つカギ