1
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?

【macOS M4対応】AI感情分析Webアプリ「SafeTalk」の開発環境構築手順

Posted at

概要

日本の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'

次のステップ

  1. 感情分析機能実装

    • 日本語BERTモデル統合
    • リアルタイム分析API
  2. GPTチャットボット開発

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

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

    • Webhook実装
    • メッセージ処理

まとめ

macOS M4環境でのSafeTalk開発環境構築手順を詳しく解説しました。

リポジトリ

1
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
1
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?