TiDB User Day 2024のアーカイブ動画を公開中!詳細を見る
tcds-backend-banner

※このブログは2024年2月2日に公開された英語ブログ「Mastering TiDB Cloud Data Service–Your Ultimate Guide to Building a Data-Driven Backend」の拙訳です。

前回の投稿では、TiDB Cloud Data ServiceData Service (TCDS) をご紹介しました。TCDSは、フルマネージドでローコードのバックエンド・アズ・ア・サービス・ソリューションです。TCDSは、HTTPSを通じてデータをあらゆるアプリケーションやサービスとシームレスに統合することで、開発者がセキュアでスケーラブルなデータ駆動型アプリケーションを迅速に構築できるようにします。

このブログでは、Task Trackerアプリを構築しながら、TCDSを使ってRESTエンドポイントを構築する方法を説明します。バックエンド開発に焦点を当て、クラスタとテーブルの作成、データの挿入、APIの作成について説明します。また、VercelでホストされているReactフロントエンドとバックエンドを統合する手順も説明します。このチュートリアルが終わるころには、TCDSを包括的に理解し、初心者から熟練開発者まで対応できる、完全に機能するバックエンド・ソリューションを身につけることができます。

TiDB Serverlessクラスタのセットアップ

以下の手順で、無料のTiDB Serverlessクラスタを作成してください: 

  1. TiDB Cloudにサインインします。TiDB Cloudのアカウントをお持ちでない場合は登録してください。
  2. 画面に表示される指示に従って、数秒で無料のServerless Tierクラスタを作成します。

データモデルの作成

  1. クラスタの概要ページに移動し、左側のChat2Queryインターフェイスに入ります。
  2. 以下の SQL スクリプトを実行し、tasktrackerデータベースとその中のtodosテーブルを作成します。スクリプトには、todos テーブルへのサンプルデータの挿入も含まれています。タスク・トラッカー・アプリケーションは、個々のタスクと、タイトル、説明、ステータス、タイムスタンプなどの関連情報を保存するために、このテーブルを使用します。

    CREATE DATABASE tasktracker;

    USE tasktracker;

    CREATE TABLE todos (
    `id`INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `task`VARCHAR(255) NOT NULL,
    `description` TEXT,
    `status`VARCHAR(50) NOT NULL,
    `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
    `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

    INSERT INTO todos (task, description, status) VALUES
    ('Grocery Shopping', 'Buy groceries for the week including fruits, vegetables, and dairy products', 'Incomplete'),
    ('Email Client', 'Send the revised project proposal to the client by EOD', 'Incomplete'),
    ('Gym Session', 'Attend the 6 PM cardio fitness class at the local gym', 'Completed'),
    ('Book Flight Tickets', 'Book tickets for the upcoming business trip to New York', 'Incomplete'),
    ('Annual Health Checkup', 'Schedule an annual health checkup appointment with Dr. Smith', 'Completed');

    SELECT * FROM todos;
  3. スクリプト内のすべてのステートメントを選択し、「Run」ボタンをクリックして実行します。

GitHubとの統合でデータアプリを作る

Data Appは、Endpointのようなオブジェクトのコレクションから構成されるコンテナです。データアプリの作成は、RESTエンドポイントを生成するための初期段階です。データアプリを作成するには

  1. 左のナビゲーションメニューから「Data Service」を選択し、「Create Data App」ボタンをクリックします。
  2. 標準データアプリを以下のように作成し、設定します:
    • アプリの名前を決める:Data App Name欄に「Todo App」と入力してください。
    • データソースをリンクする:アプリに関連付けるクラスタを選択します。この例では 「Cluster0 」を選択します。
    • アプリについて説明する: 「Description」 フィールドに「This is a Task Tracking Application designed to efficiently manage tasks」と入力してください。この簡単な説明でアプリの目的を紹介します。
    • アプリ種類の設定:「 Data App Type」フィールドはデフォルト設定のままにしておきます。
  3. GitHubに接続する (オプション)

    GitHubと統合することで、GitHubリポジトリと特定のブランチをTCDSプロジェクトにリンクできます。これにより、Data Appのメタデータとエンドポイントを、接続されたプロジェクトに直接自動デプロイすることができます。こちらをご覧ください:

    1. GitHubアカウントにログインし、タスクトラッカープロジェクト用のtodo-appを作成します。
    2. Create Data App画面で、画面の指示に従って、ターゲットリポジトリにアプリケーションとしてData Serviceをインストールします。
    3. Authorizeをクリックして、GitHub上のタスクトラッカーアプリケーションへのアクセスを許可します。
    4. 設定ファイルを保存するために、スクリーンショットに示すように、todo-appのリポジトリ、ブランチ、ディレクトリを指定します。これにより、TCDSはバックエンドAPIの作成プロセスを完了することができます。
  4. Create」ボタンをクリックして、Data Appを作成します。

データ・アプリケーションを作成すると、データ・アプリケーションのホームページが表示されます。初めての方のために、データサービス入門チュートリアルが用意されています。このチュートリアルでは、エンドポイントを作成する各ステップを説明します。

エンドポイントの作成

このセクションでは、’todos’ テーブルに対する CRUD (Create, Read, Update, Delete) 操作を可能にする 4 つの HTTPS エンドポイント (POST, GET, PUT, DELETE) を設定する手順を説明します。より詳細な情報については、新しいエンドポイントの作成に関するドキュメントを参照ください。

POST /todos

POST /todosエンドポイントを使うと、todos テーブルに新しいタスクを作成できます。以下の手順でエンドポイントを作成します:

  1. エンドポイントの作成を開始:Todoアプリの左ナビゲーションバーで「+」マークをクリックし、「Create Endpoint」オプションを選択します。
  2. エンドポイントのプロパティを設定:Properties」タブに移動します。
    • Pathを「/todos 」と入力します。リクエスト・メソッドを「POST」に設定します。
    • エンドポイント名は、デフォルトでは入力されたパス値から自動的に生成されます。
     
  3. SQLを構成:SQL 構成はエンドポイントのビジネスロジックを定義します。このエンドポイントでは、次の SQL スクリプトを使用して新しいタスクレコードを挿入します: 

    USE tasktracker;
    INSERT INTO `todos` (`task`,`description`,`status`)
    VALUES (${task},${description},${status});
    SQLスクリプトをSQL Editorウィンドウにコピーします:
  4. エンドポイントのパラメーターを設定:パラメータはエンドポイントに柔軟性を与える変数です。これらは自動的に生成されます。特定のニーズに合わせて調整することができます。
    「Params」タブに移動して、多数の設定オプションを調べます:
    • パラメータを必須にするには「Required」を設定します。パラメータ・タイプをデータ・モデルに合わせます。
    • オプションの設定には、Enum Value (列挙値)Default Value (デフォルト値)、およびDescription (説明) が含まれます。todos エンドポイントでは、デフォルトのパラメータ設定で十分です。エンドポイントパラメータの設定の詳細については、ドキュメントを参照してください。

最初の POST /todos エンドポイントの作成に成功しました!では、残りのエンドポイントも同様の手順で作成してみましょう。

GET /todos 

GET /todos エンドポイントは、todos テーブルに保存されているすべてのタスクを取得します。このエンドポイントを効果的に作成・設定するには、以下の手順に従ってください:

  1. Properties」タブに移動して、エンドポイントのプロパティを設定します:
    • Pathを「 /todos」と入力します。
    • リクエスト・メソッドを「GET (デフォルト)」に設定する。
  2. 以下のSQLスクリプトをSQL Editorウィンドウにコピーします:

    USE tasktracker;
    SELECT * FROM `todos` ;

注:このエンドポイントにはパラメーターはありません。

PUT /todos

PUT /todosエンドポイントは、特にタスクのステータスが変更されたときにタスクを更新します。このエンドポイントを効果的に作成し設定するには、以下の手順に従います: 

  1. エンドポイントのプロパティを設定するには「Properties」タブに移動します:
    • Pathを「/todos」と入力します。
    • リクエスト・メソッドを「PUT」に設定します。
  2. 以下のSQLスクリプトを「SQL Editor」ウィンドウにコピーします:

    USE tasktracker;
    UPDATE `todos` SET
    `status` = IF(length(${status})>0,${status},`status`),
    `task` = IF(length(${task})>0,${task},`task`),
    `description` = IF(length(${description})>0,${description},`description`)
    WHERE `id` = ${id} ;
  3. 上記のSQLスクリプトは、識別と更新のために各タスクのIDを使用します。従って、以下のようにIDパラメータを正しく設定することが不可欠です:
    • idパラメータを「Required」に設定する。
    • タイプをデフォルトの文字列から「Number」に変更する。これはtodosテーブルのidフィールドの型と一致します。

DEL /todos

DELETE /todosエンドポイントはタスクを削除します。このエンドポイントを効果的に作成および構成するには、以下の手順に従います:

  1. エンドポイントのプロパティを設定するには「Properties」タブに移動します:
    • Pathを「 /todos」と入力します。 
    • リクエストメソッドを「DELETE」に設定します。
  2.   以下のSQLスクリプトを「SQL Editor」ウィンドウにコピーします:

    USE tasktracker;
    DELETE FROM `todos` WHERE `id` = ${id} ;
  3. PUT /todosエンドポイントと同じ設定を使って、エンドポイントパラメーターを設定します:
    • idパラメータを「Required」に設定します。
    • タイプをデフォルトの文字列から「Number」に変更します。これはtodosテーブルのidフィールドの型と一致します。

エンドポイントのテスト

新しいエンドポイントを実際のアプリケーションに統合する前に、ローカルでテストして期待通りに機能することを確認することが重要です。POST /todosエンドポイントを例にして、テストの手順を説明します:

  1. エンドポイントリストで「POST /todos」を選択します。
  2. Params」タブでTest Valuesセクションに移動し、以下のようにテスト値を設定します:
    • タスクに 「Pay Internet Bill 」と入力します。
    • 説明は「May Internet Bill (5月分インターネット請求書)」と入力します。
    • ステータスは「Incomplete」と入力します。
  3. テスト値を設定したら、画面右上の「Test」ボタンをクリックします。

テストを実行すると、ステータスコード 200 の HTTP レスポンスが返ってくるはずです。これは、POST /todosエンドポイントのテストが成功したことを示しています。同じように、残りのエンドポイントも検証して、アプリケーション全体の堅牢性と信頼性を確保しましょう。

エンドポイントのデプロイ

徹底的なテストが終わったら、いよいよエンドポイントをデプロイして外部クライアントからアクセスできるようにします。各エンドポイントのデプロイ方法は以下の通りです: 

  1. 右上の「Deploy」ボタンをクリックします。「Review Changes」ダイアログがポップアップします。
  2. 編集の最終確認を行い、すべてが正しく設定されていることを確認します。
  3. Deploy and Push to GitHub」ボタンをクリックします。これでエンドポイントが公開され、変更が GitHub リポジトリにプッシュされます。
  4. 残りのエンドポイントについても同じデプロイメントプロセスを繰り返します。
  5. GitHubに移動し、先ほど設定したbackend/http_endpointsフォルダにデプロイされたエンドポイントの設定ファイルがあるかどうかを確認します。

API Keyの作成

新しいエンドポイントを探索する前に、安全な認証のためにAPI Keyを設定する必要があります。ここではその作成方法を説明します:

  1. 「Todo App」をクリックして、データアプリのホームページに移動します。
  2. Settingsメニューの中にある認証セクションを探し、「Create API Key」ボタンをクリックします。
  3. Create API Key」ポップアップ・ウィンドウで、以下を指定します:
    • Description」に「TaskTrackerKey」と入力します。
    • Role」の設定を「ReadAndWrite」にします。
  4. Next」をクリックし、「Public Key」と「Private Key」を生成します。両方のKeyをコピーし、安全でアクセスしやすい場所に安全に保管してください。
  5. Done」をクリックし、Data Appのホーム画面に戻ります。

これでAPI Keyが正常に作成され、新しく作成したエンドポイントでの認証に使用できるようになりました。

エンドポイントの探索

API Keyを取得したら、今度は新しく作成したエンドポイントの機能を調べてみましょう。これには主に2つの方法があります:

  • APIドキュメント:TCDSに組み込まれたSwaggerドキュメントを活用します。
  • Postman:TCDSに統合されたPostmanサポートを活用します。

このチュートリアルでは、Swagger UI経由のAPI Documentationを使用します。Postmanとの統合の詳細については、ドキュメントを参照してください。

  1. Data Appのホームページで、「View API Docs」をクリックします。API Docsウィンドウがポップアップ表示され、Swagger UIを通じて生成されたAPIドキュメントが表示されます。
  2. 右上の「Authorize」ボタンをクリックして、エンドポイントへのアクセスを承認します。前のステップで取得したAPI Keyを使用します:
    • 「Public Key」をユーザー名として入力します。
    • パスワードに「Private Key」を入力します。

これでバックエンドアプリケーションの作成は終了です。

POST、GET、PUT、DELETEメソッドによるセキュアなエンドポイントを使用して、todosテーブルのデータを作成、取得、更新、削除できるようになりました。

Vercelでタスクトラッカーを可視化

おめでとうございます!タスクトラッカーアプリの完成まであと数歩です。フロントエンドのプレゼンテーションを完成させるために、Vercelを使ってデプロイしましょう。詳しいデプロイ手順はGitHub ReadmeVercelのドキュメントをご参照ください。

  1. フロントエンドのコードを統合する:次の手順に従って、フロントエンドのコードを自分のリポジトリにコピーしてください。
  2. Vercelプロジェクトを設定する:フロントエンドのコードを統合した後は、Vercelプロジェクトを設定しましょう。
  3. Vercelプロジェクトをデプロイする:すべての設定が完了し、Vercelにプロジェクトをデプロイする準備が整いました。この最後のステップで、あなたのタスクトラッカーアプリが動き出し、オンラインでアクセスできるようになります。

まとめ

TCDS は、アプリケーションの構築と管理のための、ユーザーフレンドリでスケーラブル、かつ信頼性の高いプラットフォームを提供します。本ガイドで紹介するように、TCDSはCRUDエンドポイントの迅速な作成を可能にし、迅速なアプリケーション開発と展開を促進します。

TCDSでローコード開発の世界に飛び込む準備はできましたか?始めるのは簡単です。

TiDB Serverlessにサインアップし、ガイドに従えば、TCDSをマスターする道が開けます。TCDSの可能性を最大限に引き出すためのガイドとベストプラクティスを満載した、今後のハウツーブログにご期待ください。


Try TiDB Serverless

  • 25 GiB Free
  • Auto-Scale with Ease
  • MySQL Compatible
Start Now

Have questions? Let us know how we can help.

Contact Us

TiDB Cloud Dedicated

TiDB Cloudのエンタープライズ版。
専用VPC上に構築された専有DBaaSでAWSとGoogle Cloudで利用可能。

TiDB Cloud Serverless

TiDB Cloudのライト版。
TiDBの機能をフルマネージド環境で使用でき無料かつお客様の裁量で利用開始。