View on GitHub

cat-oscillator-sync

cat-oscillator-sync

実装計画書 概要・比較

このドキュメントは、Rust版、Go版、TypeScript版の実装計画書の比較サマリーです。

各言語の実装計画書

  1. Rust版実装計画書
  2. Go版実装計画書
  3. TypeScript版実装計画書

要件

総合比較表

項目 Rust版 Go版 TypeScript版
推奨度 ⭐⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐⭐ (ブラウザ版)
環境構築の複雑度 ⭐⭐⭐⭐⭐ (簡単) ⭐⭐⭐ (中程度) ⭐⭐⭐⭐⭐ (簡単)
オーディオライブラリ cpal portaudio Web Audio API (ブラウザ版)
PortAudio使用 ❌ (cpal使用) ❌ (ブラウザ版) / ✅ (Deno版)
外部DLL必要 ❌ 不要 ✅ 必要 ❌ 不要 (ブラウザ版) / ✅ 必要 (Deno版)
ビルドツール Rust (rustup) Go + GCC Node.js / Deno
インストール手順 2-3ステップ 4-5ステップ 1ステップ (ブラウザ版) / 3ステップ (Deno版)
想定実装時間 7-11時間 8-12時間 10-15時間 (ブラウザ版)
パフォーマンス 最高 高 (Web Audio)

詳細評価

1. Rust版 ⭐⭐⭐⭐⭐ (最推奨)

✅ メリット

⚠️ 注意点

📝 インストール手順

# 1. Rustのインストール
# https://rustup.rs/ から実行

# 2. ビルドと実行
cargo build --release
cargo run --release

2. Go版 ⭐⭐⭐ (中程度の推奨)

✅ メリット

❌ デメリット

📝 インストール手順

# 1. Goのインストール
# 2. GCC (MinGW-w64) のインストール
# 3. PortAudio DLLのダウンロードと配置
# 4. ビルド
go build

💡 推奨アプローチ


3. TypeScript版

3-A. ブラウザ版 ⭐⭐⭐⭐⭐ (最推奨 - ユーザー体験) ✅ 実装完了

✅ メリット
⚠️ 注意点
📝 インストール手順(エンドユーザー)
1. ブラウザでURLにアクセス
📝 開発手順
# 1. Node.jsのインストール
# 2. 依存関係インストール
npm install

# 3. 開発サーバー起動
npm run dev

3-B. Deno版 ⭐⭐⭐ (補助的選択肢 - PortAudio要件重視)

✅ メリット
❌ デメリット
📝 インストール手順
# 1. Denoのインストール
irm https://deno.land/install.ps1 | iex

# 2. PortAudio DLLのダウンロードと配置
# 3. 実行
deno task start

3-C. Node.js版 ⭐ (非推奨)

❌ デメリット(推奨しない理由)

3-D. Obsidianプラグイン版 ⭐⭐⭐⭐ (計画中 - Obsidian統合)

✅ メリット
⚠️ 注意点
📝 実装計画
📝 インストール手順(計画)
# 開発環境
npm install
npm run dev

# Obsidianのプラグインフォルダにコピー
# - Windows: %APPDATA%\Obsidian\plugins\
# - macOS: ~/Library/Application Support/obsidian/plugins/
# - Linux: ~/.config/obsidian/plugins/

推奨実装戦略

最優先: Rust版 + TypeScript(ブラウザ版)

なぜこの組み合わせか?

  1. Rust版(ローカルアプリ):
    • Windowsローカル環境で最高のパフォーマンス
    • 環境構築が非常にシンプル
    • PortAudioと同等の低レイテンシ(cpal使用)
  2. TypeScript ブラウザ版(Web版):
    • 最も広くアクセス可能
    • インストール不要で即座に体験可能
    • クロスプラットフォーム対応

この組み合わせのメリット

補助的選択肢: Go版 または Deno版

Go版を選ぶ場合

Deno版を選ぶ場合


PortAudio要件についての考察

要件の解釈

元の要件: “ライブラリはPortAudio系(Python版と同様)を前提とする”

2つの解釈

  1. 厳密な解釈: PortAudioライブラリを使用すること
    • 該当: Go版、Deno版
    • 非該当: Rust版(cpal)、ブラウザ版(Web Audio API)
  2. 意図の解釈: Python版と同等の低レイテンシオーディオ処理を実現すること
    • 該当: すべてのバージョン
    • Rust版(cpal)もWeb Audio APIも低レイテンシを実現可能

推奨する考え方

目的重視のアプローチ:

ただし、以下のような選択肢も提供:


まとめ

推奨実装の優先順位

第1優先: Rust版 ⭐⭐⭐⭐⭐

第2優先: TypeScript ブラウザ版 ⭐⭐⭐⭐⭐

第3優先: Go版 ⭐⭐⭐

第4優先: TypeScript Deno版 ⭐⭐⭐

第5優先: TypeScript Obsidianプラグイン版 ⭐⭐⭐⭐

非推奨: Node.js版 ⭐


各言語の詳細は個別の計画書を参照