もふふのはてな

メインのブログに書くほどではない雑多な記事を置く場所

Riot Games APIでLeague of Legendsのデータを取得する

オンラインゲーム「League of LegendsLoL)」日本サーバーのオープンベータテストがいよいよ始まりました。これを機にLoLを始めたという方も多いことかと思います。かくいう私もその一人です。

LoLを運営するRiot Gamesは、LoLのデータを取得するためのAPIRiot Games API」を提供しています。そこで、自分の勉強のついでに、PHPによるRiot Games APIの使い方、入門記事を書きました。

Riot Games APIでできること

Riot Games APIを用いると、例えば次のようなデータを取得できます。

  • モナーのプロフィール・マスタリー・ルーンなど
  • マッチ履歴
  • チャンピオン・アイテムなどのパラメーター
  • イラスト・アイコンなどの画像

Riot Games APIを利用することで、公式の画像を用いた攻略サイトや、詳細なゲームデータを検索できるサイトを作成できるというわけです。日本のサイトだとBaronStealが著名でしょうか。

デベロッパー登録とAPIキーの取得

APIを利用するためにまず、公式のデベロッパーサイト「Riot Games API」にLoLのアカウントでサインインします。LoLをプレイしているならばアカウントをそのまま使用できます。

サインインするとトップページが「My Dashboard」に変わります。すでにテスト用の「My Development API Key」が1つ発行されているはずです。

Riot Games APIを使うサンプル

早速APIを使ってみます。デベロッパーサイトには次のような動作確認コマンドが載っているので、これを参考にしてPHPで書いてみました。<key>をあなたのAPIキーに書き換えてから実行しましょう。

curlコマンド

curl --request GET 'https://na.api.pvp.net/api/lol/na/v1.4/summoner/by-name/RiotSchmick?api_key=<key>' --include

PHP

<?php
$api_key = '<key>';
$region = 'na';
$name = 'RiotSchmick';

$url = 'https://' . $region . '.api.pvp.net/api/lol/' . $region . '/v1.4/summoner/by-name/' . $name . '?api_key=' . $api_key;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curl);
curl_close($curl);

echo $result;
?>

出力

{"riotschmick":{"id":585897,"name":"RiotSchmick","profileIconId":937,"summonerLevel":30,"revisionDate":1457860607000}}

モナーの基本情報が取得できました。この文字列はJSON形式なので、PHPなら簡単にデータを取り出せます。試しにサモナーレベル(summonerLevel)を取得してみました。

<?php
$array = json_decode($result, true);
$standardized_name = str_replace(' ', '', mb_strtolower($name, 'UTF-8'));
echo $array[$standardized_name]['summonerLevel'];
?>

出力

30

Data Dragonによる画像取得

先ほど取得したサモナー情報にはプロフィールアイコンのID(profileIconId)が含まれていました。そのIDに対応する画像はどこにあるのかというと、「Data Dragon」というサーバーに置かれています。

http://ddragon.leagueoflegends.com/cdn/6.5.1/img/profileicon/937.png

例えば、PHPで動的に生成したURLをimgタグに埋め込めば、そのまま画像を表示できるということです。アイコンのみならず、チャンピオンのアートワークからマップまで、様々な画像を取得できます。

http://ddragon.leagueoflegends.com/cdn/img/champion/splash/Teemo_0.jpg

Data Dragonについての詳細はStatic Data - Riot Games APIを。なおData Dragon自体はAPIキーがなくても利用できます。

まとめ

Riot Games APIによって取得できるデータは多岐にわたります。あまりにも便利で多機能なAPIなので、私も何を作るか悩んでしまいます。

まずはデベロッパーサイトのリファレンスを見ながら色々取得してみると楽しいかもしれません。慣れてきたらレートリミットなども意識してみましょう。

この記事を書いた時点(2016年3月)ではまだ、日本サーバーからデータを取得できません。しかし、準備は進んでいるとのアナウンスがありました。日本サーバーでAPIを使える日も近いようです。

参考