From d6a33be69500fe5f263aa25c813fcb5e0aa1315f Mon Sep 17 00:00:00 2001 From: tak-ka3 Date: Thu, 25 Sep 2025 15:29:45 +0900 Subject: [PATCH 1/2] feat: fix tutorial reflecting FB --- .../tutorial/basic_apc_cli_tutorial.ipynb | 150 +++++++++--------- 1 file changed, 78 insertions(+), 72 deletions(-) diff --git a/notebooks/tutorial/basic_apc_cli_tutorial.ipynb b/notebooks/tutorial/basic_apc_cli_tutorial.ipynb index 8bb16b6..105e3dd 100644 --- a/notebooks/tutorial/basic_apc_cli_tutorial.ipynb +++ b/notebooks/tutorial/basic_apc_cli_tutorial.ipynb @@ -6,83 +6,68 @@ "source": [ "# APC-CLI 基本チュートリアル 実行フロー\n", "\n", - "基本的に各ステップを上から順に実行することで、AutoPrivacy DCR上で関数を実行することができます。\n", + "各ステップを上から順に実行することで、AutoPrivacy DCR上で関数を実行することができます。\n", "AutoPrivacy DCRの操作をCLIから行うツールとして、APC-CLIというコマンドラインツールを用います。\n", "\n", - "**このJupyterNotebookは[こちら](https://github.com/acompany-develop/dcr-docs-examples/blob/main/notebooks/tutorial/basic_apc_cli_tutorial.ipynb)に上がっているため、ステップ2の環境変数さえ設定すれば、あとは説明に従って各セルを実行するだけで、AutoPrivacy DCR上で処理を実行できるようになっています。**\n", + "**このJupyterNotebookは[dcr-docs-examplesリポジトリ](https://github.com/acompany-develop/dcr-docs-examples)に含まれています。リポジトリをクローンし、ステップ3の環境変数を設定すれば、説明に従って各セルを実行するだけでAutoPrivacy DCR上で処理を実行できます。**\n", "\n", "## 概要\n", "\n", "このスクリプトは以下の主要なステップで構成されています:\n", - "1. 全体概要\n", - "2. 環境変数設定\n", - "3. APC-CLI のセットアップ\n", - "4. プロファイル設定\n", - "5. 入出力の設定ファイルの生成\n", - "6. 認証とヘルスチェック\n", - "7. プロジェクト設定\n", - "8. 関数の準備\n", - "9. 関数ストレージへのアップロード\n", - "10. Cleanroom デプロイ\n", - "11. データの Cleanroom へのコピー\n", - "12. Cleanroom の実行\n", - "13. 結果のダウンロード\n", - "14. クリーンアップ" + "1. チュートリアル全体概要\n", + "2. AutoPrivacy DCR 概要\n", + "3. 環境変数設定\n", + "4. APC-CLI のセットアップ\n", + "5. プロファイル設定\n", + "6. 入出力の設定ファイルの生成\n", + "7. 認証とヘルスチェック\n", + "8. プロジェクト設定\n", + "9. 関数の準備\n", + "10. 関数ストレージへのアップロード\n", + "11. Cleanroom デプロイ\n", + "12. データの Cleanroom へのコピー\n", + "13. Cleanroom の実行\n", + "14. 結果のダウンロード\n", + "15. クリーンアップ" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## 1. 全体概要\n", - "Cleanroomを用いることで、二者間で安全にデータを共有し実行することが可能となります。APC-CLI実行時に基本的にprofile(user)を指定するのですが、profileが異なれば異なるユーザーから実行されることを想定しているため、異なるマシンから実行することが可能です(同一のマシンから実行することも可能)。\n", - "具体的なフロー図は以下のようになります。\n", + "## 1. チュートリアル全体概要\n", "\n", - "
フロー図\n", - "\n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 2. 環境変数設定\n", - "ファイル・ディレクトリ構成としては、今回は以下のようなものを想定します。この詳細については[こちら](https://acompany-develop.github.io/autoprivacy-cloud/apc-dcr/user-guide/user-files/function-directory.html)から参照できます。" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "```\n", - "FUNCTION_SOURCE_PATH\n", - "├── function # 関数のパス\n", - "│ └── handler.py\n", - "│ └── packages # 依存パッケージのパス\n", - "├── inputs # 入力データのパス\n", - "│ ├── input_1\n", - "│ └── input_2\n", - "└── outputs # 出力データのパス\n", - " ├── output_1\n", - " └── output_2\n", - "```" + "このチュートリアルでは、AutoPrivacy DCRを使用してデータの安全な共有と処理を実現する方法を説明します。具体的には、二者間でデータを共有し、Cleanroom上でjoin関数を実行することで、プライバシーを保護しながらデータ処理を行います。join関数の全実装は[こちらのコード](https://github.com/acompany-develop/dcr-docs-examples/blob/main/functions/join/function/handler.py)のようになります。\n", + "\n", + "**前提条件:**\n", + "- 設定情報(CLIENT_ID、CLIENT_SECRET等)\n", + "- Python 3.10\n", + "- OS: macOS、Linux\n", + "- アーキテクチャ: x86_64、ARM64" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "このチュートリアルではjoin関数をCleanroom上で実行します。join関数の全実装は[こちら](https://github.com/acompany-develop/dcr-docs-examples/blob/main/functions/join/function/handler.py)のようになります。" + "## 2. AutoPrivacy DCR 概要\n", + "Cleanroomを用いることで、二者間で安全にデータを共有し実行することが可能となります。APC-CLI実行時にprofile(user)を指定することで、異なるユーザーとして実行することができます。profileによってユーザーが区別されるため、異なるマシンから実行することが可能です(同一のマシンから実行することも可能)。\n", + "具体的なフロー図は以下のようになります。\n", + "\n", + "
フロー図\n", + "\n", + "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "実行に必要な環境変数を.envファイルに書き込みます。`API_URL`, `ATTESTATION_URL`, `ATTESTATION_API_VERSION`, `MR_ENCLAVE`, `MR_SIGNER`, `CLIENT_ID1`, `CLIENT_SECRET1`, `CLIENT_ID2`, `CLIENT_SECRET2`, `PROJECT_ID`という環境変数の値はAutoPrivacy DCRサービス提供者から提供されたものを使用します。ただし、ダブルクオーテーションはつけずに値だけを環境変数に代入してください。\n", + "## 3. 環境変数設定\n", "\n", - "なお、データ共有を行う二者間では、`CLIENT_ID`と`CLIENT_SECRET`だけ異なり、それ以外環境変数の値(`API_URL`, `ATTESTATION_URL`, `ATTESTATION_API_VERSION`, `MR_ENCLAVE`, `MR_SIGNER`, `PROJECT_ID`)は同一になります。" + "実行に必要な環境変数を設定します。`API_URL`, `ATTESTATION_URL`, `ATTESTATION_API_VERSION`, `MR_ENCLAVE`, `MR_SIGNER`, `CLIENT_ID1`, `CLIENT_SECRET1`, `CLIENT_ID2`, `CLIENT_SECRET2`, `PROJECT_ID`という環境変数の値は、AutoPrivacy DCRサービス提供者から提供されるconfig.tomlファイルに記載されています。ただし、ダブルクオーテーションはつけずに値だけを環境変数に代入してください。\n", + "\n", + "なお、データ共有を行う二者間では、`CLIENT_ID`と`CLIENT_SECRET`だけ異なり、それ以外の環境変数の値(`API_URL`, `ATTESTATION_URL`, `ATTESTATION_API_VERSION`, `MR_ENCLAVE`, `MR_SIGNER`, `PROJECT_ID`)は同一になります。" ] }, { @@ -115,7 +100,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 3. APC-CLI のセットアップ\n", + "## 4. APC-CLI のセットアップ\n", "\n", "詳細なAPC-CLIのセットアップ方法については、[こちら](https://acompany-develop.github.io/autoprivacy-cloud/apc-cli/getting-started/installation.html)から参照できます。\n", "\n", @@ -139,7 +124,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "指定したバージョンでAPC-CLIをダウンロードします。" + "指定したバージョンでAPC-CLIをダウンロードします。\n", + "\n", + "**注意**: このステップではwgetを使用します。wgetがインストールされていない場合は、以下のコマンドでインストールしてください:\n", + "- **macOS**: `brew install wget`\n", + "- **Linux (Ubuntu/Debian)**: `sudo apt-get install wget`" ] }, { @@ -226,8 +215,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 4. プロファイル設定\n", - "各プロファイルに対して種設定情報を入力し、User IDを生成します。\n", + "## 5. プロファイル設定\n", + "各プロファイルに対して設定情報を入力し、User IDを生成します。\n", "今回のチュートリアルでは標準出力されるUserIDを環境変数に読み込むために以下のようにコマンドを実行します。\n", "コマンドの詳細は [configure コマンド リファレンス](https://acompany-develop.github.io/autoprivacy-cloud/apc-cli/commands/configure.html) から参照できます。\n", "\n", @@ -307,11 +296,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 5. 入出力の設定ファイルの生成\n", + "## 6. 入出力の設定ファイルの生成\n", "\n", - "入出力の設定ファイルを`$ENCRYPTED_FILES_PATH`に作成します。詳細は[こちら](https://acompany-develop.github.io/autoprivacy-cloud/apc-dcr/user-guide/user-files/definition-files.html)から参照できます。\n", + "入出力の設定ファイルを`$ENCRYPTED_FILES_PATH`に作成します。この設定ファイルでは、入力データと出力データにアクセス可能なUSER IDを指定します。\n", + "詳細は[こちら](https://acompany-develop.github.io/autoprivacy-cloud/apc-dcr/user-guide/user-files/definition-files.html)から参照できます。\n", "\n", - "**ただし、実行前に**``**と**``**を5で出力された**`profile1`**と**`profile2`**のUser IDに置き換えてください。**" + "**注意: 以下のコマンド実行前に**``**と**``**を5で出力された**`profile1`**と**`profile2`**のUser IDに置き換えてください。**" ] }, { @@ -340,7 +330,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 6. 認証とヘルスチェック\n", + "## 7. 認証とヘルスチェック\n", "\n", "各プロファイルでログインします。コマンドの詳細は [auth-login コマンド リファレンス](https://acompany-develop.github.io/autoprivacy-cloud/apc-cli/commands/auth-login.html) から参照できます。" ] @@ -386,7 +376,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 7. プロジェクト設定\n", + "## 8. プロジェクト設定\n", "\n", "各プロファイルで同じプロジェクトを設定します。コマンドの詳細は [set-project コマンド リファレンス](https://acompany-develop.github.io/autoprivacy-cloud/apc-cli/commands/set-project.html) から参照できます。" ] @@ -410,9 +400,25 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 8. 関数の準備\n", - "Cleanroom上で実行する関数のパスを設定します。\n", - "今回のチュートリアルでは、リポジトリの中のjoin関数のパスを`FUNCTION_SOURCE_PATH`に指定します。\n", + "## 9. 関数の準備\n", + "\n", + "Cleanroom上で実行する関数のパスを設定します。今回のチュートリアルでは、リポジトリの中のjoin関数のパスを`FUNCTION_SOURCE_PATH`に指定します。\n", + "\n", + "ファイル・ディレクトリ構成としては、今回は以下のようなものを想定します。ディレクトリ構成の詳細については[ドキュメント](https://acompany-develop.github.io/autoprivacy-cloud/apc-dcr/user-guide/user-files/function-directory.html)から参照できます。\n", + "\n", + "```\n", + "FUNCTION_SOURCE_PATH\n", + "├── function # 関数のパス\n", + "│ └── handler.py\n", + "│ └── packages # 依存パッケージのパス\n", + "├── inputs # 入力データのパス\n", + "│ ├── input_1\n", + "│ └── input_2\n", + "└── outputs # 出力データのパス\n", + " ├── output_1\n", + " └── output_2\n", + "```\n", + "\n", "なお、[このディレクトリ](https://github.com/acompany-develop/dcr-docs-examples/tree/main/functions)の中の関数はCleanroom上で実行可能であり、これらの関数のパスを指定することも可能です。" ] }, @@ -468,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 9. 関数ストレージへのアップロード\n", + "## 10. 関数ストレージへのアップロード\n", "\n", "関数ディレクトリのパスを指定した上で、実行する関数をCleanroom上にアップロードします。コマンドの詳細は [function-storage コマンド リファレンス](https://acompany-develop.github.io/autoprivacy-cloud/apc-cli/commands/function-storage.html#function-storage-upload) から参照できます。なお、出力された`FunctionStoragePath`は次のCleanroomデプロイのステップで使用します。" ] @@ -491,12 +497,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 10. Cleanroom デプロイ\n", + "## 11. Cleanroom デプロイ\n", "\n", "アップロードされた関数を使用してCleanroomアプリケーションをデプロイします。\n", "コマンドの詳細は [cleanroom deploy コマンド リファレンス](https://acompany-develop.github.io/autoprivacy-cloud/apc-cli/commands/cleanroom.html#cleanroom-deploy) から参照できます。\n", "\n", - "**ただし、実行前に**`--source`**オプションの引数のを9で出力された**`FunctionStoragePath`**の値に置き換えてください。**" + "**注意: 以下のコマンド実行前に**`--source`**オプションの引数のを10で出力された**`FunctionStoragePath`**の値に置き換えてください。**" ] }, { @@ -524,7 +530,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 11. データの Cleanroom へのコピー\n", + "## 12. データの Cleanroom へのコピー\n", "\n", "各プロファイルから、ローカルの入力データをCleanroom上にコピーします。コマンドの詳細は [cleanroom copyコマンド リファレンス](https://acompany-develop.github.io/autoprivacy-cloud/apc-cli/commands/cleanroom-data.html) から参照できます。" ] @@ -548,7 +554,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 12. Cleanroom の実行\n", + "## 13. Cleanroom の実行\n", "\n", "デプロイされたCleanroom上のアプリケーションを実行します。コマンドの詳細は [cleanroom run コマンド リファレンス](https://acompany-develop.github.io/autoprivacy-cloud/apc-cli/commands/cleanroom.html#cleanroom-run) から参照できます。" ] @@ -571,7 +577,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 13. 結果のダウンロード\n", + "## 14. 結果のダウンロード\n", "\n", "実行結果を各プロファイルにダウンロードします。コマンドの詳細は [cleanroom data コマンド リファレンス](https://acompany-develop.github.io/autoprivacy-cloud/apc-cli/commands/cleanroom-data.html) から参照できます。" ] @@ -595,9 +601,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## 14. クリーンアップ\n", + "## 15. クリーンアップ\n", "\n", - "使用したリソースに変更を加える必要があり、削除したい場合はリソースをクリーンアップすることができます。" + "DCR上にアップロードした関数ディレクトリやデプロイしたCleanroomアプリケーションを使用しない場合はクリーンアップすることをお勧めします。それぞれの手順は以下の通りです。" ] }, { @@ -627,7 +633,7 @@ "source": [ "Cleanroom上にアップロードされた関数を削除します。コマンドの詳細は [function-storage delete コマンド リファレンス](https://acompany-develop.github.io/autoprivacy-cloud/apc-cli/commands/function-storage.html#function-storage-delete) から参照できます。\n", "\n", - "**ただし、実行前にを9で出力された`FunctionStoragePath`の値に置き換えてください。**" + "**注意: 以下のコマンド実行前にを10で出力された`FunctionStoragePath`の値に置き換えてください。**" ] }, { From 7e6d421034527abbc2d12bdcb81d28f886264602 Mon Sep 17 00:00:00 2001 From: tak-ka3 Date: Thu, 25 Sep 2025 15:29:45 +0900 Subject: [PATCH 2/2] fix: change USER ID to User ID --- notebooks/tutorial/basic_apc_cli_tutorial.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/notebooks/tutorial/basic_apc_cli_tutorial.ipynb b/notebooks/tutorial/basic_apc_cli_tutorial.ipynb index 105e3dd..3786fcd 100644 --- a/notebooks/tutorial/basic_apc_cli_tutorial.ipynb +++ b/notebooks/tutorial/basic_apc_cli_tutorial.ipynb @@ -298,7 +298,7 @@ "source": [ "## 6. 入出力の設定ファイルの生成\n", "\n", - "入出力の設定ファイルを`$ENCRYPTED_FILES_PATH`に作成します。この設定ファイルでは、入力データと出力データにアクセス可能なUSER IDを指定します。\n", + "入出力の設定ファイルを`$ENCRYPTED_FILES_PATH`に作成します。この設定ファイルでは、入力データと出力データにアクセス可能なUser IDを指定します。\n", "詳細は[こちら](https://acompany-develop.github.io/autoprivacy-cloud/apc-dcr/user-guide/user-files/definition-files.html)から参照できます。\n", "\n", "**注意: 以下のコマンド実行前に**``**と**``**を5で出力された**`profile1`**と**`profile2`**のUser IDに置き換えてください。**"