ウィキペディアには様々な情報を取得するためのAPIが用意されている。
上のリンク先にあるページを見ると、ウィキペディアを含むウィキメディア・プロジェクトでは次の3種類のAPIが使用できると書かれている。
上2つのMediaWiki 操作 APIとMediaWiki REST APIはMediaWikiに搭載された汎用的なAPI群であり、ウィキペディア専用に設計されたものではない。
3つ目のウィキメディア REST APIはウィキペディアを含むウィキメディア・プロジェクトのために設計されたMediaWikiの拡張機能となっている。
ウィキメディア REST APIはウィキメディア・プロジェクトのデータを操作するために設計された、MediaWikiの拡張機能だ。 ウィキメディアとMediaWikiの名前が非常にややこしいが、まずはそこをしっかり区別して理解する必要がある。 よくわからないという人は簡単に説明した記事があるので読んでみてもらいたい。
ウィキメディア REST APIの一覧は以下のページで見ることができる。
記事のタイトルや本文、概要などを取得したり、ページをPDFとして取得できるようなAPIなど、様々なものが用意されている。 それぞれのAPI項目を展開すれば詳しい説明を見たり、実際にAPIの動作を試してみたりすることができるようになっている。
まずはどんなAPIがあるのか一通り眺めてみると良いだろう。
試しに記事のメタデータを取得してみよう。
Page Contentを展開するとその中に/page/title/{title}
という項目がある。
説明に従って以下のようなURLを作成してみる。
https://ja.wikipedia.org/api/rest_v1/page/title/虹
このURLにアクセスすると以下のようなレスポンスが得られる。
JSON{ "items": [ { "title": "虹", "page_id": 255181, "rev": 92137478, "tid": "1c7ac040-7491-11ed-853c-a7866cb19370", "namespace": 0, "user_id": 685752, "user_text": "Glayhours", "timestamp": "2022-10-26T14:38:20Z", "comment": "/* 参考文献 */", "tags": [ "mobile edit", "mobile web edit", "advanced mobile edit" ], "restrictions": [], "page_language": "ja", "redirect": false, "page_deleted": null } ] }
次に特定の記事の概要を取得してみよう。
概要を取得するAPIはPage Contentの中の/page/summary/{title}
という項目だ。
先程と同じようにURLを作成してみる。
https://ja.wikipedia.org/api/rest_v1/page/summary/虹
このURLにアクセスすると以下のようなレスポンスが得られる。
JSON{ "type": "standard", "title": "虹", "displaytitle": "<span class=\"mw-page-title-main\">虹</span>", "namespace": { "id": 0, "text": "" }, "wikibase_item": "Q1052", "titles": { "canonical": "虹", "normalized": "虹", "display": "<span class=\"mw-page-title-main\">虹</span>" }, "pageid": 255181, "thumbnail": { "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Double-alaskan-rainbow.jpg/320px-Double-alaskan-rainbow.jpg", "width": 320, "height": 168 }, "originalimage": { "source": "https://upload.wikimedia.org/wikipedia/commons/5/5c/Double-alaskan-rainbow.jpg", "width": 1919, "height": 1008 }, "lang": "ja", "dir": "ltr", "revision": "92137478", "tid": "d87f0d70-553b-11ed-869e-934fcce27b25", "timestamp": "2022-10-26T14:38:20Z", "description": "光が大気中に浮遊する水滴の中を通過する際に屈折・反射することで様々な色が見られる大気工学現象", "description_source": "central", "content_urls": { "desktop": { "page": "https://ja.wikipedia.org/wiki/%E8%99%B9", "revisions": "https://ja.wikipedia.org/wiki/%E8%99%B9?action=history", "edit": "https://ja.wikipedia.org/wiki/%E8%99%B9?action=edit", "talk": "https://ja.wikipedia.org/wiki/%E3%83%8E%E3%83%BC%E3%83%88:%E8%99%B9" }, "mobile": { "page": "https://ja.m.wikipedia.org/wiki/%E8%99%B9", "revisions": "https://ja.m.wikipedia.org/wiki/Special:History/%E8%99%B9", "edit": "https://ja.m.wikipedia.org/wiki/%E8%99%B9?action=edit", "talk": "https://ja.m.wikipedia.org/wiki/%E3%83%8E%E3%83%BC%E3%83%88:%E8%99%B9" } }, "extract": "虹 とは、大気中に浮遊する水滴の中を光が通過する際に、分散することで特徴的な模様が見られる大気光学現象である。", "extract_html": "<p><b>虹</b> とは、大気中に浮遊する水滴の中を光が通過する際に、分散することで特徴的な模様が見られる大気光学現象である。</p>" }
これらのウィキメディア REST APIは自由に利用できるよう公開されているものだが、短時間に多数のリクエストを送るような使い方をするとサーバに負荷がかかって悪影響を及ぼす可能性がある。 同じ内容のリクエストであれば一定時間結果をキャッシュしておくなど、リクエストの回数を減らしてサーバへの負荷を軽減するように努めたい。