a6add57d4d496bcabd914108b10a08863631a18e
Gitea Actions CI/CD Pipeline / build-and-test (push) Failing after 2m34s
📱 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時からです」 |
| 設定変更 | 「ダークモードにして」 | 画面をダークモードに変更しました。 |
| フォールバック | 「こんにちは」 | 申し訳ありません。そのコマンドには対応していません。 |
Languages
Kotlin
92.6%
Dockerfile
2.6%
Batchfile
2%
Shell
2%
Makefile
0.8%