Unity アプリの個人開発で直面した課題とアクションプラン

こんにちは。これまで Unity で路面電車シミュレータを我流で開発してきました。
その中で見えてきた課題、解決に向けたアクションプランを整理してみました。
現在、Unity 初心者かつ個人で開発している人に向けて、有益な情報になれば幸いです。

目次はコチラです。

アプリ開発の流れ

僕個人は書籍などは購入せず、オンラインの情報を中心に開発を続けてきました。
主なアクションは,

  1. どうすれば Unity でやりたいことができるかキーワードで検索
  2. google 先生が教えてくれたコード(スニペット) を切り貼りしてコーディング
  3. 動作確認, ok !!

の繰り返し。これで「まずは動くものを作ろう」を優先してきました。
これによって成果が出ました。

  • Unity の概念を理解した。
  • 一番の目標であった、路面電車の挙動をシミュレートできた。
  • いくつかのイベントにも出展させてもらえるようになった。
    • 新聞にも取り上げてもらった

このあたりは当初の方針である「動くものを作る」を達成できているかなと思っています。
(風景はまだまだですけどねー)

試作して見えてきた課題

一定の成果が得られた一方で、課題も出てきました。(わかってきました)

  • 実験コードに機能をどんどん追加していったので、コードが肥大化している。
  • 同じことをあちこちでやっていてパフォーマンスを意識できていない。
  • クラス間の結合度・依存度が強くなっている。
  • 機能追加の際に、既存機能のコード変更量が多くなってしまう。
    • たとえば車種の追加が容易にできない。
  • テストコードを書いていないので、動作検証コストが毎回かかる
    • 常に手動入力&目視検証

個人が Unity アプリをサクッと作るときは、上記のような課題をさほど気にしないと思いますが、 私のアプリには壮大な計画をあることと、上記課題を放置しながら進めるのは私の美的センスが 許さないので、解決を目指すことにしました。 (美的センスなんて言葉、初めて使いました)

車両クラスが、速度、Audio、ドア・・・ひとつのクラスがステート・役割を持ちすぎ!!

アプリのコードに望むもの

そこで、コードに望むことを次のように定義して、これを目指します。
定量的な目標を定義できれば良いのですが、いまのところ個人開発なので、そこまでは目指しません。

  • 機能追加時、修正時のコード変更量が最小となること。
  • 今後、路線・車種を追加していく → 既存コードの修正コストダウン
  • クラス間の結合度・依存度を弱くし、複数人で開発しやすくなること。
    • 今後、メンバを増やしていく → 開発効率アップ
  • 単体テストを実行できること。
    • 自動テストを書きやすくなる → 検証効率アップ

課題解決アクションプラン

課題を解決するためのキーワードは「デザインパターン」「MVC」「テスト」と考えています。
このキーワードは、僕の会社で耳にするものからピックアップしました。
これらについてまずは情報を収集し、内容が理解できたら、コードのリファクタリングに着手します。

  • デザインパターン
    • Unity では GameObject, Class をどのように分割するのが良いのか調べる。
    • 良い = 読みやすい、メンテナンスしやすい、テストしやすい、パフォーマンスが良い。
  • MVC
    • デザインパターンの一種でクラスを Model, View, Controller の役割で分割するパターンのこと。
    • 私の会社(組み込み系) で、ソフトウェアチームのシニアが口にしていた言葉。おそらくソフト業界の常識なので、これについても調べる。
  • テスト
    • Unity アプリを効果的に検証するためにはどうすれば良いか。
    • Unity 業界での一般的な検証手段を調べる。目指すのは自動テスト。

すでにこれらのヒントとなるコンテンツをいくつか発見しているので、内容を理解して、このブログで発信していこうと思います。 次回以降につづく。

スポンサーリンク

Twitterでフォローしよう