kiyo561 6d99e75090
Gitea Actions CI/CD Pipeline / build-and-test (push) Successful in 1m30s
手動テストボタン追加
2026-08-11 07:55:57 +00:00

📱 Android 音声操作端末アプリ & Docker動作環境

本リポジトリは、Android向け音声操作アプリケーションのドメインロジック、コマンド解析エンジン、音声合成(TTS)・音声認識(SpeechRecognizer)のアーキテクチャ実装、およびどのようなPC環境(Windows / macOS / Linux)でも一発でビルド・テスト・シミュレーションが実行できるDocker環境を提供します。


🌟 主な特徴

  • 環境構築不要のDockerフル対応: Java/Android SDK/Gradleが未インストールのPCでも、Dockerさえあれば数秒でシミュレーションや単体テストが実行可能。
  • アーキテクチャ設計: Clean Architecture + MVVM (StateFlow / Kotlin Coroutines)。
  • 日本語音声コマンド解析: 漢数字→アラビア数字変換 (KanjiToNumberConverter)、正規表現パターンマッチング (CommandParser)。
  • 動作シミュレーター (RunAppSimulation.kt): 実際のAndroid実機がなくても、ターミナル上で音声入力・解析・実行・TTS応答のフローを完全再現。

🚀 動作確認手順 (Docker環境)

DockerおよびDocker Composeがインストールされている環境であれば、以下のコマンド一発で全機能の動作確認が可能です。

1. デモシミュレーションの実行 (推薦)

定義済みの各種音声コマンド(時刻確認、タイマー設定、アラーム、メッセージ読み上げ、設定変更等)が正常にパース・実行される様子を確認します。

# docker-compose を使用
docker compose run --rm simulation

# または付属のスクリプトを使用 (Mac/Linux)
./run.sh simulation

# Windows (Command Prompt / PowerShell)
run.bat simulation

2. 対話型シミュレーションモード (CLI)

任意の日本語テキストキーボード入力し、リアルタイムにコマンド判定とTTS応答シミュレーションを行います。

docker compose run --rm interactive

(終了したい場合は exit または quit と入力)

3. 単体テスト (JUnit / MockK) の実行

CommandParser, ExecuteCommandUseCase, KanjiToNumberConverter, MainViewModel のユニットテストを全て実行します。

docker compose run --rm test

4. Debug APKのビルド

Android用Debug APKファイルをビルドし、app/build/outputs/apk/debug/ に生成します。

docker compose run --rm build

💻 ローカル環境 (Dockerなし) での実行

ローカルPCに JDK 17 以上がインストールされている場合は、Gradle Wrapperを使用して直接実行することも可能です。

# デモシミュレータの実行
./gradlew :app:runSimulation

# 対話型シミュレータの実行
./gradlew :app:runSimulation --args="--interactive"

# 単体テストの実行
./gradlew test

📁 ディレクトリ構成

voice_controlled_device/
├── Dockerfile                  # Multi-stage Docker構成 (JDK 17 + Android SDK)
├── docker-compose.yml          # simulation / interactive / test / build サービス定義
├── run.sh                      # Mac/Linux用 実行ランチャー
├── run.bat                     # Windows用 実行ランチャー
├── Makefile                    # makeコマンド用定義
├── gradlew / gradlew.bat       # Gradle Wrapper
├── gradle/                     # Gradle Wrapper Jar / Properties
├── docs/                       # プロジェクト仕様書・設計書群
│   ├── 00_project_config.md    # 構成定義書
│   ├── 02_specifications.md    # 機能仕様書
│   ├── 03_hardware_design.md   # システム・ハードウェア設計書
│   └── 04_review_report.md     # レビュー報告書
└── app/
    ├── build.gradle.kts        # アプリレベルGradle設定 (runSimulationタスク追加済み)
    ├── src/
    │   ├── main/java/com/example/voiceapp/
    │   │   ├── data/           # リポジトリ・データソース
    │   │   ├── domain/         # コマンド解析・コンバータ・ユースケース
    │   │   ├── ui/             # Jetpack Compose UI & ViewModel
    │   │   ├── voice/          # SpeechRecognizer & TTSマネージャ
    │   │   └── MainActivity.kt
    │   └── test/               # 単体テストコード群
    └── RunAppSimulation.kt     # CLIシミュレーションエントリポイント

🛠 対応している音声コマンド例

コマンド分類 入力例 実行結果 / TTS応答例
時刻・日付 「今何時?」 / 「今日の日付を教えて」 現在時刻は 07:20 です。
タイマー設定 「三分タイマーかけて」 / 「5分タイマー」 3分間のタイマーをセットしました。
アラーム設定 「7時にアラーム」 07:00にアラームを設定しました。
メッセージ読上 「未読メッセージ読んで」 未読メッセージが1件あります: 「次回の打ち合わせは15時からです」
設定変更 「ダークモードにして」 画面をダークモードに変更しました。
フォールバック 「こんにちは」 申し訳ありません。そのコマンドには対応していません。
S
Description
Voice Controlled Device Application & Specifications
Readme
153 KiB
Languages
Kotlin 92.6%
Dockerfile 2.6%
Batchfile 2%
Shell 2%
Makefile 0.8%