ChatGTP スキルアップ プログラミング学習

【プログラミング】ChatGPTと進めるAPI学習の基本

記事内に商品プロモーションを含む場合があります

前回の記事では、ChatGPTを使いながらPythonでのスクレイピングを実践し、練習用サイトからデータを取得し簡単な分析を行いました。まだご覧になっていない方は、ぜひこちらの記事をご覧ください:【プログラミング】ChatGPTと進める!Pythonスクレイピング実践編

今回は、その学びをさらに深めるために、スクレイピングに欠かせない「API(Application Programming Interface)」について学習していきます。APIとは、プログラム同士がデータをやり取りするための共通ルールのこと。これを理解することで、より効率的にデータ収集ができ、あなたのプログラミングスキルを一段階アップさせることができます。さあ、ChatGPTと一緒にAPIの世界へ足を踏み入れましょう!

Pythonの始め方についてはこちらの記事を参考にしてみてください!!

ブログ内のコードはコピーして使用できます

APIとは何か?

APIは「Application Programming Interface」の略です。簡単に言うと、APIはコンピュータプログラム同士が話すためのルールです。

APIをカフェでの注文に例えてみましょう

  • あなた(ユーザー): レストランのお客さん
  • キッチン(サービス): 食べ物を作る場所
  • ウェイター(API): あなたとキッチンをつなぐ人

レストランで食事を注文する時、あなたはウェイターに「パスタをください」と伝えます。ウェイターはそのメッセージをキッチンに伝え、キッチンでパスタが作られます。パスタができたら、ウェイターはそれをあなたに届けます。

APIはこの「ウェイター」のような役割を果たします

  • あなた(プログラム)はAPIを通じて他のプログラム(サービス)に何かをお願いしたり、情報を取り出したりします。
  • APIはそのお願いを受け取って、必要な情報を持ってきたり、指示を実行したりします。

実際のAPIの例

インターネット上では、多くのウェブサービスがAPIを提供しています。

  • 天気予報サービス: あなたが「明日の東京の天気を教えて」とリクエストすると、APIは天気予報の情報を持ってきてくれます。
  • 地図サービス: あなたが「新宿から渋谷までの道順を教えて」とリクエストすると、APIは最適なルートを返してくれます。

APIがあると便利な理由

  1. 簡単にデータを取得できる: 自分で全てのデータを探し出す必要がなく、APIを通じて必要な情報を簡単に取得できます。
  2. 機能を利用できる: 他のプログラムが提供している機能を自分のプログラムから使えるようになります。
  3. 柔軟性がある: 様々なサービスや機能を簡単に組み合わせることができます。

ステップ1: APIの基本的な使い方

まずは、基本的なAPIリクエストの流れを学びましょう。今回は、Free Weather APIを使用して、特定の都市の天気データを取得する例を進めていきます。

1. APIキーの取得

  • APIの多くは、認証のためにAPIキーを必要とします。今回はFree Weather APIを使いますが、まずはアカウントを作成し、APIキーを取得してください。

2. APIリクエストの基本構造

APIリクエストは通常、以下のような構造を持ちます:

  • サービスのURL: https://api.service.com
  • エンドポイント: /data
  • パラメータ: param1=value1&param2=value2
  • APIキー: apikey=your_api_key

ステップ2: PythonでAPIを使用してデータを取得する

今回は使用するサイト

Free Weather API

この天気予報APIを使用していきます。
有料プランもありますが、現在(2024.8.16)は無料で使用できるのでこのサイトを利用していきます。
APIの練習をするのであれば、このサイトのAPIで十分いろんなことができますよ

ステップ1: Free Weather APIキーの取得

  1. Free Weather APIにサインアップ:
    • Free Weather APIのウェブサイトにアクセスし、アカウントを作成します。
  1. サインアップ後、ダッシュボードでAPIキーを取得します。
  1. APIドキュメントの確認:
    • Free Weather APIのドキュメントを参照して、使用できるエンドポイントやパラメータを確認します。例えば、都市ごとの天気情報を取得するエンドポイントなど。

ステップ2:実際にデータを取得してみよう

具体例: Free Weather API を使って天気データを取得

以下のコードを使用して、特定の都市(例えば、Tokyo)の天気データを取得します。

ポイント

  1. APIキーの設定:
    • Free Weather APIから取得したAPIキーをapi_key変数に設定します。
  2. URLの構築:
    • リクエストURLには、APIキーと都市名(この例ではTokyo)を含めて構築します。
  3. リクエストの送信:
    • requests.get(url)を使ってAPIにリクエストを送信し、天気データを取得します。
  4. レスポンスの処理:
    • レスポンスが正常(ステータスコード200)の場合、天気情報を表示します。エラーが発生した場合は、そのエラーメッセージを表示します。

ステータスコード200とは、HTTP(HyperText Transfer Protocol)ステータスコードの一つで、サーバーがクライアントからのリクエストを正常に処理できたことを示しています。

他の主なステータスコード

  • 400 Bad Request: クライアントからのリクエストが無効(不正)で、サーバーが処理できなかった場合に返されます。
  • 401 Unauthorized: 認証が必要なリソースに対して適切な認証が行われなかった場合に返されます。
  • 403 Forbidden: サーバーがリクエストを理解したが、許可されていないため処理を拒否した場合に返されます。
  • 404 Not Found: リクエストされたリソースがサーバー上に存在しない場合に返されます。
  • 500 Internal Server Error: サーバー内部でエラーが発生し、リクエストを処理できなかった場合に返されます。

出力

city変数を東京以外に変えても、問題なく天気予報が出力されます。

Tokyo→Hiroshima-Shiに変更して出力してみます。

無事に出力されました。

ステップ3: 複数都市のデータ取得とフィルタリング

目標

複数の都市の天気データをAPIを使って取得し、そのデータをフィルタリングして、特定の条件に合致するデータを抽出する方法を学びます。

手順

  1. 複数都市の天気データを取得:
    • 複数の都市(例: Tokyo, London, New York)の天気データをAPIを使って取得します。
  2. データのフィルタリング:
    • 取得したデータから特定の条件(例: 気温が20°C以上)に合致するデータを抽出します。
  3. データの分析:
    • フィルタリングされたデータを基に、平均気温を計算したり、都市の数を集計します。

具体的なコード例

以下のコードでは、複数の都市の天気データを取得し、気温が20°C以上の都市のみをフィルタリングする例を示します。

ポイント

  1. APIキーの設定:
    • Free Weather APIから取得したAPIキーをapi_keyに設定します。
  2. 複数の都市の天気データを取得:
    • リストにある各都市についてAPIリクエストを送り、天気データをweather_dataリストに追加します。
  3. データのフィルタリング:
    • 取得したデータのうち、気温が20°C以上の都市のみを抽出してfiltered_dataリストに保存します。
  4. フィルタリング結果の表示:
    • フィルタリングされた都市とその気温を表示します。
  5. 平均気温の計算:
    • フィルタリングされた都市の平均気温を計算し、結果を表示します。

出力

cities = ['Tokyo', 'London', 'New York', 'Paris', 'Sydney']

リスト内には、東京とニューヨークしか出てきませんでした。
その他の地域の気温が気になるので、数値を変更してみます。

このコードの20という数値を変更してみて、出力の変化を見ていきます

20→0に変更してみます

再出力

無事出力されたので、20℃と言うフィルターがちゃんとかかっていることがわかりました。

ステップ4: APIから取得したデータをCSVファイルに保存

目標

APIから取得したデータをCSVファイルに保存する方法を学びます。

手順

  1. APIからデータを取得:
    • これまでに学んだ方法で、複数の都市の天気データをAPIから取得します。
  2. CSVファイルにデータを保存:
    • Pythonのcsvモジュールを使用して、取得したデータをCSVファイルに書き込みます。

具体的なコード例

以下のコードでは、複数の都市の天気データを取得し、それをweather_data.csvというCSVファイルに保存します。

ポイント

  1. CSVファイルの作成:
    • csv_file という名前でCSVファイルを作成し、ヘッダー行(都市名、気温、天気)を書き込みます。
  2. APIリクエストの送信とデータの取得:
    • 各都市についてAPIにリクエストを送信し、天気データを取得します。
  3. データのCSVファイルへの書き込み:
    • 取得した都市名、気温、天気の情報をCSVファイルに書き込みます。
  4. エラー処理:
    • リクエストが失敗した場合、エラーメッセージを表示します。

出力

csvファイルの中へ無事に出力ができました。

ステップ5: CSVファイルからデータを読み込み

目標

保存されたCSVファイルからデータを読み込み、特定の条件に基づいてフィルタリングし、基本的な分析を行います。

手順

  1. CSVファイルからデータを読み込む:
    • Pythonのcsvモジュールを使用して、CSVファイルからデータを読み込みます。
  2. データのフィルタリング:
    • 例えば、気温が特定の値以上の都市のみを抽出します。
  3. データの分析:
    • フィルタリングしたデータを基に、平均気温を計算したり、特定の条件に合致する都市の数を集計します。

具体的なコード例

以下のコードでは、前のステップで保存したweather_data.csvファイルからデータを読み込み、気温が20°C以上の都市のみをフィルタリングし、その平均気温を計算する例を示します。

データの読み込みとフィルタリング

ポイント

  1. CSVファイルからデータを読み込み:
    • csv.DictReader を使って、CSVファイルのデータを辞書形式で読み込みます。各行のデータはリストに追加され、citytempweather の各フィールドにアクセスできるようになります。
  2. 気温でフィルタリング:
    • 気温が20°C以上の都市をフィルタリングし、filtered_data リストに保存します。

出力

ステップ6:フィルタリングと分析を行う

データの分析

ポイント

  1. 平均気温の計算:
    • フィルタリングされた都市の平均気温を計算し、結果を表示します。
  2. 都市の数を表示:
    • フィルタリングされた都市の数を集計し、表示します。

出力

このステップでは、CSVファイルからデータを読み込みと、フィルタリングと分析を行う方法を学び、データの再利用が容易になりました。特定の条件に基づいて効率的にデータを処理できるようになります。

まとめ

今回の内容は、APIを活用して、データの取得から分析までの一連をやってみました。
次回は、もう少しより複雑なデータ処理や、APIの活用方法について学ぶことができます。
ここまでは、APIを活用したスクレイピングの基礎をやってきております。わからない部分が出てくところでもありますが一緒に頑張っていきましょう。

もしわからないことがあれば、このブログやXに質問等を投げていただければと思います。また、コミュニティもやっっているのでそちらから質問を投げていただいても大丈夫ですよ!!

Xのアカウントはこちら

ダダのアカウント

Discordコミュニティ

ハピッツカフェ

プログラミングを視覚的に理解したい方やプログラミングで絵を書いてみたい方はUdemyで講座も作っているのでこちらも参考にしてみてください

Udemy講座

Processing Python講座

ChatGPTでPythonの学習を始めてみたい方は以下の記事を参考にしてみてください

ChatGPTはプログラミングの学習はできても、人のつながりまでは作ってくれません。
プログラミングの学習だけではなく、人との繋がりを作ってくれるスクールもオススメです。
気になる方は無料相談からでも体験してみてください!!

テックアカデミー無料メンター相談

次回の記事は

関連記事


-ChatGTP, スキルアップ, プログラミング学習
-, , , , , ,