Windows Formsで作る天気取得アプリ
― Web API × JSON × Dictionary を体験する ―
はじめに
今回は、Windows Forms を使った
天気取得アプリ を題材に、
- Dictionary(連想配列)
- Web API へのアクセス
- JSONの解析
- PictureBoxで画像表示
をまとめて理解していきます。
このサンプルは、
「デスクトップアプリがインターネットとつながる」
最初の体験になります。
1. アプリの全体構造
処理の流れはとてもシンプルです。
① 都道府県を選択
② Webサービスにアクセス
③ JSONデータを受信
④ アイコンURLを取得
⑤ PictureBoxに表示
つまり、
UI → 通信 → データ解析 → 表示
という構造です。
2. Dictionaryで都市コードを管理する
Dictionary<string, string> cityNames;
これは、
| Key | Value |
|---|---|
| 東京都 | 3 |
| 大阪府 | 1 |
| 愛知県 | 2 |
| 福岡県 | 10 |
のように、
「名前」と「コード」をセットで管理する
ための仕組みです。
初期化
this.cityNames = new Dictionary<string, string>();
this.cityNames.Add("東京都", "3");
this.cityNames.Add("大阪府", "1");
this.cityNames.Add("愛知県", "2");
this.cityNames.Add("福岡県", "10");
ComboBoxへ追加
foreach (KeyValuePair<string, string> data in this.cityNames)
{
areaBox.Items.Add(data.Key);
}
表示しているのは Key(都道府県名)だけです。
3. Web APIへアクセスする
string cityCode = cityNames[areaBox.Text];
string url = "https://********/weatherCheck.php?city=" + cityCode;
HttpClient client = new HttpClient();
string result = client.GetStringAsync(url).Result;
ここがポイント
- HttpClient → Web通信を行うクラス
- GetStringAsync → 非同期で取得
- .Result → 強制的に同期処理
本来は async/await を使いますが、
今回は流れを理解する段階です。
4. JSONデータを解析する
Webから返ってくるデータはJSON形式です。
例:
{
"url": "https://example.com/icon.png"
}
JSONを解析するコード
JObject jobj = JObject.Parse(result);
string todayWeatherIcon = (string)((jobj["url"] as JValue).Value);
分解して理解
| 部分 | 意味 |
|---|---|
| jobj[“url”] | urlの値を取得 |
| as JValue | 型変換 |
| .Value | 実際の中身を取得 |
| (string) | 文字列へ変換 |
ここは少し難しいですが、
JSONはそのままstringではない
という点を押さえましょう。
5. 画像を表示する
weatherIcon.ImageLocation = todayWeatherIcon;
PictureBox の ImageLocation にURLを入れるだけで、
- 自動でダウンロード
- 自動で表示
してくれます。
とても便利です。
6. よくあるつまずきポイント
① cityNames[areaBox.Text] でエラー
未選択のまま実行すると例外が出ます。
対策例:
if (!cityNames.ContainsKey(areaBox.Text))
{
MessageBox.Show("都市を選択してください");
return;
}
② 通信エラー
ネット接続がない場合、例外が発生します。
本来は try-catch を入れます。
③ .Result の問題
UIが固まることがあります。
実務では:
await client.GetStringAsync(url);
を使います。
7. 実務とのつながり
この構造は実務で頻出です。
- 株価取得アプリ
- 為替情報取得
- AI API接続
- 地図表示
- 在庫管理システム
すべて、
「Webからデータを取得して表示する」
という同じ構造です。
まとめ
今回のサンプルは、
Windowsアプリ × Web通信 × JSON解析
という、非常に実務的な構造です。
ここまで理解できれば、
「画面を作れる人」から
「アプリを作れる人」へ一歩進みます。



ディスカッション
コメント一覧
まだ、コメントがありません