VALORANT APIを使ってデータを取得しよう
- 最終更新日: 2023年7月5日(水)
- 公開日: 2023年7月12日(水)
こんにちは。デザイン・システム室の中島です。
今回は、学習内容と自分の趣味を繋げたいという気持ちがあったので、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では個人の戦績データを参照することも可能です。