名称 |
MIRS1904 ソフトウェア開発報告書 |
番号 |
MIRS1904-SOFT-0002 |
版数 |
最終更新日 |
作成 |
承認 |
改訂記事 |
A01 |
2020.2.7 |
渡部丈留 杉山七海 |
牛丸 |
初版 |
ドキュメント内目次
本ドキュメントはMIRS1904 Thynk Projectのソフトウェア開発報告書についてのドキュメントである。
作成したプログラムのダウンロードリンクを以下に示す。
- ソースコード
3.1 タブレットアプリについて
完成したアプリケーションの動作シュミレーションを以下に示す。
・動作シュミレーション
Unity を用いたアプリケーション開発をした。
画面内での動作シミュレーションや操作のヘルプ、実際にMIRS本体を動かすなど当初予定していたすべての機能を実装できたのでよかったと思う。
Firebaseを用いた遠隔操作は初の試みだったがMIRSに動作コマンドを送る、MIRSから点数を受け取り表示することができた。
反省点としては、発表会1週間前にビルドの不調によりアプリのアップデートができなくなったことで競技時間、音量の修正ができなかった。
3.2 Firebase通信部分について
IPアドレスが変わってしまう問題を解決するため、Googleのサービスの一つである「Firebase RealTimeDataBase」を使用した。
今回、データベースの技術選定について非同期的なデータの利用が容易であるRealtime Databaseを利用したことは、開発効率や利用局面において当てはまっていたと思う。
最初に案として上がっていた、Photon、MonobitEngineによるオンラインゲームエンジン制御や、Railsなどを利用した自作サーバーの案を利用して、工数が膨れ上がってしまっていたかもしれないと思うと身震いする。
また、MIRSとサーバーとの通信にはnode.jsを用いた。
JavaScriptは書き方が柔軟すぎることで苦労をし、静的解析の重要性を身を持って知った。
また、実装のときにはシングルスレッドで動くことを考慮しておらず、後に苦労した。
今回のプロジェクトに関しては、非同期的な動作に対してどのように対処をするべきなのか、エラーハンドリングについてどのようにすれば、プログラムが落ちないようにできるか意識するようになった。
3.3 走行、的制御について
走行制御については、node.jsから既存のC言語プログラムである、test_requestをコマンドライン引数から使えるように改良したものを使っていた。来年度もこのプログラムは利用価値が高いものとして利用できると思う。
また、的制御に関してはPythonで制御をした。Arduinoからのシリアル信号を受信し、特定の条件が揃ったとき、データベースへ送信するものとなった。
PythonではFirebaseRTDBのイベント通知が使えず、実装が愚直なものとなってしまった。もう少し良い方法があったかもしれない。
3.4 WiFiについて
来場者が来たときに、スマートフォンのBluetoothやWiFiが2.4GHz帯を占領していたため、非常に遅くなってしまった。
WiFi接続が必須のプロダクトのため、この辺の対策が甘かったなと反省した。
今回取れる策としては、自前のルータを用意して至近距離に配置やWiFiアダプターを用意して5GHz帯を利用するものがあった。
次回、会場展示などでWiFi接続が必須となる場合があれば、この経験を活かして策を取っていきたい。
3.5 アプリUIデザインについて
今回開発したアプリは対象ユーザーを小学校低学年に絞った為、子供にも分かりやすいデザインに仕上げた。
アプリのアイコンやボタン等、アプリの大部分のデザインはClio Studio Paint、文字等の細かい箇所はUnityを用いて設計した。個人の勉強不足や実力不足から、アイコンの解像度が低い等の問題は発生したが最終的に全てのUIを完成させる事が出来た。
3.6 全体を通じて
メンバー全員が不慣れな技術であったのにもかかわらず、開発に成功したので、結果的に良かったのではないかと思います。
オンラインで制御、監視ができたので、この事をしっかりとPRできなかったことが悔やまれます。
「Firebase」「pure node.js」「Unity」を利用して、実際に動作し、完成に至ったことをアピールするべきだったのかもしれません。各々の長所を生かして目標を達成することができたので良かったです。
MIRS DATABASE