> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Lock.Android でサインアップ時に追加フィールドを設定する

# Lock.Android: サインアップ時のカスタムフィールド

**Lock.Android** では、新しいアカウントを作成する前に、ユーザーに追加フィールドの入力を必須にできます。追加フィールドは、ユーザーが基本フィールド (メールアドレス、username、パスワード) を入力した後、2 つ目の画面に表示されます。

<div id="create-the-custom-fields">
  ## カスタムフィールド を作成する
</div>

以下の 4 つの必須パラメーターをすべて渡して、新しい `CustomField` オブジェクトを作成します。

1. Icon: アイコンとして使用するリソースを指す `int` です (小さいものを使用してください) 。
2. Type: このフィールドで使用する `FieldType` です。この型によってキーボードレイアウトが決まり、場合によっては入力検証も定義されます。
3. Key: 結果の JSON 内でこの値を識別する `String` です。重複はできません。フィールドキーが重複すると、2 つ目のフィールドはリストから削除されます。
4. Hint: フィールド内のヒントとして表示するテキストの `@StringRes` です。

さらに、そのフィールドをユーザーのプロフィールのどこに保存するかを指定できます。詳細については、以下の [Storage](#storage) セクションを参照してください。

また、ユーザーには表示されないものの、サインアップ後に追加のメタデータを動的に含めるために使用できるフィールドを作成することもできます。

```kotlin lines theme={null}
// 通常フィールド
val nameField = CustomField(R.drawable.ic_name, FieldType.TYPE_NAME, "first_name", R.string.hint_first_name, CustomField.Storage.PROFILE_ROOT)

// 非表示フィールド
val androidField = HiddenField("android_version", Build.VERSION.SDK_INT.toString(), Storage.USER_METADATA)

val customFields = listOf(nameField, androidField)
```

必要なフィールドの数だけ、上記の手順を繰り返してください。

<div id="use-the-custom-fields">
  ## カスタムフィールドを使用する
</div>

Lock インスタンスの構築時に、`withSignUpFields()` メソッドを使用してカスタムフィールドのリストを渡します。

```kotlin lines theme={null}
val lock = Lock.newBuilder(auth0, callback)
              .withSignUpFields(customFields)
              //...
              .build(this)
```

アプリケーションのダッシュボードでサインアップを有効にしている場合、ユーザーは基本フィールド (メールアドレス/username、パスワード) を入力して **Submit** をクリックした後、残りのフィールドの入力を求められます。ユーザーは、サインアップを完了する前に、すべてのカスタムフィールドを入力する必要があります。

サインアップ時には、追加フィールドは、選択した Storage オプションに応じて `user_metadata` 属性に追加されるか、ルートのユーザープロファイルに直接設定されます。これらのプロパティには、ダッシュボードの Users セクションからでも、いつでもユーザープロファイルを照会してアクセスできます。

<div id="field-types">
  ## フィールドタイプ
</div>

各カスタムフィールドには、関連付けられる `FieldType` を 1 つだけ指定できます。

* TYPE\_NAME
* TYPE\_NUMBER
* TYPE\_PHONE\_NUMBER
* TYPE\_EMAIL

<div id="storage">
  ## ストレージ
</div>

各カスタムフィールドに関連付けられる `Storage` は 1 つだけです。保存先として、ルートレベルのプロフィール属性、または `user_metadata` 属性内を選択できます。保存場所を指定するには、5 つのパラメーターを持つコンストラクターを使用し、使用する `Storage` パラメーターを渡します。既定では、フィールドは `user_metadata` 属性内に保存されます。

利用可能な選択肢:

* PROFILE\_ROOT
* USER\_METADATA (既定)

フィールドをユーザーのプロフィールのルートレベルに保存するには、そのキーが [エンドポイントのドキュメント](https://auth0.com/docs/api/authentication#signup) に記載されているキーと一致している必要があります。
