Dribit medias - ドリビットメディア

昨日今日あった面白い話を発信するサイトです!発信は全て個人の見解であり、所属する組織とは関係ありません。

Androidのテストに関する新人研修のコンテンツを考える (2) サンプルの天気情報アプリを作成

前回

dribit.hatenablog.com

今回やること

何かのアプリ作ってテストコードを書くことを考えます。天気を取得するとか、自社の株価を取得するとか。

前回言っていたこの部分をやります。実際のAndroidアプリを研修で触ってもらって、自動テストがあるとないとではどういう違いがあるのかを説明しようと思っています。

でも、連休中なので仕事の研修のことはあまり考えず、アプリを作って遊ぶことに集中したいと思います。

株価の取得はJ-Quants*1のアカウント登録が必要で、複数人でビルドするにはトークンの管理に悩まされそうだったので、天気情報を表示するAndroidアプリを作ることにしました。天気ならYahoo!の気象情報API*2などを使えば株価よりも容易に取得できます。Yahoo!の気象情報API利用にもアプリケーションIDが必要なので、前もって以下のサイトからアプリケーションIDを発行しておきます。

Yahoo!デベロッパーネットワークヘルプ

作っていく

1. モックの天気を画面に表示する

通信を後回しにして、まずはUIを作成します。

Android StudioでWhetherAppプロジェクトを作成し、Cursorのプロジェクトルールをcursor.directory/android*3から入手して.cursor/rules/android.mdcに置きました。

次に、Cursorのチャット画面でモードにエージェント、モデルにclaude-3.7-sonnetを設定して、以下の指示を与えました。

フェイクの天気情報を画面に表示できるようにしてください。

すると、一発で以下の見た目の画面を作ってくれました!

GitHubソースコードも載せます。

フェイクの天気情報を表示できるようにする #1 · tonionagauzzi/WeatherApp@7736b6f · GitHub

2. 現在位置の天気を取得できるようにする

次に実際の天気を取得するようにします。要件は以下の通りです。

現在WhetherAppはフェイクの天気情報を表示するようになっています。 以下の要件に従い、実際の天気情報を取得して表示するようにしてください。

要件

  • 都市の名前から座標を取得し、座標から天気情報を取得します。
  • 画面には現在時刻の天気情報を表示してください。
  • テストも作成してください。
    • テストにはフェイクの天気予報を使ってください。

成果物

エラーハンドリングは全くできていませんが、実際の天気情報を取得して画面に表示することができ、最低限のViewModelテストも作成できました。

#2 現在位置の天気を取得できるようにする by tonionagauzzi · Pull Request #3 · tonionagauzzi/WeatherApp · GitHub

しかし、表示してから気づいたのですが、Yahoo!気象情報APIは雨量だけを返すものでした。なので、気温などは雨量を元に推定して表示するようになってしまっています。研修用の簡易アプリとはいえ、これでは心許ないので、他の気象情報APIを使って気温や湿度も取得できないか検討したいです。

GitHub Projectも使っています。何気に初めて使います。

"GitHub Projectのカンバンボード"
https://github.com/users/tonionagauzzi/projects/2/views/1

次回へ続きます。

補足

Yahoo!気象情報APIではなくOpen Meteo API*4を使うことにしました。このサービスは登録が一切不要で、様々な情報を取得できることがわかりました。

正しい気温、湿度、風速などを取得して表示できるようにする #5 by tonionagauzzi · Pull Request #6 · tonionagauzzi/WeatherApp · GitHub

次回

dribit.hatenablog.com