こんにちは、エンジニアのやまじです。
最近ゲーム制作エンジンとして名を馳せるUnityを用いたアプリ開発を行っており、基本動作の制作がひと段落しました。
今回は現在制作中のアプリについて解説していきたいと思います。(全2回予定)
開発動機
開発理由としては大きく分けて二つあります。
- サーバー上のデータベース(以下DB)やPHPファイルとの連携についてアプリ制作を通じて理解を深めたい
- 兼ねてよりUnityに興味があり、これを機会に開発に挑戦してみようと思ったから
アプリ制作するにあたり、以下のような要件を定義しました。
- 開発環境: Unity (C#) とサーバーサイドのPHPを使用し、アプリとDBを連携。
- 放置時間の計算: アプリが起動していなくてもサーバー側で常に経過時間を計測。
- データの同期: アプリ起動時、経過時間に応じてサーバー側で更新された最新データをDBから取得。その結果をアプリの表示(UI)に反映。
「アプリを閉じていても時間経過によってアプリ内の状態を変化させる」という特徴は「ねこあつめ」をはじめとする放置アプリの存在が思い浮かびます。
(※ねこあつめとは庭先に猫のご飯やおもちゃを配置し、様々な猫が集まってくる様子を楽しむ癒し系放置アプリです。)
検討の末、今回制作するアプリはUnityとサーバー連携の学習を兼ねた「放置アプリ」に決定しました。

※画面は完成予想です。
放置アプリの仕様
放置アプリの肝でもある「時間経過による変化を待つ楽しみ」という要素が必要であったため、タネを植えて作物を育て、最終的には果物として収穫するといった内容に決定しました。
本アプリ使用時の大まかな流れとしては以下の通り。
- 空の植木鉢にタネを植える
- 植木鉢から芽が出る
- 時間経過と共に芽は成長を続け、花が咲いた後はやがて果物になる
- 果物を収穫することで果物の所持数がプラスされる(本アプリにおけるスコア的な要素)
- 収穫した植木鉢は空の植木鉢となり、1に戻る
全体構成とファイル説明
このアプリの仕組み
このアプリは、見た目を担当する「Unity(クライアント)」と、データを管理する「サーバー」の2つが連携して動作しています。
Unity側(クライアント:表側)
役割: ユーザーが直接操作するアプリ画面(UI)全般を担当します。(フロントエンド)
言語: C#
主な動作:
アプリ起動時や、ユーザーがボタンを押したタイミングでサーバーと通信します。
サーバーから最新のデータ(植木鉢の状態、アイテム数など)を受け取ります。
受け取ったデータに基づき、植木鉢のグラフィックや持ち物リストなどの画面表示を更新します。
サーバー側(バックエンド:裏側)
役割: アプリの重要なデータ(経過時間、所持アイテム情報など)をデータベース(DB)で管理します。(バックエンド)
主な動作:
Unity側からのリクエスト(「データをください」「このボタンが押されました」など)に応じて動きます。
データベース(DB)と通信し、情報を記録したり、変更したりします。
Unityに最新のデータを送り返します。
各ボタンの基本動作解説
本アプリで使用するボタンは主に3つです。
それぞれのボタンを押した際の動きは以下の通りです。
・「タネを植える」

・「様子を見る」

・「収穫する」

次回予告
前編は以上となります。 ここまでで、アプリの大まかな仕様と、Unity(クライアント)側とサーバー側がどう役割分担しているか、その全体像をお伝えしました。
後編では、いよいよ具体的なプログラム処理や、実際に動作しているアプリの様子を詳しく解説していきます。
どうぞご期待ください!