完全に未経験、勢いでアプリを作ってみて思ったこと。その1
JABです!
私が10数年前に受けた試験が先日行われたようで、航空学生志望者の皆さんは頑張ったことでしょう。
今日は初めてアプリを作ってリリースするという経験をして感じたことを書いていきたいと思います。
どんなアプリを作ったか
簡単に言うと、パイロットになるために必須の「適性検査」をただひたすらに練習するアプリです。
詳細は⬇️⬇️⬇️
結論
制作、リリースしてみて、総評としては
「予想通り」
と言ったところでした。
それは以下の点において、
・時間、コスト
・実装できた機能
・アプリとしてのクオリティ
・ダウンロード数
・フィードバック
・収支
大体がこれまでに経験してきたもの(特にWeb制作、解析、マーケティングやオンラインショップ運営)から、概ねの予想を立ててやってきました。
正直毎回「奇跡が起きないかなあ」って言う希望は持っているものの、現実的なところを考えたときの予想はほぼ当たっていました。
制作に関すること
アプリ開発に関することを項目に分けて考えてみます。
① ゼロから独学で学ぶことについて
当初は制作会社に外注してやりたかったところですが、やはりコスト的な面で「回収の算段が立たない」ので、やむを得ず「Unityによる自主制作」にしました。
正直なところ、「調べる能力」さえあれば今回のアプリ程度のことは誰でもできると思っています。ユーザーの多いサービスはやはりリファレンス(参考記事など)が多いので、挑戦するハードルは低いんだなぁと。Unityも例外なく、そんな感じでした。
あとは気合ですねw(←価値のない情報になりそうw)
② 設計の仕方がわからず、無駄の多い制作になった
以前もnoteで書いたかもしれませんが、初めての製作となると、全体の設計を詰めていく作業をすっ飛ばして、
これってこうしたらどうなるんだろう?
って、どんどんいじり始めてしまします。今回は完全にそのパターン。
設計の仕方自体わからないので、まずはやりたいことを形にできる方法を最短経路でググっていくことに。
これだと、そのとき必要なスクリプトの書き方やオブジェクトの設定などはすぐに実装できます。
ここで問題になってくるのが、
修正が必要になったとき、途中で仕様変更しようと思ったときに、膨大な寮の修正が必要になる
ということでした。
ある程度、プレハブ化したり、プログラムは使いまわしやすいように設計したり、とにかくバグ修正や改修などを最小限の作業でできるようにしておかなければ、完成に近づくにつれて、その時点で発生したトラブルに対処する作業量が多くなります。その後のアップデートでも、ちょっとした変更なのにたくさんのシーンを行ったり来たり、たくさんのスクリプトファイルを変更していかなければならなかったりと、地獄を見ることになります。(なりましたw)
設計の段階で、特にスクリプト(今回に関してはC#)を効率的に運用できるように意識する必要があるし、Canvasなどもいくつか作成し、目的に応じて使い分けてやっていく必要があるなぁと感じました。
コピペでできる範囲をできるだけ柔軟に広くしておく必要があるなぁと。
③素材の準備について
今回はとてもシンプルな画像しか使っていません。ほとんどの画像をIllustraterで作成しましたが、シーンの数がかなり多かったので、その分画像を作らなければならずかなり苦戦しました。
また、制作作業は基本的にPCで行います。(Macbook Pro/34インチウルトラワイドディスプレイ)
しかし、プレイするのはiPhoneなどのスマホを対象としています。ここで問題になってくるのが、画像の視認性です。
大きなディスプレイで作業しているので、基本的にどの画像もみやすい環境での制作になります。PC画面では十分視認できるサイズの線や文字、オブジェクトだったとしても、実際にスマホ画面でプレイしたときに非常にみづらかったりしました。
基本となる画像を作成したら、まずはそれを一旦Unityプロジェクトに取り込み、実機でみてみるなどして確認したのちに、量産していく必要があるなぁと感じました。
また、デザインについてもやはりデザインカンプを作成して、全体イメージをつかんでから作成に入ったほうが結果として効率がいいなぁと思います。
実際にVer2.0でアップデートした時は、まずはUIデザイン含めてゲーム全般のSceneのデザインカンプを作成して、その中から必要な画像素材を書き出し、プロジェクトに取り込みという流れでやると、Unity内であーでもないこーでもないって無駄な調整もしなくて済むようになりました。
④必要な機能実装にかかるプログラム(C#)作成について
カウントダウンタイマーやトータルプレイタイム、スコア表示やリザルト表示など、基本的には数値を計算したり、表示したりする機能を作成しました。もちろん正誤判定やシーン遷移についてもプログラミングしていきます。
Unityでの制作となると、Unity独自の書き方になったりするので、全て自作でやるのとはちょっと違います。
だから難しいとかではありませんが、
Unityではこういう書き方でOKだ
というようなものが多くあるので、効率よくリファレンス(参考記事)を探していく努力が必要ですね。
私はググるときには、
「Unity Scene ランダムに遷移」
「Unity 時間計測 方法」
など、必ず「Unity」というワードを入れて検索をかけます。そうすれば本当にたくさんの記事が出てくるので、実際に必要そうな内容が書かれている記事を選定して、ときにはコピペして実装したりしました。
ユーザーが多いサービスやツールって、先人たちが経験に基づいた有益な記事をたくさん公開してくれるので、初めての開発でも案外苦労は少なくできるんじゃないかと思います。
ググってコピペしても、実際に動かなかったり、やりたいことと若干違ったりするのが当然です。でも、ググってコピペした後に、
どういう記述だろう?どういう意味だろう?どういう構造だろう?
って考えていくのが一番早い学習方法なんじゃないかなぁと。
未経験からスタートするんですから、とにかく学習効率は上げておかないと、アプリリリースまで膨大な時間がかかったり、途中で挫折してしまったりする可能性が高まってしまいます。最初はコピペでもOK、そして時間があるところでそのプログラムを実際に見ながら一つ一つ内容を噛み砕いて理解していく感じで進めるのが自分なりのベストウェイでした。
⑤リリースについて(iOS:App Store/Android:Google PlayStore)
アプリを作るところまではできました。
このあとは実機での動作チェックと、ストアへのリリースです。
正直、ここでかなり躓いた感じがあります。
developer Programへの登録やアカウントの作成などについては、簡単だし時間もそんなにかかりません。
ただし、
作成したアプリデータをビルドして、ストアにアップロードする
これがなかなか大変でした。
各種認証が必要だったり、ストア規約に則ったアプリでなければならなかったり…
とにかく、各段階でよくエラーが出る、リジェクトされる。
ここでは詳しく書きませんが、AppStore Connectでアプリをアップロードできるロジックというか仕組みを理解しないと、認証の意味とか全然わからなかったりするんですよ、これが。
ビルドしてアップデートのためのストアアップロードする時に、なんでXcodeから勝手にアップロードできるんだろうって疑問が出たりもしました。
こういうのってエラーが出たときに知識になっていくんですよ。
エラーが出たら調べる。そしたらできるようになる。エラーの内容と対処の方法がわかった時点でやっと仕組みを理解できるって感じでした。
(逆にいうと、参考記事などを見て真似しただけでできちゃったところって実は細部まで理解してなかったり…w)
また、Unityの場合、プラットフォームの設定をiOSとAndroidで簡単に使い分けることができて、ビルド設定でちゃちゃっとやれる感じなんですが、それでもアップロードの方法に関しては双方違うのでどちらもエラーに対処しながら、進める感じでした。
たまに3時間くらいひとつのトラブル解消に費やすこともありました。
でもせっかく作ったアプリはリリースしたいので、ここも気合で乗り越えなきゃ!という感じでした。
他にも…
他にも沢山のことを学んでいくことができました!しかしながら、、、
ここまでで3500文字もしてしまったので、続きを次回のnoteで書いていきたいと思います。
内容は以下の項目で、時間があるときに書いていきます。
⑥リリースの設定
⑦料金の設定
⑧プロモーション
⑨フィードバック
⑩アップデート
最後までお読みいただきありがとうございます!
また近々その2を公開していきますので、よかったら読んでみてください!
Twitterもやってますので、そちらで日々の日常や思考を吐き出してます。
よかつたらTwitterも覗いてみてください!
JAB Urano(@zeroriderjab)