🦁

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)データの同期保存

実装で苦労したポイント

  1. PDFと画像の両対応UI
    背景として表示する楽譜がPDFとJPGどちらの場合でも、同じ描画/スクロール/エクスポート構造で扱えるよう統一しました。特に難しかったのは、描画レイヤー(PencilKit)と背景のサイズ・位置の整合。
  • 描画は常にCGContext上でPDFページやUIImageと合成
  • 表示上は同じCanvasViewを流用しつつ、レンダリング時だけ分岐
  1. 書き込みデータのクラウド同期
    PencilKitのPKDrawingデータをData形式でシリアライズ → Storageにアップロード/ダウンロードし、Firestoreで各ノートページと紐付け管理。匿名ユーザーでも複数端末から同期可能にしています。
  • Firebase Storage:users/{uid}/notes/{noteId}/drawings/page_0.dataなどに保存
  • Firestore:ノート構成(ページ数、作成日、表示名など)を保存
  1. 自動スクロール制御(BPM連動は断念 → スライダーに)
    当初はメトロノームと譜めくりを同期させる予定でしたが、実装上の安定性や演奏とのズレを考慮し、ユーザーがスクロール速度をスライダーで指定できる方式に変更。今後、AIを用いた自動譜めくりの導入も検討中です。

制作体制とバックグラウンド

Fuyomiは、学生中心の団体「Dreamify」の開発チームが設計・開発を担当しました。
代表である私は大学で情報系を学びつつ、高校時代はオーケストラ部に3年間所属していました。

「演奏者のリアルな課題」を、「技術者としての視点」で解決する。
この両者をつなげるアプローチこそが、Fuyomi開発の核です。

なお、Dreamifyは2025年6月中に非営利型一般社団法人として正式登記予定で、今後も社会課題とテクノロジーを結びつけるプロダクトを複数展開していく方針です。

今後のアップデート計画

現在検討している次期バージョンの機能:

  • 耳コピAI(MP3→楽譜):YouTubeや録音音源から楽譜生成
  • 演奏分析によるテンポ調整/スクロール最適化
  • アカウント機能:他端末共有、SNS連携、ユーザー管理
  • Android・watchOS対応

ご意見・ご提案歓迎です!

Zenn読者の皆さんからの技術的視点でのアドバイス・改善提案・機能要望など大歓迎です!
以下いずれかの方法でフィードバックをいただけると非常にありがたいです。

  • コメント欄でのご意見
  • naohnymatsuka.business@gmail.comへのメール
  • インスタグラムDMからのメッセージ

リンク

Discussion