フォートナイトWebAPIでアイテムショップ情報サイトを作成する


Posted on 2022/6/15 at 01:50


私はNintendoSwitchでフォートナイトをプレイしているのですが、アイテムショップ情報を見るためだけにSwitchの電源を入れてフォートナイト を起動していました。しかし、これがなかなか面倒くさい!そこでインターネットでいい方法がないか探してみるとアイテムショップ情報を毎日更新しているサイトがあるではないですか! もう少し調べてみたところアイテムショップ情報をWebAPIで公開しているサイトがいくつか見つかりました。 WebAPIは使用したことがなかったため、勉強ついでにMy日替わりアイテムショップ情報サイトを作成してみます。

完成したフォートナイト日替わりアイテムショップ情報サイト

フォートナイト日替わりアイテムショップ情報サイト

フォートナイトのアイテムショップ情報は日本時間の午前9時に更新されるため、自動でAPIから情報を取得しています。

リンク

【フォートナイト】日替わりアイテムショップ情報

フォートナイトの日替わりアイテムショップ情報を毎日午前9時に更新しています。

WebAPIとは

まずAPI(Application Programming Interface)とはあるサービス機能を別のプログラム上で利用できるようにするための仕組みのことです。

多くのAPIではサービスを提供しているプログラミング言語と同一言語を用いて通信する必要があるため、開発したいプログラミング言語のAPIが提供されていない場合は開発コストが高くなってしまいます。

しかし、WebAPIを利用すればWeb(http/https)通信プロトコルを用いて通信を行うため、好きなプログラミング言語を用いて開発が行える利点があります。 「Amazon API」、「Youtube API」、「Twitter API」など様々なWebAPIが公開されており、 それぞれが提供しているサービスをスムーズに自サービスに組み込むことが可能となります。

使用したWebAPI

Fortnite-API.com

フォートナイトAPIには「Rakuten Rapid API」や「Fortnite Tracker」などがありますが、今回はFortnite-APIを利用しました。

特徴としては、アカウントの作成をしなくても利用可能で、コスメ、デイリーショップ、プレイヤーの統計、ニュースなど様々なデータをJson形式で取得可能で日本語にも対応しています。

アイテムショップのJsonデータを取得するサンプルコード

日本語のアイテムショップ情報を取得する場合は ここからJsonデータを取得できます。

JAVAでJsonデータを取得し、アイテムショップの日付データを取得してみます。Jsonデータを扱いやすくするためjacksonライブラリを利用します。

		import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class FortniteAPISample {

	public static void main(String[] args) {
		URL url;
		try {
			url = new URL("https://fortnite-api.com/v2/shop/br?language=ja");
			ObjectMapper om = new ObjectMapper();
	        JsonNode root = om.readTree(url);
	        System.out.println(root.get("data").get("date").textValue());
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}
		

出力結果

2022-06-14T00:00:00Z
		

まとめ

データの取得まではWebAPIを利用すればたった数行のコーディングで可能です。

あとは取得したJsonデータを解析していけば目的であるフォートナイト日替わりアイテムショップ情報サイトの完成です。

そのほかのWebAPIについてもデータの取得まではまったく一緒なので、色々試してみようと思います。