【第2回】無料APIで LINE Bot を賢くしよう!
〜 天気・Wikipedia などの情報を自動で返すボットを作る 〜
こんにちは!
この記事は 4回シリーズ「超初心者のための LINE チャットボット講座」 の 第2回 です。
前回は、LINE Bot に「こんにちは」と送ると返事が返ってくる Hello Bot を作りました。
今回はさらに進んで、
📌 無料 API を使って、Bot が外の情報を答えられるようにします!
たとえば、
ユーザー:東京の天気は?
Bot:今日の東京は晴れ、最高気温は 23℃ です!
ユーザー:富士山とは?
Bot:富士山は日本の本州中央部にある火山で……(Wikipedia情報)
こんな感じの “ちょっと賢い Bot” を作ります。
もちろん今回もすべて 完全無料 です!
🎯 第2回のゴール
- 無料 API の仕組みが理解できる
- 外部情報(天気 / Wikipedia)を取得できる
- LINE Bot に質問すると、その情報を返してくれる
- 「自分だけの機能」を追加できるようになる
🧱 Step 1. 無料 API の仕組みを理解しよう
API はかんたんに言うと、
「外のサービスにデータを取りに行く窓口」
です。
例えば「天気API」は、
天気予報サイトのデータベースから情報を取ってきて
あなたのプログラムに返してくれます。
LINE Bot は API と組み合わせることで、
外の世界の情報を答えられる賢いボット になります。
🧱 Step 2. 今回使う無料API
今回は特に初心者が使いやすい API を2つ使います。
① OpenWeatherMap(天気API)
- 完全無料プランあり
- 世界中の天気が取得できる
- 日本語対応も可能
② Wikipedia API
- 登録不要
- 完全無料
- 簡単なキーワード検索で説明文が取れる
どちらも初心者向けで、実践で使える定番APIです。
🧱 Step 3. OpenWeatherMap の APIキーを取得しよう
① OpenWeatherMap を検索して公式サイトへ
(URLは直接記載しません、Qiita投稿規約のため検索してください)
② 無料アカウントを作成
③ メール認証を完了し、ログイン
④ API Keys にアクセスしてキーをコピー
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
これを後で Python のコードに貼り付けます。
🧱 Step 4. 天気情報を Python で取得してみよう
まず、Bot に組み込む前に、
Python で天気 API を叩く練習をしましょう。
weather_test.py
import requests
API_KEY = "YOUR_API_KEY"
city = "Tokyo"
url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={API_KEY}&lang=ja&units=metric"
response = requests.get(url)
data = response.json()
print(data)
実行して JSON データが返ってきたら成功!
🧱 Step 5. LINE Bot に天気情報を組み込む
ここからが本番です!
前回の app.py の中に以下の関数を追加します。
天気情報を取得する関数
import requests
def get_weather(city):
API_KEY = "YOUR_API_KEY"
url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={API_KEY}&lang=ja&units=metric"
response = requests.get(url)
data = response.json()
if data.get("weather") is None:
return "ごめんね、その地域の天気がわからなかったよ。"
weather = data["weather"][0]["description"]
temp = data["main"]["temp"]
return f"{city} の天気は {weather}、気温は {temp}℃ だよ!"
🧱 Step 6. ユーザーの質問に応じて天気を返す
前回の handle_message を少し改造します。
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
user_msg = event.message.text
# 「◯◯の天気」 と聞かれた場合
if "天気" in user_msg:
city = user_msg.replace("の天気", "").strip()
reply = get_weather(city)
else:
reply = f"『{user_msg}』って言ったね!"
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=reply)
)
これで、
東京の天気
大阪の天気
札幌の天気
全部答えてくれます!
🧱 Step 7. Wikipedia API で説明文を取得しよう
Wikipedia API は登録不要で使えるのが嬉しいポイント。
以下の関数を追加します。
def get_wiki_summary(keyword):
url = f"https://ja.wikipedia.org/api/rest_v1/page/summary/{keyword}"
response = requests.get(url)
data = response.json()
if "extract" in data:
return data["extract"]
else:
return "ごめんね、その言葉の説明が見つからなかったよ。"
🧱 Step 8. Bot で Wikipedia を返す
handle_message に以下を追加します。
# Wikipedia で説明する
if user_msg.endswith("とは?") or user_msg.endswith("とは"):
keyword = user_msg.replace("とは?", "").replace("とは", "").strip()
reply = get_wiki_summary(keyword)
これで、
富士山とは?
AIとは?
Pythonとは?
全部説明してくれるようになります!
🎉 完成!今日の成果
これであなたの LINE Bot は
✔ 天気を教えてくれる
✔ Wikipedia の説明文も返す
✔ キーワードを認識して賢く返答
という 情報検索Bot に進化しました!
かなり実用的な Bot になっています。
おめでとうございます!🎉🎉🎉
📚 今日の宿題
以下の中から好きなものに挑戦してみてください。
① 天気予報の表示をもっと丁寧にする
例:最高気温 / 最低気温も出す
例:絵文字をつける(☀️ / ☔ など)
② Wikipedia の情報を 100 文字以内にまとめる
長すぎる時があるので工夫してみよう!
③ 天気 or Wikipedia 以外の無料 API を追加
おすすめ例:
- 為替API(円⇄ドルを変換)
- ニュースAPI
- ランダムな名言API
など