0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

#0073(2024/03/22)TENANT_NAMEとDEV_NAME

Last updated at Posted at 2025-03-21

Webアプリ開発での「tenant_name」と「dev_name」の活用法

Webアプリケーション開発において、「tenant_name(テナント名)」と「dev_name(開発者名)」という用語を聞いたことがあるかもしれません。この2つを適切に利用すると、開発や運用の効率が大幅に向上します。この記事では、具体的な活用例を交えてその意味と使い方を紹介します。


tenant_name と dev_name の違い

まずは、それぞれの意味と使い分けを整理しましょう。

用語 意味 利用目的
tenant_name テナント(利用企業・組織)を識別する名前 顧客ごとにデータや設定を分ける
dev_name 開発者や開発環境を識別する名前 開発者ごとに環境を独立させる

例えば、マルチテナント型のSaaSサービスを開発するとき、tenant_nameを使えば顧客間のデータを明確に分離できます。また、複数の開発者が同時に作業する場合、dev_nameを活用して個々の開発環境を混在させずに済みます。


データベース構築における活用例

データベース名の命名規則

分かりやすい命名規則として以下が推奨されます。

{アプリ名}_{tenant_name}_{dev_name}

例えば、次のような例が考えられます。

  • アプリ名:myapp
  • テナント名:companyX
  • 開発者名:dev

この場合、データベース名は以下のようになります。

myapp_companyX_dev

MySQLでのセットアップ例

CREATE DATABASE myapp_companyX_dev DEFAULT CHARACTER SET utf8mb4;

CREATE USER 'user_companyX'@'%' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON myapp_companyX_dev.* TO 'user_companyX'@'%';
FLUSH PRIVILEGES;

環境変数を使った設定管理

多くの開発プロジェクトでは、環境変数を通じてtenant_nameとdev_nameを管理します。

.envファイルの例

TENANT_NAME=companyX
DEV_NAME=dev
DATABASE_URL=mysql://user_companyX:secure_password@localhost/myapp_companyX_dev

Pythonでこれらを読み取る例を示します。

import os

tenant_name = os.getenv('TENANT_NAME')
dev_name = os.getenv('DEV_NAME')
database_url = os.getenv('DATABASE_URL')

print(f"Tenant: {tenant_name}, Developer: {dev_name}")
print(f"DB URL: {database_url}")

Docker環境での活用法

Dockerを利用すると、tenant_nameとdev_nameを活用した環境構築が簡単に行えます。

docker-compose.ymlの例

version: '3.8'

services:
  db:
    image: mysql:8
    container_name: db_${TENANT_NAME}_${DEV_NAME}
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: myapp_${TENANT_NAME}_${DEV_NAME}
      MYSQL_USER: user_${TENANT_NAME}
      MYSQL_PASSWORD: secure_password
    ports:
      - "3306:3306"
    volumes:
      - db_data_${TENANT_NAME}_${DEV_NAME}:/var/lib/mysql

  web:
    build: .
    container_name: web_${TENANT_NAME}_${DEV_NAME}
    environment:
      - TENANT_NAME=${TENANT_NAME}
      - DEV_NAME=${DEV_NAME}
      - DATABASE_URL=mysql://user_${TENANT_NAME}:secure_password@db/myapp_${TENANT_NAME}_${DEV_NAME}
    ports:
      - "8000:8000"
    depends_on:
      - db

volumes:
  db_data_${TENANT_NAME}_${DEV_NAME}:

まとめ

Webアプリ開発で「tenant_name」と「dev_name」を適切に活用することで、顧客や開発者間の環境を明確に分離できます。これにより、スケーラビリティが高く、管理・運用が容易な開発体制が実現可能になります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?