見出し画像

【NoCode】Adaloでフォロー機能を実装する Part ①

皆様こんにちは、taku(@takuNoCode1)です!
平素より格別のご高配を賜り厚く御礼申し上げます。

今回は、NoCodeツールAdaloでフォロー機能を実装します!

1. 実装するサンプル

画像39

今回は、「Twitter」や「Facebook」などのSNSで使用される、フォロー機能を実装していきます。

2. データベース設計及びテストデータ挿入

2-1. データベース設計

今回は、「Users」という「Collection」に「Following(フォロー中)」及び「Followers(フォロワー)」という2種の「Relationship(リレーションシップ)」を追加します。

「Users」の「ADD PROPERTY」をクリックし「Relationship」から「Users」を選択します。

画像2

フォロー及びフォロワーの関係性は厳密に理解するともっと複雑なのですが、ここではあまり深く考えずに、以下のような関係をイメージします。

・「User」は複数の「User」をフォローできる
・「User」は複数の「User」からフォローされる

特定のユーザーが、誰か1人だけに属することは無く、それぞれのユーザー同士が同等に複数の関係を持つことができます。

このような関係のことを一般的に「多対多」と呼びます。

上記の関係性から、3つの選択肢のうち1番下を選択し「DONE」ボタンをクリックします。

・ A User can have multiple Users
・ A User can have multiple Users

画像3

「Name」を「Following」に変更し、「SAVE」ボタンをクリックします。

画像4

上記と全く同じ手順で、「Followers」を追加します。

画像5

以上で、「Users」に「Following(フォロー中)」及び「Followers(フォロワー)」という2種の「Relationship(リレーションシップ)」を追加することができました。

Following
フォローした「User」の「データ(Record)」を紐づける
Followers
フォローされた「User」の「データ(Record)」を紐づける

画像6

現段階では、あまり理解できないかもしれませんが、後ほど詳しく解説いたしますので、先に進みます。

2-2. テストデータ挿入

テスト用に4人のユーザーを作成します。
今回は「Full Name」は使用しないので、「空データ」でOKです。

画像7

3. ユーザー表示画面作成

「Home」の「App Bar」の「Title」を「All users」に変更します。

画像8

「ADD COMPONENT」の「Lists」から「Custom List」を「Home」にドラッグアンドドロップして配置します。

画像9

「What is this a list of ?(何のリストですか?)」に、「Users」という「Collection」を選択します。

これにより、「Users」に保存されている「データ(Record)」を順番に読み込んでいくことができるようになりました。

画像10

「Subtitle」は削除し、「Title」を「Current User」の「Username」に変更します。

これにより、「Users」から順番に読み込んだ「データ(Record)」の「Username」を表示することができるようになりました。

「EDIT STYLES」をクリックし、「Width」を「130」に「Font Size」を「24」に変更します。

画像11

「FOLLOW」及び「UNFOLLOW」2つのボタンを作成します。「Custom List」の枠からはみ出さないように注意してください。

画像12

後ほど2つのボタンの表示切り替えを行うのですが、少しだけ交わるように配置すると、うまく切り替えができますので、下図の通りになるように注意して配置してください。

画像33

4. フォロー及びフォロー解除機能実装

フォロー及びフォロー解除機能を実装するにあたり、以下の2つの立場から「Action」を追加していきます。

フォローするのは「Logged in User(ログインしているユーザー)
フォローされるのは「Current User(読み込まれているユーザー)

4-1. フォロー機能

まずは「Logged in User(フォローする側のユーザー)」の立場で考えます。
「FOLLOW」ボタンの「ADD ACTION」をクリックし、「Update」から「Logged in User」を選択します。

画像14

Following」をクリックし、「Add」から「Current User(フォローされる側のユーザー)」を選択します。

画像15

これにより、「FOLLOW」ボタンをクリックすると、「Logged in User(フォローする側のユーザー)」の「データ(Record)」の「Following」に、「Current User(フォローされる側のユーザー)」の「データ(Record)」を追加することができるようになりました。

画像18

次に「Current User(フォローされる側のユーザー)」の立場で考えます。
「ADD ANOTHER ACTION」をクリックし、「Update」から「Current User」を選択します。

画像17

Followers」をクリックし、「Add」から「Logged in User(フォローする側のユーザー)」を選択します。

画像18

これにより、「FOLLOW」ボタンをクリックすると、「Current User(フォローされる側のユーザーの「データ(Record)」の「Followers」に、「Logged in User(フォローする側のユーザー)」の「データ(Record)」を追加することができるようになりました。

画像19

ここで、実際に「User1」でログインして「User2」をフォローしてみます。

画像20

フォローするのは「Logged in User(User1)
フォローされるのは「Current User(User2)

「Users」を確認すると、以下のようになります。

画像21

User1(Logged in User)」は「User2(Current User)」をフォローしたので、「Following(フォロー中)」という「Relationship」の中に「User2(Current User)」の「データ(Record)」を紐づけています。

画像22

逆に、「User2(Current User」は「User1(Logged in User)」 からフォローされたので、「Followers(フォロワー)」という「Relationship」の中に「User1(Logged in User)」の「データ(Record)」を紐づけています。

画像23

以上で、それぞれのユーザーが誰をフォローし、誰にフォローされているのかを管理することができるようになりました。

4-2. フォロー解除機能

フォロー解除機能を実装するためには、「UNFOLLOW」ボタンをクリックした際に、「Following(フォロー中)」及び「Followers(フォロワー)」に、紐づけたユーザーを削除する「Action」を追加すればOKです。

まずは、「Logged in User(フォロー解除する側のユーザー)」の立場で考えます。
「UNFOLLOW」ボタンの「ADD ACTION」をクリックし、「Update」から「Logged in User」を選択します。

画像24

Following」をクリックし、「Remove」から「Current User(フォロー解除される側のユーザー)」を選択します。

画像25

これにより、「UNFOLLOW」ボタンをクリックすると、「Logged in User(フォロー解除する側のユーザー)」の「データ(Record)」の「Following」から、「Current User(フォロー解除される側のユーザー)」の「データ(Record)」を削除することができるようになりました。

画像26

次に「Current User(フォロー解除される側のユーザー)」の立場で考えます。
「ADD ANOTHER ACTION」をクリックし、「Update」から「Current User」を選択します。

画像27

これにより、「 UNFOLLOW」ボタンをクリックすると、「Current User(フォロー解除される側のユーザーの「データ(Record)」の「Followers」から、「Logged in User(フォロー解除する側のユーザー)」の「データ(Record)」を削除することができるようになりました。

画像28

ここで、先程と同様に「User1」でログインして「User2」をフォロー解除してみます。

画像29

フォロー解除するのは「Logged in User(User1)
フォロー解除されるのは「Current User(User2)

「Users」を確認すると、以下のようになります。「Following」及び「Followers」に紐づけられたデータが削除されています。

画像30

5. FOLLOW 及び UNFOLLOW ボタンの表示切り替え

「FOLLOW」ボタンの「Visibility」を「Sometimes Visible」に変更し、「Will be visible if」に「Current User」の「Followers」から「All」を選択します。

画像31

「Does not contain」「Logged in User」となるように順に選択します。

これにより、「Current User(フォローされる側のユーザー)」の「Followers(フォロワー)」に「Logged in User(フォローする側のユーザー)」が含まれない場合のみ、「FOLLOW」ボタンを表示することができるようになりました。

画像32

上記と全く同じパターンで、「UNFOLLOW」ボタンには、逆の意味を持つ「Contain」を選択します。

これにより、「Current User(フォローされる側のユーザー)」の「Followers(フォロワー)」に「Logged in User(フォローする側のユーザー)」を含む場合のみ、「UNFOLLOW」ボタンを表示することができるようになりました。

画像33

以上で、「FOLLOW」及び「UNFOLLOW」ボタンの切り替えは完了です。

画像34

6. FOLLOW 及び UNFOLLOW ボタンの非表示

今の状態では、「Logged in User(ログインしているユーザー)」が自分自身をフォローできてしまうため、修正を行います。

「FOLLOW」及び「UNFOLLOW」ボタンをシフトキーを押しながら選択し、「MAKE GROUP」をクリックし、グループ化します。

画像35

「Visibility」を「Sometimes Visible」に変更し、「Will be visible if」に「Current User > Email」「is not equal to」「Logged in User > Email」となるように順に選択します。

これにより、「Current User(フォローされる側のユーザー)」の「Email」と「Logged in User(フォローする側のユーザー)」の「Email」が一致しない場合のみ「FOLLOW」及び「UNFOLLOW」ボタンを表示することができるようになりました。

画像36

つまり、ログインユーザー自身には、「FOLLOW」及び「UNFOLLOW」ボタンが表示されないようになります。

画像37

7. まとめ

画像39

以上で今回の実装は完了です。「PREVIEW」ボタンをクリックして、作成したアプリを確認してみてください。

以下のように、それぞれのユーザーごとに、「Following(フォロー中)」及び「Followers(フォロワー)」のデータを管理することができます。

画像38

次回は、ユーザー詳細画面及び「Following(フォロー中)」「Followers(フォロワー)」の一覧表示画面を作成したいと思います。

引き続きAdaloの理解を深めていきましょう!

いいなと思ったら応援しよう!