DinerGateApp 簡易仕様書

アプリ名

DinerGate

対象OS(ver.含む)

Android 5.0 (API level 21)

開発環境/言語

Android Studio Flamingo | 2022.2.1 Patch 2 Kotlin 1.7.20

開発期間

約2週間

機能概要(機能一覧)

  • レストランの検索:検索半径を指定し、現在地を元に近くのレストランを検索する
  • レストランの詳細表示:検索されたレストランの詳細情報を表示する

画面概要

  • 開始画面(StartScreen):検索範囲をラジオボタンで指定する ↓
  • 検索結果画面(SearchResultScreen):検索して得られたレストランの情報を一覧表示する ↓
  • 店舗詳細画面(ShopDetailScreen):検索結果画面で選択されたレストランの詳細情報を表示する

使用しているライブラリ、SDK など

  • API ホットペッパー グルメサーチAPI
  • ライブラリ Retrofit2 OhHttp3 Serialization coroutines coil 他

コンセプト

近くにお店ない?へのベストなアプローチ

こだわったポイント

「現在位置から近くにあるレストランを検索する」という昨日のアプリがどういうシチュエーションで効果を発揮するのか考えた時、 (家にいてレストランを調べているというような状況よりは)外出先で、今すぐ近くのレストランを探したいというような状況にて 威力を発揮すると考え、ゆっくり画面を見ている余裕が無い可能性もある外出先で、レストランを探すという目的を達成することを 念頭に置いてデザインしました。

デザイン面でこだわったポイント

近くのレストランを探すという最大の目的のために、必要となる情報を優先的に表示するようにしました。 特に、緯度経度から現在位置からレストランへの距離を計算して表示するようにしたのも工夫の一つです。

不具合

  • GPSからの位置情報がうまく取得できませんでした。
  • GetLocation内にブレークポイントを設定してトレスした所、何故かインスタンス生成時にonCreate関数が呼び出されていませんでした。
  • 開始画面にて2000mのラジオボタンを選択すると、検索ボタンを押して画面以降する際にアプリがクラッシュします。

アドバイスして欲しいポイント

制作中に疑問に思った点を挙げますので、可能な範囲でアドバイスを頂ければ幸いです。

  • 今回のアプリのように、権限を要求して、一回位置情報をとって来るというプロセスが必要となった場合、どのように実装するのが簡潔でしょうか?
  • 今回の課題で制作したアプリは、実際の業務で制作されるものと比べるとかなり小規模なものかと思います。業務レベルでのコードを理解・記述できるようになるためには、何が必要となるでしょうか?
  • 今回は主にJetpack Composeを仕様して制作しました。他にはxmlを使った記述方法もあるそうですが、実務では一般的にどのような方法で記述が行われるのでしょうか。
  • グルメサーチAPIから取得できる画像につきまして、総じて解像度が低かったり、縦横比がばらついていたりして、奇麗に表示させるのには一工夫が必要そうでした。このような場合はどのように対処するのが良いでしょうか。
  • 今回初めて取り扱うライブラリが沢山ありました。実務で利用する場合、ライブラリの中身はどのレベルまで理解する必要があるでしょうか。

自己評価

アプリ制作、およびKotlin未経験の状態からここまでのものを形にできたことは素直に評価したいです。 ただ、制作して最初の方は勝手がわからず、一つの問題が解決できずにとどまってしまった時間も長かったので、 大規模なプログラム開発経験が少ないことが露見していると思い知らされました。 制作の終盤では勝手がわかってきたこともあり、必要な機能の実装が目に見えて早くなっていったと感じました。 やるべき事やできる事が増えていく一方、必要な機能の実装で手一杯になってしまい、細部まで調整する時間がなかったのがもどかしいです。 これまでに制作したものの中で最も複雑な内容だといえるプロジェクトで、今回の課題を通じて大きく力をつけられたと強く感じます。 とはいえ、一方で経験不足も思い知らされたので、今回培った土台を活かして技術を伸ばしていきたいと感じられました。