🦁
Swift × Firebase × PencilKitでつくる多機能演奏支援アプリ「Fuyomi」開発ストーリー
こんにちは。Fuyomi開発チーム(@Dreamify)です。
本記事では、2025年6月1日にリリースされる**iOS向け多機能演奏支援アプリ「Fuyomi」**の開発背景、設計方針、技術スタック、そして今後の展望を紹介します。
アプリの概要と解決したかった課題
Fuyomiは、以下の機能を1つにまとめたオールインワン型の音楽練習支援アプリです:
- メトロノーム(振動・ライト対応)
- クロマチックチューナー
- 楽譜読み書きノート(PDF/画像)
- 自動スクロール(譜めくり)
開発動機はとてもシンプルで、演奏者として日々感じていた以下のような課題感からスタートしました: - アプリを切り替えるのが面倒(メトロノーム/チューナー/ノート別々)
- 音が聞こえない現場でメトロノームが使いにくい
- Apple Pencilで書いても保存・再利用しづらい
これらの「小さな不便」を解消し、音楽に集中できる環境を作るのがFuyomiのコンセプトです。
技術スタックと設計思想
フロントエンド
- Swift + SwiftUI:Appleエコシステムとの親和性と高速開発
- PDFKit:PDF楽譜の表示とページ管理
- PencilKit:Apple Pencil/指での描画入力
- AVFoundation:録音・再生周りの処理
- Core Haptics:メトロノームの振動制御
バックエンド
- Firebase Authentication(匿名ログイン):ログイン不要で端末間同期
- Cloud Firestore:ノート構成やメタ情報の保存
- Firebase Storage:PDF/画像/描画(PKDrawing)データの同期保存
実装で苦労したポイント
- PDFと画像の両対応UI
背景として表示する楽譜がPDFとJPGどちらの場合でも、同じ描画/スクロール/エクスポート構造で扱えるよう統一しました。特に難しかったのは、描画レイヤー(PencilKit)と背景のサイズ・位置の整合。
- 描画は常にCGContext上でPDFページやUIImageと合成
- 表示上は同じCanvasViewを流用しつつ、レンダリング時だけ分岐
- 書き込みデータのクラウド同期
PencilKitのPKDrawingデータをData形式でシリアライズ → Storageにアップロード/ダウンロードし、Firestoreで各ノートページと紐付け管理。匿名ユーザーでも複数端末から同期可能にしています。
- Firebase Storage:users/{uid}/notes/{noteId}/drawings/page_0.dataなどに保存
- Firestore:ノート構成(ページ数、作成日、表示名など)を保存
- 自動スクロール制御(BPM連動は断念 → スライダーに)
当初はメトロノームと譜めくりを同期させる予定でしたが、実装上の安定性や演奏とのズレを考慮し、ユーザーがスクロール速度をスライダーで指定できる方式に変更。今後、AIを用いた自動譜めくりの導入も検討中です。
制作体制とバックグラウンド
Fuyomiは、学生中心の団体「Dreamify」の開発チームが設計・開発を担当しました。
代表である私は大学で情報系を学びつつ、高校時代はオーケストラ部に3年間所属していました。
「演奏者のリアルな課題」を、「技術者としての視点」で解決する。
この両者をつなげるアプローチこそが、Fuyomi開発の核です。
なお、Dreamifyは2025年6月中に非営利型一般社団法人として正式登記予定で、今後も社会課題とテクノロジーを結びつけるプロダクトを複数展開していく方針です。
今後のアップデート計画
現在検討している次期バージョンの機能:
- 耳コピAI(MP3→楽譜):YouTubeや録音音源から楽譜生成
- 演奏分析によるテンポ調整/スクロール最適化
- アカウント機能:他端末共有、SNS連携、ユーザー管理
- Android・watchOS対応
ご意見・ご提案歓迎です!
Zenn読者の皆さんからの技術的視点でのアドバイス・改善提案・機能要望など大歓迎です!
以下いずれかの方法でフィードバックをいただけると非常にありがたいです。
- コメント欄でのご意見
- naohnymatsuka.business@gmail.comへのメール
- インスタグラムDMからのメッセージ
リンク
- App Storeリンク(※リリース後に追記)
- Dreamify公式サイト:fuyomi.com
- 技術ブログ:Qiita/Zenn/noteでも投稿中
Discussion