概要
日本のAI新卒採用を目指すポートフォリオとして、SafeTalkというAI駆動型感情分析プラットフォームを開発しています。本記事では、macOS M4環境での開発環境構築の詳細手順を共有します。
開発するアプリケーション
SafeTalk - サイバーいじめ検知・メンタルケア支援プラットフォーム
技術構成
- バックエンド: FastAPI + PostgreSQL + Redis
- AI/ML: OpenAI GPT-4 + 日本語BERT + MeCab
- フロントエンド: Next.js 14 + TypeScript
- インフラ: Docker + GitHub Actions
主要機能
- リアルタイム感情分析(日本語特化)
- GPTベースチャットボット
- LINE API連携
環境構築手順
前提条件
- macOS(Apple Silicon M4)
- インターネット接続環境
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 install node python@3.11 git
Docker Desktop インストール
# Docker Desktop(Apple Silicon版)
brew install --cask docker
# 起動確認
docker --version
docker-compose --version
2. プロジェクトセットアップ
リポジトリクローン
# プロジェクト取得
git clone https://github.com/hyeon-marina/SafeTalk.git
cd SafeTalk
# 環境変数設定
cp .env.example .env
環境変数設定(.env)
# Database
DATABASE_URL=postgresql://user:password@localhost:5432/safetalk
REDIS_URL=redis://localhost:6379
# OpenAI API
OPENAI_API_KEY=sk-proj-your_api_key_here
# LINE API
LINE_CHANNEL_ACCESS_TOKEN=your_token
LINE_CHANNEL_SECRET=your_secret
# Security
SECRET_KEY=your_32_char_secret_key_here
DEBUG=true
LOG_LEVEL=debug
3. データベース環境構築
Docker Compose設定
# docker-compose.yml (M4最適化)
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-compose up -d
# 状態確認
docker-compose ps
# 接続テスト
docker exec -it safetalk-postgres-1 psql -U user -d safetalk -c "SELECT version();"
docker exec -it safetalk-redis-1 redis-cli ping
4. バックエンド環境構築
Python仮想環境セットアップ
cd backend
# 仮想環境作成(M4最適化)
python3.11 -m venv venv
source venv/bin/activate
# 依存関係インストール
pip install --upgrade pip
pip install -r requirements.txt
requirements.txt(主要パッケージ)
# Web Framework
fastapi==0.104.1
uvicorn[standard]==0.24.0
# Database
sqlalchemy==2.0.23
asyncpg==0.29.0
redis==5.0.1
# AI/ML
openai==1.3.7
transformers==4.35.2
torch==2.1.1
# Japanese NLP
mecab-python3==1.0.6
# Configuration
pydantic==2.5.0
pydantic-settings==2.0.3
python-dotenv==1.0.0
# Security
python-jose[cryptography]==3.3.0
bcrypt==4.0.1
FastAPI基本構造作成
# ディレクトリ構造作成
mkdir -p app/{api/v1,core,models,schemas,services,utils}
touch app/__init__.py app/api/__init__.py app/api/v1/__init__.py
touch app/core/__init__.py app/models/__init__.py app/schemas/__init__.py
touch app/services/__init__.py app/utils/__init__.py
メインアプリケーション(app/main.py)
"""
SafeTalk FastAPI メインアプリケーション
"""
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from datetime import datetime
# FastAPI アプリ作成
app = FastAPI(
title="SafeTalk API",
description="AI駆動型デジタルケア・対応プラットフォーム",
version="1.0.0",
docs_url="/docs",
redoc_url="/redoc"
)
# CORS設定
app.add_middleware(
CORSMiddleware,
allow_origins=["http://localhost:3000"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# ルート定義
@app.get("/")
async def root():
"""APIルート - ヘルスチェック"""
return {
"message": "🛡️ SafeTalk API サーバー稼働中",
"version": "1.0.0",
"timestamp": datetime.now().isoformat(),
"status": "healthy"
}
@app.get("/health")
async def health_check():
"""ヘルスチェックエンドポイント"""
return {
"status": "healthy",
"service": "SafeTalk API",
"timestamp": datetime.now().isoformat()
}
@app.get("/api/v1/analyze")
async def analyze_emotion():
"""感情分析API(仮実装)"""
return {
"message": "感情分析API - 開発中",
"features": [
"日本語BERT感情分析",
"リアルタイム処理",
"多段階感情分類"
],
"status": "実装予定"
}
@app.get("/api/v1/chat")
async def chat_support():
"""メンタルケアチャットAPI(仮実装)"""
return {
"message": "GPTベースチャットボット - 開発中",
"features": [
"24時間対応",
"匿名相談",
"文化的配慮"
],
"status": "実装予定"
}
設定管理(app/config.py)
"""
設定管理モジュール
"""
from pydantic_settings import BaseSettings
from pydantic import Field
class Settings(BaseSettings):
"""アプリケーション設定"""
# 基本設定
app_name: str = "SafeTalk API"
debug: bool = Field(default=False, env="DEBUG")
log_level: str = Field(default="info", env="LOG_LEVEL")
# データベース
database_url: str = Field(env="DATABASE_URL")
redis_url: str = Field(env="REDIS_URL")
# AI API
openai_api_key: str = Field(env="OPENAI_API_KEY")
# LINE API
line_channel_access_token: str = Field(default="", env="LINE_CHANNEL_ACCESS_TOKEN")
line_channel_secret: str = Field(default="", env="LINE_CHANNEL_SECRET")
# セキュリティ
secret_key: str = Field(env="SECRET_KEY")
class Config:
env_file = ".env"
case_sensitive = False
# グローバル設定インスタンス
settings = Settings()
サーバー起動
# FastAPIサーバー実行
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
# ブラウザで確認
# http://localhost:8000 - API ルート
# http://localhost:8000/docs - Swagger UI
# http://localhost:8000/redoc - ReDoc
5. 日本語NLP環境構築
MeCab(形態素解析)セットアップ
# MeCab本体 + 辞書インストール
brew install mecab mecab-ipadic
# Python バインディング
pip install mecab-python3
# 動作確認
python3 -c "
import MeCab
tagger = MeCab.Tagger()
result = tagger.parse('今日はいい天気ですね')
print(result)
"
PyTorch + Transformers セットアップ
# PyTorch(M4最適化版)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
# Transformers
pip install transformers datasets tokenizers
# MPS対応確認
python3 -c "
import torch
print(f'PyTorch Version: {torch.__version__}')
print(f'MPS Available: {torch.backends.mps.is_available()}')
print(f'MPS Built: {torch.backends.mps.is_built()}')
"
6. 開発ワークフロー
開発開始コマンド
# プロジェクトディレクトリに移動
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
開発終了コマンド
# サービス停止
docker-compose stop
# または完全終了
docker-compose down
7. M4最適化設定
環境変数最適化
# ~/.zshrc に追加
cat >> ~/.zshrc << 'EOF'
# Node.js M4最適化
export NODE_OPTIONS="--max-old-space-size=8192"
# Python M4最適化
export ARCHFLAGS="-arch arm64"
export CPPFLAGS="-I/opt/homebrew/include"
export LDFLAGS="-L/opt/homebrew/lib"
# Homebrew PATH
eval "$(/opt/homebrew/bin/brew shellenv)"
EOF
source ~/.zshrc
Docker M4最適化
-
platform: linux/arm64/v8を各サービスに設定 - Rosetta設定を無効化
- メモリ・CPU割り当てを最適化
動作確認
API エンドポイントテスト
# ヘルスチェック
curl http://localhost:8000/health
# 感情分析API(仮)
curl http://localhost:8000/api/v1/analyze
# チャットAPI(仮)
curl http://localhost:8000/api/v1/chat
期待されるレスポンス
{
"status": "healthy",
"service": "SafeTalk API",
"timestamp": "2025-07-29T12:00:00.000000"
}
トラブルシューティング
よくある問題
1. Docker起動エラー
# Docker Desktop起動確認
docker info
# ポート競合チェック
lsof -i :5432 :6379 :8000
2. Python依存関係エラー
# Xcode Command Line Tools
xcode-select --install
# 仮想環境再構築
rm -rf venv
python3.11 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
3. MeCabインストールエラー
# Homebrew更新
brew update && brew upgrade
# MeCab再インストール
brew reinstall mecab mecab-ipadic
pip install --force-reinstall mecab-python3
パフォーマンス最適化
M4専用チューニング
# CPU使用率確認
top -pid $(pgrep -f uvicorn)
# メモリ使用量確認
ps aux | grep python
# Docker統計
docker stats
開発効率化
# エイリアス設定(~/.zshrc)
alias safetalk-start='cd ~/Developer/SafeTalk && docker-compose up -d'
alias safetalk-backend='cd ~/Developer/SafeTalk/backend && source venv/bin/activate && uvicorn app.main:app --reload'
alias safetalk-stop='cd ~/Developer/SafeTalk && docker-compose stop'
次のステップ
-
感情分析機能実装
- 日本語BERTモデル統合
- リアルタイム分析API
-
GPTチャットボット開発
- OpenAI API統合
- 対話履歴管理
-
フロントエンド構築
- Next.js 14セットアップ
- UI/UXデザイン
-
LINE API連携
- Webhook実装
- メッセージ処理
まとめ
macOS M4環境でのSafeTalk開発環境構築手順を詳しく解説しました。