Skip to main content

はじめに

Square Cloud で Slack ボット を開発してホストするには、構成と前提条件の体系的な手順に従うことが不可欠です。この技術ガイドでは、初期セットアップから本番環境へのデプロイまで、プロセス全体を解説します。

前提条件

  • Square Cloud アカウント: 登録ページからメールアドレスを使って登録します。
  • 有効なプラン: アプリケーションに専用リソースと最適化されたパフォーマンスを提供します。利用可能なプランを確認し、ニーズに最も適したものを選択してください。

プロジェクトの作成

Slack ボットを作成するには、Slack でアプリを作成するためのアカウントと権限が必要です。次の手順に従う前に、Slack でアカウントを作成またはアクセスしてください。

Slack でのボットアプリケーション

  1. Slack API - Your Apps にアクセスし、「Create New App」をクリックします。
  2. 「From scratch」を選択し、アプリに名前を付け、インストールする workspace を選択します。
  3. 「Socket Mode」セクションで Socket Mode を有効にし、connections:write スコープを持つ app-level token を生成します。これをコピーしてください (xapp- で始まります)。これが SLACK_APP_TOKEN です。
  4. 「OAuth & Permissions」セクションで、ボットに必要なスコープ (例: chat:write、app_mentions:read、commands) を追加し、アプリを workspace にインストールして Bot User OAuth Token をコピーします (xoxb- で始まります)。これが SLACK_BOT_TOKEN です。
  5. 「Event Subscriptions」でイベントを有効にし、app_mention ボットイベントをサブスクライブします。「Slash Commands」で /hello コマンドを作成します。Socket Mode が有効なので、どちらも Request URL は不要です。
セキュリティ: app-level token や Bot Token を公開しないでください。これらは機密性の高い認証情報として扱ってください。以下の例では、コードではなく環境変数から読み込みます。
Socket Mode ではボット自身が Slack への接続を開くため、ほかのボットと同じように動作し、公開 URL やポートは必要ありません。Slack から HTTP でイベントを送信させたい場合は、このページの最後にある「Socket Mode の代わりに HTTP モードを使う」を参照してください。

プロジェクトの開発

選択する言語に応じて、以下のセクションを使用してください。どちらの例も、メンションや簡単なコマンドに応答するボットを示しています。
Node.js 環境のセットアップ
  1. Node.js がインストールされていることを確認してください。
  2. プロジェクトを初期化し、依存関係をインストールします。
Terminal
  1. 次の内容の index.js ファイルを作成します。
index.js

Square Cloud の設定

プロジェクトのルートに、メインファイルと並べて squarecloud.app ファイルを作成します。このファイルは、ボットの実行方法を Square Cloud に伝えます。
  • MAIN は Square Cloud が実行するファイル、MEMORY はボットの RAM (MB) です。ボットには最低 256 MB が必要で、512 MB あれば成長の余地があります。
  • AUTORESTART=true を指定すると、ボットがクラッシュしたときに再起動します。自動再起動の仕組みを参照してください。
  • SUBDOMAIN はありません。Socket Mode では、ボットに公開 URL は必要ありません。
すべてのフィールドについては設定ファイルのリファレンスを参照してください。

トークンの設定

コードは 2 つのトークンを環境変数 SLACK_BOT_TOKEN と SLACK_APP_TOKEN から読み込むため、トークンがファイルに入ることはありません。次のいずれかの方法で設定します。
  • ダッシュボード: アップロードページで Advanced configuration を開き、両方の変数を追加します。すでにデプロイ済みのボットの場合は、アプリケーションの Environment Variables ページで追加し、ボットを再起動します。
  • CLI: ボットをアップロードした直後に (デプロイを参照)、squarecloud app env set で設定し、ボットを再起動します。
ボットは起動時に環境変数を読み込むため、変更のたびに再起動してください。その他の管理方法については環境変数を参照してください。

デプロイ

プロジェクトファイルの準備ができたら、それらを Square Cloud にアップロードしてプロジェクトをホストできます。 そのためには、すべてのプロジェクトファイルを含む ZIP ファイルを作成してください。

ダッシュボード経由

1

アップロードページにアクセス

アップロードページにアクセスし、プロジェクトの zip ファイルをアップロードします。
2

環境を設定

zip をアップロードした後、プロジェクトの名前、メインファイルまたはランタイム環境、その他の設定を構成する必要があります。
ウェブプロジェクトをアップロードする場合は、必ず「Web Publication」を選択し、プロジェクトにサブドメインを設定してください。
3

プロジェクトをデプロイ

最後に「Deploy」ボタンをクリックして、プロジェクトを Square Cloud にホストします。
デプロイ後、ダッシュボードからプロジェクトのステータスとログを監視できます。
Square Cloud へのアプリケーションのアップロード
4

アプリが稼働していることを確認

最初のデプロイは、通常 1 分もかからずに完了します。ダッシュボードでアプリケーションのステータスが running になるのを待ち、起動時のエラーがないかログを確認してください。
ウェブサイトや API をデプロイした場合は、ブラウザで https://<your-subdomain>.squareweb.app を開き、アプリケーションが応答することを確認してください。ボットをデプロイした場合は、コマンドを送信してオンラインになっていることを確認してください。
アプリが起動しませんか?よくある原因と修正方法はトラブルシューティングガイドを参照してください。

CLI 経由

この方法を使用するには、プロジェクトのルートに squarecloud.app という名前の設定ファイルが必要です。このファイルは、アプリケーションの実行方法を Square Cloud に伝えます。

設定ファイルガイド

アプリケーションの環境を定義する squarecloud.app 設定ファイルの作成方法を学びます。
1

CLI をインストール

Square Cloud CLI をインストールします。すでにお持ちの場合は、同じコマンドを実行すると更新されます:
2

ログイン

次のコマンドを実行します。ブラウザが開くので、そこでログインを承認すれば CLI の準備は完了です。API キーをコピーする必要はありません。スクリプトや CI については、CLI の認証を参照してください。
3

プロジェクトをアップロード

プロジェクトのフォルダで次のコマンドを実行します。CLI は squarecloud.ignore に記載されたものを除いて現在のフォルダを zip にし、アップロードします:
自分で作成した zip をアップロードするには、--file で指定します:
4

アプリが稼働していることを確認

最初のデプロイは、通常 1 分もかからずに完了します。ターミナルから直接、アプリケーションのステータスとログを確認してください。
ウェブサイトや API をデプロイした場合は、ブラウザで https://<your-subdomain>.squareweb.app を開き、アプリケーションが応答することを確認してください。ボットをデプロイした場合は、コマンドを送信してオンラインになっていることを確認してください。
アプリが起動しませんか?よくある原因と修正方法はトラブルシューティングガイドを参照してください。

ボットのテスト

  1. Slack App パネルの「OAuth & Permissions」で、アプリを workspace にインストールします (まだの場合)。
  2. Square Cloud ダッシュボードでアプリケーションのログを開き、起動時のエラーがないか確認します。Socket Mode では設定する Request URL はなく、ボットは起動するとすぐに Slack に接続します。
  3. ボットをチャンネルに招待し、メンションするか /hello コマンドを実行して、応答を検証します。
インストールリンクの例 (client_id を置き換えてください):

Socket Mode の代わりに HTTP モードを使う

Socket Mode を使うアプリは、公開の Slack Marketplace に掲載できません。代わりに Slack から HTTP でイベントを送信させる必要がある場合は、ボットをウェブアプリケーションとして実行します:
  1. Slack アプリの設定で Socket Mode を無効にし、(「Basic Information」にある) Signing Secret を環境変数 SLACK_SIGNING_SECRET にコピーします。トークンと同じ方法で設定します。
  2. app-level token の代わりに signing secret を使ってアプリを作成し、環境変数 PORT のポートで待ち受けます:
両方のサーバーは、Square Cloud が求めるとおり、すべてのネットワークインターフェース (0.0.0.0) でリッスンします。
  1. ボットに公開 URL が割り当てられるように、設定ファイルに SUBDOMAIN を追加します (またはダッシュボードからアップロードする際に「Web Publication」を選択してサブドメインを設定します)。ウェブアプリケーションには少なくとも MEMORY=512 が必要です。
squarecloud.app
サブドメインなしでアップロードしたアプリケーションには、後からサブドメインを設定できません。ボットがすでに Socket Mode で動作している場合は、HTTP 版を新しいアプリケーションとしてアップロードしてください。
4. 「Event Subscriptions」と /hello スラッシュコマンドで、Request URL を https://<subdomain>.squareweb.app/slack/events に設定します。

追加リソース

さらに詳しく知りたい場合は、Slack 公式ドキュメントをご確認ください。

次のステップ

アプリが起動しない

モジュールの不足、メモリエラーなどの起動エラーを修正します。

環境変数

ボットのトークンやその他のシークレットを管理します。

Discord ボット

Slack ボットと並べて Discord ボットをホストします。

お問い合わせ

技術的な問題が解決しない場合は、専門のサポートチームがお手伝いします。お問い合わせいただければ、どのような問題でも喜んで解決をサポートいたします。サポートの質の高さも、開発者が Google と Trustpilot で Square Cloud に402 件のレビューで 4.9/5という評価をつけている理由の 1 つです。