Java ゲーム データセットを作る_WikipediaAPI 〜 魔術、宗教関連 、Javaプログラム〜

実在の魔術師

人名 説明
エリファス・レヴィ 『高等魔術の教理と祭儀』 フランス
スタニスラス・ド・ガイタ侯爵 薔薇十字カバラ会 フランス
アレイスター・クロウリー 黄金の夜明け団(GD)を経てA∴A∴(銀の星)創設。OTO(東方聖堂騎士団)英国支部MMM。 イギリス・アイルランド
アーサー・エドワード・ウェイト GD。 イギリス・アイルランド
マグレガー・メイザース GDの共同創設者、指導者。後にA∴O∴創設。 イギリス・アイルランド
ダイアン・フォーチュン A∴O∴を経て内光協会(I∴L∴)創設。『心霊的自己防衛』、『神秘のカバラー』。 イギリス・アイルランド
オースティン・オスマン・スパー 画家。短期間A∴A∴で学ぶ。ケイオスマジックの元祖。 イギリス・アイルランド
ケネス・グラント ニュー・イシス・ロッジ、後のタイフォニ その他のヨーロッパ アンOTOの首領。 イギリス・アイルランド
ウィリアム・バトラー・イェイツ GD。ノーベル賞詩人。 イギリス・アイルランド
W・E・バトラー 内光協会で学ぶ。後にSOL(光の侍従)初代学習主任。 イギリス・アイルランド
ピーター・J・キャロル(ピート・キャロル) ケイオスマジックの代表的創始者。IOT共同創設者。 イギリス・アイルランド
テオドル・ロイス ドイツ。事実上のOTO創設者。 その他のヨーロッパ
フランツ・バルドン(バードン) チェコ。死後、英訳された Initiation Into Hermetics などの三部作で知られるようになった。 その他のヨーロッパ
イスラエル・リガルディー アレイスター・クロウリーの秘書を経て、GD分派S∴M∴(暁の星)に参入。後に黄金の夜明け団の儀式公開。 アメリカ
ポール・フォスター・ケース A∴O∴シカゴ支部を経てBOTA(神殿の建設者)創立。タロット研究で知られる。 アメリカ
ジャック・パーソンズ クロウリー系OTOカリフォルニア支部アガペー・ロッジ。ロケット工学者。 アメリカ
グラディー・マクマートリー アガペー・ロッジにてOTOに参入。後にカール・ゲルマーの下で休団同然だったクロウリー系OTOを再興し、カリフェイトOTO初代首領となる。 アメリカ
ミシェル・ベルティオー(マイケル・ベルテアクス) 西洋魔術とヴードゥーを折衷。古代東方聖堂騎士団(OTOA)、黒蛇団。 アメリカ
チック・シセロ(キケロ) イスラエル・リガルディーの弟子。オリジナルGDと同名の彼の団体名 The Hermetic Order of the Golden Dawn (HOGD) は米国で商標登録されている。 アメリカ
パット・サレスキー(ザレウスキー) S∴M∴の指導者ロバート・フェルキンがニュージーランド移住後に作ったウォーレ・ラ・テンプルの団員ジャック・テイラーに学ぶ。 オセアニア

伝説上の魔女

名前 説明 血縁など 書籍 使ったとされる魔法
メーデイア ギリシア神話に登場するコルキス(現在のグルジア西部)の王女 太陽神ヘーリオスの孫であり、魔女キルケーの姪 神統記 女神ヘカテーからあらゆる魔法の薬草とその扱い方: 薬草を用いて行う魔法は、炎の勢いを和らげ、炎の勢いを和らげ、川の流れを堰き止め、星々や月の運行を妨げることが出来た
キルケー 魔女(ニュンペー)である。 を太陽神ヘーリオスと海の女神ペルセーイス(ホメーロスではペルセー)の娘で、コルキス王アイエーテースの兄弟 オデュッセイア 変身の魔法、薬草学と薬学、冥府の死霊占い、予言者テイレシアースの霊を呼び寄せて予言を得る術

古代神学者とされた人物

名前 説明 関連情報
ヘルメス・トリスメギストス 神秘思想・錬金術の文脈に登場する神人であり、伝説的な錬金術師である。「錬金術師の祖」 ヘルメス・トリスメギストスが「トリスメギストス」の名を持っている理由の説明としては、エメラルド・タブレットの「全世界の英知の三部門を知る」という記述を根拠にするものがある。この3つの分野の知識とは、すなわち錬金術・占星術・神働術である
ゾロアスター ゾロアスター教開祖、ザラスシュトラ(アヴェスター語)(ツァラトゥストラ(ペルシャ語をドイツ語読みしたもの)) ザラスシュトラはアフラ神群とマズダー(叡智)を結び付け、アフラ・マズダーとして唯一の崇拝対象とした。また、アフラ・マズダーは宇宙に秩序をもたらそうと努力していると説き、これが後に二元論に発展した
オルフェウス 、ギリシア神話に登場する吟遊詩人であり、古代に隆盛した密儀宗教(英語版)であるオルペウス教の始祖とされる。 アポロドーロスによれば、ムーサイのひとりカリオペーとオイアグロスの子として、ただし名義上の父親はアポローン神として、オルペウスは生まれたとされる

問題

ここら辺を手で調べていくと100年はかかりそうだ。。。
では、どうしてやろうか?と考えたところ。
WikipediaAPIというものがあるではありませんか!パラメータ作成ツールもある
というわけで、プログラムにここら辺の作業をやらせようと考えたわけです。

Javaプログラム

必要なもの、今回の参考にしたサイトはこちらです、Javaを使用してWebAPIにアクセス、欲しいデータの取得。。。

以上のような処理を行う処理のサンプルです。そこで使用するライブラリが「JSON」ライブラリです。
自分はMavenの方が慣れているのでPOMファイルを使用します。
POMファイルは下のように、リポジトリ要素と依存関係要素を追加してmvn installするだけです。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>ProconServerRPG</groupId>
  <artifactId>ProconServerRPG</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>プトコンゲームサーバー</name>
      <!-- ここの部分を追記 -->
  <repositories>
    <repository>
      <id>jsonRepo</id>
      <url>https://mvnrepository.com/artifact/org.json/json</url>
    </repository>
  </repositories>
      <!-- ここの部分を追記 -->
  <dependencies>
    <!-- https://mvnrepository.com/artifact/org.json/json -->
    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20190722</version>
    </dependency>
  </dependencies>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <testSourceDirectory>test</testSourceDirectory>
    <resources>
      <resource>
        <directory>src</directory>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </resource>
      <resource>
        <directory>resources</directory>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

こんな感じで、参照するリポジトリと依存関係を追加します。
そしたらメイベンインストールします。実行したときにエラーが出ますが、テストクラスのエラーなので無視してOK!

テストの起動を行わない設定もあるのですが、今回は(見つからなかったので)飛ばします。

そしてダウンロードしたライブラリ(json.jar)を使用して実装します。参考サイト

Javaコードサンプル

作成したものはGithubにアップしてあります。

public JSONObject getJSON(String search) throws Exception {
    String url = ROOT_URL + "action=opensearch&format=json&search=" + search;
    System.out.println("URL: " + url);
    InputStream is = new URL(url).openStream();
     try {
          BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
          String jsonText = readAll(rd);
          JSONObject json = new JSONObject(jsonText);
          return json;
     } finally {
          is.close();
     }
}

private String readAll(Reader rd) throws IOException {
  StringBuilder sb = new StringBuilder();
  int cp;
  while ((cp = rd.read()) != -1) {
    sb.append((char) cp);
  }
  System.out.println("test: " + sb.toString());
  return sb.toString();
}

しかし、JSONが取得できない。。。

curlコマンドを使用してデータを取得してみるが、レスポンスにXMLが帰ってくるだけで、データがうまく取得できていません。

色々と試したところ、以下のようなコードでデータの取得はできました。が、検索パラメータは英語のみ。。。

いまいちな感じですが、現状の実行結果を記載します。

実行プログラム(JUnit)

@Test
public void testDownloadJSON() {
    JSONArray res = null;
    try {
        res = api.getJSON("town");
    } catch (Exception e) {
        e.printStackTrace();
    }
    res.forEach(System.out::println);
}
private void showKeysInJSONObject(JSONObject obj) {
    Iterator<String> it = obj.keys();
    while(it.hasNext()) {
        System.out.println("value: " + it.next());
    }
}

作成プログラム

public class WikiPediaApi {
    /** WikipediaのURL(エンドポイント) */
    public static String ROOT_URL = "https://ja.wikipedia.org/w/api.php?";
    public WikiPediaApi() {

    }

    public JSONArray getJSON(String search) throws Exception {
        String url = ROOT_URL + "action=opensearch&namespace=0&format=json&search=" + search;
        System.out.println("URL: " + url);
        InputStream is = new URL(url).openStream();
         try {
              BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
              String jsonText = readAll(rd);
              JSONArray json = new JSONArray(jsonText);
              return json;
         } finally {
              is.close();
         }
    }

    private String readAll(Reader rd) throws IOException {
      StringBuilder sb = new StringBuilder();
      int cp;
      while ((cp = rd.read()) != -1) {
        sb.append((char) cp);
      }
      System.out.println("test: " + sb.toString());
      return sb.toString();
    }
}

そして、実行結果

URL: https://ja.wikipedia.org/w/api.php?action=opensearch&namespace=0&format=json&search=town
test: ["town",["TOWN/\u604b\u306f\u6d41\u661f","TOWN AGE","TownsGEAR","Townbeats","TOWNS","TOWNACE","TOWN WORK","Town Memory","TOWN","TOW-NET"],["","","","","","","","","",""],["https://ja.wikipedia.org/wiki/TOWN/%E6%81%8B%E3%81%AF%E6%B5%81%E6%98%9F","https://ja.wikipedia.org/wiki/TOWN_AGE","https://ja.wikipedia.org/wiki/TownsGEAR","https://ja.wikipedia.org/wiki/Townbeats","https://ja.wikipedia.org/wiki/TOWNS","https://ja.wikipedia.org/wiki/TOWNACE","https://ja.wikipedia.org/wiki/TOWN_WORK","https://ja.wikipedia.org/wiki/Town_Memory","https://ja.wikipedia.org/wiki/TOWN","https://ja.wikipedia.org/wiki/TOW-NET"]]
town
["TOWN/恋は流星","TOWN AGE","TownsGEAR","Townbeats","TOWNS","TOWNACE","TOWN WORK","Town Memory","TOWN","TOW-NET"]
["","","","","","","","","",""]
["https://ja.wikipedia.org/wiki/TOWN/%E6%81%8B%E3%81%AF%E6%B5%81%E6%98%9F","https://ja.wikipedia.org/wiki/TOWN_AGE","https://ja.wikipedia.org/wiki/TownsGEAR","https://ja.wikipedia.org/wiki/Townbeats","https://ja.wikipedia.org/wiki/TOWNS","https://ja.wikipedia.org/wiki/TOWNACE","https://ja.wikipedia.org/wiki/TOWN_WORK","https://ja.wikipedia.org/wiki/Town_Memory","https://ja.wikipedia.org/wiki/TOWN","https://ja.wikipedia.org/wiki/TOW-NET"]



投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す