🛡️

🛡️ SafeTalk開発環境構築ガイド(macOS M4対応)

に公開

はじめに

SafeTalkは、AI駆動型デジタルケア・対応プラットフォームです。サイバーいじめや憎悪表現をリアルタイムで検知し、被害者に感情的支援を提供するサービスを開発しています。

日本のAI新卒採用を目指すポートフォリオプロジェクトとして、最新の技術スタックを活用した実用的なWebアプリケーションの構築過程を記録しています。

プロジェクト概要

主要機能

  • リアルタイム感情分析: 日本語特化BERTモデルによる高精度分析
  • GPTベースメンタルケアチャットボット: 24時間365日の匿名相談サービス
  • プライバシー優先設計: ゼロトラストデータ処理方式

技術スタック

バックエンド

  • FastAPI 0.104+ (Python 3.11)
  • PostgreSQL 15 + Redis 7
  • OpenAI GPT-4 API
  • Transformers(日本語BERT)
  • MeCab(日本語形態素解析)

フロントエンド

  • Next.js 14 + TypeScript 5.0+
  • TailwindCSS + shadcn/ui
  • i18next(多言語対応)

DevOps

  • Docker + Docker Compose
  • GitHub Actions(CI/CD)

開発環境構築(macOS M4基準)

事前準備

この記事では、macOS M4(Apple Silicon)環境での開発環境構築を想定しています。Intel Macの場合は一部コマンドが異なる可能性があります。

ステップ1: 必須ツールのインストール

Homebrewのインストール

# Homebrewインストール
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# PATH設定(M4チップ用)
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc
source ~/.zshrc

# インストール確認
brew --version

Node.js & Pythonのインストール

# Node.js 18+ インストール(LTS版)
brew install node

# Python 3.11 インストール(安定性重視)
brew install python@3.11

# バージョン確認
node --version  # v20.x.x以上
npm --version   # v10.x.x以上
python3.11 --version  # Python 3.11.x

Git設定

# Gitユーザー情報設定
git config --global user.name "your-username"
git config --global user.email "your-email@example.com"

# デフォルトブランチをmainに設定
git config --global init.defaultBranch main

ステップ2: Dockerのインストールと設定

Docker Desktop for Mac(Apple Silicon)のインストール

# 手動インストール
# https://desktop.docker.com/mac/main/arm64/Docker.dmg

# またはHomebrew Caskでインストール
brew install --cask docker

# Dockerアプリケーション起動
open /Applications/Docker.app

Docker設定の最適化

Docker Desktop起動後、以下の設定を行います:

  • Settings → General
    • "Use Rosetta for x86/amd64 emulation on Apple Silicon" のチェックを外す(性能最適化)
  • Resources → Advanced
    • Memory: 8GB
    • CPU: 4個 割り当て

Docker動作確認

# Dockerバージョン確認
docker --version
# Docker version 24.x.x

docker-compose --version
# Docker Compose version v2.x.x

# テストコンテナ実行
docker run hello-world

ステップ3: SafeTalkプロジェクト設定

リポジトリクローンと基本設定

# プロジェクトディレクトリに移動
cd ~/Developer  # または任意の作業ディレクトリ

# SafeTalkクローン
git clone https://github.com/hyeon-marina/SafeTalk.git
cd SafeTalk

# 環境変数ファイル作成
cp .env.example .env

環境変数設定(.envファイル編集)

# VS Codeで.envファイル編集
code .env

# またはnanoエディタ使用
nano .env

.envファイルの内容(実際の値に変更が必要):

# Database
DATABASE_URL=postgresql://user:password@localhost:5432/safetalk
REDIS_URL=redis://localhost:6379

# OpenAI API(https://platform.openai.com/api-keys で取得)
OPENAI_API_KEY=sk-proj-your_openai_api_key_here

# LINE API(https://developers.line.biz/ で取得)
LINE_CHANNEL_ACCESS_TOKEN=your_line_channel_access_token
LINE_CHANNEL_SECRET=your_line_channel_secret

# Security
SECRET_KEY=your_very_secure_secret_key_here_minimum_32_characters
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30

# Development
DEBUG=true
LOG_LEVEL=debug

# macOS M4最適化
PYTHONPATH=/opt/homebrew/lib/python3.11/site-packages

ステップ4: データベースサービス起動

Docker ComposeでPostgreSQL & Redis実行

# バックグラウンドでデータベースサービス実行
docker-compose up -d

# サービス状態確認
docker-compose ps

# ログ確認
docker-compose logs postgres
docker-compose logs redis

正常実行確認

# PostgreSQL接続テスト
docker exec -it safetalk-postgres-1 psql -U user -d safetalk -c "SELECT version();"

# Redis接続テスト
docker exec -it safetalk-redis-1 redis-cli ping
# PONG が返れば成功

ステップ5: バックエンド開発環境設定

Python仮想環境作成と依存関係インストール

cd backend

# Python仮想環境作成(M4最適化)
python3.11 -m venv venv

# 仮想環境アクティベート
source venv/bin/activate

# pip更新
pip install --upgrade pip

# 依存関係インストール
pip install -r requirements.txt

FastAPIサーバー実行

# FastAPIサーバー実行
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

# 実行成功時の出力例:
# INFO:     Will watch for changes in these directories: ['/path/to/SafeTalk/backend']
# INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

ステップ6: 日本語NLP環境設定

MeCabインストール(日本語形態素解析)

# MeCab本体とIPAdic(基本辞書)をインストール
brew install mecab mecab-ipadic

# Python MeCabバインディングインストール
cd backend
source venv/bin/activate
pip install mecab-python3

# インストール確認
python -c "import MeCab; print('MeCab installed successfully')"

PyTorch & Transformersセットアップ

# PyTorchインストール(M4最適化版)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu

# Transformersとその他AI/MLライブラリ
pip install transformers datasets tokenizers

# PyTorch MPS(Metal Performance Shaders)対応確認
python -c "import torch; print(f'PyTorch: {torch.__version__}, MPS available: {torch.backends.mps.is_available()}')"

開発ワークフロー

開発開始時

# SafeTalkディレクトリに移動
cd ~/Developer/SafeTalk

# Dockerサービス再起動
docker-compose up -d

# バックエンドサーバー実行(新しいターミナル)
cd backend
source venv/bin/activate
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

# フロントエンドサーバー実行(別のターミナル、後で)
cd frontend
npm run dev

アクセスURL

開発終了時

# SafeTalkプロジェクトディレクトリで
cd ~/Developer/SafeTalk

# 全コンテナ停止(データは保持)
docker-compose stop

# または完全終了(コンテナ削除、ボリュームは保持)
docker-compose down

macOS M4最適化のコツ

環境変数最適化

# Node.jsメモリ最適化
export NODE_OPTIONS="--max-old-space-size=8192"

# Pythonコンパイル最適化
export ARCHFLAGS="-arch arm64"
export CPPFLAGS="-I/opt/homebrew/include"
export LDFLAGS="-L/opt/homebrew/lib"

# .zshrcに追加して永続化
echo 'export NODE_OPTIONS="--max-old-space-size=8192"' >> ~/.zshrc
echo 'export ARCHFLAGS="-arch arm64"' >> ~/.zshrc
source ~/.zshrc

Docker M4対応

# docker-compose.yml
version: '3.8'
services:
  postgres:
    image: postgres:15
    platform: linux/arm64/v8  # M4最適化
    environment:
      POSTGRES_DB: safetalk
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data

  redis:
    image: redis:7-alpine
    platform: linux/arm64/v8  # M4最適化
    ports:
      - "6379:6379"
    volumes:
      - redis_data:/data

volumes:
  postgres_data:
  redis_data:

主要コマンド一覧

Docker管理

# 開始
docker-compose up -d

# 停止
docker-compose stop

# 状態確認
docker-compose ps

# ログ確認
docker-compose logs <service-name>

バックエンド開発

# 仮想環境アクティベート
source venv/bin/activate

# サーバー実行
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

# 依存関係更新
pip install -r requirements.txt

トラブルシューティング

よくある問題と解決方法

1. Dockerコンテナが起動しない

# Docker Desktopが起動しているか確認
docker info

# ポート競合確認
lsof -i :5432  # PostgreSQL
lsof -i :6379  # Redis

# コンテナとボリュームを完全削除して再構築
docker-compose down -v
docker-compose up -d

2. Python依存関係インストールエラー

# Xcode Command Line Toolsインストール
xcode-select --install

# 仮想環境再作成
rm -rf venv
python3.11 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

3. MeCabインストールエラー

# Homebrewアップデート
brew update && brew upgrade

# MeCab関連の再インストール
brew uninstall mecab mecab-ipadic
brew install mecab mecab-ipadic

# Python MeCabバインディング再インストール
pip uninstall mecab-python3
pip install mecab-python3

次のステップ

開発環境構築が完了したら、以下の順序で開発を進めていきます:

  1. 感情分析APIの実装

    • 日本語BERTモデルの統合
    • RESTful API エンドポイントの作成
  2. GPTチャットボットの開発

    • OpenAI API統合
    • 対話履歴管理システム
  3. フロントエンドの構築

    • Next.js 14 App Routerセットアップ
    • UI/UXデザイン実装
  4. LINE API連携

    • Webhook設定
    • メッセージ処理ロジック

まとめ

この記事では、macOS M4環境でのSafeTalk開発環境構築手順を詳しく解説しました。Apple Siliconの特性を活かした最適化設定により、効率的な開発環境を構築できます。

次回は、FastAPIを使った感情分析API の実装について詳しく解説する予定です。

リポジトリ

参考資料

Discussion