Web API

Web API とは、Web 上で提供される Application Programming Interface (API) です。API とは、あるプログラムの機能を、別のプログラムから利用可能にした仕組みのことです。現在の Web 上には、たくさんの Web API が提供されており、手軽にそれらの機能を使うことができるようになっています。

Jasmine Tea では、下記のような擬似的な Web API を提供しており、Web API を利用したプログラムを書く疑似体験ができるようになっています。

天気予報 API

Jasmine Tea では天気予報の API を提供しています。この API にアクセスするためには、fetch@ 関数に下記のような URL を渡します。ちなみにこの例では、今日の東京地方の天気予報を取得しています。

url$ = "https://jasminetea.app/webapi/weather?date=1&area=130010"
result@ = fetch@(url$)

まずはこの URL を詳しく見てみましょう。クエスチョンマークの前までのこの部分は、この Web API 本体の URL です。Web API では、インターネット上にあるエンドポイントの URL に HTTP を使ってアクセスします。

https://jasminetea.app/webapi/weather

クエスチョンマーク以降の部分はクエリーパラメーターと呼び、この API に渡すパラメーターを指定できます。

?date=1&area=130010

始めのクエスチョンマークがクエリーパラメーターの開始を表すもので、"パラメーターの名前=値" という形でパラメーターを指定します。"&" を使えば複数のパラメーターが指定できる仕組みになっています。この例では date パラメータとして "1" を area パラメーターとして "130010" を渡しています。Jasmine Tea で提供している天気予報 API では、これらのパラメータは下記のように指定します。

  • date: 1: 本日, 2: 明日
  • area: 天気予報を取得するエリアコード

エリアコードの指定方法については、このドキュメント末尾の地域コード表を参照してください。

この fetch@ 関数の実行に成功すると、下記のような配列が返ってきます。

[-1, "2024-02-14", "くもりのち晴れ", 30, 20, 10, 0]

配列の要素の意味を順番に説明します。

  • 関数の呼び出しに成功したことを示す -1
  • 天気予報の日付
  • 天気予報
  • 00:00 から 06:00 までの降水確率
  • 06:00 から 12:00 までの降水確率
  • 12:00 から 18:00 までの降水確率
  • 18:00 から 24:00 までの降水確率

いずれの要素についても、データが無い場合は、"N/A" という文字列がセットされます。例えばお昼過ぎに天気予報を取得した場合、「00:00 から 06:00 までの降水確率」には "N/A" がセットされます。これは、既に過去のことなので、降水確率を提供する意味が無いからです。

これらの結果を画面に表示するには、下記のようにします。

print "東京地方の天気予報"
print "日付: " + result@[1][0]
print result@[1][1]
print "00:00-06:00の降水確率: " + result@[1][2]
print "06:00-12:00の降水確率: " + result@[1][3]
print "12:00-18:00の降水確率: " + result@[1][4]
print "18:00-24:00の降水確率: " + result@[1][5]

また、何らかの原因で API の呼び出しに失敗した場合は、代わりに下記のような配列が返ってきます。

[0, エラーの内容]

下記のようなコードで、エラー時にはエラーの内容を表示して終了することができます。

if not result@[0] then
  print "Fetch に失敗しました"
  print result@[1]
  end
end if

天気予報API 地域コード表

地域1
Area 1
地域2
Area 2
地域コード
Area Code
宗谷地方
Soya
宗谷地方
Soya Region
011000
上川・留萌地方
Kamikawa Rumoi
上川地方
Kamikawa Region
012010
留萌地方
Rumoi Region
012020
網走・北見・紋別地方
Abashiri Kitami Mombetsu
網走地方
Abashiri Region
013010
北見地方
Kitami Region
013020
紋別地方
Mombetsu Region
013030
十勝地方
Tokachi
十勝地方
Tokachi Region
014030
釧路・根室地方
Kushiro Nemuro
根室地方
Nemuro Region
014010
釧路地方
Kushiro Region
014020
胆振・日高地方
Iburi Hidaka
胆振地方
Iburi Region
015010
日高地方
Hidaka Region
015020
石狩・空知・後志地方
Ishikari Sorachi Shiribeshi
石狩地方
Ishikari Region
016010
空知地方
Sorachi Region
016020
後志地方
Shiribeshi Region
016030
渡島・檜山地方
Oshima Hiyama
渡島地方
Oshima Region
017010
檜山地方
Hiyama Region
017020
青森県
Aomori
津軽
Tsugaru
020010
下北
Shimokita
020020
三八上北
Sanpachi Kamikita
020030
岩手県
Iwate
内陸
Inland
030010
沿岸北部
Northern Coast
030020
沿岸南部
Southern Coast
030030
宮城県
Miyagi
東部
Eastern Region
040010
西部
Western Region
040020
秋田県
Akita
沿岸
Coast
050010
内陸
Inland
050020
山形県
Yamagata
村山
Murayama
060010
置賜
Okitama
060020
庄内
Shonai
060030
最上
Mogami
060040
福島県
Fukushima
中通り
Nakadori
070010
浜通り
Hamadori
070020
会津
Aizu
070030
群馬県
Gunma
南部
Southern Region
100010
北部
Northern Region
100020
埼玉県
Saitama
南部
Southern Region
110010
北部
Northern Region
110020
秩父地方
Chichibu Region
110030
千葉県
Chiba
北西部
North-western Region
120010
北東部
North-eastern Region
120020
南部
Southern Region
120030
東京都
Tokyo
東京地方
Tokyo Region
130010
伊豆諸島北部
Northern Izu Islands
130020
伊豆諸島南部
Southern Izu Islands
130030
小笠原諸島
Ogasawara Islands
130040
神奈川県
Kanagawa
東部
Eastern Region
140010
西部
Western Region
140020
山梨県
Yamanashi
中・西部
Central Western Region
190010
東部・富士五湖
Eastern Region and Fuji Five Lakes
190020
長野県
Nagano
北部
Northern Region
200010
中部
Central Region
200020
南部
Southern Region
200030
茨城県
Ibaraki
北部
Northern Region
080010
南部
Southern Region
080020
栃木県
Tochigi
南部
Southern Region
090010
北部
Northern Region
090020
岐阜県
Gifu
美濃地方
Mino Region
210010
飛騨地方
Hida Region
210020
静岡県
Shizuoka
中部
Central Region
220010
伊豆
Izu
220020
東部
Eastern Region
220030
西部
Western Region
220040
愛知県
Aichi
西部
Western Region
230010
東部
Eastern Region
230020
三重県
Mie
北中部
Northern Central Region
240010
南部
Southern Region
240020
新潟県
Niigata
下越
Kaetsu
150010
中越
Chuetsu
150020
上越
Joetsu
150030
佐渡
Sado
150040
富山県
Toyama
東部
Eastern Region
160010
西部
Western Region
160020
石川県
Ishikawa
加賀
Kaga
170010
能登
Noto
170020
福井県
Fukui
嶺北
Reihoku
180010
嶺南
Reinan
180020
滋賀県
Shiga
南部
Southern Region
250010
北部
Northern Region
250020
京都府
Kyoto
南部
Southern Region
260010
北部
Northern Region
260020
大阪府
Osaka
大阪府
Osaka Prefecture
270000
兵庫県
Hyogo
南部
Southern Region
280010
北部
Northern Region
280020
奈良県
Nara
北部
Northern Region
290010
南部
Southern Region
290020
和歌山県
Wakayama
北部
Northern Region
300010
南部
Southern Region
300020
鳥取県
Tottori
東部
Eastern Region
310010
中・西部
Central Western Region
310020
島根県
Shimane
東部
Eastern Region
320010
西部
Western Region
320020
隠岐
Oki
320030
岡山県
Okayama
南部
Southern Region
330010
北部
Northern Region
330020
広島県
Hiroshima
南部
Southern Region
340010
北部
Northern Region
340020
徳島県
Tokushima
北部
Northern Region
360010
南部
Southern Region
360020
香川県
Kagawa
香川県
Kagawa Prefecture
370000
愛媛県
Ehime
中予
Chuyo
380010
東予
Toyo
380020
南予
Nan-yo
380030
高知県
Kochi
中部
Central Region
390010
東部
Eastern Region
390020
西部
Western Region
390030
山口県
Yamaguchi
西部
Western Region
350010
中部
Central Region
350020
東部
Eastern Region
350030
北部
Northern Region
350040
福岡県
Fukuoka
福岡地方
Fukuoka Region
400010
北九州地方
Kitakyushu Region
400020
筑豊地方
Chikuho Region
400030
筑後地方
Chikugo Region
400040
佐賀県
Saga
南部
Southern Region
410010
北部
Northern Region
410020
長崎県
Nagasaki
南部
Southern Region
420010
北部
Northern Region
420020
壱岐・対馬
Iki Tsushima
420030
五島
Goto
420040
熊本県
Kumamoto
熊本地方
Kumamoto Region
430010
阿蘇地方
Aso Region
430020
天草・芦北地方
Amakusa Ashikita Region
430030
球磨地方
Kuma Region
430040
大分県
Oita
中部
Central Region
440010
北部
Northern Region
440020
西部
Western Region
440030
南部
Southern Region
440040
宮崎県
Miyazaki
南部平野部
Plain Area of Southern Region
450010
北部平野部
Plain Area of Northern Region
450020
南部山沿い
Area along mountains of Southern Region
450030
北部山沿い
Area along mountains of Northern Region
450040
奄美地方
Amami
奄美地方
Amami Region
460040
鹿児島県(奄美地方除く)
Kagoshima (Excluding Amami)
薩摩地方
Satsuma Region
460010
大隅地方
Osumi Region
460020
種子島・屋久島地方
Tanegashima Yakushima Region
460030
沖縄本島地方
Okinawa Main Island
本島中南部
Central and Southern Main Island
471010
本島北部
Northern Main Island
471020
久米島
Kumejima
471030
大東島地方
Daitojima
大東島地方
Daitojima Region
472000
宮古島地方
Miyakojima
宮古島地方
Miyakojima Region
473000
八重山地方
Yaeyama
石垣島地方
Ishigakijima Region
474010
与那国島地方
Yonagunijima Region
474020