# プロジェクト概要
このプロジェクトは医療系のアプリで尿か血液を検体として、病原菌があるかないかを判定するアプリです。
具体的には、本来、上記検体から病原菌を特定するには培養してから顕微鏡を使って目視で病原菌があるかどうか特定しますが、培養するのに大体1週間超の時間がかかります。
そこでこのプロジェクトで作ったアプリでは、予め培養する前の検体と培養した結果の画像をAIによって学習させておきます。そして検査したい検体をカメラで撮ってこのアプリで解析させると培養に要する時間を省略して結果を返してくれるアプリを作っていました。
---
# チーム情報
フロントエンドのPLからタスクをもらっていました。
PM1人、バックエンド2人(PL1人)、フロントエンド3人(PL1人、UIデザイン担当1人、自分)
# 開発・実装内容1
## 【概要】
写真3枚が1画面に出力され、写真をタップして選択できる仕様になっていましたが、枠がズレてたので枠が写真とピッタリ合うように修正をしました。
## 【どのような機能の開発・実装か】
ログインをする前に「どれが陽性の写真でしょうか」みたいな正しい写真を当てるちょっとしたクイズ画面の修正
## 【課題・問題点】
3択の写真のどれかをタップしてすると赤枠がスライドして選択した写真を囲むアニメーションがありました。
しかし、私が案件に入る以前にこの画面を変更していて、この赤枠が写真とズレていました。
## 【打ち手・使用した技術】
赤枠と写真が左右上下にズレていたのでまずは左角に合わせるように修正してみました。しかしどうやら写真のサイズ変更を行ったようで赤枠自体も小さかったので枠の縦と横のサイズをピッタリあわせるようにして修正しました。
このクイズ画面を表示されたときはピッタリ合っていましたが、例えば3枚目をタップして赤枠を移動させてみると移動距離が変わっているせいでまだずれていたため、移動距離を計算しなおして枠のサイズ・枠の大きさ・枠の移動距離を合わせることができました。
---
# 開発・実装内容2
## 【概要】
プログラムを書いて多言語化が実装されていましたが、flutter_localizationsを使って実装することになったのでその移行作業
## 【どのような機能の開発・実装か】
元々制作していたアプリは外国もターゲットしていたアプリなので多言語化が必須でした。元のコードは引数にja,enを入れてメソッドを使って日・英の出力を変える方法をとっていましたが、管理が難しくなったようなのでflutter_localizationsで多言語化することになりました。
## 【課題・問題点】
切り替える文章のリスト化、text widgetの中に書いてあるメソッド名をflutter_localizationsで認識されるように書き換える。
また作業を取り組んでいる最中の追加の変更でしたが、このアプリは医療用と研究用のバージョンの切り替えがあり、日本の医療の法律上、研究用の場合は「微生物」という単語を使ってはいけないらしいので、研究用の場合は「菌種」という文言にしないといけなかったので、英・日(医療用)・日(研究用)の3バリエーションの切り替えが必要でした。
## 【打ち手・使用した技術】
languageというフォルダに切り替える文章があったので、まずは切り替える文章をまとめて、app_jp.arb・app_en.arbにそれぞれまとめる。
実際に文字が使われているtext widgetを下記のコードに書き換える。
Text(AppLocalizations.of(context)!.切り替えるトリガー名)
また、jaの場合は更に2つに分かれているため、「微生物」と書いてある文章は上記のコードに加えて、下記のように引数も加えて切り替えを行いました。
Text(AppLocalizations.of(context)!.切り替えるトリガー名(引数))
---
# 開発・実装内容3
## 【概要】
Mockitoを使って指定した値がapiからとれているかどうかの単体テスト
## 【どのような機能の開発・実装か】
テストコードを作成
## 【課題・問題点】
私がこの案件に入る前にテストをせずにフロント・バック問わずどんどん機能を実装していってたみたいで、昔に書かれたテストコードが通らなくなっていたので既存のテストコードを修正する必要がありました。
## 【打ち手・使用した技術】
Mockitoを使っていて既存の単体テストを修正しました。全部で10ファイルくらいあったと思いますが、全部の仕様を理解しきることができず、4-6ファイルくらい行ったくらいで時間切れが来てしまいました。
---
# 開発・実装内容4
## 【概要】
viewフォルダとシュミレータ画面をスクショしてどう対応しているか確かめるドキュメントを作成
## 【打ち手・使用した技術】
viewファイルのパス名と、go_routerを使っていたので画面URL、とシュミレータ画面をスクショしてspreadsheetに張り付けていました。