LoginSignup
3
2

More than 1 year has passed since last update.

IBM Cloud CodeEngine(Node.js) + Slackで単語帳作成アプリを作ってみる

Last updated at Posted at 2021-09-30

はじめに

IT企業に入社して半年が経ちました。
新入社員は新しく知ることや覚えることが山のようにあります。社内で飛び交うIT用語もその一つです。
社内会議やお客様とのミーティングで知らないIT用語が出てくるたびにコツコツ調べてメモしていましたが、同期と協力して、より充実した単語帳を作ることにしました。
初めはエクセルに書き込む形式にしましたが、少々不便を感じていました。手順は、ブラウザからクラウド上にある共有のエクセルを開いて、調べた単語とその意味を入力するというものです。書き込まれる量が多くなると全体として見づらく、単語が探しにくくもなってきます。
そこで、これらの不便を解消する単語帳作成アプリを考えることにしました。

単語帳作成アプリのアイデア

単語とその意味の入力手順を簡略化し、見やすい単語帳にするために、社内のコミュニケーションツールであるSlackを活用できないかと思いつきました。
テレワーク中、ミーティング外での会話は主にSlackで行うため、Slackアプリは開いていることが多く、チャット形式で単語を登録することができればとても便利です。
Slackのチャット欄に単語とその意味を入力するだけで、自動的に整理された単語帳の形にする仕組みを考えました。

アイデアのアーキテクチャ

box-image3.png

単語登録の仕組み

① ユーザーは調べた単語とその意味をSlackの単語登録チャンネルに入力
② Slackアプリが単語とその意味が入力されたメッセージを検知すると、CodeEngineにWebhookする
③ 単語登録アプリはデータベースに単語とその意味を登録

単語参照の仕組み

④ ユーザーはブラウザから単語表示アプリ(単語帳サイト)にアクセス
⑤ 単語表示アプリはデータベースを参照し、サイトに単語とその意味を表示

アプリ開発/デプロイの流れ

❶ 開発者はgithub上にコードを管理
❷ CodeEngineはGithubからソースコードを取得
❸ CodeEngineの内部でコンテナイメージを作成
❹コンテナイメージをCodeEngineにデプロイ

IBM CodeEngineとは

今回、アプリをCodeEngineで動かすことにしました。
Code Engine とは、以下の機能を備えるフルマネージド・ランタイムサービスです。
・インフラ管理·クラスタ管理なしに、コードを瞬時にデプロイできます
・あらゆるコンテナ、ソースコード、サーバーレス機能、バッチジョブを実行できます
・ゼロ·スケールによって真の意味でコードが実行されているときだけのお支払い

2021年4月からIBMが提供を開始しており、様々なメディアに取り上げられています。
【公式サイト】
https://www.ibm.com/jp-ja/cloud/code-engine
【他サイト】
https://news.mynavi.jp/itsearch/article/cloud/5623
https://it.impress.co.jp/articles/-/21695

おわりに

今後実際にアプリを開発していくにあたり、単語とその意味を参照する仕組みを工夫していきたいと思います。例えば以下のような機能です。

単語検索機能

単語帳を参照するサイトで、単語を検索できる機能を実装したいと思います。
検索単語を含めたクエリとしてDB2に送信し、単語あるいは意味に検索単語が含まれているタプルを返り値としてブラウザに表示します。
複数の単語の検索結果テーブルそれぞれから同じタプルを省けば、複数単語の検索結果を表示することも可能だと考えています。
また、単語の先頭文字1文字を格納するカラムを作成すれば、頭文字による単語の分類が可能になります。
(ただし、ユーザの負担が増えてしまいますが...)

Slackからの参照

ブラウザからだけでなく、Slackから登録済みの単語とその意味を参照できるようにする機能があると便利です。
Slack内に検索コマンドを設定することで、コマンドとともに入力された検索単語を検索クエリに含めてDB2へ送信、受信した検索結果をAPIによりSlackチャンネルへ投稿することで実現できると考えます。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2