ChatGTP プログラミング学習

【プログラミング】ChatGPTと進めるAPI活用方法と実践

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

前回の記事「ChatGPTとPythonで学ぶ!APIを使った高度なデータ収集と自動化」では、APIの基礎について学びました。今回の記事では、さらに一歩進んで、Hacker News APIを使いながら、具体的なAPIリクエストの送信方法やデータ取得のプロセスを実践していきます。また、取得したデータをプログラム内でフィルタリングする方法も取り上げ、APIの活用術をより深く理解できる内容をお届けします。これを機に、実際のプロジェクトでAPIを使いこなせるスキルを身につけていきましょう。

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

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

APIとは何か?

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

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

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

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

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

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

ステップ1: 基本的なAPIリクエストの送信とデータ取得

まずは、Hacker News APIからデータを取得するシンプルなリクエストを送信してみましょう。以下のコードは、Hacker NewsのトップストーリーのIDリストを取得するものです。

今回使用するAPI

サイト:Free Weather API

APIはこちらから→GitHub‐Free Weather API

APIリクエストの送信とデータ取得

ポイント

  • requests.get(): 指定したURLに対してHTTP GETリクエストを送信します。
  • response.json(): レスポンスをJSON形式で取得します。JSON形式は、構造化されたデータを扱う際に非常に便利です。
  • story_ids[:10]: トップストーリーのIDリストから最初の10件を表示します。

出力

ダダ
ダダ

何か数字が出力されたことがわかりますが、この数字が何なのかわかりませんよね!!
https://hacker-news.firebaseio.com/v0/topstories.json
コードに入力しているサイトに行ってみましょう。

ダダ
ダダ

上記の画像のような数字が書かれた画面が出て来ます。
この最初にある10個のIDを表示するコードとなっています。

トップストーリーのIDリスト

「トップストーリーのIDリスト」とは、主にニュースやウェブサイトで特定の記事やコンテンツを識別するために使われるIDのリストのことを指します。ニュースサイトやコンテンツ配信プラットフォームでは、各記事やストーリーに一意のIDが割り当てられています。このIDを使用することで、記事を簡単に検索、参照、または管理することができます。

ステップ2: 特定のデータを取得

次に、取得したストーリーIDの中から、1つのストーリーの詳細を取得してみましょう。

ポイント

  • story_id: トップストーリーIDのリストから1つのIDを選びます。
  • story_url: 選んだIDを使って、そのストーリーの詳細情報を取得するURLを作成します。
  • story_response.json(): ストーリーの詳細データをJSON形式で取得します。
  • story_data: ストーリーのタイトル、URL、スコア、コメント数などの詳細を表示します。

出力

URLを検索してみると以下のようなサイトに飛びました
https://research.google/pubs/sql-has-problems-we-can-fix-them-pipe-syntax-in-sql/

ダダ
ダダ

なんだかAPIを活用できてる感が出てきてワクワクしております🤭

ステップ3: リクエストパラメータを使ったデータのフィルタリング

Hacker News API自体は、リクエストパラメータによるフィルタリング機能が限られていますが、取得したデータをプログラム内でフィルタリングすることが可能です。例えば、スコアが一定以上のストーリーだけを表示するフィルタリングを行います。

ポイント

  • min_score: スコアの最低基準値を設定します。この例では、スコアが100以上のストーリーだけを表示します。
  • if story_data['score'] >= min_score: 取得したストーリーのスコアが基準値以上かをチェックし、条件を満たす場合のみそのストーリーを表示します。

出力

スコアについて

Hacker News(HN)での「スコア」とは、特定のストーリー(記事や投稿)に対してユーザーが付けた「アップボート(Upvote)」の合計数を指します。Hacker Newsでは、ユーザーが気に入ったり、価値があると感じた投稿に「アップボート」をすることで、ストーリーのスコアが上昇します。

スコアが高いストーリーは、より多くのユーザーに支持され、価値があると見なされていることを意味します。そのため、Hacker Newsのトップページやその他のリストには、スコアの高いストーリーが優先的に表示されることが多いです。

プログラム内でスコアを基準にフィルタリングすることで、例えばスコアが一定以上(たとえば100以上)に達したストーリーのみを抽出して表示することができます。これは、より質の高い、もしくはユーザーに人気のあるコンテンツのみを扱いたい場合に便利です。

ダダ
ダダ

データのフィルタリングを行うことで、人気のあるコンテンツのみを収集することができます。

ステップ4: 複数のストーリーを一括で処理する

1つのストーリーについて詳細情報を取得しましたが、複数のストーリーを一括で処理し、その中から条件に合致するデータをフィルタリングする方法を学びます。

複数のストーリーを一括で取得して処理するコード

ポイント

  • filtered_stories: スコアが100以上のストーリーだけを格納するリストです。
  • story_ids[:10]: 最初の10件のストーリーIDについて処理を行います。この範囲を調整することで、処理するストーリーの数を変えることができます。
  • filtered_stories.append({...}): 条件を満たすストーリーの情報(タイトル、スコア、URL)をリストに追加します。

出力

ポイント

コードの内のデータを変更してみよう

上記の数値を変更することで、出力されるデータが変更されます。

ステップ5: データの保存

次に、フィルタリングされたデータをファイルに保存する方法を学びます。JSONファイルに保存することで、後でデータを再利用したり、他のプログラムで読み込むことが容易になります。

データをJSONファイルに保存するコード

ポイント

  • json.dump: Pythonのリストや辞書をJSON形式でファイルに保存します。
  • ensure_ascii=False: 日本語などの非ASCII文字をそのまま保存するためのオプションです。
  • indent=2: 保存するJSONファイルのインデント(字下げ)を設定します。読みやすい形式で保存されます。

出力

このコード単独では、ファイルに保存するデータがないのでエラーが出てきます。

ステップ6: 実行と確認

上記のコードをステップ5のこーどにいれて実行し、filtered_stories.jsonというファイルにフィルタリングされたストーリーのデータが保存されることを確認しましょう。このファイルには、スコアが100以上のトップストーリーが含まれています。

ポイント

import jsonを2行目に追加します。
・ステップ6で作成したコードをステップ5で作成したコードの後に追加したします。

出力

JSONファイルの作成

まとめ

今回の記事では、Hacker News APIを使って、具体的なAPIリクエストの送信方法やデータ取得のプロセスを学びました。特に、取得したデータをプログラム内でフィルタリングする方法や、フィルタリングされたデータをJSONファイルに保存する手法についても詳しく解説しました。

主なポイントは以下の通りです:

  1. APIとは何か?
    • APIは、異なるプログラム間でデータや機能をやり取りするためのインターフェースです。カフェでの注文を例に挙げて、APIの役割を理解しました。
  2. Hacker News APIからデータを取得する方法
    • Pythonのrequestsライブラリを使って、APIリクエストを送信し、トップストーリーのIDリストを取得しました。
  3. 特定のデータを取得する方法
    • 取得したIDの中から、特定のストーリーの詳細を取得し、そのデータを表示しました。
  4. データのフィルタリング
    • スコアが100以上のストーリーだけをフィルタリングして表示する方法を学びました。これは、より価値のあるデータに絞り込みたい場合に有効です。
  5. フィルタリングされたデータの保存
    • フィルタリングされたストーリーのデータをJSON形式で保存する方法を紹介しました。保存されたデータは、後で再利用したり、他のプログラムで読み込むことができます。

これで、APIを使ったデータ収集と処理の基本的な流れを理解できたと思います。実際のプロジェクトに応用して、APIを使いこなすスキルをさらに磨いていきましょう。次回の記事では、さらに高度なAPI活用法や自動化の技術について取り上げる予定ですので、ぜひお楽しみに!

次回の記事

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

Xのアカウントはこちら

ダダのアカウント

Discordコミュニティ

ハピッツカフェ

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

Udemy講座

Processing Python講座

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

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

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

-ChatGTP, プログラミング学習
-, , , , , , ,