Skip to content

feat: 成功時・失敗時サウンドにランダム再生を追加する - #19

Merged
treetips merged 1 commit into
mainfrom
feature/sound-random
Oct 27, 2026
Merged

treetips merged 1 commit into
mainfrom
feature/sound-random

Conversation

@treetips

Copy link
Copy Markdown
Owner

概要

設定画面の成功時・失敗時サウンドに「ランダム」チェックボックスを追加し、変換終了時にユーザー配置サウンドからランダムに1つ再生できるようにする。

仕様: docs/design/feature/settings.md(成功時・失敗時サウンドの「ランダムチェックボックス」節)
ADR: docs/adr/0029-sound-random-playback.md

変更内容

機能

  • 成功時・失敗時サウンド行それぞれに ランダム チェックボックスを追加
    • チェックで該当プルダウンと ▶️ ボタンを無効化、解除で有効化
    • プルダウンの選択値は保持され、チェックを戻すと復帰する
  • 変換終了時(一括・かんたん両方)に、ランダム有効ならユーザー配置サウンド(~/.config/tree-image-optimizer/sounds/{success,error})から抽選して再生
    • 同梱(サンプル)サウンドは抽選対象外
    • ユーザー配置が無い場合は選択中のサウンドへフォールバック(音が鳴らなくならない)
  • 設定は settings.json の settings セクションに successSoundRandom / errorSoundRandom として永続化(初期値 false)

構造

  • 抽選ロジックを SoundService.resolvePlaybackOption(success:name:random:) に集約し、ConvertJobStore / EasyConvertJobStore の重複した再生決定処理を共通化
  • 設定UI追加に伴い SettingsStore のクラス本体がSwiftLintの type_body_length を超えたため、値変換ヘルパー群を SettingsStoreValues.swift(extension)へ分離
  • 壁紙シャッフルの真偽値チェーンを wallpaperShuffleBoolValue ヘルパーへ抽出

テスト

  • 新規テスト5件を追加(既存テストは変更・削除なし)
    • SettingsStoreTests: ランダム設定の初期値・保存・不正型補正
    • MediaServicesTests: 抽選の同梱サンプル除外(20回反復)、ユーザー配置0件時のフォールバック
    • SettingsViewModelTests(新規ファイル): settings.jsonからの復元、ランダム切替時に選択値を破壊しないこと

検証

  • swiftlint — 変更コードの新規違反なし
  • swift format 適用済み
  • xcodebuild test(全スイート)— PASS
  • 動作確認済み

補足

  • 既存の SettingsView / SettingsViewModel の type_body_length 警告は本変更で若干悪化するが、構造分割は別チケットで対処予定(ADR 0029に記載)

ユーザーが配置した複数の音声から毎回異なる1つを再生できず、
変換終了音が単調になるため。
壁紙シャッフル(0027)と同一の方針で同梱サンプルを抽選対象外とし、
抽選ロジックをSoundService.resolvePlaybackOptionに集約して
一括・かんたん両変換の再生箇所を共通化した。
ランダム有効時は該当プルダウンと▶️ボタンを無効化する。
設定UI追加に伴いSettingsStoreのクラス本体がlint制限を超えたため、
値変換ヘルパー群をSettingsStoreValues.swiftへ分離した。
@github-actions github-actions Bot added the feature 新機能 (Conventional Commits: feat) label Oct 27, 2026
@treetips
treetips merged commit a13299b into main Oct 27, 2026
2 checks passed
@treetips
treetips deleted the feature/sound-random branch October 27, 2026 13:25
@treetips treetips self-assigned this Oct 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature 新機能 (Conventional Commits: feat)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant