diff --git a/deno-kv/README.md b/deno-kv/README.md index 3dfa66c9..243d9d6d 100644 --- a/deno-kv/README.md +++ b/deno-kv/README.md @@ -6,14 +6,14 @@ ## 1. 目次 -1. [導入編 (15min)](./docs.md/#1-導入編) - - 1-1. [データベースとは何か](./docs.md/#1-1-データベースとは何か) - - 1-2. [Deno KVとは何か?](./docs.md/#1-2-deno-kvとは何か) -2. [実践編 (45-60min)](./docs.md/#2-実践編) - - 2-0. [Deno Deployで新規Playgroundを作成しよう](./docs.md/#2-0-deno-deployで新規playgroundを作成しよう) - - 2-1. [set: Deno KVにデータを保存する](./docs.md/#2-1-set-deno-kvにデータを保存する) - - 2-2. [get/getMany/list: Deno KVからデータを取得してみよう](./docs.md/#2-2-getgetmanylist-deno-kvからデータを取得してみよう) - - 2-3. [delete: Deno KVからデータを削除してみよう](./docs.md/#2-3-delete-deno-kvからデータを削除してみよう) +1. [導入編 (15min)](./docs.md#1-導入編) + - 1-1. [データベースとは何か](./docs.md#1-1-データベースとは何か) + - 1-2. [Deno KVとは何か?](./docs.md#1-2-deno-kvとは何か) +2. [実践編 (45-60min)](./docs.md#2-実践編) + - 2-0. [実践の準備をしよう](./docs.md#2-0-実践の準備をしよう) + - 2-1. [set: Deno KVにデータを保存する](./docs.md#2-1-set-deno-kvにデータを保存する) + - 2-2. [get/getMany/list: Deno KVからデータを取得してみよう](./docs.md#2-2-getgetmanylist-deno-kvからデータを取得してみよう) + - 2-3. [delete: Deno KVからデータを削除してみよう](./docs.md#2-3-delete-deno-kvからデータを削除してみよう) ## 2. URL diff --git a/deno-kv/docs.md b/deno-kv/docs.md index 94d2a210..d7716f69 100644 --- a/deno-kv/docs.md +++ b/deno-kv/docs.md @@ -9,8 +9,8 @@ ### 1-1. データベースとは何か? -> データベースとは、構造化した情報またはデータの組織的な集合であり、通常はコンピューター・システムに電子的に格納されています。 -> 出典: https://www.oracle.com/jp/database/what-is-database/ +> データベースは、情報を保存、管理、取得するための構造化されたシステムです。 +> 出典: https://cloud.google.com/discover/databases?hl=ja データベースは、データを構造化して保存するためのシステムです。 データの保存が必要となる多くのアプリケーションで使用されています。ファイル等に単純に保存する場合と比較してデータが扱いやすくなっています。 @@ -30,7 +30,7 @@ MongoDBやDynamoDB、Cloud Firestoreなどが代表的です。 ### 1-2. Deno KVとは何か? -Deno KVは、Deno Land Inc.から提供されているDeno用NoSQLデータベースです。key-valueデータベースに分類されます。Deno公式から提供されていることもあり、Denoから比較的容易に利用できます。β版なので機能は限定的ですが、個人開発程度であれば、十分な性能を発揮してくれるでしょう。 +Deno KVは、Deno Land Inc.から提供されているDeno用NoSQLデータベースです。key-valueデータベースに分類されます。Deno公式から提供されていることもあり、Denoから比較的容易に利用できます。開発途上の機能なので仕様が変わる可能性はありますが、個人開発程度であれば、十分な性能を発揮してくれるでしょう。 Deno KVでは、以下のような形式でデータを保存します。ここでは、学校の名簿を想定して例を記載しています。 keyに対してvalueが一意に紐づくため、keyとvalueのデータ構造は慎重に決定しましょう。 @@ -50,7 +50,7 @@ keyに対してvalueが一意に紐づくため、keyとvalueのデータ構造 *Deno KVを実際に使ってみよう!* -### 2-0. Deno Deployで新規Playgroundを作成しよう +### 2-0. 実践の準備をしよう Deno Deployには、Denoのコードを簡単に記述・実行・デプロイできるPlaygroundという機能が搭載されています。ここでは、簡単のためPlaygroundを使用してみましょう。 @@ -63,15 +63,15 @@ Deno Deployには、Denoのコードを簡単に記述・実行・デプロイ
練習: DenoのPlaygroundを作ってみよう -1. [Deno Deploy](https://deno.com/deploy)にログインします +1. [Deno Deploy](https://console.deno.com)にログインします -2. ページ右側の「New Playground」をクリックします -![](./imgs/201_create_play_ground.png) +2. 「Apps」ページの「New Playground」をクリックします +![](./imgs/201_create_playground.png) 3. 以下のような画面が開けばOKです -![](./imgs/202_empty_play_ground.png) +![](./imgs/202_empty_playground.png) -4. 画面左側のコードを以下のように書き換えて、「Media Type」をTSからJSに変更して、「Save & Deploy」をクリックします +4. 画面中央のコードを以下のように書き換えて、「Deploy」をクリックします ```js Deno.serve(async(req) => { @@ -79,12 +79,27 @@ Deno.serve(async(req) => { }); ``` -5. 画面右側のブラウザが書き換わればOKです +5. 画面右側の「PREVIEW」に「Hello Deno」と表示されればOKです -6. [Deno Deployのホーム画面](https://dash.deno.com/account/overview)を開き、作成したアプリケーションを開きます +
+ +
+練習: Deno KVのデータベースを用意しよう + +Deno KVを使うには、データベースを作成して、Playgroundに紐づけます。 + +1. Playgroundの「Settings」から「Databases」を開き、「Deno KV」の「+ Attach」をクリックします +![](./imgs/203_attach_kv.png) -7. 以下のような画面が開けばOKです。この画面を(ここでは便宜上)Project画面と呼びます -![](./imgs/203_play_ground_dashboard.png) +2. 「Select a KV database」を開き、「+ Provision new Deno KV」を選びます + +3. 「Slug」に`deno-kv-tutorial`と入力します。「Write Region」はそのままで構いません +![](./imgs/204_provision_kv.png) + +4. 「Provision Deno KV」をクリックし、続けて「Attach database」をクリックします + +5. 「Instance」に作成したデータベースが表示されればOKです +![](./imgs/205_attached_kv.png)
@@ -119,7 +134,8 @@ Deno.serve(async(req) => { }); ``` -2. 「Save & Deploy」をクリックして、ログに「Kv {}」と表示されていることを確認します +2. 「Deploy」をクリックして、画面下部の「LOGS」に「Kv {}」と表示されていることを確認します +![](./imgs/206_init_kv_log.png) @@ -144,13 +160,9 @@ Deno.serve(async(req) => { }); ``` -2. 「Save & Deploy」をクリックして、ログに保存ログが表示されていることを確認します - -3. Deno DeployのProject画面から、Deno KVに保存された値を確認します +2. 「Deploy」をクリックして、ログに`{ ok: true, versionstamp: "..." }`と表示されていることを確認します -4. 以下のようになっていたらOKです -![](./imgs/205_kv_tab.png) -![](./imgs/206_kv_data_viewer.png) +> Topic: `versionstamp`は、そのデータが何番目の更新で書き込まれたかを表す値です。同じkeyを更新すると変化します @@ -176,9 +188,7 @@ Deno.serve(async(req) => { }); ``` -2. 「Save & Deploy」をクリックして、ログに保存ログが表示されていることを確認します - -3. Deno DeployのProject画面から、Deno KVの更新された値を確認します +2. 「Deploy」をクリックして、ログの`versionstamp`が先程と変わっていることを確認します @@ -209,9 +219,9 @@ Deno.serve(async(req) => { }); ``` -2. 「Save & Deploy」をクリックして、ログに保存ログが表示されていることを確認します +2. 「Deploy」をクリックして、エラーが出ていないことを確認します -3. Deno DeployのProject画面から、Deno KVの更新された値を確認します +> Topic: ここで追加したデータは、次の2-2で取得して確認します @@ -268,7 +278,7 @@ Deno.serve(async(req) => { }); ``` -2. 「Save & Deploy」をクリックして、ログに取得された値が出力されるのを確認します +2. 「Deploy」をクリックして、ログに取得された値が出力されるのを確認します @@ -297,7 +307,7 @@ Deno.serve(async(req) => { }); ``` -2. 「Save & Deploy」をクリックして、ログに取得された値が出力されるのを確認します +2. 「Deploy」をクリックして、ログに取得された値が出力されるのを確認します @@ -327,7 +337,7 @@ Deno.serve(async(req) => { }); ``` -2. 「Save & Deploy」をクリックして、ログに取得された値が出力されるのを確認します +2. 「Deploy」をクリックして、ログに取得された値が出力されるのを確認します 3. `list`では、範囲指定のデータを取得することもできます。`key: ["student", 1]~["student", 2]`のデータを取得してみましょう @@ -354,7 +364,7 @@ Deno.serve(async(req) => { }); ``` -4. 「Save & Deploy」をクリックして、ログに取得された値が出力されるのを確認します +4. 「Deploy」をクリックして、ログに取得された値が出力されるのを確認します @@ -367,10 +377,8 @@ Deno KVに保存したデータを削除してみましょう。データの削 const kv = await Deno.openKv(); // データを削除 -const result = await kv.delete(["hoge"]); - -// レスポンスを表示 -console.log(result); +// setと異なり、戻り値はありません +await kv.delete(["hoge"]); ```
@@ -394,9 +402,17 @@ Deno.serve(async(req) => { }); ``` -2. 「Save & Deploy」をクリックします +2. 削除されたことを確認するために、`get`で読み出すコードを書き加えます + +```diff + // データを削除 + await kv.delete(["student", 1]); ++ ++ const deletedResult = await kv.get(["student", 1]); ++ console.log("deleted_result: ", deletedResult); +``` -3. Deno DeployのProject画面から、Deno KVの値が削除されていることを確認します +3. 「Deploy」をクリックして、ログの`value`が`null`になっていることを確認します
diff --git a/deno-kv/imgs/201_create_play_ground.png b/deno-kv/imgs/201_create_play_ground.png deleted file mode 100644 index 12597e56..00000000 Binary files a/deno-kv/imgs/201_create_play_ground.png and /dev/null differ diff --git a/deno-kv/imgs/201_create_playground.png b/deno-kv/imgs/201_create_playground.png new file mode 100644 index 00000000..4ce03f4e Binary files /dev/null and b/deno-kv/imgs/201_create_playground.png differ diff --git a/deno-kv/imgs/202_empty_play_ground.png b/deno-kv/imgs/202_empty_play_ground.png deleted file mode 100644 index 050c2102..00000000 Binary files a/deno-kv/imgs/202_empty_play_ground.png and /dev/null differ diff --git a/deno-kv/imgs/202_empty_playground.png b/deno-kv/imgs/202_empty_playground.png new file mode 100644 index 00000000..7d019165 Binary files /dev/null and b/deno-kv/imgs/202_empty_playground.png differ diff --git a/deno-kv/imgs/203_attach_kv.png b/deno-kv/imgs/203_attach_kv.png new file mode 100644 index 00000000..a0bd6d07 Binary files /dev/null and b/deno-kv/imgs/203_attach_kv.png differ diff --git a/deno-kv/imgs/203_play_ground_dashboard.png b/deno-kv/imgs/203_play_ground_dashboard.png deleted file mode 100644 index 36f24d88..00000000 Binary files a/deno-kv/imgs/203_play_ground_dashboard.png and /dev/null differ diff --git a/deno-kv/imgs/204_init_kv_log.png b/deno-kv/imgs/204_init_kv_log.png deleted file mode 100644 index ec2bab06..00000000 Binary files a/deno-kv/imgs/204_init_kv_log.png and /dev/null differ diff --git a/deno-kv/imgs/204_provision_kv.png b/deno-kv/imgs/204_provision_kv.png new file mode 100644 index 00000000..2ef2ecf9 Binary files /dev/null and b/deno-kv/imgs/204_provision_kv.png differ diff --git a/deno-kv/imgs/205_attached_kv.png b/deno-kv/imgs/205_attached_kv.png new file mode 100644 index 00000000..01cc52bd Binary files /dev/null and b/deno-kv/imgs/205_attached_kv.png differ diff --git a/deno-kv/imgs/205_kv_tab.png b/deno-kv/imgs/205_kv_tab.png deleted file mode 100644 index a5582254..00000000 Binary files a/deno-kv/imgs/205_kv_tab.png and /dev/null differ diff --git a/deno-kv/imgs/206_init_kv_log.png b/deno-kv/imgs/206_init_kv_log.png new file mode 100644 index 00000000..741f2fc8 Binary files /dev/null and b/deno-kv/imgs/206_init_kv_log.png differ diff --git a/deno-kv/imgs/206_kv_data_viewer.png b/deno-kv/imgs/206_kv_data_viewer.png deleted file mode 100644 index 8623832c..00000000 Binary files a/deno-kv/imgs/206_kv_data_viewer.png and /dev/null differ