スマホアプリ開発で需要の高い機能の一つ、チャット機能。

人と人のコミュニケーションに会話は書かせません。

BtoB、BtoCのマッチングアプリでもチャット機能があると便利です。

今回は、Nocode(ノーコード)Adalo(アダロ)で、チャットアプリを作ってみようと思います!

通常チャット機能は複雑ですが、Adaloだとかなり簡単に作成できます。

ノーコードAdaloについてもっと知りたい方こちら

もちろん、ノーコードですので、出来ることに制限があり、

LINEやFacebook Messengerと比較すると機能面・性能面で足りない部分はあります。

それでも、スタートアップには十分なことが多いです。

機能不足を補ってあまりある、この手軽さ・スピード感。

ありがたいですね。

それでは、早速作成していきます!

▼アプリ作成

1.アプリの用意

写真のような簡単なアプリを用意します。

用意するアプリ

2.Home Screenの作成、Conversationデータベースの作成

ⅰカスタムリストの配置、データベースの作成

Home Screenにカスタムリストを配置し、リスト選択から、新たなデータベースコレクションを作成します。

Home Screenへのリスト配置

ここで作ったデータベースの名前を「Conversation」としておきます。

ⅱConversationデータベースへのプロパティーの追加

ADD PROPERTY→Relationships→Usersで「User」との関係を選択します。

ここでは一番下のN:N、つまり、Userは複数のConversationを持てるし(に参加できるし)、Conversationも複数のUserを持てるという関係を作成します。

UsersとConversationの一つ目のリレーション設定

再び、ADD PROPERTY→Relationships→Usersで「User」との関係を選択し、User:Conversationが、1:Nの関係を作成します。

ここでは、Conversationルームの作成者のデータベースを作っています。

UsersとConversationの二つ目のリレーション設定

ⅲConversationデータベース完成

Createでデータベースを完成させます。

Conversationデータベース確認

ⅳConversation List のFilter選択

Filterで、Logged in User > Conversation [Conversation Members]を選択することで、ログインユーザーが参加しているConversationルームのみを表示させるようにします。

Conversation ListのFilter設定

ⅴConversation Listの表示更新

Subtitleを削除して、Imageコンポーネントを配置します。

Conversation Listのコンポーネント変更

その後、配置したImageとTitleをリスト化し、それをUserのリストにして、そのリストのFilterでCurrent ConversationのConversation Membersを表示させるようにします。

これにより、チャット相手の名前を表示させることができます。

User Listのコンポーネントのグループ化

User ListのFilter設定

そして、ユーザーリストにログインユーザー(自分自身)が表示されないようにするため、CUSTOM FILTERにEmail is not equal to Logged User > Emailを追加します。

また、先ほど作成したUser Listの体裁も、1つのデータベース(User)しか表示されないように、写真のように整えておきましょう。

User ListのFilter設定、調整

ここで、ユーザーがプロフィール写真を持てるようにするために、UsersにImageのNew Propertyとして、Profile Pictureを追加しておきます。

Tittleをユーザーの名前(Full name)に、ImageをUserのプロフィール写真(Profile Picture)に変更しましょう。

Userデータベースへのプロパティーの追加

※後から気づいたのですが、この写真のマジックテキストを間違っておりました、、、

正しくは、Current User > Full nameですね。動作確認の際に、気づきました。。

Adaloでこんなことはよくあります。笑 気をつけます。笑

User Listのマジックテキストの設定

User Listのイメージコンポーネントの設定

3.Conversation Screenの作成、Messagesデータベースの作成

ⅰConversation Screenへの遷移

Home Screenで、任意の人(チャット相手)を選択した際に、その人とのConversation画面に遷移してほしいので、Conversation List に含まれているRectangleのアクション設定で、Link→New Screenにし、Conversation画面を作成していきます。

Conversation Screenへの遷移設定

New Screenの名前を、Conversationとし、Chatスクリーンを選択します。。

Conversation Screenの作成

ⅱMessagesデータベース作成,、Messageリスト設定

スクリーン作成と共に出てきたリストに、会話内容を表示させたく、新たにMessagesデータベースを作成するために、リスト選択では、「New Collection」を選択します。

ここで作られた新たなデータベースの名前を「Messages」としておきます。

Conversation ScreenのList設定

Conversationとのリレーション設定で、Conversation:Messagesが1:Nになるように設定をします。(1つのチャット部屋に、幾つものメッセージを持てるように設定をしています。)

ConversationとMessagesのリレーション設定

Userとのリレーション設定でも、User:Messagesが1:Nになるように設定をします。(一人のユーザーが、幾つものメッセージを持てるように設定しています。)

UserとMessagesのリレーション設定

Messagesデータベースを完成させます。

Messagesのデータベースの完成

Conversation画面において、Home画面で選択されたConversationのMessageのみを表示させるために、Messages ListのFilterで、Current Conversation > Messagesを選択します。

MessagesリストのFilter設定

Messagesリストに、Message Text を表示させるために、リスト内のテキストをマジックテキストで置き換えます。

メッセージテキストの表示設定

また、メッセージの下にメッセージを送った人の名前を表示させるために、こちらもマジックテキストで置き換えていきます。一応、メッセージが送信された(作成された)時間も表示させておきます。

メッセージ送信者の名前、送信時間の表示1

メッセージ送信者の名前、送信時間の表示2

ⅲメッセージ送信ボタン周りのアクション設定

まず、送信ボタンがタップされた際に、メッセージが送信される(作成される)ようにしたいため、Send iconのアクション設定で、Create > Meesageを選択します。

メッセージ送信処理1

Creat Messases Actionの詳細は以下の通りで、特に問題ないかと思います。

メッセージ送信処理2

4.Start New Conversation Screen(新たにチャットを開始するための画面)の作成

ⅰStart New Conversation Screenへの画面遷移

Home ScreenにAction Buttonを配置し、アクション設定で、New Screenに遷移するように設定します。

Start New Conversation Screenへの画面遷移設定

スクリーンの名前を「Start New Conversation Screen」とし、List Searchを選択して、スクリーン画面を作成します。

Start New Conversation Screen作成1

ⅱStart New Conversation Screen内の、検索ボックス、リスト作成

まず、Start New Conversation ScreenにもともとあったSimple Listを削除します。

Start New Conversation Screen作成2

写真のように、Text inputとCustom Listを配置します。

Text inputは検索機能のために、Custom Listはユーザーリストの表示のために配置します。

Text inputの名称を、わかりやすいように、InputからSearch termに変更しておきましょう。

※追記なのですが、Start New Conversation Screen内に、不必要なAction Buttonが残ったままですね、、

完全に消し忘れています。笑 これ以降、このAction Buttonボタンはないものだと思って記事を読み進めてください、、申し訳ないです、、

Start New Conversation Screenのコンポーネント配置

そして、先ほど配置したCustom Listには、Userを表示させて、Filter設定としては、以下のようにします。

一つ目のFilterは、自分自身を表示させないように、二つ目Filterは、検索ボックス(Search term)に入力された文字を含むユーザーを表示するためのものです。

ここで、FilterのANDとORの違いについてですが、ANDはAかつB、ORはAまたはBということを意味しています。

ここでは、表示さたいユーザーとして、「自分自身ではない、かつ、検索ボックスに入力された文字をFull nameに含むユーザーなので、AND Filterを使用します。

User ListのFilter設定

配置したCustom List(User List)を整えていきます。

Subtitleを削除し、TitleをCurrent UserのFull nameに変更、Imageコンポーネントを配置して、Current UserのProfile Pictureが表示されるように設定します。

User Listのコンポーネント設定1

User Listのコンポーネント設定2

ⅲConversation Screenへの遷移、それに伴うアクション設定

まず、写真の3つのコンポーネントをグループ化します。

User Listのコンポーネントのグループ化

グループ化した後に、そのグループで以下のアクション設定をします。

1つ目のアクション

任意のユーザーがタップされた際に、ログインユーザーとそのユーザーとのConversationルームが作られるようにしたいので、Create Conversationのアクション設定をします。

アクション設定の詳細は、写真の通りで、Nameに関しては、これが絶対ではありませんが、わかりやすいようにLogged in UserのFull nameと、Current UserのFull nameがデータベースに記録されるように設定しています。

Conversationルームの作成処理1

2つ目、3つ目のアクション

先ほどのCreate処理で、Conversation Memberに、Current UserとLogged In Userを追加したいところですが、一気にCreate処理で行うことは不可能で、かつ、Update処理ででも一気に行うことが不可能なので、2つのUpdate処理を使用して、Conversation Memberに、Current UserとLogged In Userを追加します。

Conversationルームの作成処理2

Conversationルームの作成処理3

4つ目のアクション

Linkのアクションを使用して、Conversation画面に遷移するように設定します。

Conversationルームの作成処理4

ここで、Conversation Screenの微調整ですが、Conversations ScreenのLeft IconでHome Screenに戻れるようにしておきましょう。

Conversations ScreenのLink設定

5.Home ScreenのNew Icon(新着メッセージが届いた際に表示されるIcon)の表示設定

ⅰIconの配置

Home ScreenのListの中に、New Iconを配置します。

ここで、Iconを、Conversation Listの方に追加するようにしましょう。

Home ScreenへのIcon配置

ⅱデータベースコレクションに、Read Statusesを追加、設定

このRead Statusesは新着メッセージが届いた際に、New Iconを表示させるためのデータベースになります。

ADD COLlECTIONでRead Statusesを追加します。

データベースへのRead Statusesの追加

Userとのリレーション設定で、User:Read Statusesを1:Nに設定します。

UserとRead Statusesのリレーション設定

Conversationとのリレーション設定で、Conversation:Read Statusesを1:Nに設定します。

ConversationとRead Statusesのリレーション設定

ここで、Conversationデータベースに、New Propertyとして、Date & Timeを追加しておきます。

Conversationデータベースへのプロパティーの追加

ⅲRead Statusesに関したアクション設定

まず、Conversation Screenにユーザーが訪れた際に、Read Statusesのデータベースを作成されるようにするために、Conversation Screenのアクション設定で、Create Read Statusを選択します。

Read Statusesの作成処理1

Createアクションの詳細は以下の通りです。Nameに関しては、気にしなくて大丈夫です。

Read Statusesの作成処理2

そして、メッセージが送信された際にも、Read Statusesのデータベースが作成されるようにするため、Send IconでCreate Read Statusesの設定をしていきます。

Read Statusesの作成処理3

こちらのCreateアクションの詳細は以下の通りです。Nameに関しては、こちらも気にしなくて大丈夫です。

Read Statusesの作成処理4

最後に、先ほど追加したDate & Time(Last Message Sent Date)に関するアクション設定です。

メッセージが送信されたタイミングで、Update処理で、そのDate & TimeがCurrent timeに更新されるように設定します。

Conversationのアップデート処理作成

Update処理の詳細に関しては、以下の通りです。

Conversationのアップデート処理の詳細

ⅳIconのVisibility設定

結論から言うと、以下の写真のような設定になるのですが、なぜこのようになるのかということを説明していきます。

簡単にいうと、Conversationルームの最終更新日時であるLast Message Sent Dateより、新しいRead Statusesがない(Current Conversation > Read Statuses > Count is equal to 0)場合に、New Iconを表示させるという仕組みになっております。

ここが今回の記事で最も理解するのに難易度が高い点かもしれないです。

New IconのVisibility設定

▼動作確認

まず、Userとして、test1とtest2を用意します。

test1のユーザー登録

test2のユーザー登録

test1でログインをし、Conversationルームを作っていきます。

Start New Conversation Screenへの遷移

test2をタップします。

test1とtest2のConversationルーム作成

すると、test2とのConversationルームが作られるので、試しにメッセージを送ってみます。

送信!!

メッセージ送信

うまく反映されましたね!

これで、ひとまずBackボタンで戻ります。

メッセージ送信の確認

test2とのConversationルームができていますね。

次に、test2でログインします。

test1からのメッセージが届いていますね!New Iconもしっかり表示されています!

Conversationルームを見てみましょう。

Home Screenでの確認

test1からのメッセージが届いていますね。

Backボタンで戻ってみましょう。

届いたメッセージの確認

メッセージ既読後は、New Iconも消えていますね!

これで、実装は成功です!

Home Screenでの確認

▼まとめ

今回は、チャットアプリの作成方法を1から記事にしてみました。

少し複雑なところもあったかと思いますが、Adaloを使用すれば、こんなに簡単にチャットアプリも作成できちゃいます。

今回作成したチャットアプリをベースに、自己流にアレンジすることもできそうですね!

是非、こちらの方法を参考に、オリジナルのチャットアプリを作ってみてください。

最後まで、ご覧いただきありがとうございました。

ノーコードAdaloについてもっと知りたい方こちら

アプリ開発会社の選び方について知りたい方はこちら

AdaloでZapierとの連携についての記事はこちら