top of page
2024年09月06日
おはようございます。

​・・・


前回からの続き、行きましょう。
​プログラムを起動させて、「Hello, world」が表示されたら「Weather」ボタンを押してください。

前回と同じ場所にブレークポイントを張ってあれば「@if (forecasts == null)」の次の行で一時停止しているはず。

ここで、「続行」ボタンを押してください。
「forecasts = await Http.GetFromJsonAsync<WeatherForecast[]>("sample-data/weather.json");」
上記の文で一時停止していると思います。
この段階では、まだ上記文は実行されていません。

もう一度「続行」ボタンを押してください。
実行が次の行に移りました。

まだ、画面は更新されていません。
もう一度「続行」ボタン押下。

ここ段階では「protected override async Task OnInitializedAsync()」関数を終了しています。

いよいよ画面描画に移ります。

@if (forecasts == null)
{
    <p><em>Loading...</em></p>
}
else
{


上記「else」の次の行で停止しています。
「else」とは「それ以外」と言う意味です。

「@」の右の文の内容が変わったのです。
つまり、上記にある条件文「if (forecasts == null)」以外、この段階では「forecasts」に情報(気象情報)が入っています。
ですから「if (forecasts == null)」ではありません。
「それ以外」と言うことになります。

ですので、「else」以降の文に「分岐」したんです。

・・・

この段階では、画面はまだ昔の「Loading」のままとなっています。
もう一度「続行」を押す。

「@foreach (var forecast in forecasts)」に移りました。
「@」以降の内容が変わったのです。
「foreach (var forecast in forecasts)」とは、
foreach」(それぞれに)、「forecast in forecasts」(forecastsの中のforecast)、、、

なんのこっちゃ。。。
forecasts」は配列です。
この配列を「forecast」として「それぞれ」分解する。
つまり、配列を一つ一つ配列ではない状態に分解する。

配列は、以前確認した通り「0~4」までの5つの内容により構成されています。
クラスが5つあるわけです。

この5つのクラスを一つ一つのクラスに分解し、その担当クラス(0~4の5つのクラスの中の一つ)を「forecast」として一時的の登録する。

いま、めちゃくちゃ難しいお話をしています。
この概念を文章だけで示すことは非常に難しい。

実際に実験してみましょう。
ここで、34行目の「}」部分にブレークポイントを張ってください。
そして「続行」ボタンを押す。
34行目で止まります。
画面40.jpg
「forecast」の中には、Jsonで書かれた5つに分かれた内容のうちの一番最初の部分が入っています。

もう一度「続行」ボタンを押す。
「forecast」の中には2番目の内容が入っている。

5回「続行」を押すと、画面が更新されるはずです。
表示では、5つの気象情報が表示されています。

・・・

先ほどの「@foreach (var forecast in forecasts)」の次の行を見てみましょう。
                <tr>
                    <td>@forecast.Date.ToShortDateString()</td>
                    <td>@forecast.TemperatureC</td>
                    <td>@forecast.TemperatureF</td>
                    <td>@forecast.Summary</td>
                </tr>

これは何かと。。。
「<tr>」「<td>」
これは「HTML表記」と言うモノです。
これに関しては、あとで解説致します。

問題の「@forecast.Date.ToShortDateString()」ですね。。。
「forecast」の中の「Date」を表示せよ。その際「ToShortDateString」で表示しろ。

「ToShortDateString」これ、、、どういう意味でしょうか。
実は、今の段階の「Date」は文字(情報)の状態ではありません。
日付(情報)なんです。
ですから、これを文字(情報)にしなければ、文字として表示できません。

通常は、文字(情報)以外も、表示する際には自動で文字に変換してくれます。
しかし、日付には色々な表し方がある。
今日であれば「2025/09/06」とか、「2025年9月6日」とか。。。

ですので、表示するフォーマットを指定する必要があります。
「ToShortDateString」(短い日付の文字列へ変換)と言う意味があります。

難しいですよ。
この辺りは、AIとよく相談しながら進めてみて下さい。

次の文は数値と文字情報ですが、、、
数値は自動で文字情報に変換してくれます。

もちろん、ご自分の好みの表記方法を指定することも可能。
数値といっても、色んな表記方法があります。
整数で表記とか、小数点5桁まで表示とか、、、

・・・

ここまでで、一通り簡単に全体像を説明いたしました。
次はいよいよ、本物の気象庁さんの情報を表示させるのですが。

ここで時間となりました。
また、後でお会いいたしましょう。
では、また!

簡単なヒントを言えば、今回の気象庁さんの情報は配列ではないので、
「@foreach (var forecast in forecasts)」は不要です。
また、全て文字情報として記録しています。

さて、皆さん、、、ご自分で改造できますか?
結構難しいですよ。

AIと相談しながら、挑戦してみて下さい。
​宜しくお願い致します!!




 
bottom of page