Cloudflare+HonoでMessaging APIのボットを動かしてみる
こんにちは!LINE Developersサイトの運営を担当している、テクニカルライターの銭神です。みなさんは、どのような環境でMessaging APIのボットを動かしているでしょうか。
最近の代表的な構成のひとつにCloudflare+Honoがありますが、この構成でもボットを動かすことができます。この記事では、Cloudflare+Honoでボットを動かすための最低限の手順を紹介します。
なお、デプロイ先となるCloudflare Workersには無料枠があるため、今回の手順はすべて無料で試せます。
動作環境
この記事の内容は、以下の環境において動作することを確認しています。
| 名前 | バージョン |
|---|---|
| Node.js | v26.8.1 |
| create-hono | 0.19.5 |
| Hono | 4.13.9 |
| Wrangler | 4.144.0 |
| LINE Messaging API SDK for Node.js | 11.2.0 |
プロジェクトを作成する
まず、ウェブフレームワークであるHonoが提供するテンプレートを使用して、プロジェクトを初期化します。プロジェクトを初期化するには、以下のコマンドを実行します。
コマンドを実行すると、いくつか質問されます。これらには、以下の内容で回答します。
| 質問 | 回答 |
|---|---|
| Which template do you want to use? | cloudflare-workers |
| Do you want to install project dependencies? | Yes |
| Which package manager do you want to use? | npm |
また、LINE Messaging API SDK for Node.jsをインストールします。これを用いることで、署名の検証やメッセージの送信などが簡単にできるようになります。
次に、生成されたwrangler.jsoncを開きます。compatibility_dateの末尾にカンマを追加し、compatibility_flagsのコメントアウトを外します。SDKの署名検証にはNode.jsのcryptoモジュールを使用するため、コメントアウトを外してNode.jsの互換モードにします。
アプリケーションを実装する
それでは、アプリケーションを実装していきます。src/index.tsを開いて、以下のコードに置き換えます。
このアプリケーションでは、ユーザーがLINE公式アカウントにメッセージを送ったときに、その内容をそのままオウム返し🦜しています。
環境変数を設定する
アプリケーションの実装が終わったら、いよいよアプリケーションをデプロイするのですが、その前に以下のコマンドで環境変数を設定します。コマンド実行時にCloudflareへのログインを求められた場合は、そのままログインを済ませてください。
チャネルアクセストークンとチャネルシークレットは、LINE DevelopersコンソールのMessaging APIチャネルで確認できます。Messaging APIチャネルをまだ作成していない場合は、「Messaging APIを始めよう」を参考に作成します。
たとえばCHANNEL_ACCESS_TOKENを設定するときは、以下のようになります。コマンドの実行時点ではまだCloudflare上にWorkerがないため、以下のようにWorkerを作成するかどうかの質問もされます。
デプロイする
環境変数を設定したら、アプリケーションをデプロイします。デプロイは、次のコマンドでできます。
デプロイが完了すると、コマンドの実行結果としてデプロイ先のURLがhttps://my-line-bot.<YOUR_SUBDOMAIN>.workers.devのように表示されます。
動作を確認する
アプリケーションをデプロイしたら、デプロイ先のURLの末尾に/webhookをつけたURLをLINE Developersコンソールに登録します。Messaging APIチャネルを開き、[Messaging API設定]タブの[Webhook URL]にURLを入力して、[Webhookの利用]を有効にします。

ここまできたら、準備は完了です。LINE公式アカウントを開いて、なにか適当な文字を送ってみます。

このように、送った文字と同じ文字がLINE公式アカウントから返ってきたら成功です。
おわりに
以上のように、CloudflareとHonoを使うことで、Messaging APIを簡単に動かすことができます。どこで動かすか悩んだときは、ぜひ参考にしてみてください。