1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

docker Advent Calendar 2021

Day 13

Bolt for Pythonを利用して作ったSlackアプリをHacobuneでイゴかす (2021/12/13)

Last updated at Posted at 2021-12-12

2021/12/13(月)の回です。
前の日は、@kaizen_nagoyaさんによる『あなたもdocker, 私もdockerから5ヶ月。』でした。
私は
$\huge{どっかーら}$
やってこうかしら。
そうだ! Slackアプリをイゴかしてみよう1!!!


はじめに

dockerを楽しんでいますか:bangbang::bangbang::bangbang:
Slackを楽しんでいますか:bangbang::bangbang::bangbang:
Hacobuneを楽しんでいますか:bangbang::bangbang::bangbang:

Bolt 入門ガイド(Bolt for Python)」はとてもすぐれたガイドです。
こちらを一周することで、Slackアプリの制作を完全に理解2できます。

さてどこでイゴかそう1かとお悩みの方はいらっしゃいませんか:interrobang:
そんな、あなたに、さくらインターネットさんのHacobuneをご紹介します。

2021/11/24 現在、オープンβ版とのことで無料で使わせていただけます!

:pray::pray_tone1::pray_tone2::pray_tone3::pray_tone4::pray_tone5:

What is Hacobune ?

Hacobuneは、当社が「インフラを意識しない世界を実現する」をビジョンに開発したPaaS型クラウドサービスです。スタートアップ企業や少人数でのサービスの開発を行うお客さまなど、スモールスタートでの開発に適しています。Hacobuneを利用することで、インフラの構築が不要となり、お客さまはアプリケーションの開発およびアップデートのみに専念することができ、サービスリリースのサイクルを加速させることが可能となります。

(https://www.sakura.ad.jp/information/announcements/2021/08/12/1968207782/)

ハイライト

Dockerfileをつくればでデプロイできちゃいます :rocket::rocket::rocket:

Bolt 入門ガイド(Bolt for Python)」をまだやっていない方は一周やってみてください。
タイポレベルですが日本語訳の誤りは私がプルリク出して、マージしてもらっていますから、な〜んにも迷うところはありません。

私が出して取り込んでもらったプルリク

マージされたとおもったら即座に日本語サイトの内容が更新されていたことに感動しました :rocket::rocket::rocket:
世界を相手にしているスピード感はさすがだと感服いたしました。

用意するもの

ここからは用意するものを書いておきます。

app.py

Bolt 入門ガイド(Bolt for Python)」に記載のソースコードそのままです。
あなたのアプリケーションをご用意ください。

app.py
import os
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler

# ボットトークンと署名シークレットを使ってアプリを初期化します
app = App(token=os.environ.get("SLACK_BOT_TOKEN"))

# 'hello' を含むメッセージをリッスンします
@app.message("hello")
def message_hello(message, say):
    # イベントがトリガーされたチャンネルへ say() でメッセージを送信します
    say(
        blocks=[
            {
                "type": "section",
                "text": {"type": "mrkdwn", "text": f"Hey there <@{message['user']}>!"},
                "accessory": {
                    "type": "button",
                    "text": {"type": "plain_text", "text":"Click Me"},
                    "action_id": "button_click"
                }
            }
        ],
        text=f"Hey there <@{message['user']}>!"
    )

@app.action("button_click")
def action_button_click(body, ack, say):
    # アクションを確認したことを即時で応答します
    ack()
    # チャンネルにメッセージを投稿します
    say(f"<@{body['user']['id']}> clicked the button")

# アプリを起動します
if __name__ == "__main__":
    SocketModeHandler(app, os.environ["SLACK_APP_TOKEN"]).start()

Slackアプリ

ガイドの通りに、Slackアプリの各種設定を行っておいてください。
そもそもこれをきちんと設定しないと、SLACK_APP_TOKENSLACK_BOT_TOKENをもらえませんからね〜

Dockerfile

Dockerfile
FROM python:3

WORKDIR /usr/src/app

COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD [ "python", "./app.py" ]

に記載の通りそのままです。

requirements.txt

requirements.txt
slack_bolt

Hacobuneへのデプロイ

さ〜ていよいよお待ちかね、デプロイの時間ですよ。
Deploy Time!
この記事のハイライトです。

:point_up::point_up_tone1::point_up_tone2::point_up_tone3::point_up_tone4::point_up_tone5:公式ドキュメントです。

事前準備

デプロイ方法は次の3種類とのことです。

①パブリックのDockerイメージを使用
②プライベートのDockerイメージを使用
③GitHubレポジトリをHacobuneに接続して使用(Dockerfileが必須)

①パブリックのDockerイメージを使用を説明します。
dockerhubを使う例で書きます。

$ docker build -t first-bolt-app .
$ docker tag first-bolt-app <your_username>/first-bolt-app
$ docker login
$ docker push torifukukaiou/first-bolt-app

Hacobune

に従ってすすめるとよいです。
こんな感じです。

スクリーンショット 2021-11-24 5.25.51.png

ソケットモードを利用する場合、外部公開はOFFでよく、アプリケーションのポートは適当でよいです。

あとは環境変数の設定を行ってください。
先述のapp.pyでは次の2つの環境変数を設定する必要があります。

  • SLACK_BOT_TOKEN
  • SLACK_APP_TOKEN

たったこれだけで、しかもいまなら無料!!! で、Slackアプリをイゴかすことができます:tada::tada::tada:

$\huge{Thank\ you\ very\ much!!!}$

Wrapping up :lgtm::lgtm::lgtm::lgtm::lgtm::lgtm::lgtm::lgtm:

Enjoy docker!!!
Enjoy Slack!!!
Enjoy Hacobune!!!

  1. 「動かそう」の意。おそらく西日本の方言、たぶん。NervesJPではおなじみ。少し古いオートレースの映像ですが、実況アナウンサーが「針3イゴきます」とはっきり言っています。https://autorace.jp/netstadium/SearchMovie/Movie/iizuka?date=2017-01-04&p=5&race_number=11&pg= 2

  2. 例の完全に理解した: https://twitter.com/ito_yusaku/status/1042604780718157824

  3. 大時計の針のこと。針がイゴいてある地点まで到達すると選手はスタートを切って良い発走の合図。針がイゴきはじめると(おそらく)選手は緊張するし、スタートはその後のレース展開に大きく影響するので、車券を握りしめている観客たちがもっとも緊張する瞬間であるため、先の尖った鋭いものを連想させる針は緊張の暗喩としても言い得て妙。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?