Bolt 入門
Bolt for Java は、最新のプラットフォーム機能を使った Slack アプリの開発をスピーディに行うための抽象レイヤーを提供するフレームワークです。
このガイドでは、初めての Bolt アプリを開発する手順を紹介します。
なお Slack アプリ開発全般についてまだ不慣れな方は、まず「An introduction to Slack apps(英語)」に軽く目を通した方がよいかもしれません。
プロジェクトのセットアップ
では、さっそく Bolt を使った Slack アプリ開発を始めましょう!このガイドでは Maven、Gradle を使ったプロジェクトセットアップの手順を説明します。
Maven
Maven プロジェクトを作成した後、まずは bolt 依存ライブラリを pom.xml
に追加します。このライブラリ自体は特定の環境に依存していません。Bolt を Spring Boot、Quarkus (Undertow) やその他 Servlet 環境で利用する場合は bolt-servlet というライブラリも追加します。単に bolt-servlet だけを追加しても OK です。
<dependency>
<groupId>com.slack.api</groupId>
<artifactId>bolt</artifactId>
<version>1.44.2</version>
</dependency>
<dependency>
<groupId>com.slack.api</groupId>
<artifactId>bolt-servlet</artifactId>
<version>1.44.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.36</version>
</dependency>
そのような他のフレームワークは一切使わず、シンプルな構成で Jetty HTTP サーバーで起動したい場合は bolt-jetty を追加してください。もし Jakarta EE Servlet API互換の最新の Jetty サーバーを使いたい場合は bolt-jakarta-jetty を利用し てください。
<dependency>
<groupId>com.slack.api</groupId>
<artifactId>bolt-jetty</artifactId> <!-- "bolt" と "bolt-servlet" はこれの依存として解決されます -->
<version>1.44.2</version>
</dependency>
また、コンパイラーの source/target 言語の設定を最低でも 1.8 以上にしておく必要があります。
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
Gradle
Gradle プロジェクトを作成した後 bolt 関連の依存ライブラリを build.gradle
に追加してください。
dependencies {
implementation("com.slack.api:bolt:1.44.2")
implementation("com.slack.api:bolt-servlet:1.44.2")
implementation("com.slack.api:bolt-jetty:1.44.2")
implementation("org.slf4j:slf4j-simple:1.7.36")
}
3 分間で動かす Bolt アプリ
bolt-jetty の利用
bolt-jetty は Slack アプリサーバーを起動する手軽な手段です。このモジュールを使えば、開発者は App インスタンスを初期化して HTTP サーバーを起動する main メソッドを書くだけで Slack アプリバックエンドサービスを立ち上げることができます。
build.gradle
以下のビルド設定は、そのままコピーして使うことができます。プロジェクトのルートディレクトリに配置してください。
plugins {
id("application")
}
repositories {
mavenCentral()
}
dependencies {
implementation("com.slack.api:bolt-jetty:1.44.2")
implementation("org.slf4j:slf4j-simple:1.7.36")
}
application {
mainClassName = "hello.MyApp"
}
run {
// gradle run -DslackLogLevel=debug
systemProperty "org.slf4j.simpleLogger.log.com.slack.api", System.getProperty("slackLogLevel")
}