# 複数サイドアプリを作成する方法

*スキルレベル: 中級*

## 開始前に

* [データベース](/ja/database.md)について知っており、それらを作成する基本を知っていること。
* 条件付き表示と条件付きアクションの基本を知っていること
* [スクリーン](/ja/component-basics/inserting-and-editing-screens.md)と[コンポーネント](/ja/component-basics/design-basics.md)の基本を知っていること
* この機能を使用するには有料のAdaloプランは必要ありません。

## 手順

{% tabs %}
{% tab title="シンプル" %}
**1.)** マルチサイドアプリの動作を選択して構築する前に、ユーザータイプまたはロールをデータベース内で確立する必要があります。これにより、ユーザーがアプリのどの側面を見るべきかを決定できます。これを行うためのいくつかの方法があります。

* ユーザーロール用のTrue/Falseフィールド。たとえば、メンター/クライアントの役割がある場合、ユーザーコレクションに2つのTrue/Falseプロパティを追加できます - 1つは「クライアント？」ともう1つは「メンター？」と呼ばれます。
* ユーザータイプを保持する「Role」というテキストプロパティ。たくさんのロールがある場合、ユーザーコレクションをTrue/Falseプロパティで混乱させることなく、ユーザーにそれらの値を単純に設定できます。たとえば、メンター、クライアント、管理者がユーザーロールとしてある場合、ユーザーにそれらの値をフォーム内で自動的に設定するか、ユーザーが押すボタンで設定できます。
* ユーザーが選択できる多くのロールがある場合は、ユーザーロールという[コレクション](/ja/database.md)を作成することもできます。ここでの利点は、ユーザーロールに多くのプロパティを割り当て、そのユーザーロールを[関係](/ja/database.md#walkthrough)を介してユーザーに割り当てることができる点です。この方法を使用すると、「クリアランスレベル」などをユーザーに割り当てることができ、特定のレベル以上のすべてのユーザーが同じものにアクセスできるようになります。これにより、多くのロールの階層内でいくつかのユーザーロールに権限を与えることができます。

どのルートを選択しても、ユーザーに異なるワークフローとエクスペリエンスを提供するために同じロジックを使用できます。これを達成するためのさまざまな方法がありますが、いずれも条件付き表示または条件付きアクションを使用することで条件付けが必要です。以下は、上記のTrue/Falseメソッドを使用した3つの例を示しています。

#### ユーザーロールに基づく条件付き表示の使用

この方法は、ユーザーの役割が特定の基準に一致する場合にのみコンポーネントやボタンを表示するために使用できます。

**1.)** ユーザーコレクションに「メンター？」と「クライアント？」のTrue/Falseプロパティが設定されていること、およびアプリにホームスクリーンとメンターダッシュボードスクリーンが少なくとも2つあることを確認してください。

**2.)** 1つのスクリーンに、左上隅の大きなプラス記号をクリックして「メンターダッシュボード」とラベル付けされたシンプルなボタンを追加します。

**3.)** 新しいボタンをクリックし、**クリックアクション**セクションで、2番目のスクリーンにリンクする**リンク**アクションを追加します。 **4.)** ボタンの設定メニューの右上にある**More**アイコン<img src="/files/lY2YX0O5Jm99v6EsO1tp" alt="" data-size="line">をクリックし、**Change Visibility**を選択してください。<img src="/files/cwJByCNH7kTgnYRhPODu" alt="" data-size="line">

**5.)** **Visibility**ドロップダウンから**Sometimes Visible**を選択してください。

**6.)** この「メンターダッシュボード」ボタンをメンターの場合にのみ表示したいため、その可視性を反映させる必要があります。**Will be visible if...ドロップダウンでLogged In User > Mentor?を選択してください。下に表示されるドロップダウンで、まだ選択されていない場合はIs True**を選択してください。

#### ユーザーの役割に基づく条件付きアクションの使用

この方法は、ユーザーの役割が特定の基準に一致する場合にのみアクションを実行するために使用できます。

**1.)** ユーザーコレクションに「Mentor?」および「Client?」の**True/False**プロパティが設定されていることを確認し、アプリにホーム画面、クライアントダッシュボード画面、メンターダッシュボード画面の少なくとも3つの画面があることを確認してください。

**2.)** ホーム画面には、左上隅の大きなプラス記号をクリックして「Dashboard」というラベルが付いたシンプルなボタンを追加してください。<img src="/files/uv1ZczVUqOYQacjjl48E" alt="" data-size="line">

**3.)** 新しいボタンをクリックし、**Click Actions**セクションで**Link**アクションを追加してクライアントダッシュボード画面にリンクしてください。

**4.)** 新しいリンクアクションの**Show Advanced**オプションをクリックし、アクション設定で**When does this happen?ドロップダウンからSometimes**を選択してください。

**5.)** **This action will only happen if...というラベルの別のドロップダウンが表示されます。このドロップダウンでMore> Logged In User > Client?を選択してください。その下で、ドロップダウンをIs True**に設定してください。

#### 共有データベースを使用した異なるアプリの構築

役割に基づいてユーザーのエクスペリエンスを制御する別の方法は、同じデータベースをアプリ間で共有することで、各ユーザーの役割ごとに別々のアプリを作成することです。たとえば、Uberにはドライバーアプリとライダーアプリがあります。

**1.)** 1つのユーザー役割のアプリとそのデータベースを作成したら、それをコピーするか、同じデータベースを共有する新しいアプリを作成できます。新しいアプリを作成するには、Adalo Builderの上部中央のアプリ名のドロップダウンをクリックし、一番下にある**Create New App**オプションをクリックしてください。<img src="/files/wT699hFVKOfS5Irz4aCq" alt="" data-size="line">

**2.)** アプリの種類を選択し、**Next**をクリックしてください。

**3.)** テンプレートオプションから**Blank**を選択し、**Next**をクリックしてください。

**4.)** アプリに名前を付け、配置する**Team**と色を選択し、**Advanced Options**をクリックしてください。

**5.)** **Share Database with an Existing App**オプションを選択し、データベースを共有するアプリを選択してください。**Done**をクリックし、**Create**をクリックしてください。 **7.)** アプリを新しく作成する代わりにコピーするには、Adalo Builderの左側メニューで**Settings**アイコン<img src="/files/RPaoTJm18p7BDR3jbA8w" alt="" data-size="line">をクリックします。

**8.)** **Copy/Delete**セクションのドロップダウンをクリックし、**Copy \_\_\_\_\_\_**&#x3092;選択します。

**9.)** 新しいアプリに名前を付けるように求められます。 両方のアプリで同じデータベースを使用するために**Share the same database**をチェックしてください。 ドロップダウンからアプリを配置するチームを選択し、**Create**をクリックします。
{% endtab %}

{% tab title="詳細" %}
**1.)** マルチサイドアプリの動作を選択して構築する前に、ユーザータイプまたはロールをデータベース内に確立する必要があります。これにより、ユーザーがどちらのアプリ側を見るべきかを決定できます。これを行うためのいくつかの方法があります。

* ユーザーロールのTrue/Falseフィールド。たとえば、メンター/クライアントの役割がある場合、ユーザーコレクションに2つのTrue/Falseプロパティを追加できます - 1つは「クライアント？」、もう1つは「メンター？」と呼ばれます。

![ユーザーの役割を示すTrue/Falseプロパティを追加します。](/files/gwHe7ZmLUSLkNPlh6njt)

* ユーザータイプの一意の値を保持する「Role」というテキストプロパティ。多くのロールがある場合、ユーザーコレクションをTrue/Falseプロパティで混乱させることなく、ユーザーの役割を設定できます。たとえば、メンター、クライアント、管理者のユーザーロールがある場合、ユーザーにこれらの値を自動的に設定できます。

![ユーザーの役割タイプを保持するテキストフィールドを追加します。](/files/B0vv1MAt58olrTRPefz6)

* ユーザーが選択できる多くのロールがある場合は、ユーザーロールという[Collection](/ja/database.md)を作成することもできます。ここでの利点は、ユーザーロールに多くのプロパティを割り当て、そのユーザーロールを[Relationship](/ja/database.md#walkthrough)を介してユーザーに割り当てることができることです。この方法を使用すると、「クリアランスレベル」などをユーザーに割り当てることができ、特定のレベル以上のすべてのユーザーが同じものにアクセスできるようになります。これにより、多くのロールの階層内で複数のユーザーロールに権限を与えることができます。

![Role Typesコレクションのビュー](/files/BUPE4Wp71WcBeNgCSioL)

![UsersとRole Typesの関係タイプ](/files/G4Rkx5uUuUXhZaszYRk7)

どのルートを選択しても、ユーザーに異なるワークフローやエクスペリエンスを提供するために同じロジックを使用できます。これを達成するためのさまざまな方法がありますが、いずれも条件付き可視性または条件付きアクションを使用することで条件付けが必要です。以下は、上記のTrue/Falseメソッドを使用した3つの例を示しています。

#### ユーザーロールに基づく条件付き可視性の使用

この方法は、ユーザーの役割が特定の基準に一致する場合にのみコンポーネントやボタンを表示するために使用できます。 **1.)** ユーザーコレクションに"Mentor?"と"Client?"のTrue/Falseプロパティを設定し、アプリにホーム画面とメンターダッシュボード画面を少なくとも2つ設定してください。

![メンターとクライアントの役割のための2つのTrue/Falseプロパティ](/files/WtuirCIFSpndE7EXrdIs)

**2.)** 1つの画面に、左上隅の大きなプラス記号をクリックして"メンターダッシュボード"とラベル付けされたシンプルなボタンを追加してください <img src="/files/uv1ZczVUqOYQacjjl48E" alt="" data-size="line">

![メンターダッシュボードへのリンクを追加するためのシンプルなボタンの追加](/files/3RbxWTN4UfLpYKULQzPy)

**3.)** 新しいボタンをクリックし、**Click Actions**セクションで、2番目の画面にリンクする**Link**アクションを追加してください。

![メンターダッシュボードボタンにリンクアクションを追加する](/files/bPRaa1XtlXNK5YwgRRjA)

**4.)** ボタンの設定メニューの右上にある**More**アイコン <img src="/files/lY2YX0O5Jm99v6EsO1tp" alt="" data-size="line"> をクリックし、**Change Visibility** <img src="/files/cwJByCNH7kTgnYRhPODu" alt="" data-size="line"> を選択してください。

**5.)** **Visibility**ドロップダウンで**Sometimes Visible**を選択してください。

![ボタンの可視性をSometimes Visibleに設定する](/files/IeNU89hA76VRRQbchhHX)

**6.)** "メンターダッシュボード"ボタンをユーザーがメンターである場合にのみ表示されるようにしたいので、可視性を設定する必要があります。**Will be visible if...ドロップダウンでLogged In User > Mentor?を選択し、下に表示されるドロップダウンでIs True**を選択してください。

![Logged In Userがメンターの場合にのみボタンが表示されるように可視性を設定する](/files/YFiT1su3Zb12JqUQplIV)

#### **ユーザーの役割に基づく条件付きアクションの使用**

この方法は、ユーザーの役割が特定の基準に一致する場合にのみアクションを実行するために使用できます。

**1.)** ユーザーコレクションに"Mentor?"と"Client?"のTrue/Falseプロパティを設定し、アプリにホーム画面、クライアントダッシュボード画面、メンターダッシュボード画面を少なくとも3つ設定してください。

![メンターとクライアントの役割のための2つのTrue/Falseプロパティ](/files/WtuirCIFSpndE7EXrdIs)

**2.)** ホーム画面に、左上隅の大きなプラス記号をクリックして"ダッシュボード"とラベル付けされたシンプルなボタンを追加してください <img src="/files/uv1ZczVUqOYQacjjl48E" alt="" data-size="line">

![ホーム画面にシンプルなダッシュボードボタンを追加する](/files/GLJqas1QZTXd6SOdvSn3)

**3.)** 新しいボタンをクリックし、**Click Actions**セクションで、クライアントダッシュボード画面にリンクする**Link**アクションを追加してください。

![](/files/qODrjF992vjxry9jKGCs)

**4.)** 新しいリンクアクションの設定で**Show Advanced**オプションをクリックし、**When does this happen?ドロップダウンでSometimes**を選択してください。 ![リンクアクションが時々のみ発生するようにする。](/files/vy92ofrLojvM2hqZHEiY)

**5.)** もう1つのドロップダウンが現れ、**このアクションは次の場合のみ発生します...** とラベルが付けられます。このドロップダウンで **More > ログインユーザー > クライアント?** を選択してください。そのすぐ下で、ドロップダウンを **Is True** に設定してください。

![条件付きアクションの基準を追加する。](/files/UgsjtK07f1w5c8pDb9Jd)

#### **共有データベースを使用して異なるアプリを構築する**

ユーザーの役割に基づいてユーザーエクスペリエンスを制御する別の方法は、同じデータベースを複数のユーザー役割ごとに別々のアプリに共有することです。たとえば、Uberにはドライバーアプリとライダーアプリがあります。

**1.)** 1つのユーザー役割のアプリとそのデータベースを作成したら、それをコピーするか、同じデータベースを共有する新しいアプリを作成できます。新しいアプリを作成するには、Adaloエディタの上部中央のアプリ名のドロップダウンをクリックし、一番下にある **Create New App** オプションをクリックします。

![新しいアプリを作成する。](/files/gNzMjK5xyqjUqn6bn34L)

**2.)** アプリの種類を選択し、**Next** をクリックします。

![アプリの種類を選択する。](/files/zgdPBXkbolrXoUZ2PSeh)

**3.)** テンプレートオプションから **Blank** を選択し、**Next** をクリックします。

![空のテンプレートオプションを選択する](/files/mCu37gRn75iEdLZ6D7pt)

**4.)** アプリに名前を付け、配置する **Team** と色を選択し、**Advanced Options** をクリックします。

![名前を追加し、詳細オプションを選択する](/files/hcAMPRM7WI3x0sADd9SC)

**5.)** **Share Database with an Existing App** オプションを選択し、データベースを共有するアプリを選択します。**Done** をクリックし、**Create** をクリックします。

![他のアプリとデータベースを共有する](/files/cLlU4k76dYwHxHNFsHkp)

**7.)** 新しいアプリを作成する代わりにアプリをコピーするには、Adaloエディタの左側メニューで **Settings** アイコンをクリックします。

![左側メニューで設定ギアを選択します。](/files/2r1GcP3zuDlf7Dc10Y5V)

**8.)** **Copy/Delete** セクションのドロップダウンをクリックし、**Copy \_\_\_\_\_\_** を選択します。

![現在のアプリをコピーする](/files/80qoKdqVAFTYZPs1k22K)

**9.)** 新しいアプリに名前を付けるように求められます。両方のアプリで同じデータベースを使用するために **Share the same database** をチェックしてください。ドロップダウンからアプリを配置するチームを選択し、**Create** をクリックします。

![アプリのコピーに名前を付け、同じデータベースを共有することを確認](/files/CsdR0Rdm3nlQfezIhqMT)
{% endtab %}

{% tab title="Video" %}
{% embed url="<https://www.youtube.com/watch?v=tydJavoHFCM&t=97s>" %}
{% endtab %}
{% endtabs %}

## 例

上記の方法のいずれかに従った場合、ユーザー向けのマルチサイドアプリを構築するための良いスタートが切れているはずです。この手順で使用されたアプリを表示またはクローンしたい場合は、[こちらをクリックしてください](https://previewer.adalo.com/1cbc57c3-ad72-4d50-832e-601a40c01fdb)。

## もっと詳しく知る

* 同じデータベースを共有する2つ以上の別々のアプリを作成する場合は、それらをアプリストアに別々に公開する必要があります。
* 優れたマルチサイドアプリの例は、いつでも[アプリテンプレート](https://www.adalo.com/app-templates)をチェックすることで見つけることができます。
* ユーザー登録時に役割を割り当てる一般的な方法は、ユーザーがボタンを選択して役割を選択するオンボーディングシーケンスを提供することです。
* 役割をサインアップ時に割り当てる方法として、フォーム内で[自動フィールド](/ja/glossary.md#automatic-field)としてそれらを設定することもできます。

## ヘルプ

この記事に関する追加のヘルプが必要な場合は、いつでも[コミュニティフォーラム](https://forum.adalo.com/)で質問してください！投稿にこの記事へのリンクも貼っておくことを忘れないでください！

チュートリアルやヘルプドキュメントのリクエストがありますか？[お知らせください！](https://ideas.adalo.com/tutorial-requests)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.adalo.com/ja/how-to/creating-multi-sided-apps.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
