宙畑 Sorabatake

Tellusの使い方

美容や健康分野で利用が進む「紫外線指数」の概要と活用方法

紫外線指数の説明から、Tellusマーケットで提供される紫外線指数の活用方法を解説します。

記事作成時から、Tellusからデータを検索・取得するAPIが変更になっております。該当箇所のコードについては、以下のリンクをご参照ください。
https://www.tellusxdp.com/ja/howtouse/access/traveler_api_20220310_
firstpart.html

2022年8月31日以降、Tellus OSでのデータの閲覧方法など使い方が一部変更になっております。新しいTellus OSの基本操作は以下のリンクをご参照ください。
https://www.tellusxdp.com/ja/howtouse/tellus_os/start_tellus_os.html

現在、Tellus Marketでの「紫外線指数」の販売は終了しております。

日本気象協会は、人と天気を繋ぐ民間気象会社です。

民間気象会社としては、長い歴史を持ち、以下のようなサービスを提供しています。
・ビジネスや公共事業の場で必要とされる気象関連の専門的な調査解析やコンサルティング
・テレビや新聞などを通した一般の方々に向けた天気予報

日本気象協会は、大量に浴びれば人体に悪影響を及ぼすことのある紫外線に対して、6日先までの紫外線量を独自のロジックを用いて天気予報と組み合わせて計算し、日本人の肌に合わせた指数化を行っています。この紫外線指数はテレビや新聞などでも活用され、日々の屋外活動の指標となっています。

この紫外線データからは、その日の紫外線量と肌への影響度合いが分かります。テレビや新聞のほかインターネット、スマホアプリの天気予報専門メディア「tenki.jp」などを通して、一般の方々向けに情報提供され、生活の指標となっています。また、美容や健康のほか、予測データという特徴からTellusマーケットで提供される衛星データとの相性も良く、様々なデータの予測にも活用できると考えています。様々なフィールドでご活用ください。

1.日本気象協会の事業について

日本気象協会は1950年の設立以来、気象・環境・防災などに関わる調査解析や情報提供を行い、データと技術を集積してきました。日本気象協会の最大の強みは調査解析技術とリアルタイムに情報を提供できる技術を併せ持つこと。長年のデータの積み重ねとそれを適切に処理する技術力を活かして、お客様が必要とする情報を、正確かつリアルタイムに提供します。

日本気象協会では、テレビやインターネットの「tenki.jp」、街中のデジタルサイネージで閲覧できるような一般向けの気象情報から、需要予測や防災・安全管理の用途で使用される特定事業者向けの高精細な気象情報まで、幅広く情報提供しています。日本気象協会の情報は、メディアやビジネスの場など様々な場面で使用されています。この記事を読まれている方の中にも、日本気象協会が提供する気象情報をご覧になった方は多いかもしれません。

例えば天気予報で「降水量が5㎜」や「紫外線量が700J/㎡」といわれても、ピンとこないことがあるかもしれません。そういった感覚では分かりにくい定量的な数値を、ランク分けされた指数で表現することで、直感的に受け取ることができるようにしています。「tenki.jp」でも、紫外線指数として、紫外線の多寡を「きわめて強い」~「弱い」までの5段階に分けて表現しています。

紫外線指数の活用事例(tenki.jp) Credit : 日本気象協会 tenki.jp

2.紫外線指数とは何か?

紫外線指数とは、人体に影響を与える有害紫外線量を計算し、紫外線の強さをランクで表した指標です。日本気象協会では、日本全国の市区町村ごとの紫外線指数を独自に算出し、日本人の肌に合わせた紫外線指数を提供しています。

1 MEDとは、Minimal Erythma Doseの略のことで、ある量の紫外線を浴びた場合に24時間後に日焼けし、皮膚が赤くなって、炎症を起こす最少の紫外線量が1MEDとなります。

太陽光には、人間が知覚できる可視光線以外にも、目で見ることができない赤外線や紫外線が含まれ、中でも紫外線は、可視光線よりも波長が短く、長時間当たると人体への影響が大きいとされています。紫外線は波長と性質から、UV-A・UV-B・UV-Cの3種類に分けられます。(表1)

 

表1. 紫外線の種類
波長帯
特徴
UV-A
400~315nm
(長波長紫外線)
多くが地表に到達する。
生物に与える影響はUV-Bと比較して小さい。
UV-B
315~280nm
(中波長紫外線)
一部が地表まで到達する。
生物に大きな影響を与える。
UV-C
280~100nm
(短波長紫外線)
オゾン層などで吸収され、ほぼ地表に到達しない。

紫外線の量は、天気によって大きく左右されます。季節と時間による紫外線量の変化は一定ですが、天気による変化では、曇りだと快晴時の6割ほど、雨だと3割ほどになります。そのため、紫外線の予測には精度の高い天気予報が必要になります。

さらに、紫外線の人体に与える影響度合いは、波長によって異なります。そのため、紫外線の波長毎の強さと人体への影響度合いを考慮する必要があります。

・日本気象協会の提供する紫外線指数
日本人の肌のスキンタイプは国際的なスキンタイプの中で、Ⅱ~Ⅳに該当するといわれ(表2)、日本人の中でも比較的色の白い人がⅡ、平均的な人がⅢ、比較的色の濃い人をⅣにおおまかに分類されます。日本気象協会では、日本人の中でも肌が比較的弱い方にも指標となるよう、1MED=250J/㎡としてMEDを算出しています。また、指数で用いられる紫外線量(MED)は、日中9時~15時までの積算値となっています。

表2. 人間のスキンタイプ別のMED値・肌の色・紫外線に対する反応
Credit : 気象庁や国立環境研究所の発表資料より日本気象協会作成

日本気象協会が提供する紫外線指数は、算出した紫外線量(MED)の多寡に応じてランク分けされます。そのランクに応じて、弱い~きわめて強い、までの言葉による表現についても取得することが可能です。紫外線指数のランクと表現に対応して、肌に受けるおおまかなダメージは以下の表3の通りです。

 

表3. JWAの提供する紫外線指数におけるランク別のMED値・表現・人体へのダメージ
ランク
紫外線量(MED)
表現
ランク分けに対応するダメージ
1
9.0~
きわめて強い
日中ずっと浴びない限り、ダメージは小さい
2
7.0~8.9
非常に強い
日焼けが起きやすい
3
5.0~6.9
強い
日中ずっと浴びると、腫れやかゆみが生じることがある
4
3.0~4.9
やや強い
日中ずっと浴びると、ダメージが強まり、腫れに加え、痛みが生じることがある
5
0.0~2.9
弱い
日中ずっと浴びると、ダメージが深刻で、水脹れ、発熱が生じることがある

credit : 日本気象協会

これらの紫外線指数を、全国の市区町村単位、1日5回の更新で6日先まで提供することが可能です。(更新時刻の目安…5:30、6:10、12:10、16:40、18:10)

3.APIの利用方法(サンプルコード付き)

紫外線指数をAPIで入手するサンプルコードを紹介します。

紫外線指数のデータは有料となります。興味を持たれた方はTellusマーケットから購入手続きをお願いします。

現在、Tellus Marketでの「紫外線指数」の販売は終了しております。

以下は品川区における2021年10月22日の10時から、同日の13時までのUV予報を取得するサンプルコードです。

# ライブラリのインポート
import requests, json
import datetime
import pyproj

APIリファレンスはこちらです。

class Search():
    """
    変数:
        baseUrl:元になるURL
        startDate:検索開始日時
        endDate:検索終了日時
        serverUrl:サーバーURL
        regionCode:地域コード(全国地方公共団体コード:https://www.soumu.go.jp/denshijiti/code.html)
        zipCode:郵便番号
        lat:緯度
        lon:経度
    
    関数
        init: コンストラクタ
        _get_market_token: トークン取得(内部関数)
        regionSearch: region_codeによる検索
        zipSearch: zip_codeによる検索
        coordSearch: latitude, longitudeによる検索
    """
    # コンストラクタ
    def __init__(self, baseUrl, startDate, endDate):
        self.marketToken = self._get_market_token({'product_id': '購入した商品のIDをこちらに入力', 'expires_at': expires_at})['token']
        self.baseUrl = baseUrl
        self.startDate = startDate
        self.endDate = endDate
    
    # マーケットトークン取得
    def _get_market_token(self, payload={}):
        headers = {
            'Authorization': 'Bearer ' + TOKEN,
            'Content-type': 'application/json'
        }
        r = requests.post(serverUrl, headers=headers, data=json.dumps(payload))
        if r.status_code is not requests.codes.ok:
            print(r.content)
        return json.loads(r.content)

    # region_codeで検索
    def regionSearch(self, regionCode):
        url = self.baseUrl+"?region_code={}&date1={}&date2={}".format(regionCode,self.startDate,self.endDate)
        
        headers = {
            'Authorization': 'Bearer ' + self.marketToken
        }
        print(url)
        r = requests.get(url, headers=headers)
        if r.status_code is not requests.codes.ok:
            print(r.status_code)
        return json.loads(r.content)
    
    # zip_codeで検索
    def zipSearch(self, zipCode):
        url = self.baseUrl+"?zip_code={}&date1={}&date2={}".format(zipCode,self.startDate,self.endDate)
        
        headers = {
            'Authorization': 'Bearer ' + self.marketToken
        }
        print(url)
        r = requests.get(url, headers=headers)
        if r.status_code is not requests.codes.ok:
            print(r.status_code)
        return json.loads(r.content)
    
    # 緯度経度で検索
    def coordSearch(self, lat, lon):
        url = self.baseUrl+"?lat={}&lon={}&date1={}&date2={}".format(lat,lon,self.startDate,self.endDate)
        
        headers = {
            'Authorization': 'Bearer ' + self.marketToken
        }
        print(url)
        r = requests.get(url, headers=headers)
        if r.status_code is not requests.codes.ok:
            print(r.status_code)
        return json.loads(r.content)

2021年10月22日の10時から、同日の13時までのUV予報を取得します。

baseUrl ='https://tellus.app.hwcs.jp/weather/index/uv'
startDate = '2021-10-22T10:00:00' # 取得開始日
endDate = '2021-10-22T13:00:00' # 取得終了日
TOKEN = 'ここにapiアクセストークン' # APIアクセストークン
serverUrl = 'https://www.tellusxdp.com/api/manager/v2/auth/token/'

# マーケットトークン有効期限(30分に設定)。デフォルトでは5分、最長で60分まで設定可
expires_at = (datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=+9))) + datetime.timedelta(minutes=30)).isoformat()

results = Search(baseUrl,startDate,endDate)

最初に地方公共団体コードで予報値を取得してみましょう。

rCode = "13109" # 品川区
results.regionSearch(rCode)

以下のようなレスポンスが得られます。

{'data_num': 1,
 'data': [{'errorCode': 0,
   'prodIdInfo': {'prodId1': '104310',
    'prodId2': '000007',
    'prodId3': '0000',
    'prodRefTime': '20211021070000',
    'origStation': 'MICOS',
    'stationCode': '47662',
    'refTime': '2021-10-21T16:00:00'},
   'pointCode': '044131',
   'time': '2021-10-22T00:00:00',
   'uvIndex': '1.6',
   'uvIndexRanking': {'value': '1', 'rank': '弱い'}}]}

返却結果の数値は以下を意味します。

・紫外線ランク(弱い-> 1, やや強い->2, 強い->3, 非常に強い->4, 極めて強い->5
・エラーコード(正常->0, 準正常->1, 欠測->9)
・エラーコードに関する補足説明(PW healthweather)

続いて緯度経度で確認してみましょう。

lat, lon = 35.604855, 139.7028433  # 旗の台駅付近
results.coordSearch(lat,lon)

以下のようなレスポンスが得られます。

{'data_num': 1,
 'data': [{'errorCode': 0,
   'prodIdInfo': {'prodId1': '104310',
    'prodId2': '000007',
    'prodId3': '0000',
    'prodRefTime': '20211021070000',
    'origStation': 'MICOS',
    'stationCode': '47662',
    'refTime': '2021-10-21T16:00:00'},
   'pointCode': '044131',
   'time': '2021-10-22T00:00:00',
   'uvIndex': '1.6',
   'uvIndexRanking': {'value': '1', 'rank': '弱い'}}]}

最後に、郵便番号から取得するには以下の通りです。

zipCode = 1420064 # 品川区旗の台
results.zipSearch(zipCode)

以下のようなレスポンスが得られます。

{'data_num': 1,
 'data': [{'errorCode': 0,
   'prodIdInfo': {'prodId1': '104310',
    'prodId2': '000007',
    'prodId3': '0000',
    'prodRefTime': '20211021070000',
    'origStation': 'MICOS',
    'stationCode': '47662',
    'refTime': '2021-10-21T16:00:00'},
   'pointCode': '044131',
   'time': '2021-10-22T00:00:00',
   'uvIndex': '1.6',
   'uvIndexRanking': {'value': '1', 'rank': '弱い'}}]}

いずれの方法であっても、紫外線指数は同様の値を返却していることが分かります。

4.利用の可能性

日本気象協会の提供する高精細な紫外線情報にはどのような活用方法があるでしょうか。冒頭で記載したように、紫外線指数はテレビから新聞、ビジネスのさまざまな場面で活用されています。

一般的に紫外線指数は、日々の生活との関連が高く、多くの人にとって、日焼け止めを塗ったり、日傘を差したりするなど、紫外線対策をする際の目安になっています。

テレビでの紫外線指数イメージ Credit : 日本気象協会

・活用事例
紫外線指数は、日本人の肌への影響を考慮して指数化しているため、紫外線への注目度の高い女性をターゲットにした美容系商品を販売する企業での活用事例が多くなっています。

大手化粧品会社では、日本気象協会の提供する紫外線情報を使用して、肌のケアの必要度を表した指数を開発した事例があります。秋・冬の屋外の湿度と紫外線の状況から、化粧品会社の監修により、日本気象協会が持つ気象コンサルティングのノウハウを元に、湿度と紫外線のデータを掛け合わせ、指数を算出しています。この指数によって、肌が冬にも降り注ぐ紫外線と乾燥からどれだけのダメージを受けてしまうかが一目で分かります。
このような指数情報を商品の販売促進時に盛り込むことで、お客様の注目度が高まり、効果的な販売促進に繋がります。

・お肌の健康
曇った日や水中だと紫外線が弱くなると思われがちですが、曇った日でも晴天時の8~6割ほど、水中でも地表の4割ほど(水深50cm)の紫外線が届きます。そういった場合においても紫外線対策商品を活用してもらうための販売促進に紫外線指数を活用できます。

大量の紫外線は身体に悪影響を及ぼす一方で、適量の紫外線はビタミンDの産出のために必要不可欠ということも分かっています。データの活用次第では、健康のために日光を浴びるべき時間の推定などに活用できるかもしれません。

・新たな分野での活用
紫外線といえば、日焼けや目などの人体への影響はもちろんですが、生物や植物などにプラスにもマイナスにも影響を及ぼし、生態系にも作用するといわれています。また紫外線は、プラスチックなどの構造物にも悪影響を与えます。プラスチックは紫外線によって白く変色し、脆化してしまいます。そういった、環境や構造物などへの影響も、紫外線指数によって評価することができるかもしれません。

・予測という強み
紫外線指数は気象予測の一つです。気象予測は物理学的手法によって未来を予測できる唯一の手法です。そのため、未来を予測することのできる気象予測とそれ以外のデータを掛け合わせ、統計的な関係を算出することで自分の使用したいデータの未来を予測することが可能になります。

5.まとめ

紫外線指数は、テレビから新聞、ビジネスのさまざまな場面で活用され、一般の方々にも広く普及し、日々の生活の指標になっています。特に、紫外線による影響が取り沙汰される、美容などの分野での活用は一段と進んでいます。

日本気象協会独自の手法によって、紫外線指数が算出されます。この指数は、天気も考慮され、予想地点も日本全国の市区町村に細分化され、高精細な予測となっています。
このデータを活用することで、美容や健康の分野はもちろんながら、予測データという特徴を活かして、そのほかの衛星データと掛け合わせて活用するという利用方法も期待できます。

【参考になる外部リンク先】
・天気予報専門メディア「tenki.jp」:https://tenki.jp/
・日本気象協会コーポレートサイト:https://www.jwa.or.jp/
・tenki.jpの紫外線指数:https://tenki.jp/indexes/uv_index_ranking/
・紫外線環境保健マニュアル(環境省):
http://www.env.go.jp/chemi/matsigaisen2020/matsigaisen2020.pdf