【★祝広告マネタイズ解禁★】生成AIに作らせたカルタを遊べるLINE Botの作り方

![thumb8888.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/ae0ad339-3f2a-694d-439a-b992d667c11d.png)

:::note
本記事は下記Youtube動画にて解説している手順のテキスト版です。Youtube版では画面遷移等より詳しく解説してあります。是非合わせてご覧ください。

<iframe width="560" height="315" src="https://www.youtube.com/embed/aoEUVnrhRQk?si=PGSes_HcGrbhdkuH" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
:::

:::note
[LINE DCアドベントカレンダー2023](https://qiita.com/advent-calendar/2023/lineapi)においても多くのLINE × AIの解説記事を執筆頂いております。是非合わせてご覧ください。

【一例】

* [GPT-4VとDALL-E 3で絵しりとりLINE Botを作っちゃおう](https://qiita.com/uezo/items/437e438db33aa9784fb5)
* [OpenAIのAssistants APIを使ってLINEスタンプ返却botを簡単に作れないかを検証](https://qiita.com/ufoo68/items/57c54217457c16fabbdb)
* [[ChatGPT+DB+LINE]自分のことをずっと覚えていてくれるキャラをノーコードで作ろう！](https://qiita.com/okinakamasayoshi/items/07a6b2c41fb6d50dbd5e)
* [海馬社長にカードだけじゃなくてビジネスも教わりたい](https://qiita.com/yutowac/items/102d119ab583a8ab930c)
* [LINExChatGPT 渾身の一激！画像から得られる教訓を大喜利風にトークグループにPUSH！](https://qiita.com/h2m_kinoko/items/700d1494efbd57d77ffa)

:::

# 概要

![貼り付けた画像_2023_12_18_19_53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/43adc0e4-e744-8d0a-4e6a-014268d10d77.png)


LINE公式アカウントの収益化機能の一つ、トークルーム広告がリリースされBotのマネタイズが手軽に出来るようになりました。既にいくつかのBotに導入され、収益を得られている方もいらっしゃるかと思います。

詳しくは[こちら](https://www.lycbiz.com/jp/manual/OfficialAccountManager/chatscreenads/)から

今回はその記念に、相性が良いと思われる生成AIとLINEを組み合わせる例として、「生成AIカルタBot」をノーコードで作成する手順をご紹介します。

是非皆さんも作ってみてください。

# 作るもの

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/abf110bc-37b2-d06a-372b-d0e912ef1698.png)

AIに生成させたテキストと画像を利用したカルタが遊べるLINE Botです。

お題を出すとお題に沿って生成された正解画像と、その類語で生成された不正解画像の2枚の画像が提示され、正解のものを選ぶ、という遊び方です。

[Dixitというボードゲーム](https://hobbyjapan.games/dixit/)が好きで、同じようなものが作れないかと思い作ってみました。

# Botの開発

## 完成シナリオ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/8e30d4fd-b72a-4590-22fb-45e264914635.png)

[インポート可能なBlueprintはこちら](https://gist.github.com/stachibana/f62acd3ba6430d77a86566b7c5de8a1c)

## 準備

以下のアカウントが必要となります。まだお持ちでない方はご準備ください。

### LINE公式アカウント

以下からMessaging APIのチャネルを作成しておいて下さい。既存のものでも問題ありません。

https://developers.line.biz/ja/

### Makeのアカウント

https://www.make.com/en

### OpenAIのアカウント、課金

#### アカウント開設

https://openai.com/

#### 課金

https://platform.openai.com/account/billing/overview

※ 本記事を試すだけであれば$3程度で十分可能です。

## 作っていく

### Makeでのシナリオ作成

![貼り付けた画像_2023_12_18_12_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/aa48c9ca-a4f5-dd62-0a80-37e7d2defd32.png)

「Create a new scenario」をクリックします。

![貼り付けた画像_2023_12_18_12_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/3670a458-2653-17e7-7c51-0b2e9700db3b.png)

わかりやすい名前をつけておきましょう。

### LINE公式アカウントとシナリオの接続

はじめにユーザーが公式アカウントに対して送ったメッセージをMakeで受け取れるように設定します。

シナリオ中央の「+」をクリック、検索窓に「LINE」と入力、出てきたLINEモジュールをクリックして下さい。

![貼り付けた画像_2023_12_18_12_13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/e90cec8a-cd86-ef95-2ebb-a28dcb1190ba.png)

続いて「Watch Events」をクリック。

![貼り付けた画像_2023_12_18_12_14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/1c809e87-335d-c220-6cdc-8e81dcbaaa9e.png)

「Create a webhook」をクリック。

![貼り付けた画像_2023_12_18_12_14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/03892423-b9b0-2c46-fde4-dc2e26648396.png)

「Create a connection」をクリック。

![貼り付けた画像_2023_12_18_12_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/78bef108-b77c-7bbb-9cd7-e5907ccca81d.png)

公式アカウントからChannel Access Tokenをコピーし、貼り付けて「Save」をクリック。

LINE Developers > チャネル > Messaging API設定

![貼り付けた画像_2023_12_18_12_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/5d69bdfd-e595-738f-7ecd-58ed89bdeb5c.png)

下にスクロールしチャネルアクセストークンをコピー

![貼り付けた画像_2023_12_18_12_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/10fc7e54-6e34-d1dd-d08f-d803d54da403.png)

貼り付けてSave。

![貼り付けた画像_2023_12_18_12_16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/c2328dce-2d23-9cc6-8ca7-83f9ba7e1bf1.png)

Connectionが設定されました。表示されたURLをコピーし、LINE DevelopersのWebhook URL欄にペースト、Webhookの利用もオンにし、保存して下さい。

![貼り付けた画像_2023_12_18_12_22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/3fbbb2f0-625c-e7f8-7d4e-5674b532650f.png)

![貼り付けた画像_2023_12_18_12_24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/0db91383-4f17-66b9-e67d-fcaec783676e.png)

### オウム返し

ちゃんと繋がっているかを確認するために、オウム返しをシナリオ上で設定してみましょう。

画面下部の「LINE」をクリック。

![貼り付けた画像_2023_12_18_12_27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/167195a1-e698-66cc-ec48-34c201be3035.png)

「Send a reply Message」をクリック。

![貼り付けた画像_2023_12_18_12_27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/04772f7c-6f99-529e-c405-5ec3ba0b21df.png)

新しく出来たモジュールを先程作成したWebhookのモジュールの方へドラッグすると自動的に接続されます。

![貼り付けた画像_2023_12_18_12_28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/df21085d-2486-43b0-1aa5-f2136389adbf.png)

Replyの方のモジュールをクリックし、`reply token`と`Messages > Text`の2つを以下のように設定し、OKをクリックして保存します。

![貼り付けた画像_2023_12_18_12_31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/e7d3d313-4055-b64b-dbe9-24d7adad3aaa.png)

「Run once」をクリックし、公式アカウントに何か適当に呼びかけてみましょう。

![貼り付けた画像_2023_12_18_12_32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/e6b94615-23ef-97b7-ef2a-6ca5316fd9d7.png)

ここまで設定できていれば呼びかけた内容をそのまま返してくれるようになっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/a1a2440c-de61-6c61-7efa-9f5055b2a32e.png)

シナリオ上でも呼び出しが行われたことが確認出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/f9f57c61-3ae2-b077-1564-cda2f0eff1fc.png)

### ChatGPTの組み込み

カルタの画像生成は以下のパラメータで2枚の画像を生成することにします。

1. ユーザーの入力テキストから主語、述語、目的語を抜き出したもの
2. 主語と(1)の述語の類語、目的語の類語

(1)を正答、(2)を不正解とします。

よって、ユーザーの入力から主語、述語、目的語を抜き出し、類語を生成する必要があります。

このような作業はGPTが得意とするところなのでOpenAIのモジュールを利用して設定していきましょう。

シナリオ画面下部の「＋」をクリックし検索窓に「OpenAI」と入力、出てきたモジュールをクリックします。

![貼り付けた画像_2023_12_18_13_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/da1f4b8b-b5f1-76ea-e44e-89231e45ab0f.png)

「Create a Completion」をクリック。

![貼り付けた画像_2023_12_18_13_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/25656102-dd58-e8d2-0177-d4f4b7f8e1f9.png)

OpenAIモジュールがシナリオに追加されました。ドラッグで作成済みの2つのモジュールの間にドラッグし、割り込ませます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/8bc79c97-f383-5a17-2896-478b5f1e8251.png)

OpenAIアカウントとの接続を行います。「Create Connection」をクリックします。

API KeyとOrganization IDが必要ですので、インプット下部の赤字のリンクをクリックし作成&コピペしてください。

終わったらOKをクリックします。

![貼り付けた画像_2023_12_18_13_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/e7e44a03-f273-e96d-e798-9f9e987cdf87.png)

接続が完了しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/1ad50367-e228-20c8-b34b-bd1b38894a2c.png)

以下のようにModel、Messages > Item 1、Item 2を設定して下さい。返答結果は後で扱いやすいよう、JSON形式を指定します。

Item 1 > Message Contentは以下をペースト

```
## 答えはjson形式で返却してください
## jsonのキーは英語で、主語はsubject、述語はpredicate、目的語はobject、述語の類語はpredicate_synonym、目的語の類語はobject_synonymとしてください
```

Item 2 > Message Contentは以下をペーストし、自動補完を削除し再設定

```
「{{1.events[].message.text}}」という文章から出来るだけ短い主語と述語と目的語を抜き出してください。述語の類語と目的語の類語を1つ挙げ、返却結果に含めてください。
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/6fdc9f44-4b9e-bdf6-9f13-81fd95f20f70.png)

これでユーザーの自由入力テキストから主語、述語、目的語と述語、目的語の類語が生成されます。

一度Run onceをクリックして呼びかけてみると正確に生成されるのが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/15f1c801-1e3e-8003-a012-e445a5552c25.png)

![貼り付けた画像_2023_12_18_13_21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/ac00a10b-d463-b6e1-c9d3-7208d0b74ac7.png)

### JSON形式へのパース

GPTによる生成結果はテキスト形式です。この後利用しやすくするためパースしてそれぞれを参照できるようにします。

シナリオ画面の適当なところで右クリック、Add a moduleをクリック。

![貼り付けた画像_2023_12_18_13_24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/865d2fc4-7e5a-fc73-9b7f-543b671bdf7b.png)

「JSON」を検索しクリック。

![貼り付けた画像_2023_12_18_13_25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/db9a1e7c-a042-170f-6b9a-c465af7c96ad.png)

「Parse JSON」をクリック。

![貼り付けた画像_2023_12_18_13_25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/e4a51032-7932-f358-cebf-6c90c41fdda1.png)

OpenAIモジュールとReply Messageの間に割り込ませる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/3a45dbba-06e4-ccc8-a276-1a4a6480647e.png)

モジュールをクリックして設定ダイアログを開き、Create data structureをクリック、Strictにチェックを入れる、sample dataに以下を入力し「Generate」をクリック。

サンプルデータ

```
{
  "subject": "子供",
  "predicate": "遊ぶ",
  "object": "サッカーボール",
  "predicate_synonym": "遊び回る",
  "object_synonym": "ボール"
}
```

JSON StringにはChatGPTから返されたデータを設定します。OKをクリックして保存します。

![貼り付けた画像_2023_12_18_13_31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/e181bd13-8a77-4a79-143a-83c9b6f82355.png)

Run onceして動作確認してみましょう。

無事テキストがパースされ、変数に格納されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/d8de22cf-7415-4831-43ab-98ab4eb1f748.png)

### 画像の生成

#### 正解画像

次に画像のDALL-Eを利用して画像を生成します。まずは正解画像を生成からです。

右下のOpenAIのボタンをクリックし、「Genarate an Image」をクリックします。

![貼り付けた画像_2023_12_18_13_41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/6daa0aaa-c906-1f8d-25d3-2f3c708b13fe.png)

JSONモジュールの後に割り込ませます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/274dd05e-a5be-5a0a-cc31-7467205ad68a.png)

以下のように設定します。

![貼り付けた画像_2023_12_18_13_43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/cae50b91-f6fb-f1ff-0693-62d7511ac8b4.png)

結果の確認のため、シナリオ最後のReply Messageの内容を生成した画像のURLに変更します。

モジュールをクリックして設定ダイアログを開く

![貼り付けた画像_2023_12_18_13_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/4c3a0660-d165-c8ec-8349-c434afb62ed0.png)

Messages > Item 1 > Textの内容をDALL-Eの方のOpenAIモジュールのData[] > URLに変更

![貼り付けた画像_2023_12_18_13_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/c4f23167-1939-0744-0d5f-b2f63d4dd9a0.png)

保存して動作確認してみましょう。

同じように呼びかけると・・・

![貼り付けた画像_2023_12_18_13_50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/769fe3ef-935d-0a41-df0c-0a23afec2ddf.png)

生成された画像が返ってきます。

![img-7pBMCoVNvqocDmmlMTCnCSP7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/ae34587d-a584-ee19-84bf-987f342670fe.png)

#### 不正解画像

次に不正解画像です。手順は同様なのですが、設定を以下のように変更し、正解画像生成モジュールの後に割り込ませて下さい。

![貼り付けた画像_2023_12_18_13_53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/ac7b0382-4f05-3374-acd3-3b44e14f5bc1.png)

![貼り付けた画像_2023_12_18_13_54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/e5b32cec-ad6a-27b4-8b0a-4fcc0983c6cd.png)

### 正解インデックスのランダム化

後は画像に正解or不正解データを埋め込んでカルタを作れば終わり、と言いたいところなのですが、このまま進めるとシナリオ実行中は常に同じ位置の画像が正解となるような出題しか設定出来ません。

これではクイズになりませんので、正解がランダムな位置になるよう設定する必要があります。

ということで、Toolsでランダムな変数を作りましょう。下部の工具アイコンをクリックし「Set variable」をクリック。

![貼り付けた画像_2023_12_18_14_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/3a14f617-8466-b2c4-9bee-9596467d2627.png)

割り込ませます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/35d74858-ff8a-4ae4-9bec-7724d5ba6dea.png)

以下のように設定します。式は入力フィールドクリック後に右側に出てくるパネルのタブから式タブをクリックすることで設定出来ます。

![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3136343135332f66633465383265642d363834622d623638642d623834662d6437666464313635643364312e706e67.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/5210714c-6cda-681f-6d38-b1a1ec1ead4d.png)

これで変数`correct_index`には0もしくは1が入ります。中が見えない箱に`0`もしくは`1`の番号が書かれたボールが入っており、そこから1つだけ引くようなイメージです。

![handsball.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/65078d48-d020-1992-12c3-7ae22633a428.png)

:::note
ちなみに`*`の後に来る数字を増やせばバリエーションも増えますので3択、4択にしたい時はそのようにします。
:::

何度か動作確認してみましょう。無事ランダムに正解位置となる変数がランダムに生成されているのが確認出来ます。

![貼り付けた画像_2023_12_18_14_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/4fd2c797-925c-d709-3dd8-b7ba6d089b90.png)

![貼り付けた画像_2023_12_18_14_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/b1ef3ea2-819f-2f61-43c6-0c2d52ef2423.png)

### LINE Botからカルタを返信

疲れてきましたか？私も疲れてきましたが頑張ります。もう一息です。

次にLINEからユーザーへの返答をカルタに変更します。

モジュールをクリック、TypeをTemplateに変更します。

![貼り付けた画像_2023_12_18_14_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/1e9def8f-b519-3078-2732-7843280828f9.png)

Alternative Textに「問題」と入力、Template TypeをImage Carouselに変更します。

![貼り付けた画像_2023_12_18_14_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/85080ecf-1c1b-6e0a-b8bd-b138f56b7aab.png)

Columnsの下のAdd itemを2回クリック。

![貼り付けた画像_2023_12_18_14_13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/eacf5223-c695-4e30-7202-48de838246bd.png)

それぞれ以下のように設定します。

なお先程作成したランダムな正解位置によって順番を変えるため、`if`を利用しています。こちらも式と同様に入力フィールドクリック後に右側に出てくるパネルの左から2番目のタブで設定できます。

ランダムな数字で処理を分けるため、このような形になります。

![huseikai.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/f0158e1d-15f3-8c02-7bca-0d1b40f054b5.png)

:::note
3択、4択にしたい時は`switch`を利用します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/9614c288-7735-3807-95fa-ac3cda2e0777.png)

:::

![貼り付けた画像_2023_12_18_14_17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/8e846c08-efbf-cf7f-7154-3d36a8206429.png)

![貼り付けた画像_2023_12_18_14_20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/9895ceb7-952c-9a8e-5ff9-b2f2ba18853b.png)

これでカルタの完成です。

動作確認してみましょう。

無事に動いているようですね！

![貼り付けた画像_2023_12_18_19_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/770a587a-69cd-1adb-7d63-8518590488c2.png)

微妙な類語がたくさんありそうなふわっとした言葉を使うと、どちらが正解か迷うような面白い問題が出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/76998575-973f-654a-e3e9-808efabddb4d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/b313335f-56ea-a79c-aa94-c8825c6c75d1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/8800044b-2d1e-bd9e-3b90-b2796d62aafa.png)

### フィルタ設定

最後に、ユーザーが画像をタップした時に発言される「正解！」「不正解！〜」に対しては問題生成の要求ではないため、以後の処理をスキップしましょう。フィルター機能を利用します。

webhookと文面解析のモジュールを繋いでいる点線をクリック、出てきたメニューから「Set up a filter」をクリック。

![貼り付けた画像_2023_12_18_14_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/55317aef-65a6-93fe-a136-4bd0c625eb66.png)

以下のようにフィルタ名と条件を設定します。

![貼り付けた画像_2023_12_18_14_48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/3ed6d9bb-129d-46ec-c681-3d1235277b0f.png)

モジュール間の間隔を空けてやることでフィルタ名が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/b235d216-6d6f-0754-fad1-8b0a247ae109.png)

動作確認してみましょう。画像タップ時の正解！や不正解！というテキストは処理をスキップされていることが確認出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/164153/0a5926f5-b43c-e823-4b49-ff6ca391eb97.png)

### エラー処理

エラー処理は紙面の都合上割愛していますが、実際にサービスとしてリリースするためには各種例外処理が必要です。ご注意下さい。

## まとめ

いかがでしたか？

LINE Messaging APIに含まれるリッチなメッセージ形式に加えChatGPTとDALL-Eの両方の使い方を紹介したかったため若干内容は無理矢理ですが、プログラミングの知識が無くても簡単にサービスが作れることがおわかり頂けたのではないかと思います。

話題性があり、誰でも簡単に使えるLINEのAPIと生成AIを組み合わせることで、プログラミングの知識があまりない方でも多くのユーザーに使われるサービスを作り出すことが可能な時代が到来しました。

皆さんも是非アイディアを形にし、トークルーム広告でマネタイズに挑戦してみてください。

面白いサービスの登場を心よりお待ちしています。

## Special Thanks!

本記事の執筆にあたり、LINE API × Makeの第一人者であり、LINE Developer Communityで頻繁に登壇されている[おきなかがいこつ](https://qiita.com/okinakamasayoshi)さんにレビュー頂きました。ありがとうございます。

以下はおきなかさんが登壇され、MakeとLINEのAPIの解説をして頂いた勉強会のアーカイブの一部です。とても参考になりますので、是非ご覧ください。

<iframe width="560" height="315" src="https://www.youtube.com/embed/uj3v_vgVzhc?si=qKboeM-fUS0Szjmo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/l0ofdJFlhhE?si=AxqPkwnwFnWZqQh4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/1XHG4wJ6UHk?si=jUu32Ofs3SkEuXCB" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/HN4EkP6LdIc?si=qpEMPnoFljBlYPCV" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>