VALORANT APIを使ってデータを取得しよう

こんにちは。デザイン・システム室の中島です。

今回は、学習内容と自分の趣味を繋げたいという気持ちがあったので、VAROLANTというゲームの基本情報をAPIを使って取得しました。

VALORANTのサービスを提供しているRiot Gamesが無償でAPIを提供しているので、今回はそれを利用してVALORANTのゲーム内で使用できるキャラクターの名前、マップの名前を取得したいと思います。

VALORANTとは

Riot Gamesによって開発されたオンラインのFPSゲームです。プレイヤーは5人vs5人の2つのチームに分かれて戦います。

ゲームの目標は、攻撃側のチームがスパイク(爆弾)を設置し、守備側のチームがそれを阻止することです。各プレイヤーは、キャラクターごとに異なるスキルや能力を持っており、それを使って戦術的なプレイができます。

VALORANTはチームプレイが重要であり、戦略的な意思決定やチーム内でのコミュニケーションが成功に大きく影響します。ゲームは無料でプレイでき、かっこいいキャラクタースキンやアイテムを購入することもできます。

APIとは

APIとは「アプリケーション・プログラミング・インターフェース(Application Programming Interface)」の略称です。一言で表すと、ソフトウェアやプログラム、Webサービスの間をつなぐインターフェースのことを指します。インターフェースとは、何かしらの「境界面」「接点」のことを指し、異なる2つの事物の間をつなぐという意味を持ちます。APIは、主にソフトウェアやプログラム同士をつないでいるインターフェースです。

利用者は、APIを通してAPIの提供元にリクエストを送信します。仕様に則って必要事項が書かれていれば、APIを提供するサービスやソフトウェアがその要求を処理し、その結果を返答します。

APIを利用することによって、対象のサービスの実装方法を知らなくても、利用中のサービスを対象のサービスと通信させることができます。また、アプリケーション開発が単純化されるので、時間とコストを節約することができます。

VALORANT APIを使ってデータを取得

それでは、下記手順に従って実際にVALORANT APIを使ってデータを取得していきましょう。

1. デベロッパーツールにログインする
2. 公式ドキュメントを確認する
3. APIキーを発行する
4. リクエストを送信する
5. 返された結果から、キャラクターの名前等を取得する

1. デベロッパーツールにログインする

VALORANT APIを利用するには、Riot Gamesのアカウント認証が必須です。

Riot Gamesの開発者用サイトから、新規登録またはログインします。(日本サーバーでの登録がおすすめです。)
アカウントを作成しておけば、今回のデータの取得ができるだけでなく、VALORANTやLeague of Legendsといったゲームのプレイもできるようになります。

2. 公式ドキュメントを確認する

今回はVALORANTのAPIを利用するので、Riot Gamesから出されているVALORANT APIに関するドキュメントに目を通してください。誤って不正利用やハッキングの疑いにあたる行為をした場合、アカウント停止の可能性があります。

3. APIキーを発行する

Riot Gamesの開発者用サイトにログインした状態で、アカウント名 > DASHBOARD > REGISTER PRODUCTに移行すると、APIキーを発行することができます。今回は、個人利用なので右のPERSONAL APY KEYを選択します。

続いて、APIを利用するアプリケーションについての情報を入力します。
Product Name: アプリケーション名
Product Description: アプリケーションの詳細(何のために利用するのか、等)
Product Group: Default
Product URL: アプリケーションのURL
Product Game Focus: 何のゲームのデータを利用するか(VALORANTがなかったので、lolにしましたが通りました。)

ここまででAPIキーの発行は完了です。(発行にやや時間がかかる場合があります。)

APIキーの発行が行われると、アカウント名 > DASHBOARDを開くとAPIキーが発行されているのが確認できます。個人利用の場合、有効期限が24時間なので別日に行う場合はREGENERATEを選択して再発行してください。

4. リクエストを送信する

アカウント名 > APPS から、利用できるAPIのリストが確認できます。今回は、VALORANTの基本情報がほしいので、VAL-CONTENT-V1を選択します。ContentDtoが取得可能なデータの中身です。

各項目を入力します。
SELECT REAGION: AP(アジアパシフィック)
SELECT APP: そのまま
INCLUDE API KEY: Query Param

EXECUTE REQUESTを押して、送信完了です。(処理にすこし時間がかかります。)

結果がREQUEST URL, REQUEST HEADERS, RESPONSE CODE…と表示されており、RESPONSE CODEが200であれば、正常に処理されて結果が返されたことになります。

5. 返された結果から、キャラクターの名前等を取得する

それではさっそくサーバーにリクエストを送り、データを取得します。データはすべてJSON形式で提供されています。

require 'net/http'
require 'uri'
require 'json'

API_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXX' # 取得したAPIキー
name = "mithuami" # 自身のアカウント名
region = "jp"
uri = URI.parse("https://ap.api.riotgames.com/val/content/v1/contents?api_key=RGAPI-XXXXXXXXXXXXXXXXXXXXXXXXX") # URIをパース
return_data = Net::HTTP.get(uri)
valorant_data = JSON.parse(return_data)

#エージェント
characters = valorant_data["characters"]
parsed_characters_data = JSON.parse(characters.to_json)
agent_name = parsed_characters_data.map { |agent| agent["localizedNames"]["ja-JP"] }

puts agent_name.inspect
# ["ゲッコー", "フェイド", "ブリーチ", "デッドロック", "レイズ", "チェンバー", "KAY/O", "スカイ", "サイファー", "ソーヴァ", "ソーヴァ", "キルジョイ", "ハーバー", "ヴァイパー", "フェニックス", "アストラ", "ブリムストーン", "ネオン", "ヨル", "セージ", "レイナ", "オーメン", "ジェット", "Null UI Data!"]

# マップ
maps = valorant_data["maps"]
parsed_maps_data = JSON.parse(maps.to_json)
map_name = parsed_maps_data.map { |map| map["localizedNames"]["ja-JP"] }

# ["アセント", "スプリット", "フラクチャー", "バインド", "ブリーズ", "ディストリクト", "カスバ", "ピアッツァ", "ロータス", "パール", "アイスボックス", "射撃場", "ヘイヴン"]
  • uri = URI.parse("https://ap.api.riotgames.com/val/content/v1/contents?api_key=RGAPI-XXXXXXXXXXXXXXXXXXXXXXXXX")
    rubyのuriライブラリを用いてURIをパースします。
  • return_data = Net::HTTP.get(uri):
    net/httpライブラリを使用して、サーバからJSON形式の結果を受け取ります。また、ここではHTTP通信でAPIにアクセスしています。
  • valorant_data = JSON.parse(return_data)
    rubyのjsonライブラリを使用してJSON文字列をハッシュに変換しています。

そして、characters配列, maps配列ををto_jsonメソッドでJSON文字列に変換し、それをJSON.parseメソッドに渡して直接オブジェクトに変換します。その後、必要な値を取り出すために配列のmapメソッドを使用しています。

これで各キャラクターの名前とマップのデータを取得することができました。

最後に

今回は、VALORANT APIを用いてVALORANTのゲーム内で使用できるキャラクターの名前、マップの名前を取得しました。APIを用いたデータの取得を初めてしてみましたが、Riot Gamesのドキュメントは非常に親切で、パラメータなどを入力するとURIを発行してくれるので、初心者の方におすすめです。
また、VALORANTではプライバシー保護の観点から個人利用で個人の戦績データを取得することができませんが、League of Legendsでは個人の戦績データを参照することも可能です。

参考文献

https://www.riotgames.com/en/DevRel/valorant-api-launch

https://developer.riotgames.com/docs/valorant