Unityを使った独りアプリ開発プロセス
ここではUnityを使ったアプリ開発プロセスの中で、特にスクリプト開発に関する部分で、この2年間の9種類アプリ開発経験の中で自然発生的に獲得しつつある、ある意味しょうもない、自己流プロセスについてここで説明させて頂きます。
プログラム初心者(専門家からは程遠い)
仕事としてのプログラムの経験はありません。得意なのはBASICです。後述しますがUnity + C#はBASICの開発環境に似ていると感じています。最終的に創り上げられる世界の性能や美しさは1000倍は進んでいますけど。
3Dに関しては3DCAD等でモデル創ってレンダリングして映像を創ったりはしていましたので3D世界に関してはバックグラウンドはあります。
自分の特性
・記憶力悪い:すぐに約束事等を忘れてしまう
・集中力低い:深くアーキテクチャを考えることはできないし、飽きっぽい。
・創りたいビジョンわりとあるかな:自分の創りたいものがわりと明確
・ネットでの調査や3D関連や音楽等の知識は持っている
・ステートマシン記述好き:インチキくさいけど実は複数同時状態遷移システム開発好き。
こういう地道なアプローチにはまるで向かない自分の特性ので、どうやってリアルタイムシュミレーション世界を創出するかを進めてきましたが、試行錯誤の結果として現在の開発プロセスになってきたように思います。
ちょっと最後のステートマシン好きは、ずるいですかね。ここはちょっと昔の仕事の関係かもしれませんが結構鍛えられているのかも知れません。ですがまああまり大したことではないでしょう。
自分的プログラム開発プロセス
正しい手順からはかなり違うところにいます。Unityのありがたいところは既に枠組みが完全にできていることです。3Dリアルタイムシュミレーション世界はある意味最初からできているのです。そこに登場人物となるオブジェクトを置いてちょこちょこスクリプトを加えるとすぐに動き始めます。
ちょっと創ってちょっと動かして動作や見栄えを確認して積み上げていくという手法です。アジャイルというのかどうかわかりませんが最初から最後までこの方法で創り上げます。またリリース後に時間が経過したアプリをアップデートする際にも同じアプローチです。
最近気が付きましたが、地球生命の進化のプロセスに似ているのかなと感じます。動き出したプログラムがあるとそこから徹底的に積み上げていくというアプローチです。この方式は記憶力が無くても適用できるのです。これは後で説明します。
使用言語とソースコード構成
C#を使います。ネット上にあるUnityの情報の中で圧倒的にC#が多いことは重要です。また言語としてもC言語やCPPに比べるとポインタの煩わしさがないので楽です。はっきりいって自分にとってはBASICと同じかな。たぶんC#の便利な機能のほとんどは使っていません。最低最小限の理解した部分だけでソースコードを記述しています。
そしてオブジェクト開発環境なのだけれども、ひとつの大きなソースコード(クラスでしょうか)によるスクリプトの中に多くの機能を詰め込むようにしています。というよりそうなってしまいます。その巨大コードで記述できない機能等は別の小さなスクリプトを準備して登場人物オブジェクトにアタッチします。
結果としてひとつの大きなソースコードに対して、だらだらと追加機能のためのソースコードを付けたしながら全体を構築していくことになります。これは重要なことだと思っています。
巨大スクリプトでの簡単記述アプローチのメリット
一般的には良いとはされないのでしょうが、記憶力が悪く、全体構成力も欠如している自分的にはとても適した方法だと考えています。その特徴をまとめると下記となります。
・プログラムの全体構成や機能分割等を記述したドキュメントは一切存在しない
・アプリの中心となる機能では複雑な命令や仕組みや機能は使わない(使えない)
・サイズは大きくなるけど、ひとつひとつは単純で簡単な記述となる
・小さいスクリプトは単純機能に限定される。
そして自分にとってのメリットは下記となります。
・ひとつの巨大ソースコードを見るだけでどのような機能をどう創っているかがわかる。
・小さく動かしながらだんだん大きな機能を実現していくことができる
・常に動かしながら機能を大きくしていくことができるので自分の興味が切れない
・1年後のメンテ時にも巨大ソースコードをしばらく見ていれば思い出せる
ということになります。独りで開発することが前提ですが、それでも1年後、2年後の自分との共同作業を考える必要がありますが、その意味でもこのプロセスは自分に適していると考えます。もとよりUnityがオブジェクト、テクスチャ、マテリアル、サウンド、イメージ等々のリソース部とスクリプトによる機能記述部が完全に分離されているという利点の上になりたつプロセスですが、どうも自分にはこの方法が良いと感じています。
いろいろと挑戦しながら機能した進化部分をどんどん進化させてきた地球生命の進化の仕組みに似ているなと感じましたのでそういう名前を付けるべきかと考えています。
その他
他にもいろいろとあるかも知れませんが、今回はここまでとします。必要に応じて項目の追加や掘り下げを行いたいと思います。
最後に
この2年間の9種類のモバイルアプリ開発経験から自然と身に着けつつあるUnityにおける独りアプリ開発プロセスについて簡単にまとめてみました。自分の考え整理が主な目的ですが、万が一どなたかが興味を持って頂ければ幸いです。
以上
=====================================
自作アプリ例:
モンスター バトル ピンボール
=====================================