![見出し画像](https://assets.st-note.com/production/uploads/images/149238308/rectangle_large_type_2_d7c73048f0a3a270cdfec73dd48d2f85.png?width=1200)
世界一わかりやすいWeb APIの解説
こんにちは、はじめまして。ゴリラです。
私はプログラマー歴10年超の経験を持ち、これまで社外CTOとして多数のDXプロジェクトに携わってきました。
Twitterアカウントはこちら👇
https://twitter.com/dxsoudan
先日、freeeのAPIを使った下記の記事を書きました。
しかし、こちらの内容は、Web APIが何なのかわからない方だと全くもって意味不明な文章だったと思います。
そこで、理解できなかった人のためにも、今日は「世界一わかりやすいWeb APIの解説」というテーマで書いてみたいと思います。
この記事を読めば、巷で言われているAPIについて理解が深まること間違いなしです。
Web APIとは?
Web APIとはなんでしょうか?
簡単に言えば、「アクセスしたら何かが起こる機能付きURL」のことだと思ってください。
「何かが起こる」とは、
情報を追加(Create)できたり、
情報を取得(Read)できたり、
情報を更新(Update)できたり、
情報を削除(Delete)できたり
するということです。
この頭文字をとって、CRUD(クラッド)という言い方もします。
つまり、Web APIとは、アクセスするとCRUDのいずれかを起こすことができるURLということです。
では、例を見ながら理解を深めていきましょう。
下記のURLにアクセスしてみてください。
https://weather.tsukumijima.net/api/forecast/city/130010
英語と日本語混じりの文字がバーっと出てきたと思います。
これは、個人の方が提供している気象庁のデータを元にした東京都心部の今日の天気予報です。
PCユーザー限定ですが、Chromeユーザーであれば、下記のエクステンションを入れると文字に色が付いてわかりやすくなります。
この文字たちを一部抜粋すると、下記のようなものになります。
{
"publicTime": "2024-08-01T05:00:00+09:00",
"publicTimeFormatted": "2024/08/01 05:00:00",
"publishingOffice": "気象庁",
"title": "東京都 東京 の天気",
"forecasts": [
{
"date": "2024-08-01",
"dateLabel": "今日",
"telop": "晴時々曇",
"detail": {
"weather": "晴れ 朝晩 くもり",
"wind": "北の風 後 東の風",
"wave": "0.5メートル"
},
"temperature": {
"min": {
"celsius": null,
"fahrenheit": null
},
"max": {
"celsius": "35",
"fahrenheit": "95"
}
},
"chanceOfRain": {
"T00_06": "--%",
"T06_12": "0%",
"T12_18": "0%",
"T18_24": "10%"
}
}
]
}
これは「JSON」という形式で書かれたものになります。
最近のWeb APIのほとんどがこのJSON形式でやりとりします。
JSONを知らなかった方はこれを機に覚えておきましょう。
csv形式がカンマ区切りのように、JSONにもルールがあります。
JSONのルールは、「{}」で全体を囲って、左側にラベル、右側に値を配置することです。
なぜ普通の形式ではなくわざわざJSONでやりとりするのかについては、後ほど解説します。
さて、では、この天気予報情報のJSONを解読してみましょう。
こちらのページの「レスポンスフィールド」という箇所を読んでください。
ここに、それぞれのデータの意味が書かれています。
これを読み解くと、それぞれの項目のデータの意味がわかります
publicTime: 予報の発表日時
title: タイトル・見出し
forecasts: 都道府県天気予報の予報日毎の配列
date: 予報日
dateLabel: 予報日(今日・明日・明後日のいずれか)
telop: 天気(晴れ、曇り、雨など)
temperature: 最高気温、最低気温
chanceOfRain: 降水確
これがAPIの使い方になります。
APIにアクセスして、天気予報の情報を取得することができました。
さて、このURLは人間がブラウザでアクセスする用には作られていません。
このURLはプログラミング言語経由でアクセスする用に用意されています。
プログラミング言語を使うと、このデータを自動的に取得し、処理することができます。
例えば、毎日の天気予報をデータベースに保存したり、天気に応じて自動的に通知を送ったりすることができるのです。
実践例: Google Spreadsheetで天気予報を作成する
APIを使えば、例えばリアルタイム天気予報のスプレッドシートスプレッドシートみたいなものが出来ます。
まださらに深く理解してみたい方は、下記を実践してみてください。
1. Google Spreadsheetを開く
下記のURLにアクセスして、Google Spreadsheetを開いてください。
https://spreadsheet.new
2. 「Apps Script」をクリック
![](https://assets.st-note.com/img/1722484494922-2XXug5iXYN.png?width=1200)
![](https://assets.st-note.com/img/1722484563750-4rfG347GrH.png?width=1200)
ここまでで上記の画面になっていると思います。
3. 「ImportJSON」を作成
次に、下記URLにアクセスして、コードをコピーしてください。
https://github.com/bradjasper/ImportJSON/blob/master/ImportJSON.gs
![](https://assets.st-note.com/img/1722484639010-AKeoSU6lyz.png?width=1200)
先程の画面に戻り、内容を全部削除して先程のコードを張り付けてください。
![](https://assets.st-note.com/img/1722484684818-vzYzOd0q5N.png?width=1200)
4. 「ImportJSON」関数を実行
スプレッドシート側の画面に戻り、A1に下記のURLを張り付けてください。
https://weather.tsukumijima.net/api/forecast/city/130010
![](https://assets.st-note.com/img/1722484824548-v1lV1YdiIr.png?width=1200)
A2に「=importjson(a1)」という数式を書いてください。
ここで警告があると思いますが、問題ないので承認してください。
![](https://assets.st-note.com/img/1722484859727-e1pJg9BffR.png?width=1200)
無事データがインポートできるとこのようになります。
ExcelがA1のURLにアクセスし、必要な情報を取得した結果がA2以降に表示されています。
![](https://assets.st-note.com/img/1722484902592-pElidaYQMF.png?width=1200)
試しに「福岡県久留米市」の天気情報に変更してみましょう。
A1のURLを下記に変えてください。
https://weather.tsukumijima.net/api/forecast/city/400040
![](https://assets.st-note.com/img/1722485149276-gIgHJ3j2Ry.png?width=1200)
久留米市のデータに更新されました。
Spreadsheetが外部のURLにアクセスし、JSONを取得して適切に構造化して配置することができました。
なぜJSONでデータをやりとりするのか?
さて、ではなぜJSONのようなわざわざ人間には読みづらい形式で情報をやりとりするのでしょうか?
それは、人間にはわかりづらくてもプログラム言語にはわかりやすいからです。
以下は少しむずかしいのですが、Rubyというプログラミング言語を使って、
JSONを操作した例です。
require 'httparty'
require 'json'
# APIからデータを取得
response = HTTParty.get('https://weather.tsukumijima.net/api/forecast/city/130010')
weather_json = JSON.parse(response.body)
# データを操作
puts "天気予報: #{weather_json["title"]}"
puts "今日の天気: #{weather_json["forecasts"][0]["telop"]}"
puts "最高気温: #{weather_json["forecasts"][0]["temperature"]["max"]["celsius"]}°C"
このコードを読むと、
weather_json["title"]
というコードを実行すれば、天気予報のタイトル・見出しが、
weather_json["forecasts"][0]["telop"]
というコードを実行すれば、今日の天気が取得できます。
まとめ: 結局、Web APIの何がいいのか?
以上になりますが、Web APIについて理解できたでしょうか。
まとめると、以下になります。
APIとは「アクセスしたら、アクセス先のサービスのCRUDができるURL」である。
そのURLにアクセスすると、プログラミング言語で扱いやすいJSON形式でデータが返ってくる。
そのデータをプログラミング言語で操作し、自分のプログラムと連携が可能となる。
最近APIが重要性を増している理由は、昨今のSaaSブームにより、国内外問わず多数のWebサービスが爆増したからです。
例えば、freeeやAsana、Slackなど。
freeeのAPIだったらfreeeの機能、
AsanaのAPIならAsanaの機能、
SlackならSlackの機能で、それぞれAPIが用意されているので、それらをスプレッドシートやコマンドラインでプログラム経由アクセスすることにより、ソフトウェア同士を連携させることができます。
この手法がデータの一元管理、ひいてはDXにとって非常に重要になるのです。
さいごに
最後までお読みいただきありがとうございました。
次回もまた、具体的なDXについて共有していきます。
さて、さいごに宣伝させてください。
読者の中には、
「ゴリラの言っていることが全然わからんのだが・・・?」
「そんなDX人材身近にいないんだけど・・・?」
という方もいるかもしれません。
そんな方に、ゴリラが無料で相談に乗りたいと思います。
これからDXをはじめようとしている方、
DXをはじめたけど行き詰まっている方、
DXがそもそも何か分からない方、
どんな方でも歓迎です。
Xで気軽にDMいただければと思います。
この記事が何かあなたのお役に立てると嬉しいです。
それでは。