← 一覧に戻る

baion-healing

GitHub ↗ HTML 最終push: 2026/7/11 20:53

WIP(現在進行中)

Work In Progress

このプロジェクトで現在進行中の作業と、過去のスナップショットを記録する。

現在の状況

(2026-07-11 20:50 更新)

どこまで進んだか:

  • ネイティブiOS雛形が動作ios/ 配下、xcodegen管理、SwiftUI + AVAudioEngine)。iPhone 17 Pro シミュレータでビルド・起動・再生確認済み
  • アプリ基本構造確定: モード4種(リラックス/睡眠/集中/瞑想)× クラシック曲の2軸。モードが音響パラメータを決め、曲がコンテンツを決める
  • UI確定: ダークアンビエント(モード別アクセント色)+ 倍音オーブ(発音連動)+ ライブラリシート(縦リスト選曲)。ユーザー高評価
  • 曲数: プロトタイプ15曲 / iOS 14曲(ライセンスOKのみ、tools/sync_ios_pieces.sh で同期)
  • ライセンス監査完了: CC-BY-SA 5曲は製品使用不可(グノシエンヌ1〜3 / ノクターン9-2 / パヴァーヌ)。カノン・コンソレーション3番はCC-BY 3.0で要クレジット。残り11曲はPD
  • プロトタイプに評価UI+高音折返し(D6)を追加。聴き込みは「全曲破綻なし」で合格判定

次にやること:

  1. iOS機能拡充: 環境音層(雨・風)/ ベルFM音色 / フィルタLFO / スリープタイマー / ロック画面コントロール(MPNowPlayingInfoCenter + MPRemoteCommandCenter)/ アプリアイコン
  2. 実運転テスト(寝るとき・作業中に流して「イラッとした曲」だけメモ→曲別調整)
  3. CC-BY-SA 5曲の代替ソース調査(IMSLP / KernScores / 手打ち。グノシエンヌは音数少なく手打ち現実的)

未決事項:

  • アプリ固有名(造語)→ ストア検索 + J-PlatPat 確認
  • 未入手4曲のソース(ジムノペディ正確版 / G線上のアリア / ゴルトベルクのアリア / 月光1楽章)
  • 無料/有料曲の切り分け
  • CC-BY曲のクレジット表記の実装場所(設定画面のライセンス表記など)

環境メモ:

  • iOS: cd ios && xcodegen generate でプロジェクト再生成(project.yml が正)。Xcodeは open ios/BaionHealing.xcodeproj
  • 曲データの正は data/pieces/*.json。iOSへは ./tools/sync_ios_pieces.sh、プロトタイプへは .venv/bin/python tools/build_pieces.py
  • Python venv は .venv/(music21 10.5.0 導入済み、gitignore対象)
  • プロトタイプは open prototype/index.html でブラウザ起動(Tone.js は CDN、要オンライン)

過去のWIPアーカイブ

(新しい「現在の状況」を書く前に、古いものをここに追記でアーカイブする。新しいものが上)

2026-07-10 03:50 時点のスナップショット

どこまで進んだか:

  • フェーズ2の技術選択が決定: ネイティブiOS(Swift + AVAudioEngine/AudioKit)。Unity/Capacitorは不採用(バックグラウンド再生・電池消費・WKWebViewのWeb Audioサスペンド問題。詳細は DECISIONS.md 2026-07-10)
  • Androidは市場検証後に別途判断(Kotlin等でネイティブ実装可能。DSP規模が小さく移植コストは低い見込み)
  • ブラウザプロトタイプ prototype/index.html が動作中(Tone.js、倍音ドローン+旋律+環境音、13曲試聴可能)
  • 楽譜変換パイプライン確立: Mutopia の MIDI → tools/convert_score.pydata/pieces/*.jsontools/build_pieces.pyprototype/pieces.js
  • 収録候補約30曲を docs/収録候補曲リスト.md に整理済み(PD判定ルール付き)

次にやること:

  1. 13曲の聴き込み → 曲ごとのテンポ・音色・オクターブ調整
  2. 第2弾変換(パヴァーヌ / 夢のあとに / 羊 / グノシエンヌ2・3番、全てMutopia確認済み)
  3. アレンジ表現の強化(強弱、対旋律、曲別チューニング)
  4. (音の確定後)ネイティブiOSプロジェクトの雛形作成に着手

未決事項:

  • アプリ固有名(造語)→ ストア検索 + J-PlatPat 確認
  • 未入手4曲のソース(ジムノペディ正確版 / G線上のアリア / ゴルトベルクのアリア / 月光1楽章)
  • 無料/有料曲の切り分け

2026-07-09 19:25 時点のスナップショット

どこまで進んだか:

  • コンセプトを「倍音で聴くクラシック」主軸へピボット済み(生成アンビエントはサブ機能で残す)
  • ブラウザプロトタイプ prototype/index.html が動作中(Tone.js、倍音ドローン+旋律+環境音)
  • 楽譜変換パイプライン確立: Mutopia の MIDI → tools/convert_score.pydata/pieces/*.jsontools/build_pieces.pyprototype/pieces.js
  • 13曲が試聴可能(エリーゼのために、子守歌、アヴェ・マリア、カノン、グノシエンヌ1番ほか)
  • 収録候補約30曲を docs/収録候補曲リスト.md に整理済み(PD判定ルール付き)

次にやること:

  1. 13曲の聴き込み → 曲ごとのテンポ・音色・オクターブ調整
  2. 第2弾変換(パヴァーヌ / 夢のあとに / 羊 / グノシエンヌ2・3番、全てMutopia確認済み)
  3. アレンジ表現の強化(強弱、対旋律、曲別チューニング)

未決事項:

  • アプリ固有名(造語)→ ストア検索 + J-PlatPat 確認
  • フェーズ2の技術選択(Unity vs Capacitor)
  • 未入手4曲のソース(ジムノペディ正確版 / G線上のアリア / ゴルトベルクのアリア / 月光1楽章)
  • 無料/有料曲の切り分け

ROADMAP(計画)

ロードマップ

今週

  • Tone.js ブラウザプロトタイプ実装(フェーズ1)
  • クラシックモード実装 + 主軸ピボットの判断
  • 楽譜→音符データ変換パイプライン構築(music21)
  • 収録候補曲リスト作成(約30曲、PD判定込み)
  • 第1弾13曲の変換
  • 13曲の聴き込み → 全曲破綻なしで合格判定。曲別調整は実運転テスト後に実施(2026-07-11)
  • 第2弾変換 → 夢のあとに・羊は変換済み。パヴァーヌ / グノシエンヌ2・3番はCC-BY-SAのため見送り(2026-07-11)
  • ネイティブiOS雛形(モード4種×曲、倍音エンジン、UI)+ シミュレータ動作確認(2026-07-11)

今月

  • iOS機能拡充(環境音層 / ベルFM音色 / フィルタLFO / スリープタイマー / ロック画面コントロール / アプリアイコン)
  • 実運転テスト(寝るとき・作業中に流す)→ 気になった曲だけ曲別チューニング
  • CC-BY-SA 5曲の代替ソース調査・差し替え(グノシエンヌ1〜3 / ノクターン9-2 / パヴァーヌ)
  • アレンジ表現の強化(強弱・対旋律・曲別チューニング)
  • 未入手4曲を別ソースで確保(ジムノペディ正確版 / G線上のアリア / ゴルトベルクのアリア / 月光1楽章)
  • アプリ固有名(造語)の決定 → ストア検索 + J-PlatPat 確認
  • フェーズ2の技術選択 → ネイティブiOS(Swift + AVAudioEngine/AudioKit)に決定(2026-07-10、DECISIONS.md参照)

今四半期

  • モバイル実装着手(フェーズ2、ネイティブiOS)→ 雛形完了(2026-07-11)
  • 無料/有料曲の切り分け設計
  • ストア文言・スクリーンショット設計(「倍音で聴くクラシック」訴求)

いつか

  • Garmin連携(Body Battery / 心拍数連動の生成パラメータ)
  • バイノーラルビートを製品に入れるかの最終判断(健康効果は謳わない前提)
  • 商標出願の要否判断(当たってから。2区分で計86,400円目安)

DECISIONS(意思決定)

意思決定記録

このプロジェクトで下した重要な意思決定を記録する。 最新が上に来る。


2026-07-11: UIはダークアンビエント+倍音オーブ、選曲はシート式縦リスト

背景: iOS雛形の素のSwiftUIリストが「しょぼい」ため、ユーザーがテンション上がるレベルへのUI引き上げを実施した。

決定: 深夜ネイビー基調+モード別アクセント色(リラックス=ティール / 睡眠=ラベンダー / 集中=スカイブルー / 瞑想=バイオレット)、画面中央に旋律の発音と連動して脈打つ「倍音オーブ」、選曲はボトムバー→シートの縦リスト。横スクロールカルーセルは不採用。

理由: ユーザーが横カルーセルの一覧性の低さを明確に否定し、縦リスト+オーブ中心の構成に強い好反応(「めっちゃいい」)。Endel/Calm系のプレイヤー画面文法とも整合し、曲数が増えたらシート内にセクション分け・検索を足せる拡張性もある。

2026-07-11: アプリ基本構造は「モード4種 × クラシック曲」の2軸

背景: iOS実装着手前に、ユーザーから利用体験の骨格(モードを選び、クラシックと合わせて聴く)が提示された。

決定: ユーザーはまずモード(リラックス/睡眠/集中/瞑想)を選び、クラシック曲と組み合わせて聴く。モードが音響パラメータ(倍音構成・LPF・リバーブ・音量バランス・テンポ係数・旋律エンベロープ)を決め、曲がコンテンツを決める。

理由: プロトタイプの「プリセット4種×クラシックモード」の構造をそのまま製品構造に昇格できる。同じ曲でもモードで鳴り方が変わるため、体験のバリエーションが「曲数×モード数」に増える。

2026-07-11: MutopiaのCC-BY-SA浄書データは製品に使わず、該当5曲は代替ソースで差し替える

背景: 変換済み13曲+第2弾候補のライセンス監査(.rdf全確認)で、変換済みのグノシエンヌ1番・ノクターンOp.9-2と、第2弾候補のパヴァーヌ・グノシエンヌ2・3番がCC-BY-SA(4.0/3.0)と判明した。

決定: 既存のPD判定ルールどおりCC-BY-SAは製品に使わない。iOSバンドルからは tools/sync_ios_pieces.sh で自動除外し、プロトタイプには試聴用として残す。該当5曲はIMSLP / KernScores / 手打ち(グノシエンヌは音数が少なく現実的)で差し替える。CC-BY 3.0の2曲(カノン・コンソレーション3番)はクレジット記載で利用継続。

理由: SA(継承)条項は買い切りアプリと相性が悪く、MIDIから抽出した音符データが浄書の二次的著作物とみなされるリスクをゼロにできないため、安全側に倒す。Mutopiaは同一シリーズ内でもファイル単位でライセンスが混在するため、今後は変換前の .rdf 確認を必須とする。

背景: フェーズ2の技術選択(Unity vs Capacitor)が未決だったが、ユーザーからUnityで作りたくないとの意向があり、ネイティブ実装の実現性を検討した。

決定: Unity・Capacitorとも採用せず、Swift + AVAudioEngine/AudioKit によるネイティブiOSアプリとして実装する。iOS先行でリリースし、Androidは市場検証後に別途判断する。

理由: ①プロトタイプの音響処理(倍音加算合成・ノイズ+フィルタ環境音・FM/ポリシンセ・バイノーラル・リバーブ/リミッター/FFT)はすべて標準DSPで、AVAudioEngine/AudioKitにほぼ1対1で移植可能 ②ヒーリングアプリの本命要件(バックグラウンド再生・ロック画面操作・スリープタイマー)はネイティブが最も素直で、Unityはバックグラウンドオーディオが不安定、CapacitorはWKWebView内Web Audioがバックグラウンドでサスペンドされ睡眠用途と致命的に相性が悪い ③Unityは描画ループ常時稼働で長時間再生時の電池消費が不利 ④IAPはRevenueCatネイティブSDKで代替可能なため、hinata-mahjongのUnity資産流用メリットは失っても許容 ⑤楽曲JSON(data/pieces/*.json)と変換パイプラインはそのまま流用できる。

トレードオフ: Android展開時はエンジン再実装(Kotlin + Oboe等)が必要になるが、iOS先行検証の方針と整合するため受容する。

2026-07-09: 収録曲のPD(パブリックドメイン)判定は3条件ルールで行う

背景: クラシック曲を収録するにあたり、権利クリアの基準を明文化する必要があった。

決定: ①作曲者没後70年以上(戦時加算約10.5年込みで余裕があること)②初出版1930年以前(米国の出版後95年対策)③他人の編曲・校訂版に依拠しない(自前合成なので原盤権は無関係)。3条件を満たす曲のみ収録。

理由: 日米欧すべてで安全側に倒せる機械的な基準にするため。ラヴェル(1937年没)等のグレーゾーンは判定コストが高いので第1弾から除外。

2026-07-09: コンセプトの主軸を「倍音で聴くクラシック」へピボット

背景: 生成アンビエントのプロトタイプを試聴した際、「クラシックの名曲を倍音で流せないか」という着想が出て、手打ち2曲(カノン/ジムノペディ)で検証したところ手応えがあった。

決定: PD楽曲を倍音エンジンでリアルタイム演奏する「倍音で聴くクラシック」を主軸にする。無限生成アンビエントは廃止せずサブ機能として残す。

理由: ①「知ってる曲」は無名の生成音より訴求力が圧倒的に高い(ストア画面で見せられる)②PD+自前合成で権利費用ゼロ ③曲追加がアップデートの目玉になり、無料数曲+IAP全曲解放のフリーミアム構造と噛み合う ④「無限生成」の差別化も捨てずに済む。

2026-07-09: 収録曲は知名度最優先で選ぶ

背景: 第1弾変換で「月の光」「雨だれ」「悲愴」を入れたが、ユーザー自身が曲を知らなかった。

決定: 「エリーゼのために」「子守歌」級の、誰でも知っている曲を優先的に収録する。

理由: ターゲットはクラシックファンではなく一般のリラックス需要。「あの曲だ」と分かることが倍音アレンジの面白さの前提になる。

2026-07-09: フェーズ1はTone.jsブラウザプロトタイプで音を確定させる(引き継ぎ決定の転記)

背景: Claude.ai企画セッションで決定済み。モバイル実装(Unity/Capacitor)の前に「どういう音が正解か」を確定させる。

決定: Tone.js + 単一HTMLでプロトタイプを作り、パラメータをリアルタイム調整できるUIで音響設計を検証する。フェーズ2の技術選択はプロトタイプ完了後に判断。

理由: 音の正解が見えないままネイティブ実装すると手戻りが大きい。

2026-07-09: マネタイズはフリーミアム+買い切りIAP、ネーミングは「造語+倍音ヒーリング」(引き継ぎ決定の転記)

背景: Claude.ai企画セッションで決定済みの方針を転記。

決定: ①曲単位販売は却下、無料版(一部コンテンツ+広告)+買い切りIAP1つ(全解放+広告除去)②アプリ名は「造語+倍音ヒーリング」のハイブリッド(造語は未定)③「倍音浴」は牧野持侑氏の登録商標のため一切使用しない ④健康効果を断定する表現は使わない(薬機法・景表法)。

理由: この市場の成功例(Calm/Endel/Brain.fm)に単品売りが皆無。RevenueCat の経験(hinata-mahjong)を流用できる。「倍音ヒーリング」は一般語なので検索は拾えるが独占不可、固有名は造語で確保する。

DEVLOG(作業ログ)

開発日誌

このプロジェクトでの作業を時系列で記録する。 最新のエントリが上に来る。


2026-07-11

20:50 - 第2弾変換とライセンス監査 → iOS雛形実装 → UI刷新

やったこと:

  • 第2弾変換: 夢のあとに / 羊は安らかに草を食み をMutopiaから変換(プロトタイプ15曲に)。ジムノペディ簡易版(手打ち)もJSON化
  • 全変換済み曲+第2弾候補のMutopiaライセンス監査(.rdf全確認)
    • PD 11曲 / CC-BY 3.0 2曲(カノン・コンソレーション3番、要クレジット)
    • CC-BY-SA発覚: 変換済みのグノシエンヌ1番・ノクターン9-2(差し替え要)、未変換のパヴァーヌ・グノシエンヌ2・3番(変換見送り)
    • docs/収録候補曲リスト.md に監査結果を反映
  • プロトタイプ強化: 高音折返しスライダー(デフォルトD6)+ 曲別評価UI(◎○△✗+一言メモ+コピー出力、localStorage保存)
  • 15曲試聴の結果「全曲悪くない」→ 破綻・抽出ミスなしと判断。音はプロトタイプ品質で確定扱いにしてフェーズ2着手
  • アプリ基本構造を確定: モード4種(リラックス/睡眠/集中/瞑想)× クラシック曲の2軸
  • ネイティブiOS雛形を実装(ios/ 配下、xcodegen管理)
    • SwiftUI + AVAudioEngine。16倍音加算合成ドローン(コード追従グライド+5度)、サイン波8ボイス旋律シンセ、LPF、リバーブ
    • モードプリセット移植(テンポ係数で同じ曲がモードごとに変わる)、高音D6折返し、バックグラウンド再生対応
    • ライセンスOK14曲をバンドル(tools/sync_ios_pieces.sh がCC-BY-SA自動除外)
    • iPhone 17 Pro シミュレータでビルド・起動・再生確認済み
  • UI刷新: ダークアンビエント背景(モード別アクセント色)、倍音オーブ(発音連動パルス)、アイコン付きモードピル、ライブラリシート(縦リスト選曲)
    • 横スクロールカルーセルは不評 → ボトムバー+シート式縦リストに変更で「めっちゃいい」評価

決めたこと:

  • CC-BY-SA曲は製品に使わず代替ソースで差し替え / アプリ基本構造 / UIデザイン方向(詳細は DECISIONS.md 2026-07-11 の3件)

気づき:

  • Mutopiaは同一シリーズでもファイル単位でライセンスが混在する(PD/CC-BY/CC-BY-SA)。変換前の .rdf 確認が必須
  • ヒーリング系音源はデスクでの短時間聴き比べでは差が出ない。「背景で消えてくれるか」の実運転評価(寝るとき・作業中)が本番
  • Xcodeプロジェクトは xcodegen(project.yml)管理にすると生成・再現が安定する

次回やること:

  • 実運転テスト(睡眠プリセット+1曲で実際に寝てみる)
  • iOS機能拡充(環境音層 / スリープタイマー / ロック画面コントロール / アプリアイコン)
  • CC-BY-SA 5曲の代替ソース調査

2026-07-10

03:50 - フェーズ2技術選択: ネイティブiOS(Swift + AVAudioEngine/AudioKit)に決定

やったこと:

  • フェーズ2の技術選択を検討(「Unityで作りたくない、ネイティブで作れるか」の相談から)
  • プロトタイプの音響処理(Tone.js使用API)を棚卸しし、ネイティブ移植の実現性を確認
    • 倍音加算合成 / ノイズ+フィルタ環境音 / FM・ポリシンセ / バイノーラル / リバーブ・リミッター・FFT → すべて AVAudioEngine/AudioKit にほぼ1対1で対応可能と確認
  • Unity / Capacitor / ネイティブ3案を比較(バックグラウンド再生・電池消費・IAP資産流用の観点)
    • Unity: バックグラウンドオーディオが不安定、描画ループ常時稼働で長時間再生の電池消費が不利
    • Capacitor: WKWebView内のWeb Audioがバックグラウンドでサスペンドされ、睡眠用途と致命的に相性が悪い

決めたこと:

  • フェーズ2はネイティブiOS(Swift + AVAudioEngine/AudioKit)で実装、iOS先行リリース(詳細は DECISIONS.md)
  • Androidもネイティブ実装可能(Kotlin + AudioTrack、またはC++共通コア + Oboe)だが、DSP規模が小さく移植コストが低いため、最初からC++共通化はせずiOS後に判断

次回やること:

  • 13曲の聴き込み → 曲ごとのテンポ・音色・オクターブ調整
  • 第2弾変換(パヴァーヌ / 夢のあとに / 羊は安らかに草を食み / グノシエンヌ2・3番)

2026-07-09

19:25 - プロトタイプ実装 → クラシック主軸へピボット → 楽譜変換パイプライン確立

やったこと:

  • 引き継ぎ.md(Claude.ai企画セッションからの引き継ぎ資料)を読んで作業開始
  • フェーズ1の Tone.js プロトタイプを prototype/index.html に実装
    • 3層構成: パッド層(最大16倍音の加算合成ドローン+LPF LFO)/ メロディ層 / 環境音層(雨・風)
    • バイノーラルビート(オプション)、FFTスペクトラム表示、プリセット4種
  • 「メロディ感がない」の指摘を受け、フレーズ生成モードを追加
    • 3〜6音のフレーズ生成 + モチーフ記憶と確率反復 + ルート/5度着地
  • 「クラシックの名曲を倍音で流せないか」の発想からクラシックモードを実装
    • 音符データ(旋律+コードルート)を倍音エンジンで演奏、ドローン基音がコード進行に追従
    • 手打ち簡易版2曲(カノン/ジムノペディ第1番)でデモ → 方向性が良く、主軸をピボット
  • 楽譜→音符データ変換パイプラインを構築
    • tools/convert_score.py: MIDI/MusicXML → JSON(music21。skyline法で旋律抽出、小節ごとの最低音でコードルート抽出)
    • tools/build_pieces.py: data/pieces/*.jsonprototype/pieces.js(曲リストに自動反映)
  • Mutopia Project を作曲家別に全件調査(ページネーション対応で約450件確認)
  • 収録候補曲リストを docs/収録候補曲リスト.md に作成(約30曲、PD判定ルール付き)
  • 第1弾13曲を変換して試聴可能な状態に: カノン / グノシエンヌ第1番 / 月の光 / トロイメライ / 悲愴第2楽章 / コンソレーション第3番 / 平均律前奏曲第1番 / 雨だれ / エリーゼのために / ノクターン第2番 / ブラームスの子守歌 / アヴェ・マリア / 前奏曲第7番(太田胃散)

決めたこと:

  • コンセプトの主軸を「倍音で聴くクラシック」へピボット(詳細は DECISIONS.md)
  • PD判定の3条件ルールを策定(詳細は DECISIONS.md)

気づき:

  • Mutopia は品揃えが想像以上(ショパン前奏曲全24曲、子供の情景全曲、アヴェ・マリア等)
  • 穴は4曲: ジムノペディ正確版 / G線上のアリア / ゴルトベルクのアリア / 月光第1楽章 → IMSLP・KernScores・単旋律曲は手打ちで埋める
  • piano-midi.de は bot ブロック + CC-BY-SA のため使わない
  • 知名度の高い曲を優先すべき(ユーザーは月の光・雨だれ・悲愴を知らなかった。エリーゼ級が正解)

次回やること:

  • 13曲の聴き込みと曲ごとの調整(テンポ・パート選択・オクターブ)
  • 第2弾の変換(パヴァーヌ / 夢のあとに / 羊は安らかに草を食み / グノシエンヌ第2・3番)
  • アレンジ表現の強化(強弱・対旋律・曲別チューニング)

最近のコミット

README

baion-healing

概要

(記入予定)

セットアップ

(記入予定)

使い方

(記入予定)