# プロジェクト概要
## 目的、背景
施工管理アプリの開発
ANDPADのようなスマホアプリを開発したいという目的で受注
要件定義は無く、ワイヤーフレームのみを作成し、そこから開発がスタート
## 規模感・チーム構成
- 1千万円規模のシステム開発
- 基本的には2人体制で開発
- バックエンドとスマホアプリ開発で分かれる
- 管理サイト開発・スマホアプリ開発
## 担当した役割
- スマホアプリ開発
- 管理サイトの工程表機能の作成
## 使用技術や開発環境等
- PHP
- Laravel
- Dart
- Flutter
- JavaScript
- jquery
- Vuejs(工程表機能に使用)
- さくらサーバー
# 取り組んだ課題
- 社内で初めてのスマホアプリ開発
- クライアントからの不信感解消のための要件定義作成
## どんな課題だったのか
### 社内で初めてのスマホアプリ開発
社内ではスマホアプリ開発をしたことがない状態でした。そのため、知見が無く、自分で調べて実装していくという課題がありました。
### クライアントからの不信感解消のための要件定義作成
ワイヤーフレームからクライアントと相談・開発を進めていたが、クライアントからの不信感が募り、システムの設計をやり直すことになりました。
要件定義を社内では作成できる人がおらず、外部のアドバイザー協力の元、要件定義を行わないといけない課題がありました。
システム要件、機能要件、非機能要件の標題に分けて要件定義を作成しました。
システム要件にはシステムの目的やシステムのフロー図等
機能要件にはワイヤーフレームの内容等
非機能要件にはインフラ構成等
初めての要件定義でしたが、アドバイザーの方に毎週確認していただき、作成をしていました。
## 技術的なアプローチや工夫した点
### 社内で初めてのスマホアプリ開発
■技術的なアプローチ
開発期間が半年程度しか無かったため、納期を縮めるために色んなライブラリを採用
- スマホアプリでのPDF表示の要望(下記ライブラリを用いて解決)
- flutter_cached_pdfview(https://pub.dev/packages/flutter_cached_pdfview)
- スマホアプリでの工程表表示の要望(下記ライブラリを用いて解決)
- syncfusion_flutter_calendar(https://pub.dev/packages/syncfusion_flutter_calendar)
- 一度ログイン状態を維持したいとの要望
- セキュアにログイントークン情報を保存することで対応
- オフラインでの対応要望
- スマホDBに保存(画像やチャットなどのデータ)することで対応
■工夫した点
- 実装方法を調べる → 実装方法を選択 → 実装
- このサイクルを行い、実装していくことに注力をしていました。
- ライブラリを使う際は、star数が多いものを選ぶ
- 技術的な記事の検索は、英語で行う(日本語記事が無かったため)
最終的には会社間の問題により失注となりました。