メインコンテンツまでスキップ
バージョン: 3.14

Kotlin を使って ScalarDB をはじめよう

注記

このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。

この入門チュートリアルでは、ScalarDB で好みのデータベースを設定し、Kotlin を使用して基本的な電子マネーアプリケーションをセットアップする方法について説明します。Kotlin は Java との相互運用性を備えているため、Kotlin から直接 ScalarDB を使用できます。

警告

電子マネーアプリケーションはこのチュートリアル用に簡略化されており、実稼働環境には適していません。

このサンプルアプリケーションの前提条件

ScalarDB は Java で記述されているため、環境に次のいずれかの Java Development Kit (JDK) がインストールされている必要があります。

注記

このサンプルアプリケーションは、Eclipse Temurin の OpenJDK でテストされています。ただし、ScalarDB 自体は、さまざまなベンダーの JDK ディストリビューションでテストされています。互換性のある JDK ディストリビューションを含む ScalarDB の要件の詳細については、要件を参照してください。

ScalarDB サンプルリポジトリのクローンを作成する

Terminal を開き、次のコマンドを実行して ScalarDB サンプルリポジトリのクローンを作成します。

git clone https://github.com/scalar-labs/scalardb-samples

次に、次のコマンドを実行して、サンプルアプリケーションが含まれているディレクトリに移動します。

cd scalardb-samples/scalardb-kotlin-sample

データベースをセットアップする

データベースを選択し、指示に従って ScalarDB 用に設定します。

ScalarDB がサポートするデータベースの一覧については、データベースを参照してください。

MySQLをローカルで実行する

scalardb-samples/scalardb-kotlin-sample ディレクトリの docker-compose.yml ファイルを使用して、Docker Compose で MySQL を実行できます。

MySQL を起動するには、次のコマンドを実行します。

docker compose up -d mysql

ScalarDB を設定する

scalardb-samples/scalardb-kotlin-sample ディレクトリの database.properties ファイルには、ScalarDB のデータベース設定が含まれています。database.properties ファイル内の MySQL のプロパティのコメントを解除して、設定が次のようになるようにしてください。

# For MySQL
scalar.db.storage=jdbc
scalar.db.contact_points=jdbc:mysql://localhost:3306/
scalar.db.username=root
scalar.db.password=mysql

データベーススキーマをロードする

アプリケーションでデータベーススキーマ (データを整理する方法) を定義する必要があります。サポートされているデータ型の詳細については、ScalarDB と他のデータベース間のデータ型マッピングを参照してください。

このチュートリアルでは、schema.json というファイルが scalardb-samples/scalardb-kotlin-sample ディレクトリに既に存在します。スキーマを適用するには、scalardb Releases ページに移動し、使用している ScalarDB のバージョンに一致する ScalarDB Schema Loader を scalardb-samples/scalardb-kotlin-sample ディレクトリにダウンロードします。

次に、データベースに基づいて、<VERSION> をダウンロードした ScalarDB Schema Loader のバージョンに置き換えて、次のコマンドを実行します。

java -jar scalardb-schema-loader-<VERSION>.jar --config database.properties --schema-file schema.json --coordinator
注記

transactiontrue に設定されたテーブルがスキーマ内に存在するため、--coordinator オプションが指定されています。スキーマの設定とロードの詳細については、ScalarDB Schema Loader を参照してください。

基本的な電子マネーアプリケーションでトランザクションを実行し、データを取得します

スキーマをロードした後、クローンしたリポジトリに含まれる基本的な電子マネーアプリケーションでトランザクションを実行し、データを取得できます。

アプリケーションは、次の種類のトランザクションをサポートしています:

  • アカウントを作成します。
  • アカウントに資金を追加します。
  • 2 つのアカウント間で資金を送信します。
  • アカウント残高を取得します。
注記

初めて Gradle コマンドを実行すると、Gradle によって必要なライブラリが自動的にインストールされます。

残高のあるアカウントを作成する

アカウント間で資金を送金するには、残高のあるアカウントが必要です。

customer1 の残高が 500 のアカウントを作成するには、次のコマンドを実行します。

./gradlew run --args="-action charge -amount 500 -to customer1"

残高のないアカウントを作成する

残高のあるアカウントを設定したら、資金を送金するための別のアカウントが必要です。

残高が 0merchant1 のアカウントを作成するには、次のコマンドを実行します。

./gradlew run --args="-action charge -amount 0 -to merchant1"

アカウントに資金を追加する

残高のあるアカウントを作成するでアカウントを作成して資金を追加したのと同じ方法で、アカウントに資金を追加できます。

customer1 のアカウントに 500 を追加するには、次のコマンドを実行します。

./gradlew run --args="-action charge -amount 500 -to customer1"

customer1 のアカウントの残高は 1000 になります。

2 つのアカウント間で電子マネーを送金する

これで 2 つのアカウントが作成され、少なくとも 1 つのアカウントに残高があるので、一方のアカウントからもう一方のアカウントに資金を送金できます。

customer1merchant1100 を支払うようにするには、次のコマンドを実行します。

./gradlew run --args="-action pay -amount 100 -from customer1 -to merchant1"

アカウント残高を取得する

あるアカウントから別のアカウントに資金を送金した後、各アカウントの残高を確認できます。

customer1 の残高を取得するには、次のコマンドを実行します。

./gradlew run --args="-action getBalance -id customer1"

次の出力が表示されます。

...
The balance for customer1 is 900
...

merchant1 の残高を取得するには、次のコマンドを実行します。

./gradlew run --args="-action getBalance -id merchant1"

次の出力が表示されます。

...
The balance for merchant1 is 100
...

データベースを停止する

データベースを停止するには、次のコマンドを実行して Docker コンテナを停止します。

docker compose down

参照

このチュートリアルで使用されている電子マネーアプリケーションのソースコードを確認するには、ElectronicMoney.kt を参照してください。