Azure Web Apps × Java で簡単にLINE Bot を作ろう! (using GitHub Codespaces)
こんにちは、もっちゃんと申します。
今回の内容は 2021/06/14に開催された VS Code Meetup #13 のLTで発表した内容を改めてまとめるものになります!
それではAzure Web AppsとJavaの組み合わせで簡単にLINE Botが作れるかを実際に見ていきましょう!
必要なもの
- JDK Version 11 (OpenJDK 11)
- Maven (執筆時に使ったのはバージョン3.6.3)
- VS Code(私はブラウザでVS Codeが使えるGitHub Codespacesを使います!)
- LINE Messaging API SDK for Java
- Azureのサブスクリプション
- 何事も楽しむ心♪
必要なVS Codeの拡張機能
- Azure App Service for Visual Studio Code
- Extension Pack for Java
- Spring Boot Extension Pack
- ngrok for VSCode
実際にやってみよう!
1.Messaging API チャネルの作成
まずはLINE Developersコンソール画面でMessaging API チャネルの作成作業を行います。
Messaging API チャネルの作成については下記あたりを参考に作業を進めてください。
https://developers.line.me/ja/services/messaging-api/ にアクセスしてログインし、Messaging API チャネルの作成画面まで進み、今回のチャネル名はazure-app-java-bot
とかにして、あとはチャネル名などの必要な情報を入力して最後に作成
ボタンを押して作成してください。
チャネルを作成したら、アクセストークンとシークレットキーを取得しにいきます。(後で使います)
応答メッセージ設定もオフにしておきましょう!
2.Javaのプロジェクトを作成する
VS Code上で下記のように[Create a Maven Project] を選択し、プロジェクトを作成します。
3.Maven(pom.xml)にLINEのSDKを追加する
JavaのビルドツールであるMavenの設定ファイル pom.xml
に依存関係のライブラリ(LINEのSDK)を追加します。
- echo/pom.xml
サンプルコード
<!-- https://mvnrepository.com/artifact/com.linecorp.bot/line-bot-spring-boot -->
<dependency>
<groupId>com.linecorp.bot</groupId>
<artifactId>line-bot-spring-boot</artifactId>
<version>4.6.0</version>
</dependency>
4.LINE Bot用のコード用意
LINE Messaging API SDK for Java のGitHubリポジトリにはサンプルコードが用意されているので丸っとコピペします。(このサンプルコードはオウム返しが実行できるコードになっています)
- echo/src/main/java/com/example/bot/spring/echo/echo/EchoApplication.java
サンプルコード
/*
* Copyright 2016 LINE Corporation
*
* LINE Corporation licenses this file to you under the Apache License,
* version 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
package com.example.bot.spring.echo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import com.linecorp.bot.model.event.Event;
import com.linecorp.bot.model.event.MessageEvent;
import com.linecorp.bot.model.event.message.TextMessageContent;
import com.linecorp.bot.model.message.Message;
import com.linecorp.bot.model.message.TextMessage;
import com.linecorp.bot.spring.boot.annotation.EventMapping;
import com.linecorp.bot.spring.boot.annotation.LineMessageHandler;
@SpringBootApplication
@LineMessageHandler
public class EchoApplication {
private final Logger log = LoggerFactory.getLogger(EchoApplication.class);
public static void main(String[] args) {
SpringApplication.run(EchoApplication.class, args);
}
@EventMapping
public Message handleTextMessageEvent(MessageEvent<TextMessageContent> event) {
log.info("event: " + event);
final String originalMessageText = event.getMessage().getText();
return new TextMessage(originalMessageText);
}
@EventMapping
public void handleDefaultMessageEvent(Event event) {
System.out.println("event: " + event);
}
}
なお、テストコードは今回使わないので下記のファイルをいったん削除しておきます。
- echo/src/test/java/com/example/bot/spring/echo/EchoApplicationTest.java
5.プロジェクトへの Azure App Service 用の Maven プラグインの追加
Azure Web Appsにデプロイするにあたり、MicrosoftではMavenのプラグインを用意しているので、そちらを使えるようにしていきます。
下記のコマンドをターミナルで実行してください。
mvn com.microsoft.azure:azure-webapp-maven-plugin:1.14.0:config
途中、色々と聞かれますが下記の情報を参考に進めてもらえればと思います。
6.Azure Web Appsへのデプロイ
準備が整いましたのでAzure Web Appsにデプロイしていきましょう。
先ほど、使えるようにしたMavenのプラグインを利用します。
azure-webapp:deploy
を実行しましょう。
すると認証コードの入力を求められるので、入力します。
デプロイが成功すると下記のようにURLが表示されるのでメモしておきましょう。(後で使います)
7.環境変数の設定
LINEのBotを動かす際には、アクセストークンとシークレットキーの値が必要です。Messaging API チャネルの作成時に取得してあるので、下記の2つの環境変数名で設定していきます。
- LINE_BOT_CHANNEL_SECRET
- LINE_BOT_CHANNEL_TOKEN
8.Messaging API チャネルのWebhookに設定
最後の設定です。Messaging API チャネルのWebhookにデプロイ時に取得したURL
+ callback
を末尾に追加して設定完了です!
LINE Botと友達になって動かしてみましょう!
それでは今回作ったLINE Botを動かしてみましょう!
まずはLINE Botとお友達になります!(LINE BotはQR Codeで簡単に友達になれます!!)
友達になったら何かメッセージを打ち込んでみてください。
きっと皆さんのLINE Botも動いたのではないでしょうか!🎉🎉(ただオウム返しするだけです^^)
まとめ
いかがでしたでしょう?結構簡単だったんじゃないでしょうか!
基本VS Code上だけで作業が完結するのが素晴らしいところですね!
また、LINEのSDKを使うとコードの記述量もグッと抑えられるのでオススメです!
SDKは様々な言語に対応しているので他の言語でもぜひ試してみてください!
参考
- https://docs.microsoft.com/ja-jp/learn/modules/publish-web-app-with-maven-plugin-for-azure-app-service/4-deploy-web-app-azure
- https://github.com/line/line-bot-sdk-java/tree/master/sample-spring-boot-echo
- https://code.visualstudio.com/docs/java/java-spring-boot
- https://github.com/Azure/azure-sdk-for-java/issues/3640
- https://docs.microsoft.com/en-us/azure/cognitive-services/face/quickstarts/client-libraries?tabs=visual-studio&pivots=programming-language-python
- https://docs.microsoft.com/en-us/python/api/azure-cognitiveservices-vision-face/azure.cognitiveservices.vision.face.models.detectedface?view=azure-python
- https://docs.microsoft.com/ja-jp/azure/cognitive-services/face/face-api-how-to-topics/specify-detection-model
- https://lineapiusecase.com/
Discussion