🌤️

天気予報からCharty用の系列(series)を取得する方法

2024/12/07に公開2

ご質問ありがとうございます

Discord に天気予報を投稿するショートカットの記事を読んだプログラミング初学者の学生の方がコメントをくださった

こちらの記事を参考に同じものを作ろうとしてるのですが、グラフを入れようとするとうまくいきません。“実際には、これらのアクションを置く前に系列データ(数値のリスト)を準備する必要がある。”の部分がうまくできないのだと思うのですが、どうしたらいいでしょうか

系列データの取得の仕方

意欲的、すばらしい。では天気予報から系列データを取得する部分を書いたショートカットを共有しよう。

https://www.icloud.com/shortcuts/8d9234c18b93498bab4bc2ce12dfefee

25時間分の天気予報からX軸とY軸の系列データを取得するだけのショートカットだ。実行すると結果に降水量のリスト(数値のみのリスト)が表示される。

  • アクション1つめ…天気予報の取得。25時間分
  • アクション2つめ…日時のリストを取得。ISO8601形式で取得(時刻付き)
  • アクション3つめ…降水量のリストを取得。単位mm、数字のみ取得

ショートカットでのリストの扱い方

天気投稿botの記事で「ショートカットのアクションはクセがある、結果が複数だとリストにして返してくる」という話をしたが、ショートカットはリストをそのまま取り扱う 傾向がある。

「気象情報」マジック変数には、天気予報の情報要素数25のリストが格納されている。気象情報から特定のプロパティのリストを取り出したいとき、ついつい「繰り返し」をしたくなるが、プロパティを集めるために繰り返す必要はない。何らかのアクションで取得した結果がリストだとする。利用時にプロパティを指定すると、指定したプロパティのリストを返してくる。

また、渡す時もリストでオッケーのアクションがけっこうある。リストを渡すとリストで返してくる。(注 リストでオッケーかどうかはアクションの情報を読んでも判別しづらい。試しにやってみるのが一番早い)

これらを利用すると、気象情報のような複雑な構造のデータから必要なものを取り出す手間が少なくて済む。3つめの、降水量系列取得のアクションはこうなっている:

  1. 気象情報(要素数25のリスト)から降水量を単位mmで取得する(要素数25の「測定単位」のリスト)
  2. 「入力から数字を取得」アクションに渡す。数字のリスト(要素数25)になって返ってくる

Chartyに「これが系列データだよ」と渡してやるとよい。

小数が長すぎる時

記事を書いてアップしようとしたら追加のコメントが来ていて、系列データの作成を独力で克服なさったとのこと。素晴らしい!

今度は小数点以下が長いのをどうにかしたいと。

これは「端数を処理」アクションを使う。渡したものを数値として扱い、四捨五入/切り捨て/切り上げのいずれかを施して数値として返してくれる。

または「数値をフォーマット」アクションを使う。渡したものを指定した桁数に揃え、テキストとして返してくれる。

系列データを作ることに比べれば楽勝。

Happy shortcutting!

Discussion

おぼろおぼろ

ご丁寧に記事に起こしていただいてありがとうございます!!
自分でやった時はif分岐のための降水量リストと同様に項目を繰り返して作成したリストを変数として選択し、タイプを数値にして押し切りました。ただ今回紹介いただいた方法の方がよりシンプルで扱いやすいなと思いました!
やはりショートカットに浸かった時間が短いことでアクションを使いこなせていないなと、、!
(次なる課題はグラフの見た目を整えることですが、これはおそらくパラーメーターとかいじればいけると踏んでいるのでやってみます)

aromariousaromarious

この記事に書いた話は、前回の記事には書けなかった内容です。繰り返しを使って実装したのは、あの記事を真面目にお読みくださったのだと思いました。ありがとうございます。

リストに関するこの振る舞いは、他の処理系では見たことのない、ショートカット特有のものです。公式のドキュメントにも見当たりません(見つけた方はコメントで教えてください)。この話は書きたいと思っていたので、質問をいただいたのはよい機会でした。

今後もよきショートカットライフをお過ごしください。