diff --git a/docs/README.md b/docs/README.md
index 7059c41..6dd2442 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,8 +1,29 @@
# Hasuraで作るREST API
-Hasuraを使用してPostgresデータベースに接続したREST APIを構築します。
+Hasuraを使用してPostgresデータベースに接続したREST APIを構築し、それを利用したWebアプリを作成します。
-
+これからこのハンズオンで作成するのは次のようなWebアプリです。
+
+
+
+
+構成としては下記の通りです。
+
+- [Hasura Cloud](https://cloud.hasura.io/) - すぐに利用可能なHasuraの環境
+- [Heroku Postgres](https://jp.heroku.com/postgres) - すぐに利用可能なデータベース
+- [CodeSandbox](https://codesandbox.io/) - フロントエンドのオンライン開発環境
+- [Vue 3](https://v3.vuejs.org/) - プログレッシブWebフレームワーク
+- [Quill](https://quilljs.com/) - リッチテキストエディター
+
+それではさっそく作っていきましょう!
diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md
index 6e889fa..bf6234f 100644
--- a/docs/SUMMARY.md
+++ b/docs/SUMMARY.md
@@ -5,7 +5,7 @@
- [Herokuのアカウント登録](signup-heroku.md)
- [Hasura Cloudのアカウント登録](signup-hasura-cloud.md)
- [Hasura Cloudプロジェクトの作成](create-project.md)
-- [Heroku Databaseへの接続](create-heroku-database.md)
+- [Heroku Postgresへの接続](create-heroku-postgres.md)
- [テーブルの作成](create-table.md)
- [GraphQLによるデータの挿入と取得](insert-and-select.md)
- [REST APIエンドポイントの作成](create-rest-endpoint.md)
diff --git a/docs/create-heroku-database.md b/docs/create-heroku-database.md
deleted file mode 100644
index 1a528db..0000000
--- a/docs/create-heroku-database.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Heroku Databaseへの接続
-
-![](https://lh3.googleusercontent.com/ekEWHMTkf2qak5oItkay-scmzeiwiaUtNXBvBdCSVSJ3qG25oVc8O_25S4SEWZskj6NqWSfW2eENeEy3iJ94mTw1SmhnL7tONbS_qHHZsgI4l_6sEIdmMnXTEpmF34-aDS2I3Pi7EQ=w1280)
-
-![](https://lh3.googleusercontent.com/46sywF2Hl5GGAEsXhAkhhni4_NHcB-kcHiqqJNkZs0HS7zvFy9FZmmWEGLtP-i6F-msLnuJlKPFst8j8_QTCnTcDi1B5diKByqOVDAeuZ_PL1Fo_pDl_DLOBscL-O8ucqZA05_xyjA=w1280)
-
-![](https://lh3.googleusercontent.com/RngvddZ704jKqqPfxGiSEdEkBemMwrz3jApRJQhRqL2Cr0MoV-SxVljdLaglM0XFwkcnIpWFD9zVyUtn9n55LGKG78gJPec6HRrWXrcLbNNnHztycmF-sphYYBkHaRT7Y87nzihdNg=w1280)
-
-![](https://lh3.googleusercontent.com/-0FkvEXZO0FQz0YvrNFdh8JmAMZPbIpaIRygkE4F8xb4Z3ZLMRH9y5pny48-bj-i2nnhbDuqcPKokbznD7X_APL-MkjDeHaxQsJjFyGEY6AxvMBsHwfNOjxPdjQA6S3dGrW1Cz4o0g=w1280)
-
-![](https://lh3.googleusercontent.com/vJU-gDZJwSNJYAaoq4qu4lAnxhNYGE70rPxmtGct_GyPT9oH0FoZ8_2O8bcI9ocaWHaJsE0Rqv2WHZzO6Z0yGuMkaCtMYjdIKTHW2aREaCYid73GlT6FWLZH9JIQPp_P9QOez0EOBw=w1280)
diff --git a/docs/create-heroku-postgres.md b/docs/create-heroku-postgres.md
new file mode 100644
index 0000000..e6a4d81
--- /dev/null
+++ b/docs/create-heroku-postgres.md
@@ -0,0 +1,31 @@
+# Heroku Postgresへの接続
+
+Hasuraでデータの保存と検索を実現するためにデータベースを接続します。
+
+このハンズオンでは、データベースとしてHeroku Postgresを利用します。
+
+Hasura Cloudのプロジェクトの[Launch Console]ボタンからHasuraのコンソール画面にアクセスして、Heroku Postgresへの接続を行うことが可能です。
+
+まず、コンソール > [Data Manager] にアクセスします。
+
+![](https://lh3.googleusercontent.com/ekEWHMTkf2qak5oItkay-scmzeiwiaUtNXBvBdCSVSJ3qG25oVc8O_25S4SEWZskj6NqWSfW2eENeEy3iJ94mTw1SmhnL7tONbS_qHHZsgI4l_6sEIdmMnXTEpmF34-aDS2I3Pi7EQ=w1280)
+
+[Create Heroku Database]を選択し、データベース作成パネルを表示します。
+
+![](https://lh3.googleusercontent.com/46sywF2Hl5GGAEsXhAkhhni4_NHcB-kcHiqqJNkZs0HS7zvFy9FZmmWEGLtP-i6F-msLnuJlKPFst8j8_QTCnTcDi1B5diKByqOVDAeuZ_PL1Fo_pDl_DLOBscL-O8ucqZA05_xyjA=w1280)
+
+[Create Database]ボタンを選択し、Heroku Postgresデータベースを新たに作成します。Herokuとの連携を行う際に、初回アクセス時にはHerokuの承認画面が表示されます。[Allow (許諾)]を選択するとHerokuとの連携が完了します。
+
+![](https://lh3.googleusercontent.com/RngvddZ704jKqqPfxGiSEdEkBemMwrz3jApRJQhRqL2Cr0MoV-SxVljdLaglM0XFwkcnIpWFD9zVyUtn9n55LGKG78gJPec6HRrWXrcLbNNnHztycmF-sphYYBkHaRT7Y87nzihdNg=w1280)
+
+一連の手順でHeroku Postgresデータベースを作成すると、Hasuraは自動的にデータベースへの接続を開始します。
+
+![](https://lh3.googleusercontent.com/-0FkvEXZO0FQz0YvrNFdh8JmAMZPbIpaIRygkE4F8xb4Z3ZLMRH9y5pny48-bj-i2nnhbDuqcPKokbznD7X_APL-MkjDeHaxQsJjFyGEY6AxvMBsHwfNOjxPdjQA6S3dGrW1Cz4o0g=w1280)
+
+しばらく待つと、データベースへの接続が完了します。
+
+これであなたはHasuraを利用可能になりました 🎉
+
+![](https://lh3.googleusercontent.com/vJU-gDZJwSNJYAaoq4qu4lAnxhNYGE70rPxmtGct_GyPT9oH0FoZ8_2O8bcI9ocaWHaJsE0Rqv2WHZzO6Z0yGuMkaCtMYjdIKTHW2aREaCYid73GlT6FWLZH9JIQPp_P9QOez0EOBw=w1280)
+
+それでは実際にHasuraを使ってみましょう!
diff --git a/docs/create-project.md b/docs/create-project.md
index b328629..d7d7fac 100644
--- a/docs/create-project.md
+++ b/docs/create-project.md
@@ -1,12 +1,32 @@
# Hasura Cloudプロジェクトの作成
-もし、プロジェクトが存在しない場合、まずプロジェクトの作成を行います。
-すでに存在するプロジェクトを利用する場合は不要です。
+Hasuraを利用するためにHasura Cloudのプロジェクトを作成します。
+
+プロジェクトが存在しない場合、まずプロジェクトの作成を行います。
+すでに存在するプロジェクトを利用する場合は、下記のプロジェクトの作成の作業は不要です。
+
+## プロジェクトの作成
+
+[Hasura Cloudのトップページ](https://cloud.hasura.io/)にアクセスすると、プロジェクトの一覧画面が表示され、[Create Project]ボタンから、プロジェクト作成フォームを開きます。
+
+プロジェクト作成フォームに必要事項を入力します。ここでは例として次の項目を入力します。
+
+| 項目 | 説明 | 例 |
+| --------------------- | --------------------- | ---------------------------------------------------------------- |
+| Choose a pricing plan | 料金プランの選択 | Free Tier - 無料 |
+| Select a region | リージョン | US West (N. California) - 無料で利用可能なデフォルトのリージョン |
+| Enter a project name | プロジェクト名 (任意) | `memo-demo` |
+
+必要事項を入力後、[Create project]ボタンを押し、プロジェクトを作成します。
![](https://lh3.googleusercontent.com/S5JmjK-PKTK1BW7Q0CXxQWfLpy4T8j96n3QqKy9p88fsLXPDX056uR3bC4MlhBJcSUjcSWNoJrc9mkXq3PG4S-Aax55awJrP65MSx6_dpavy0tNEsAE4YGu3X0IImUjYdE_7QesTHA=w1280)
+プロジェクトの作成が完了すると、画面上にプロジェクトの詳細が表示されます。
+
![](https://lh3.googleusercontent.com/OHk3SnMo5zFoulppRwCkAahq6wr4JImN88XgSlkHYeZFhPTd1pHQp4CUXmDDRTAdmsk9kNCJLLzZ0x_yCH1kcnLQ9Zbkq2lm5KIJblFDBU56nJ3sSdposGBFVyUwrEMBXgNmox297A=w1280)
+画面上にプロジェクトが表示されれば完了です。
+
![](https://lh3.googleusercontent.com/LL6dz4np-O19_runPMbCD5-d3kYc1_QUcc1bJif4Yx7dNr16SY4k6037kV82aqg1FrcYff3QGOFTqzyh9ReYyp-j43EtGJercr7dKxdBxcd1nDzPm9bbWFgJOYjhwNDUsGRWNV2d2g=w1280)
-画面上にプロジェクトが表示されれば完了です。
+プロジェクトの[Launch Console]ボタンからHasuraのコンソール画面にアクセスして、Heroku Postgresへの接続を行いましょう。
diff --git a/docs/create-rest-endpoint.md b/docs/create-rest-endpoint.md
index 94bd0a1..43175e3 100644
--- a/docs/create-rest-endpoint.md
+++ b/docs/create-rest-endpoint.md
@@ -1,9 +1,23 @@
# REST APIエンドポイントの作成
-![](https://lh3.googleusercontent.com/WpWX9e0zMECBpUvdyFXyPAxKauwgpNVAwGSLzjt3M99aeL9t90CrqZrdpEf39uh5SKPBeYvfMX0i6KvTuXf39_rccK1o7aohwFL_OCmz0TX-i0Lc2tlJpk5gPMdTrEqzKyElKvPzEQ=w1280)
+ここまでは、GraphQLを使った操作を試しました。この時点でリクエストヘッダーに秘密鍵を与えれば、実際にGraphQL APIエンドポイントを利用することが可能です。
-get page
-GET page/:id
+このハンズオンでは最後にREST APIエンドポイントを作成し、WebアプリケーションからGraphQL APIではなくREST APIを利用します。ここからはそのための手順を説明します。
+
+## 設計
+
+Hasuraは、GraphQL QueryをREST化することが可能です。このハンズオンでは、次の仕様のREST APIエンドポイントを作成します。
+
+| 名称 | HTTPメソッドとパス | 説明 |
+| ------------ | ------------------------ | ------------------------------------------------------------------------------------------------------------------- |
+| ページの取得 | `GET /api/rest/page/:id` | 割り当てられた識別子 `id` をもつページを取得します。レスポンスボディには `data.page.content` プロパティを含みます。 |
+| ページの更新 | `PUT /api/rest/page/:id` | 割り当てられた識別子 `id` をもつページを更新します。リクエストボディには `content` プロパティを与えます。 |
+
+## 「ページの取得 (`GET page/:id`)」エンドポイントの作成
+
+ページを取得するためのREST APIエンドポイントを作成します。
+
+コンソールのトップ画面のGraphiQLのパネルにアクセスし、次のコードを書きます。
```graphql
query getPage($id: Int!) {
@@ -14,12 +28,23 @@ query getPage($id: Int!) {
}
```
+![](https://lh3.googleusercontent.com/WpWX9e0zMECBpUvdyFXyPAxKauwgpNVAwGSLzjt3M99aeL9t90CrqZrdpEf39uh5SKPBeYvfMX0i6KvTuXf39_rccK1o7aohwFL_OCmz0TX-i0Lc2tlJpk5gPMdTrEqzKyElKvPzEQ=w1280)
+
+[REST]ボタンを選択し、REST APIエンドポイント作成フォームを表示します。次の必要事項を入力し、作成ボタンを選択しエンドポイントを作成します。
+
+| 項目 | 説明 | 内容 |
+| -------- | ----------------------- | ---------- |
+| Name | エンドポイントの名称 | get page |
+| Location | `/api/rest/` 以降のパス | `page/:id` |
+| Method | HTTPメソッド | `GET` |
+
![](https://lh3.googleusercontent.com/fKkiNL4nWYUtiG8OfAk8mhTxdJuZQclLLBWheVclr4EcC7ggsZzpI4mTYGQ-6pvWZWApa2acaUJKVjOFy5oHwqhtVfn4arYX01B29yUvOQwWPRIq-6JOBFNTfP_FxoNJNRaseYEMbw=w1280)
-![](https://lh3.googleusercontent.com/yeEU1sF7DR3VA7tWn-FDofpFIfK93q2hssqnn25c_-0bnAbo8WdzdTahQ3HVst7hCniT5hJqHgWS9Pu9zTQorHxErtdp8PSFJmgsU6R0G_oPzF__Up-aSdHQWFc_uuWyVU_Ux50jlw=w1280)
+## 「ページの更新 (`PUT page/:id`)」エンドポイントの作成
-put page
-PUT page/:id
+ページを更新するためのREST APIエンドポイントを作成します。
+
+コンソールのトップ画面のGraphiQLのパネルにアクセスし、次のコードを書きます。
```graphql
mutation putPage($id: Int!, $content: jsonb!) {
@@ -33,4 +58,16 @@ mutation putPage($id: Int!, $content: jsonb!) {
}
```
+![](https://lh3.googleusercontent.com/yeEU1sF7DR3VA7tWn-FDofpFIfK93q2hssqnn25c_-0bnAbo8WdzdTahQ3HVst7hCniT5hJqHgWS9Pu9zTQorHxErtdp8PSFJmgsU6R0G_oPzF__Up-aSdHQWFc_uuWyVU_Ux50jlw=w1280)
+
+[REST]ボタンを選択し、REST APIエンドポイント作成フォームを表示します。次の必要事項を入力し、作成ボタンを選択しエンドポイントを作成します。
+
+| 項目 | 説明 | 内容 |
+| -------- | ----------------------- | ---------- |
+| Name | エンドポイントの名称 | put page |
+| Location | `/api/rest/` 以降のパス | `page/:id` |
+| Method | HTTPメソッド | `PUT` |
+
![](https://lh3.googleusercontent.com/NUKkifFtbdjjti9tga3fHp0-iIc4e48Cz2HrBOUngbaDad5an29hJ9ucn7kG3MXLIyZw80wpfG3aZZrS9kDEYUnl9cV3VB0oZ6LqIRKbHlgUGBF2PJJC9ifLCABZhmn1Rv8u9mZ8qw=w1280)
+
+作成すると作成したREST APIエンドポイントが表示されます。
diff --git a/docs/create-table.md b/docs/create-table.md
index d0fbd57..bc2b134 100644
--- a/docs/create-table.md
+++ b/docs/create-table.md
@@ -1,12 +1,24 @@
# テーブルの作成
+[Data Manager] > [View Database] > [Add a new table]を選択し、新しいテーブルを作成します。
+
+このハンズオンでは、次のデータモデルを作成します。
+
+テーブル名: `pages` - メモ帳のページ
+
+| 項目 | 型 | 説明 |
+| --------- | ------------------------ | ----------------------------------------------------------------------------------- |
+| `id` \* | Integer (auto-increment) | ページの識別子 |
+| `content` | JSONB | ページの本文 ([Quill Deltaオブジェクト](https://quilljs.com/docs/delta/)を使う想定) |
+
+\*: Primary Key
+
+データモデルのための必要事項を入力し、テーブルを作成します。Primary Keyとして `id` (ページの識別子)を選択します。
+
![](https://lh3.googleusercontent.com/nZo9b7TW32khyJBmmxzrk8GZfqWsPSfmPYdNAyIJ_L3tCek0p8zZl6JCCB7zXvmUbFHtnk2LYnzAimbImFC_ZS0aekik4MUr6jkX9wQTAaLCYXit8k1HgAw9aDvCmcGSl7WM_Ue7Rg=w1280)
-
+テーブルの作成が完了するとその作成したテーブルの[Modify]パネルが表示されます。作成したテーブルへの変更はHasuraによって自動的に追従されます。
![](https://lh3.googleusercontent.com/L8V_vs7cCKWrzUlnh9H78aDCgPYjFaLxiZNN76lte8zU3NR9x1-jEy91Hx5hpulA4EfCcdPww7dbBqhzBXUBku6HdGKUvPm_4JZFmZSlX9Xy2mmjCRsyktfZuivCr98CdP-pfJX2uQ=w1280)
+
+これでHasuraからGraphQLによるデータへの操作が可能になります。
diff --git a/docs/create-vue-app.md b/docs/create-vue-app.md
index 2cf44b5..b8f8fdb 100644
--- a/docs/create-vue-app.md
+++ b/docs/create-vue-app.md
@@ -1,6 +1,17 @@
# Vueアプリケーションの作成
-https://qfmmc.csb.app/
+[![Edit in CodeSandbox](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/vue3-hasura-rest-qfmmc?file=/src/App.vue)
+
+このリンクからCodeSandboxにアクセスし、Vueアプリケーションを作成します。
+
+
+
+
+
+なお、URLに含まれる `memo-demo` は、Hasura Cloudプロジェクト名によって異なるので、適宜自分の作成したプロジェクトに合わせて読み替えてください。
```vue
@@ -44,4 +55,10 @@ export default {
![](https://lh3.googleusercontent.com/WYpxLUGM52BZ0m5cQ_ZsEjfljdwLbaFkN47XTKp0Z9BPsDPhVImcR3rt9oWop-59ABCF2ubfsQOw2yyZAoT1GIkcjnZ4DCReg5Qn22pyOVT6DblipYIg3S0OZekcCziKxX9Fc6x_BA=w1280)
+Hasuraのコンソールにアクセスすると、実際にデータが更新されていることを確認することが可能です。
+
![](https://lh3.googleusercontent.com/twteosRUkmMlBoa8PXU3UXC9umek-TzQ1kwOWZIShW7fKvW_4tVtG7B3Ue-olldhxh05x1JTFtt_Oxn2nLxcDPEGBv32bkE2zjpqL7heEjV54jkDgYqOm1tEq02qvnKoqu5yaSKRZA=w800)
+
+Hasuraを使用してPostgresデータベースに接続したREST APIを構築し、それを利用したWebアプリを作成しました。いかがでしたか。
+
+このハンズオンは以上です。もし質問や提案、問題などあれば[GitHub Issues](https://github.com/kou029w/hasura-rest-hands-on/issues/new)にてお気軽にご報告ください。
diff --git a/docs/insert-and-select.md b/docs/insert-and-select.md
index 0ad20f3..9eb5f08 100644
--- a/docs/insert-and-select.md
+++ b/docs/insert-and-select.md
@@ -1,9 +1,18 @@
# GraphQLによるデータの挿入と取得
-
+HasuraからGraphQLによるデータへの操作を行ってみましょう。
+
+コンソールのトップ画面に戻ると、GraphiQL (GraphQLのプレイグラウンド、開発環境) を使ってGraphQL APIを実際に試すことが可能です。
+
+## データの挿入
+
+まずGraphQLでデータの挿入を試します。ここでは例として `pages` テーブルに次のデータを書き込みます。
+
+| 項目 | 説明 | 値 |
+| --------- | ------------ | ----------------------- |
+| `content` | ページの本文 | `{}` - 空のオブジェクト |
+
+GraphQL Queryとしては次のコードを書いて、▶ ボタンからリクエストを行います。
```graphql
@@ -16,8 +25,18 @@ mutation MyMutation {
```
+サーバーにリクエストを発行しレスポンスボディとして得られたデータは、右側のパネルに表示されます。
+
![](https://lh3.googleusercontent.com/ygTdByArh1HC1hmh_Eq76ExXmcy0bq2k2y4uBgS3Gdqs7VPb9SjsjuPa_vB5o55Wt69yswx-UHHbjhLdQLH0Cnd2zLMKIWU8wKpQ_zPXmpKki6H5ugVg8B7qDwfY2qnZthheXM-h9w=w1280)
+問題無くJSONのデータが得られたら、別のデータの書き込みを試してみます。
+
+例として `pages` テーブルに次のデータを書き込みます。
+
+| 項目 | 説明 | 値 |
+| --------- | ------------ | ---------------- |
+| `content` | ページの本文 | `{hey: "hello"}` |
+
```graphql
mutation MyMutation {
@@ -29,10 +48,22 @@ mutation MyMutation {
```
+レスポンスを見ると問題なく `id` (ページの識別子) が得られており、正しく割り当てられ、テーブル内に書き込まれているようですね。
+
![](https://lh3.googleusercontent.com/jJ11PeUPl-HOu38_Om5KSwm0WguYTopL9Gw1SXX7x9RxRfiBfNNp9Su6FtzzEwsQGZNm8HUX76McMs1YfuhnU9tJWgZoJfpma7_Zk8U2SaOgizNV-G4TA4eKIE5yR5cglZai43It2g=w1280)
+実際にデータベースのテーブルに書き込まれていることを確認してみます。[Data Manager] > [View Database] > `pages` テーブルを選択すると[Browse Rows]パネルでテーブル内のデータを確認することが可能です。
+
+先ほどのGraphQL Queryリクエストが問題なく発行され、正しくデータが書き込まれていますね。
+
![](https://lh3.googleusercontent.com/2ExXahoxvOy25dwNkM8YhlVdlo_3T5kjqGDSRzDfV2O3TV3gjK2F03zp_ewSuafsH_nyS0voOsX5G6uahxSgNRp-BpYpQSCFE36v85D_sEaSnfMcGwPnQMI7kWqsV0X1aUAQhnUgqg=w1280)
+## データの取得
+
+上述の `pages` テーブル内からGraphQLでデータの取得を試します。取得するために、データに割り当てられた `id` を使います。
+
+GraphQL Queryとしては次のコードを書いて、▶ ボタンからリクエストを行います。
+
```graphql
query MyQuery {
@@ -44,4 +75,15 @@ query MyQuery {
```
+レスポンスを見ると、問題なく先ほど書き込まれたのテーブル内データが得られていますね。
+
+| 項目 | 説明 | 例 |
+| --------- | -------------- | ---------------- |
+| `id` | ページの識別子 | `2` |
+| `content` | ページの本文 | `{hey: "hello"}` |
+
![](https://lh3.googleusercontent.com/WE8Pqbr0M-RwfGTxoq8uPyZcLkjppcP_g5HVGastYV_pr7Q_mYB9svilyeTRF7G0WK7g4Xgi19AgamY-8h9xuo_05AKb5r96dtiJJpWe7IX7aJjCs9fBssMxhAZUfDA1OsJ1NZ_Yvw=w1280)
+
+GraphQLでデータの挿入と取得を実際に試してみて、いかがでしたか。
+
+このハンズオンではGraphQLの具体的なオペレーション `mutation` や `query`、Hasuraの提供しているデータのCRUDのためのフィールド `insert_*` や `*_by_pk` について詳しくは説明しません。しかし実際にはここで紹介した以外にもさまざまな操作を行うことが可能です。[Explorer]のパネルから実行可能な操作や型、あるいは右側の[< Docs]等からGraphQLの型の詳細を参照してみると、実際の操作の参考になるかと思います。
diff --git a/docs/permissions.md b/docs/permissions.md
index b201770..6a74a9c 100644
--- a/docs/permissions.md
+++ b/docs/permissions.md
@@ -1,17 +1,71 @@
# アクセス権の設定
+アクセス権の設定を行います。Hasuraはテーブルの行単位でアクセス制御を行うことが可能です。このハンズオンでは秘密鍵を持たずとも誰でもREST APIを利用できるようにします。
+
+**注: セキュアではないので本番環境ではJWK等で認証しましょう**
+
+[Data Manager] > [View Database] > `pages` テーブル > [Permissions]パネルから、テーブル内のデータのアクセス件を設定可能です。
+
+認証・認可していない利用者のために、ここでは例として `anonymous` ロールを割り当てます。
+
![](https://lh3.googleusercontent.com/Uq0iRyw6DlL5jbIMpL9xEpC-4tX1S-RZSIyFM4uCbTQAXD6nWy8l7Y7QLv0Akq4dKKzD88Tyn1rZfW7bDSI2Y_RRV55upoQBIPmvwvvsK-vo8A9q4y1Ys5Zw9dEmU366_uxRr-hBrg=w1280)
+## insert (データの挿入) 権限の設定
+
+`anonymous` ロールの行 > insert の列を選択し、データの挿入の権限の設定を行います。
+
+下記の項目を選択し、[Save Permissions]ボタンで権限を保存します。
+
+- Row insert permissions > Without any checks
+- Column insert permissions > `id` `content` ([Toggle All]ボタンを押す)
+
![](https://lh3.googleusercontent.com/IqvuzDGhNd8qYoFVlmJxjbP2iUQnz1V93jk4fGOv62QjJMpvMRS5LGOpaCoiJljIDdNqLqCII3J8b4yXx2IuAzAe0EBK9BkGaMq4MYn_NPOe2naCF9T_Vhz5csmH8dPDDCFQNDBnMw=w1280)
+## select (データの取得) 権限の設定
+
+`anonymous` ロールの行 > select の列を選択し、データの取得の権限の設定を行います。
+
+下記の項目を選択し、[Save Permissions]ボタンで権限を保存します。
+
+- Row select permissions > Without any checks
+- Column select permissions > `id` `content` ([Toggle All]ボタンを押す)
+
![](https://lh3.googleusercontent.com/ZbyxyVmmbqOtKD5sJsCeD_iG8v5qP_iYbFHM6PDfsFTNtdVmAfkXd9kzB8i_ZMLqDVbJguI0GS1aHmSj_7kgL3x-AyPth6x0WhEQQyb5JWgiU2sAzRAL_rjXNIkWQLHYn1T8p1o_Mg=w1280)
+## update (データの更新) 権限の設定
+
+`anonymous` ロールの行 > update の列を選択し、データの取得の権限の設定を行います。
+
+下記の項目を選択し、[Save Permissions]ボタンで権限を保存します。
+
+- Pre-update check > Without any checks
+- Post-update check > Without any checks
+- Column update permissions > `id` `content` ([Toggle All]ボタンを押す)
+
![](https://lh3.googleusercontent.com/kD9ZrdOSbLuWZ-i8Z_e9NyHcNX3y05RaC3Wf9TQv80TY7kWctQ0yrpPF2Xj1tx4nKrRgLNwzYsMc9zjQEh5MiqNHvXOQGipQ6L0NkVU-S8KmDM7zdJM78ZxeEfG52bWza32HYux47g=w1280)
+`anonymous` ロールのinsert、select、updateに✅マークが入っていれば完了です。
+
![](https://lh3.googleusercontent.com/GxpRsX2PER72FUWX-xQRF5pjGwHa0fydneULevgxMNqJfK4-z62D1ig7qKnRgijB37zAoKmCMlCd3ZvqXJqhoXwGXkYK30pB2a93YeOdIWELjjPqMla9OKRpMC99LN3tqosd_CpcuQ=w1280)
+## 環境変数 `HASURA_GRAPHQL_UNAUTHORIZED_ROLE=anonymous` の設定
+
+Hasuraの環境変数として `HASURA_GRAPHQL_UNAUTHORIZED_ROLE=anonymous` を与えることで、認証・認可していない利用者に割り当てられるロールを設定します。
+
+Hasura Cloudのプロジェクトの画面に戻り、[Env vars]にアクセスします。
+
![](https://lh3.googleusercontent.com/egQYbjJjs_0kLlCmPpHe93odORHapxeZn-aEleKKFq2kPEtODMUd_j65aHPftyBZ_sMz9Ypy6P55fIk0KrIl1UC-mbL6zerBj7uYB0c0MofDz2I7sKC066oHsTN4BEjjxFz1fo54gA=w1280)
+[+ New Env Var]ボタンを押して、環境変数を追加します。
+
+| 環境変数 | 説明 | 値 |
+| ---------------------------------- | ---------------------------------------------- | ----------- |
+| `HASURA_GRAPHQL_UNAUTHORIZED_ROLE` | 認証・認可されていない利用者に割り当てるロール | `anonymous` |
+
+入力後、[Add]ボタン押して追加します。
+
![](https://lh3.googleusercontent.com/TZHIQuC6MviESxMktg2GYuS7yLJXrJCnhrGmVlB60EFaUpPalW6rVfHo01x5lWPvWwu047JLFSnCK22LDxL1m1fSH_OKzAopA9aV6sHGdLRSLUEOBS7i-cUBlR0TQvsIQG27Ky8obA=w1280)
![](https://lh3.googleusercontent.com/C1hwqyYYH8jtAZfkJG5y6DlOn7mYn9cXI1Er5xnGKZcddVw7dP_yj8_-j7v9D-SOjOi0Pu1qM74fLRu9XjSjFkU6LWbNysgS7QVU1ROqVJf0Ic0Hwud4rZyoxhopks2G8veA9SIMWg=w1280)
+
+REST APIエンドポイントをWebアプリから利用する準備が整いました 🎉
diff --git a/docs/preparation.md b/docs/preparation.md
index d8a944b..a6c43f3 100644
--- a/docs/preparation.md
+++ b/docs/preparation.md
@@ -1,6 +1,8 @@
# 事前準備
-あらかじめ下記のアカウントに登録しておきましょう。
+まず、事前準備としてあらかじめ下記のアカウントに登録しておきましょう。
- [Herokuのアカウント登録](signup-heroku.md)
- [Hasura Cloudのアカウント登録](signup-hasura-cloud.md)
+
+もし、すでにアカウント登録済みであれば、[Hasura Cloudプロジェクトの作成の章](create-project.md)まで読み飛ばしてください。