miso_soup3 Blog

主に ASP.NET 関連について書いています。

〜日記〜 育児アプリの完成を諦めた話

育児アプリを Swift/iOS で個人で開発していましたが、未完のままお蔵入りすることにしました。リリースできなかった…無念。成仏させるためにその話を書きます。

作ったところまでのスクショ:

f:id:miso_soup3:20180911155535j:plain

作ったところまでの動画:

youtu.be

※アプリ内でこちらの画像を使用しています:エンジニアを褒めるネコのLINEスタンプを作った話。|こばかな|note

コードはこちら: https://github.com/hhyyg/CareButtons/tree/master/CareButtons/CareButtons

構成

  • Swift / iOS
  • Firebase
    • Firestore
    • Cloud Functions
    • Dynamic Links

なぜ作ろうとしたか

  • Swift / iOS を学びたかった
  • モチベ維持のため、テーマとしては自分の生活に役に立つものを作りたかった
  • 既存の育児アプリに納得できなかった 夫婦で共有できる育児記録アプリ - ぴよログ
    • 操作が一部不便だった
    • IFTTT のようなイベントトリガーの仕組み・声による操作を、エンジニア以外の世界に普及したかった

(既存アプリの「ぴよログ」に納得できなかった、と書いていますが、これ系のアプリでは一番使いやすく、今も常用しているくらい良いアプリです。最近追加されたPDF出力機能が良かったです。)

なぜ途中でやめたか

「最低限動くものまで仕上げてリリースするボーダーライン」の設定を高くしすぎた

最低限の実装に「異なるアカウント間のデータ共有」を含めてしまったのが間違いでした。「共有リクエスト・承認・権限の設定」の実装のため、FirestoreだけでなくCloud Functions・Dynamic Linksを導入することになり、確保できる時間に対して難易度が上がりました。

個人情報の保有が辛い

写真は扱わなかったものの、個人データをWebサービスとして保持するのは、想像以上に辛く気が進みませんでした。GDPRもあります。ローカルだけに保存すればいいのですが、「アカウント間共有」を目的としていたのでやめました。

さいごに

ということで諦めました。育児系の開発は、"リリースできなかった" という話もよく耳にし、それを聞くたびに「絶対リリースまでいくぞー」と思っていましたが、私も同じ道を辿ることになりました。完全にゴール設定間違えた…。が、この経験のおかげで、次のUnityのアプリはリリースできたのかもしれないと慰めます。

音ゲー「音符池」で休符の矛盾にどう向き合ったか

答え:楽譜の正しさではなく、音ゲーのゲーム性を優先しました。

背景

7月にプロトタイプを作成し、8月に音ゲー「音符池」をリリースしました。前の記事にて、「休符の表現に矛盾があり、なんとなく休符を非表示にしている」と書きました。いくつか譜面を作成した中で、自分の中で「なんとなく」をある程度ルール化できたので書きます。最終的には、楽譜の通りに休符を表示するのではなく、一定のルールに沿って休符を非表示にしました。理由は、全部表示すると目が疲れてゲームを楽しめないからです。

どんな矛盾だったか

音ゲーに楽譜を取り込む」というテーマのもと、楽譜をそのまま表現しようとしましたが、少し変な表現になりました。

タップする音については、音価に基づいて正しい音符を表示することができました。つまり、四分音符は四分音符♩、八分音符は八分音符♪としてイラスト化して表示しました。

楽譜:

f:id:miso_soup3:20180823111648p:plain

その楽譜を音ゲーにするとこうなる:

f:id:miso_soup3:20180823112013p:plain

ただし、見てわかるように、休符はそのまま表示しておらず、八分休符を1つのみ表示している状態です。他の休符は表示していません。

f:id:miso_soup3:20180823112734j:plain

また、この画面を生成するために、表示する休符にはフェルマータを使用しました(↓下の画像)。これは、間違った楽譜の表記方法です。

ゲームの生成元となる楽譜:

f:id:miso_soup3:20180823113405p:plain

フェルマータは、記号が表す時間を延長化する、という意味です。よくある例としてフレーズの最後の音をしばらく伸ばしたいするときに使われます。)

音ゲーに楽譜を取り込む」というテーマなのに、嘘の楽譜を表示していることになります。この理由を「なんとなくそうしたいから」で済ましたくありませんでした。

正しく楽譜を表現するとどうなるか

では、楽譜通りに休符を全部表示するとどうなるか、実際にやってみました。比較動画を用意しました。

休符を全部表示するバージョン:

youtu.be

休符を一部表示するバージョン:

youtu.be

前者の全部表示するバージョンは、画面がとてもうるさく目が疲れてしまい、これは駄目だと思いました。普通の楽譜は、譜面台に配置して動くことはありません。しかしこのゲームではずっと左に動いているため、ゲーム上では楽譜通りに表示するべきではない、と思いました。

休符を表示するルール

そこで、休符は大事なところだけを表示しました。そのルールは次の3つです。

1 全パートで消費されていない時間は、どこかのパートで必ず休符として表示する

f:id:miso_soup3:20180823131845j:plain

2 他のパートの音符が時間を消費していれば、休符を表示しなくてもよい

f:id:miso_soup3:20180823131724j:plain

3 裏拍として表現したいところは休符を表示する

f:id:miso_soup3:20180823132100j:plain

このルールを守りつつ、他はバランスで休符の非表示を決めました。

実はそんな書き方の楽譜が既にある

上記のルールを、いかにも自分が思いついたように書きましたが、実際に楽譜として存在します。

例えば、打楽器ではなく、音階が存在する楽器の五線譜として書けば、先ほどのルールに一致します。

f:id:miso_soup3:20180823132540p:plain

また、バッハなどのポリフォニー(多声音楽のこと、反対語はモノフォニー)音楽の楽譜でも、一致するような表記があります。

f:id:miso_soup3:20180823134109p:plain

Fantasia and Fugue in C minor, BWV 537 (Bach, Johann Sebastian) - IMSLP/Petrucci Music Library: Free Public Domain Sheet Musicより

(↑小説の途中で四声から五声になっており、裏拍のために八分休符の表記があります。ただしそれまでの四声のときは休符は表示されていません。)

楽譜としては、このように五線譜での表記方法が正しいです(ドラム譜もそうかな?)。ゲームでは最大3パートありますが、それぞれをドミソで担当して五線譜として表現すればよかったのでしょう。しかし、音ゲーとして3パートで表示したかったために少し矛盾ができました。

終わり

ということで、休符の非表示については、楽譜を正しく表現することよりも、目が疲れないようにゲーム性を優先しました。しかし、それをルール化することはできました。でもそれって思いついたように言ってるけど、楽譜の世界でもすでに存在してたよね、ということでした。

ただ、残念ながら、ゲーム画面を生成するために、作成時は休符にフェルマータをつけています。MuseScoreに公開するときは除去しています。