【ITニュース解説】Bedrockくんさぁ、毎朝天気教えてくれない?
2025年09月21日に「Qiita」が公開したITニュース「Bedrockくんさぁ、毎朝天気教えてくれない?」について初心者にもわかりやすく解説しています。
ITニュース概要
LINE Botを改修し、毎朝天気予報を自動で通知する仕組みを解説する記事。既存Botに、公開APIから天気情報を取得・表示させる機能を加え、日々の情報収集を自動化する方法を紹介している。
ITニュース解説
この記事は、毎朝自動で天気予報を教えてくれるLINEボットの作成方法について解説する。システム開発においては、複数の専門的なサービスや技術を組み合わせて一つの大きな機能を実現することがよくあるが、このボットはその良い例である。天気情報を取得する外部サービス、その情報を加工して自然な言葉で伝える生成AI、そしてそれらを定期的に実行し、LINEユーザーに届けるためのクラウドインフラという、様々な要素が連携している。
まず、ボットの肝となる「天気情報の取得」について見ていこう。ボットが現在の天気や予報を知るためには、どこかからその情報を手に入れる必要がある。この記事では「公開API」という仕組みを利用する。APIとは、Application Programming Interfaceの略で、異なるソフトウェア同士が互いに情報をやり取りするための窓口のようなものだ。Webサイトで天気予報を見ていると、裏側では気象庁や民間気象会社のサーバーが提供するAPIを通じてデータが送られてきていることが多い。今回は「OpenWeatherMap API」というサービスを使う。これは世界中の天気情報をプログラムから取得できるように提供されており、ユーザーはAPIキーと呼ばれる認証情報を取得することで利用できるようになる。このAPIキーは、サービスを提供する側が誰がどのようにAPIを利用しているかを管理し、不正利用を防ぐためのパスワードのようなものだと考えると良い。
天気情報を取得するには、特定の形式でAPIに「リクエスト」を送る必要がある。これは、WebブラウザでURLを入力して特定のページにアクセスするのと同じようなものだ。OpenWeatherMap APIの場合、天気情報を取得するためのURLがあり、その中に知りたい場所の緯度と経度、そして先ほどのAPIキーを含めてリクエストを送る。緯度と経度は、世界のどこを指すかを正確に指定するための座標だ。もし地名から緯度経度を知りたい場合は、「ジオコーディングAPI」という別のAPIを使って変換することも可能だ。リクエストを送ると、APIからは「レスポンス」としてデータが返ってくる。このデータは多くの場合「JSON形式」という、コンピューターが扱いやすい構造化されたテキスト形式で送られてくる。例えば、気温や湿度、天気の種類(晴れ、曇り、雨など)といった情報がキーと値のペアで格納されており、プログラミング言語を使って必要な情報だけを抽出する作業が必要になる。
次に、取得した天気情報をどのようにユーザーに伝えるかだ。この記事ではLINEボットを利用しているため、「LINE Messaging API」を使ってメッセージを送信する。LINE Messaging APIは、LINEアプリを介してユーザーとプログラムがコミュニケーションを取るための仕組みだ。単にテキストを送るだけでなく、より見た目がリッチで分かりやすい「Flex Message」という機能も活用できる。Flex Messageを使えば、天気アイコンや気温、降水確率などを視覚的に分かりやすく配置したカード形式のメッセージを作成し、ユーザーに届けることが可能になる。これにより、単調なテキストだけのメッセージよりも、ユーザーは一目で情報を理解しやすくなる。
さらに、このボットのユニークな点は、生成AIをメッセージ作成に活用していることだ。具体的には、Amazonが提供する生成AIサービスである「AWS Bedrock」を利用し、その中でも「Anthropic Claude 3 Sonnet」という高性能な言語モデルを使っている。なぜ生成AIを使うのかというと、取得した天気データをそのままテキストで表示するだけでは、無機質な情報になってしまうからだ。生成AIを使うことで、「今日の東京の天気は晴れ時々曇り、最高気温は25度です。お出かけには傘は不要でしょう!」といった、より自然で人間らしい口調のメッセージを生成できる。これは「プロンプトエンジニアリング」という技術によって実現される。プロンプトエンジニアリングとは、AIに対してどのような指示(プロンプト)を与えるか、どのような役割を演じさせるか(システムプロンプト)、そしてどのような情報(天気データなど)を与えるか(ユーザープロンプト)を工夫することで、AIから望ましい応答を引き出す技術だ。このボットでは、取得した天気データをプロンプトとしてBedrockに送り、LINEユーザーに送る適切なメッセージを生成させている。
このLINEボット全体を動かす基盤には、AWS(Amazon Web Services)というクラウドサービスが利用されている。特に重要な役割を果たすのが「AWS Lambda」「API Gateway」「EventBridge」の三つだ。 「AWS Lambda」は、サーバーを意識することなくプログラムコードを実行できる「サーバーレスコンピューティング」サービスである。通常、プログラムを動かすには常に稼働しているサーバーが必要だが、Lambdaを使えば、必要な時にだけコードが実行され、その実行時間に対してのみ費用が発生するため、非常に効率的だ。このボットの場合、LINEからのメッセージを受信した時や、毎日決まった時間に天気予報を送信する時に、Lambda関数が起動して処理を実行する。
「API Gateway」は、外部からのHTTPリクエストを受け付けて、Lambda関数に中継するための入り口の役割を果たす。LINE Messaging APIがボットにメッセージを送る際には、このAPI Gatewayを経由してLambda関数が呼び出される。これにより、インターネットからセキュアにLambda関数にアクセスできるようになる。
そして、「AWS EventBridge」は、特定のイベント(出来事)が発生した時や、指定した時刻に自動的にLambda関数を起動させるためのサービスだ。今回のボットでは、「毎朝天気予報を送る」という要件があるため、EventBridgeを使って毎日特定の時間にLambda関数を起動させるように設定している。これは「cron式」と呼ばれる時間指定の書式を使って、例えば「毎日午前7時に実行する」といった設定が可能だ。
これらのAWSサービスを組み合わせることで、開発者はサーバーの運用管理の手間から解放され、アプリケーションのロジック開発に集中できる。また、Lambda関数に外部ライブラリを追加する際には「Lambdaレイヤー」という機能を使う。これは、複数のLambda関数で共通して利用するライブラリをまとめてデプロイするためのもので、関数ごとのデプロイパッケージのサイズを小さく保ち、管理を効率化する。さらに、APIキーなどの機密情報は、コードの中に直接書き込むのではなく、「環境変数」として設定することで、セキュリティを向上させ、コードの再利用性を高めている。
この天気予報LINEボットの作成は、システムエンジニアを目指す初心者にとって、現代のクラウド開発における一般的なパターンを理解する上で非常に良い学習題材となるだろう。外部API連携、生成AIの活用、そしてサーバーレスアーキテクチャによる効率的なシステム構築という、複数の重要な技術要素がどのように連携し、一つのサービスを作り上げるのかを示す実践的な例である。各技術要素がそれぞれの役割を担い、複雑な処理を分解して実現していることがよくわかる。