はじめに
Mac購入からアプリリリースまでに思ったこと、気づいたことを記録しています。Pythonなどの他言語が出ますが、知ってなくてもできるだけわかるようにしました。
SwiftUIとRealmというデータベースを使っておよそ一カ月弱で開発からリリースまで持っていきました。
Macの購入からはおよそ2カ月半程です。
完全個人開発で、完全独学です。なので、偏った知識の可能性が高いですが、思ったことを書いてます。
よかったら使ってみてください。
近況(日記的な部分なので飛ばしていい)
Pythonで人工知能を作らずに、SwiftUIでアプリを作りました。←いやなんでや
理由は色々あるんだけど、Pythonでの音楽系人工知能制作が思ったよりハードルが大きい&個人製作というより、アカデミックな感じでモチベーションが下がってしまったというのがある。
ちょっとネガティブな話になるけど、自分でも理解するためにモチベが下がった理由を挙げていく
-
いや、まあ当たり前っちゃ当たり前なんだけど、人工知能をアカデミックな感じで学ぶと、やはり機械学習は理系がメイン。だからしっかりしたことしようとすると、文系に先は無いような印象を受けてしまってモチベが下がった
要するに、努力に対する成果の期待が低くなってしまった。 -
目標を作るのが難しかった。
音楽というちょっと抽象的で、データの扱いも難しいものになると個人の学生がやれる範囲は限られてくる。理想はSerumのシンセを自動で弄ってくれるAIとか、音楽に合わせて歌詞を作ってくれるAIとか、マッシュアップを自動で作るAIとか、色々案はあるんだけど、そもそもデータが集まらないし、そもそもデータの形式が難しい。波形を食わせるのか、midiデータを食わせるのか、それとも別の形式に変換して食わせるのか。
なんかこうやって文章にするとやっぱ面白そうと思うんだけど、やっぱり難しいし、”適度な目標”を作るのが難しい。やりたいことをやろうとすると難しすぎる、というか道が見えな過ぎて進み方がわからない……という感じ。 -
あと、ここ最近のAIラッシュで膨大な情報を受けて疲れてしまった。マジで毎日情報が更新されていってて大変。
あと、アプリを作った理由の中に就活をすることになったというのもある。
今まで就活は視野に入れてなかったし、ブログで大学や就活の話は出来るだけ避けてたんだけど、自分の記録を残す上で避けられなくなってきたので。
就活する上で色んなIT企業のインターンシップに参加して、色んな企業を知りたいと感じたんだけどそれの為に”成果物”が欲しかった。
私は去年の11月からプログラミングを始めたから、成果がAtCoder茶色とPythonのDiscordBotくらいしかなくて、これだとちょっと弱いと感じてた。
そこで、丁度趣味程度で始めてたアプリ作りを本気でやったという感じ。だから、初めのアプリ作りは趣味のつもりだったけど、途中から就活の為の成果物という位置づけが大きくなっていった。
正直、成果物を作るぞ! って言う気持ちで物を作るのはあまりいい気持ちじゃないんだけど、結果としてめっちゃくちゃ頑張れたからよかったのかな。
作ってる間に色々感じたことメモしたので、ここから先は時系列順に作るまでの過程を残そうと思う。
0.結論
結論から話すのが大好きなので、箇条書きで気づいたこと一覧から。(目次ではない)
-
iOSアプリを作るならMacが必須。
-
Macは一番安いノートで良いと思う。
-
私はiOSのみで作ったけど、FlutterでアンドロイドとiOSどちらでも使えるアプリを作るのも悪くない選択だと思う。
-
アプリ開発は情報が極端に少ない。
-
AppStoreにアプリを出すには毎年99$かかる。
-
ChatGPTが生成したコードを理解せずにコピペは絶対しない。
-
あくまでもChatGPTはCopilotである。
-
出来たと思っても出来てない(アイコン制作やら、プライバシーポリシーやら)
-
リリース後でも保守をしていく必要がある
1.アプリを作ろうと思ったきっかけ
こんなのどうでもいいと思うので、簡潔に
-
競プロとかの部分的なコードだけじゃなく、何かアプリとか”一つの物”を作りたかった。
-
友達がiOSのアプリを作ってたので、その影響を受けた。
-
勉強時間を記録するアプリが欲しかったが、AppStoreに欲しい物が無かった。
2.どうやってアプリを作るか
アプリを作ろうとした時、AndroidとiPhoneの問題が出てきた。
Androidのみでアプリを配信するのか、iPhoneのみでアプリを配信するのか、どちらでも使えるアプリを配信するのかという問題。
私はiPhoneユーザーなので、どちらでも使えるアプリか、iOSのみで使えるアプリかの2択だった。ここで第1の壁なんだけど、iOSアプリを作るならMacが必須ということ。
厳密に言えば、iOSで自分でアプリを配信したい場合は自分のMacが必須。作るだけならMacじゃ無くても可能。
これは、どちらでも使えるアプリを作成した場合でも一緒で、iOS上でアプリを配信するなら必ず自分のMacが必要だった。
私は根っからのWindowsユーザーなので結構悩んだけど、他のOSも使ってみたかったのでMacを買うことに。
そして、開発方法はiOSのみで使えるアプリを選択した。
理由は、私が欲しいアプリを作るのが目標なので、私が使えれば良いから。
それと、Flutterというどちらのアプリも作れるフレームワークをちょっと弄ったんだけど、初心者向けの情報が少なくて出来る気がしないと感じたから。結果的には、iOSで使うSwiftUIというフレームワークの情報量も大差なかった。
だから、どっちでもいいと思うけどAppleらしいアプリを作るならSwiftUIがおすすめ。Swiftっていう言語はPythonに似てるってのもいいね。逆に、アンドロイドとiOSどちらも作りたい人はFlutterとかでも問題ないと思う。
3.Macを購入する
とにかく、macOSが入ってればアプリを配信できる。だから新品で理論上一番安いのはMac miniの税込8万5千円なのかな?
でも、個人的にはMacBook Airとかのノートパソコンがおすすめ。理由は、持ち運べて手軽だから。Mac miniでも勿論作成可能だけど、マウス・キーボード・モニターを用意する必要性とか、外で使えないとなると微妙なのかなという感じ。
私はMacBook Airの一番安いやつを買った。以下の画像のやつ。
学割で12万だった。2万Appleポイントも付いてきたから実質10万ってやつ。
※このAppleポイントはアプリ配信に必要な年99$に使えないので注意。
これ、Windowsのパソコンにちょっと詳しい人だとメモリ8GBっていうのが引っかかると思うんだけど、Macのメモリは優秀らしくて、実質16GB以上の働きをしてくれるらしいので安心してほしい。
でも、メモリが明らかに足りなかったことが1回だけあって、SwiftPlaygroundsっていう機能を使う時は明らかに足りない。でも、アプリ開発をする上で必須機能じゃないので、使いたい機能のメモリの食い具合を調べて、よほどじゃない限りは8GBでもいいのかな〜という感じ。
4.根っからのWindowsユーザーがMacを使ってみた感想
結論から言えば、別に聞いてたほど悪くはないなという感じ。
Macの一番の弱点は、Macに対応してないアプリが使えないことだと思うんだけど、私は既にWindowsパソコンを持ってるので困らなかった。とにかく、2番目のパソコンとしてのMacは悪くないと思う。
1番目のパソコンはアプリとか自由度の意味でWindowsがいいけどね。
Macの良いところ
-
Airpodsが気軽に使える
勿論、互換性があるので一々設定とか弄んなくてもワンタップで使える。気軽さは大事。 -
カッコいい
正直、なんだかんだカッコいい。見た目は大事。 -
画面録画が気軽にできる
windowsってまともに使える画面録画機能、標準装備してないよね? 11ならあるのかな。とにかく、気軽に画面録画ができるのが嬉しかった。拡張子は.movだけどね。 -
軽い(物理的にも動作的にも)
私は2年前に買ったHPの10万のWindwosノートも持ってるんだけど、それより100gくらい軽いし、動作も軽い。まあ、12万するから当然っちゃ当然。 -
充電めっちゃ持つ(新品だからかも)
2年使ってるHPのノートPCより充電は持つ。大体、1日3時間程度なら3日か4日は持つんじゃないかな。使い方にも勿論よってくるので、参考程度に。 -
画面が綺麗(小並感)
単純に解像度が2,560 x 1,600らしいので、まあ、綺麗。私は言われないとわからん。でも、色のコントラストはスゴイ綺麗。 -
プログラミングやシミュレーターを動かした程度では熱くならない
マジでうちのMacちゃんは全然熱くならない。スゴイ。HPちゃんはGoogleChrome起動しただけで人肌くらいになるんだけど? -
指紋認証めっっっちゃ優秀
HPちゃんの指紋認証成功率は20%くらいなのに対して、Macちゃんは95%くらい。速度も速い。マジで優秀。【ここから使用4ヶ月後の追記】
-
カメラがめっちゃ綺麗
Zoomをやる機会があってmacのカメラを使用したんだけど、めちゃくちゃ綺麗やねこれ。解像度、FPS共に私のHPノートより断然綺麗。
2年前の10万のHPと、今の12万のMacを比較するのも違う気はするが。 -
キーボード音が小さい
個人的には、人がいる環境でキーボード音を激しく出すのは好みでないので、静音寄りなこのキーボードは好き。 -
Apple製品との連携が強い
macでメモ帳を開くとiPhoneメモ帳と連動してたり、カレンダーを開くとiPhoneと連動してたり。結構これ便利。
やっぱり連携という意味でiPhoneを使っているひとはMacを買うと少し幸せになれる。
Macの悪いところ
-
MacBook airの場合だけど、パソコンの下にゴムがついてないから滑る
画面を開こうとしたとき、奥に動いちゃって落ちそうで怖い。
劣化しないという点ではいいかもしれない。 -
操作が違う
キーボード操作、トラックパッド操作の微妙なところがWindowsと違う。というか、そもそもキー配列が違う。FnとCtrlと半角キーの位置そこ!?
出来るだけwindowsに寄せた設定にしたけど、それでも違うところはある。イライラとまではいかないけど、小さな不満にはなる。 -
仕様が違う
OSが違うから当たり前ではあるんだけど、Windowsと仕様が微妙に違うところが多い。ディレクトリの操作とか、なんかそういうの色々。 -
usb-cしかない(macbook airのみかな?)
私の持っているMacbook Airにはusb-cが2口しかない。マジで不便。
だから、SSD256GBでも外付け買えばいいかと思ってる人は注意。対応してるやつじゃないと使えない。 -
画面の配分むずすぎ
いつもwindowsキー+矢印キーで画面の分割したりするんだけど、macはそもそも画面配分の仕様、というか仕組みが根本から違うっぽくてむずい。上手く画面分割できない。むずい。というか、画面半分にしたときのあのアニメーションいる?
良くも悪くも聞いてた話と違ったところ
-
トラックパッドの操作性が神
どんだけ操作しやすいんだろうと思ってたけど、私のHPのノートパソコンと大差なかった。恐らく、Macのトラックパッドを推している人はWindowsのトラックパッドを使ったことが無いんだと思う。Windowsでも2本指、3本指、4本指操作はできる。 -
割高
割高と言われがちなMacだけど、これで12万と考えたら別に悪くないくらいだと思う。安くはないけど、めっちゃ高い訳でもないかなぁ。学割が効かなくて14万だと、やっぱり高いかなぁ。
5.Swiftを学ぶ
2023年の3月16日に実はMacが既に届いてて、そこからSwiftを学び始めていた。
iOS用のアプリはXcodeという統合開発環境でしか作れない。だから、VSCodeとかは使わない。
作る際に使う言語は昔からあるObjective-Cという言語か、Swiftという言語。
Objective-Cは昔からAppleで使われてた言語で、Cと付くだけあってC言語をベースとしてる。昔からあるだけ、ライブラリとかは充実してるけど色々古い。私はSwiftを選んだので、ここでは紹介だけ。
Swiftは2014年に発表された新しめの言語。色んな言語のいいとこどりをしたような言語らしく、Pythonに似ていると私は思う。もしfor文で1から10までを出力したかったら
for i in 1..<11{
print(i)
}
でいける。違いはrangeの表現がrange(1,11)じゃなく1..<11という表現になっているのと、インデントじゃなく{}で区切りを示すくらいじゃない?
if文とかも大体似てて、所々違うけどPythonが分かってれば習得は速いと思う。
今新しいアプリを作るとなるとSwiftがメインなので、「C言語を学んでいました」とかじゃない限りはSwiftで良いと思う。
6.SwiftStoryboardとSwiftUI
Swiftでアプリを作る際に、SwiftStoryboardとSwiftUIという2つの選択肢がある。
SwiftStoryboardっていうのは下の画像みたいに実際にスマホ上に表示されるものをマウスで直接弄れる作り方。パワポ作成みたいにアプリを作れる感じ。(そんな簡単じゃないけど)
それに対してSwiftUIは完全にコードのみでレイアウトとか機能を追加していく形。下の画像みたいな感じ。
なんかSwiftUIの方が古そうに見えるんだけど、実はStoryboardの方が古くて、SwiftUIは2019年からの新しいフレームワークなんだよね。
しかも、Apple的には将来的にSwiftUIに乗り換えようとしている。だから、極端ではあるけどStoryboardは将来性が無くて、SwiftUIには将来性があると言える。
でも、Storyboardの方が古いから情報は多いし、直感的ではあるので初心者向けと言われてるんだよね。
私の場合は、3月中旬から1カ月半Storyboardを触って5月からは完全にSwiftUIに乗り換えた感じ。今回作った「べんミル」もSwiftUIで作ったよ。
正直、私的にはSwiftUIの方が使いやすいと思ってるし、Pythonに慣れている人なら尚更コードだけで作るSwiftUIをお勧めする。
コードという面ではStoryboardよりSwiftUIの方が圧倒的にコードが簡潔でわかりやすいよ。
でも、私みたいに一回Storyboardで何となくアプリ制作に慣れてからSwiftUIでも良いとは思う。ここら辺は好みの問題かもしれない。でも、最終的にはSwiftUIにならざるを得ない日が来るので早めに慣れてた方がいいとは思う。
7.どうやって学ぶか
ここが第2の壁。
SwiftUIは2019年からのフレームワークなので、情報が少ない。
また、Appleの公式ドキュメントは英語だしこちらも情報が少ないことがある。
だから、エラーが起きたときとか、○○みたいな機能を追加したいっていう時にほんっとに困る。
恐らく、正しい学び方としては
Swiftの基本文法を学ぶ→SwiftUIフレームワークを学ぶ→外部フレームワークを学ぶ
という方法が教科書的だし、段階的だと思う。
でも、今回は成果物の為にリリース速度を最優先にしていたので、作りながら学んだ。
具体的には、SwiftUIのVStackとかText()などの基本事項だけ本で学んで、あとはChatGPTに聞きながら作った。
私は2023年5月25日から6月6日の12日間でこのアプリを制作した。
空いた時間は本当に全部Macを開いてた。たぶん、12日で70時間くらいはSwiftUIを弄ったと思う。
……と言っても実は5月中旬から実は一回作ろうと試みて、挫折しているので、実際は20日くらいで作っている。
それでも恐らく個人の開発期間としては短いと思うので、何があって何をどう学んだのかをChatGPT主題に話していく。
8.ChatGPTを使う
2023年6月7日現在、ChatGPTはGPT-3とGPT-4があるけど1ヵ月3000円払ってでもGPT-4を使うのが圧倒的におすすめ。
理由は色々あるけど、プラグインを入れればウェブURLを貼ってそこから学んでくれるのが大きい。あと、私はGPT-4をずっと使っているので、GPT-3では参考にならないところもある。詳しくは後述。
1.コピペのみでChatGPTを使う(非推奨)
私が一番最初に行った使い方が、
機能の提案→ChatGPTが出力→それを完全に理解せずにコピペ
というもの。
これでも、1週間くらいでメイン画面とデータを記録するところまでは出来た。
しかし、絶対におすすめしない。
何故なら、コードが大きくなると現状のChatGPTだけではバグ修正が出来ないし、自分が成長しないから。
私はコピペで作っている途中でバグを見つけたんだけど、コードを完全に理解していないから、なぜそのバグが起きていて、どうやってそのバグを修正するのかが全く分かんなかった。ChatGPTに聞くにも、既にコードが数百~千数行になっていてChatGPTも理解してくれない。一部だけ抜粋して聞いても一部だけなので的確なアドバイスを貰えないし、分割して与えても理解してくれなかった。
もしかしたらChatGPTでも直せたのかもしれないけど、いずれ無理は出てくるだろうし、何より自分があんまり成長していないと感じた。
ここで心改め、そのプロジェクトを完全に捨てて一から作り直した。
それが5月25日の出来事。
2.ChatGPTはプログラミングとの相性が恐ろしく良い
ChatGPTとプログラミングの相性は恐ろしく良いと思う。何故なら、プログラミングは言語で、正解か不正解しかないから。
音楽とChatGPTの相性は普通に悪いと思う。何故なら、音は波で、正解不正解がないから。
音の本質は振動の波らしい。それをデジタル信号に変えて私たちはデジタルで扱っている。もし、それが言語に出来たらと思うけど、出来たとしても波を抽象化した記号にしかならない。だから、ChatGPTには記号化された質問しかできない。例えば、コード進行やメロディの提案等、波を音階にしている時点で様々な情報が抜け落ちているということ。本来は他の楽器がどう鳴っているか、今までがどんな流れだったのか等、様々な情報から音楽を作るけど、どうしても記号化するとそれらの情報が抜け落ちてしまう。しかも、答えが無いからそれが正解かわからない(自分が良いと思えば正解かもしれないけど)。
それに代わってプログラミングは元から言語であるため、ChatGPTに聞く際に情報が殆ど抜け落ちない。しかも、間違っていたらエラーや予期しない挙動が、正解であれば予測通りの挙動をするので初心者でも合ってるか否かが明確に分かる。勿論、例外処理をしてなかったり、わざわざ重い処理を行っていたり、可読性、保守性が悪かったりする可能性はある。しかし、完全でなくとも正解のコードから我々初心者は”学ぶ”ことができる。
つまり、何を言いたいかというとSwiftUIを学ぶ上でChatGPT-4はめちゃくちゃ相性がいい。しかも、正解か不正解かがわかるからそこからいろいろなことが学べる。
例えば、使っている機種によってレイアウトが崩れてしまった時、崩れている部分のコードをChatGPTに貼って「以下のコードのレイアウトが機種によって崩れてしまうのですが、何か解決方法はありませんか?」と聞くと解説と共に改善されたコードが出てくる。そのコードがしっかりと機能していれば解説をしっかり見て理解する。もし、その解説が本当か気になるならネットでダブルチェックする。そうすればホントに素早く沢山のことを学べる。
私は情報が少ない中こうやって学んで作った。ここでも大切なのは理解すること。理解するとChatGPTに的確な指示、質問ができるから更に勉強効率があがる。
3.Pythonで処理を書き、Swiftに変換する
ChatGPTでも複雑で大きいコードを作るのは難しい。また、指示も難しくなる。
そこで使った方法が、一番慣れているPythonでコードを作ってそれをChatGPTでSwiftに変換してもらうというもの。
この方法はある程度Swiftに慣れてしまったら必要ないと思うんだけど、まだSwiftの文法もままならない頃にこれをやってSwiftの文法をめちゃくちゃ学べた。
この方法で型宣言とか配列とかタプルのインデックスによる指定方法を学べたと思う。あくまでも作りながら学びたい人向け。
4.新しい情報をChatGPT-4に教えてもらう
元から情報量が少ないのに、新しい情報になればなるほど本当に日本語の情報が少なくなる。
例えば、今回私が使ったiOS16から使えるChartsフレームワークの私の欲しかった情報は日本に恐らく無い。
しかし、海外のサイトにはあった。ChatGPT-4では、プラグインで任意のURLを送るとそれを読んで解説してくれるみたいな機能があるのでそれを使って最新の情報も得た。
ChatGPTは2021年までのデータしか得てないので、最新のデータを得るときはプラグインを使う必要がある。
9.Pythonと競プロしかやってなかった私が苦労したところ
需要が限定的だけど、困ったところ、躓いたところを挙げていく……その前に、そもそもの話をする。
そもそも、今のところSwiftはアプリ等の開発でしか使われていない。そのため、Python等と比べ、アプリ起動中に極力エラーを出さないような仕組みになっているし、私達開発者もそれを意識しなきゃいけない。
この言語にはそんな特徴がある。
1.型宣言……って要る?
A.最初は面倒くさかったけど、あった方が後々助かるし、パフォーマンスも上がる。
そう。Pythonしか学んでないと型宣言という文化を知らない。
普通に変数nに整数10を宣言するとき、Pythonだと
n = 10
ってやるよね?
でも,これってnが変数で10がInt型っていうのを宣言してないよね? それでもPythonは勝手にnは変数として整数型の10を代入してくれる。
これはPythonが動的型付け言語だからである。要するに、入れられた値から型を推論するということ。これがn = “10”ならStringだし、n = [10]ならリストだと推論してくれる。
宣言するとき一々これはIntですよ! Stringですよ!って宣言しなくていいからめちゃくちゃ楽なんだけど、大規模なコードになって関数とかクラスを沢山使うとわけわかんなくなる。
わざとDate型の日付をString型で扱ってたりすることがあるので、そういうところでエラーが出るし、可読性が下がって何やってんのか分かんなくなる。
だから、Swiftにも型推論機能はあるけどSwiftでアプリを作るときは出来るだけ型宣言をした方がいい。エラーを出さない為にも。
因みに、Swiftで宣言するときは定数でなく変数であれば
var n : Int = 10
となる。
ここら辺は慣れるしかない。
あと、型推論に頼りすぎて1回アプリが起動しなかったことがある。これは、そもそも型推論がある程度重いって言うのと、型を宣言してあげた方が最適化できるかららしい。
だから、パフォーマンス的にも型宣言はした方がいい。
2.オプショナルってなんやねん
先ほども言った通り、Swiftは起動中出来るだけエラーを出さないような仕組みになってる。エラーを出さない為に、変数の値がnilの可能性があるときは変数がオプショナルという状態になる。というより、しなきゃいけない。
nilっていうのは一般的に言うnull、pythonで言うNoneみたいなもんで、何もない的な意味。オプショナルっていうのはnilが入る為に必要な型。
逆に言えばオプショナル状態じゃないってことはその変数には絶対にnilが入ってないし、nilは入らないし、入れようとした時点でエラーになる。
何も値が無いってnilいうのは本来エラーに繋がりやすい。この文字の色をnil色にしてください! って命令したら機械は困ってエラーを吐いちゃう感じ。だから、nilが入っている可能性があるときは変数をオプショナルという状態にしなきゃいけない。例えば、関数からの戻り値とかユーザーに入力してもらう時とかはnilが入ってる可能性があるからオプショナルになる。
それで、オプショナル状態の変数を使う場合、nilの場合の例外を作ったり、絶対にnilじゃない状況を作ってから、オプショナルを外してその変数を使う。そうすれば、値がnilなことによるエラーを防げる。
Pythonとは違い、こうやってオプショナルを挟むことでnilによるエラーを防ぐ仕組みがある。しかし、マジで最初は意味が分かんなかった。
実践的な使い方はこの記事がおすすめ。私は3回目くらいでしっかり理解できた気がする。
10.リリースする
理想のアプリが出来たらリリースする……のだが、ここで第3の壁。
リリースするのに、毎年99$のApple Developer Programに登録して、タイトル、アイコン、スクショ、プライバシーポリシー、案内サイトやら何やらを作成、設定してAppleの審査を通過しないといけない。
ここに関しては、既にアプリリリースをしたことのある友達に助けられたので、私から言えることはあんまり無いのよね。
時期にもよって必要なことが変わってくるので、適宜調べて欲しいんだけど、本当に心臓をずっと掴まれてる感じがした。
というか、たった今、審査を通過しましたという通知が届きました……まじで。。。よかった。。。
寝よう。
11.保守
おはようございます。
なんだかんだ朝AppStoreを確認したら無事アプリリリースできてた。
審査提出からリリースまで2日くらいかな?
リジェクトはmacOSの新しいバージョンでも開けるようにしてくれっていう機械的なやつが提出後すぐに来ただけで、あとはなかった。
これで終わりかと思いきや、ここからもアプリには保守が必要なのでアップデートを重ねていくつもりだし、2年に一回はアップデートしないとアプリ消されるんじゃなかったかな。
アジャイル開発ってほど上等なものではないけど、そんな感じで小さなアップデートを増やして機能を増やしていくつもり。
というか、既に小さなバグを2つ見つけてて、片方はSwiftUI固有のバグ、もう片方は理由不明のバグだから本当に困ってる。
コード的には問題ないと思うから、iOSのバージョン的な問題な気がするのよね。どっちもどうしろっちゅうねん。
おわりに
とりあえず、自分のためにも、成果物の為にもChatGPTと協力しながらアプリを開発しましたという話でした。
今後は、このアプリに自分の欲しい機能を追加しつつ、今度こそ音楽系の機械学習の何かしらを作ります。
正直、機械学習に拘らなくても作曲が楽になる物ならなんでも良いというのが本音なので、もしかしたら機械学習しないかもしれない。