> ## 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.

> モバイルアプリケーションが API と通信するアーキテクチャシナリオについて説明します。

# API を利用するモバイルアプリケーション

このシナリオでは、ExampleCo という架空の会社向けに、タイムシート API を構築します。この API では、従業員または契約社員のタイムシート エントリを管理できます。

また、この API を使って一元管理されたタイムシート データベース内のタイムシート エントリを表示および記録するモバイルアプリケーションも構築します。

<Info>
  ### 要点

  * Auth0 は、API エンドポイントへのアクセスを保護する手段として、API の認証と認可を提供します ([API の認証と認可](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-1#api-authentication-and-authorization)を参照)
  * モバイルアプリのユーザーを認可して API へのアクセスを付与するために、Auth0 は [Proof Key for Code Exchange (PKCE) を使用する認可コードフロー](/docs/ja-jp/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce) をサポートしています ([Proof Key for Code Exchange](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-1#proof-key-for-code-exchange-pkce-)を参照)
  * モバイルアプリと API の両方を Auth0 Dashboard で設定する必要があります ([Auth0 Configuration](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-2)を参照)
  * ユーザー権限は Authorization Extension を使用して適用できます ([Authorization Extension を設定する](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-2#configure-the-authorization-extension)を参照)
  * API は、API の呼び出し時に有効な <Tooltip tip="" cta="用語集を見る" href="/docs/ja-jp/glossary?term=Access+Token">アクセストークン</Tooltip> が HTTP Authorization ヘッダーで渡されるようにすることで保護されます ([API を実装する](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-3#secure-the-endpoints)を参照)
  * Auth0.Android SDK を使用すると、モバイルアプリのユーザーを認可し、API の呼び出しに使用できる有効なアクセストークンを取得できます ([ユーザーを認可する](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-3#authorize-the-user)を参照)
  * モバイルアプリは、ID トークンをデコードすることで、ユーザーのプロファイル情報を取得できます ([ユーザープロファイルを取得する](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-3#get-the-user-profile)を参照)
  * UI 要素は、ユーザーに付与されたスコープに基づいて条件付きで表示できます ([スコープに基づいて UI 要素を条件付きで表示する](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-3#display-ui-elements-conditionally-based-on-scope)を参照)
  * モバイルアプリは、API の呼び出し時に HTTP Authorization ヘッダーでアクセストークンを渡します ([API を呼び出す](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-3#call-the-api)を参照)
  * モバイルアプリユーザーのアクセストークンは更新できるため、セッション中に再度ログインする必要がありません ([トークンを更新する](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-3#renew-the-token)を参照)
</Info>

<div id="the-premise">
  ## 前提
</div>

ExampleCo はコンサルティング系のスタートアップ企業です。現在、約 100 人の従業員を抱え、いくつかの業務は外部の委託業者に委託しています。すべての従業員と外部の委託業者は、毎週タイムシートを記入する必要があります。

この会社はタイムシート用のアプリケーションを構築しており、このシナリオについては [従来型ウェブアプリのシングルサインオン](/docs/ja-jp/get-started/architecture-scenarios/sso-for-regular-web-apps) ですでに取り上げています。社内の従業員はこのウェブアプリを使ってタイムシートを記入していますが、会社としては、従業員や委託業者が社外にいるときにも使えるモバイルアプリケーションを必要としています。このアプリは、タイムシート エントリを記録し、そのデータを API を使って一元管理されたタイムシート データベースに送信するために使用されます。また、このアプリでは管理者がタイムシート エントリを承認することもできます。

<div id="goals-requirements">
  ### 目標と要件
</div>

ExampleCo は、柔軟なソリューションを構築したいと考えています。タイムシート エントリを記録する必要がある従業員や業務委託者が複数存在する可能性があるほか、外部の別システムからタイムシート エントリをアップロードするバッチ処理も想定されています。

そのため同社は、このモバイルアプリだけでなく、ほかのすべてのアプリケーションからも作業時間を記録できるよう、単一の タイムシート API を開発することにしました。また、それに対応できるだけの柔軟性を備えたセキュリティ アーキテクチャを整備したいと考えています。ExampleCo は、アプリケーションのコードやビジネス ロジックの大部分を、異なるアプリケーション間で共有できるようにしたいと考えています。

タイムシート API へのアクセスは、認可されたユーザーとアプリケーションのみに許可される必要があります。

<div id="learn-more">
  ## 詳細はこちら
</div>

* [ソリューション概要 (Mobile Apps + API)](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-1)
* [Auth0 Configuration (Mobile Apps + API)](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-2)
* [API とモバイルの設定 (Mobile Apps + API)](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-3)
* [Node.js API の実装 (Mobile Apps + API)](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/api-implementation-nodejs)
* [Android モバイルアプリケーションの実装 (Mobile Apps + API)](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/mobile-implementation-android)
* [まとめ (Mobile Apps + API)](/docs/ja-jp/get-started/architecture-scenarios/mobile-api/part-4)
