予言者のおでかけ便利ツール記事 教えて!ミアコロンさぁぁぁん!

なんだかいい時期ということもあってこんな記事を書いてみました。

そして、時期的にアレなタイトル。
実はこれ予言者育成のジャン先生にもかかっています(どうでもいい
ちなみに、本家の文字数は3コではなく5コです。(もっとどうでもいい

追記

この記事は、実は去年の11月ごろに書いていた記事だったんです。ちょうどそのころ公開された、ドラクエ10コロシアムで遊ぼう記事に触発されたんだよね。もちろん、タイトルもその直前のドラクエ10放送に影響されてます。

これは未完成の記事だったんですが、2周年記念に合わせて急遽公開しました。そういうこともあって、いろいろ説明不足な面が多いです。

なので、意味不明なところもあるかもしれないけど、今日は2周年!ってことで許してね。

はじめに

知らない人が多いんじゃないかと思うんですが、僕は予言者のおでかけ便利ツールというものを作ってます。

固定倍率でどこをかければいいかを知るために有用なツールだったんですが、1周年の時のアップデートで公式サイトの予知人数が表示されないようになったため、その予想ができなくなりました。今は予知しているフレンドの人数を見たほうがわかりやすくなってますね。

基本的に固定解除を知れるだけのサイトなんですが、それ以外にもいろいろ作ってました。実はそのよくわかんないコンテンツをつくるのに、予言者育成でのゲームのプレイ時間より長いんじゃないかというくらい時間がかかっています。いやまあ冗談ですが、半分くらい本当です。

今回はそれについての裏話的なものを書ければいいかな、と思って書いてみました。わりとダラダラとまとめた感じの文章になってしまったんですが、読みたい人はぜひ読んでみて下さい。

予言ツールを作ったきっかけ

予言者育成 ドラゴンクエスト10 ver1を作った藤澤 仁さんのゲーム、ということもあり、ドラクエ10のチーム内では、予言者育成学園をプレイしてる人がかなりいました。自分もその一人で、当時チーム内で編集できる共有メモを作ってアルカナの情報とかいろいろまとめてました。でもそっちは途中で飽きて投げちゃいました。

あのころは「1日4問」「99.9倍が解除後の1時間だけ」の仕様だったので、予言するのも毎日大変でした。その上ゲーム内で予知人数を見れない。公式サイトはデフォの問題順が出題順でない上に1問題が1ページで当時重かった。などがあり不便な面が多かったです。

じゃあその苦労を解消するために、データを使って倍率の予想できる場所を作っておけば便利だよね。ついでに固定解除の時間と問題を紐付けて、1面で見れるようにしたら便利なんじゃねっていうノリで作りました。

そもそも最初は、倍率予測できるスプレッドシートを作ってただけなんですよね。それも個人的に使う用で、ドラクエ10のチームの人も使えたら便利ってくらいの気持ちで作っていました。でそこで、予言者育成ってスマホゲーだし、スプレッドシートってスマホでも見にくいよねって思いはじめて、見やすいようにweb上で見れるようにしたのが予言者のおでかけ便利ツールのはじまりです。

倍率予知の仕組み

ここの仕様は基本的に今でも変わってません(といっても何度も作り直しましたが)。さっきも少し名前が出ましたが、予測にはgoogleのスプレッドシートというものを使っています。スプレッドシートはほぼエクセルと同じような機能を備えていて、しかも容量もほぼ無制限な上に多人数で編集できるというものです。ゲームの情報共有ツールとしてはかなり便利なものです。

スプレッドシートはエクセルみたいにSUM(数字を合計してくれる)などの便利機能が使えます。調べたらたくさん出てきます。その中でもIMPORTDATAという関数があり、ここにwebサイトのURLを貼るだけでそのサイトのデータをずらっと表示してくれます。

で、そこから予想人数のデータを抽出して…っていうだけなんですが、そんなに楽な話ではないです。後術する方法では、ピンポイントでデータを取り出せるんですが、それはスプレッドシートシートにはできません。

まず、サイトのデータっていうのが、webサイトそのままのデータで取得なんですよね。ブラウザ上で右クリックして、ページのソースってところから見れるやつ。それがスプレッドシート上にズラーっと表示されます。

それが正解というものはないんですが、自分はwebサイトの文字数をカウントして、そこから取り出したいデータを頑張って取り出してました。まあ、人間に判別できることってたいていコンピューターにも判別できるんですよ。そのデータをどう取得するのかっていうのがわりと大変なんですが。

取り出せさえすれば、そこから計算して見やすいように当てはめるだけ。ここはエクセルのセンスでしょうか。

見てもらえるとわかるんですが、予言者育成の公式サイトって問題ごとにURL+問題番号というURLで構成されているので、問題番号を入れれば、その問題の選択肢とか倍率がわかるんです。最初はそんな感じの作りでした。ゲームを見ながら問題番号を入力すると、その倍率予想が表示されるというだけでも、当時はかなり便利でした。

ここで問題が

公式サイトって予知人数は表示されるんですが、その問題の出題時間はわからないんですよね。うーんと悩んでひらめいたのが、予言者育成のTwitterのデータを取得すればいいんじゃないかというもの。これも上記と同じ方法で、出題時間と問題を取得することに成功しました。

最初は出題時間-問題のリストと問題番号を入力するツールを並べてたんですが、じゃあもう、今日の固定倍率解除を一覧にして表示したら見やすいんじゃないかということになりました。固定倍率解除表はこれにてほぼ完成です。

不安定なスプレッドシート

スプレッドシートがどう動いてるかはいまいちわかってないんですが、このデータを予言者育成のおでかけ便利ツール(以下FTAツール)上で見れるようにしたときに、表示が安定しないという問題がありました。どうも、スプレッドシート側で取得失敗したときにFTAツールで表示が出ない時があって、これについてはかなり悩みました。同じシートを2つ作って表示されている方を、採用するみたいな無理矢理なことをしている時期もあったんですよね。今はスプレッドシートのプログラムに、ちゃんと表示されていれば、FTAツールに表示しているシート側にコピーするという仕組みにしています。

今日のぽーちゃん

なんとなく作ったコンテンツ。仕分けされちゃって今はないんですけどね。

読み込むときにランダムで文章が決定するようになってて、それを表示していました。

単に文章を組み込むだけではなく、いろいろ仕組んでいました。時間できまる発言と、ランダムで決まる組み合わせで決まっています。ランダムの方は、ただただランダムにするのではなく、FTA以外のネタは少し確率が低く出るようにしてました。あと、一度読み込むとそのデバイスに1時間記憶しておいて、同じ文章が表示されるような仕組みも入れていました。要するにF5連打でいろんな文章を見れるようにする対策ですね。そうした方が、自然でいいじゃないですか。え、どうでもいいって。。。

ちなみに、ぽ繋がりでスクエニのあのキャラもいました。

今日の答え合わせ

いまはFTAツールにないんですが、FTAツールTwitterの方アカウントで呟くようになっています。

FTAの問題って、大体の問題文に、期間いつまでって書いてあるんですよ。それを利用して、10/10のような”/”と10/10~10/12のような”~”を見て判別し、日付あるものはその日に表示されるように、”~”の期間が設定されているものは、最後の日付に表示されるようになっています。まあ、いろいろ不備があることはわかるんですが、いちいち毎日確認して書き込む気力はないので、自動でできることを優先しました。今日はこれの答え合わせがあるんだ!と、ゲームしている人同士でチャットなどで話し合うと楽しいですよ。

問題取得ツール

一時期あったんですが、あまり使わないからやめたもの。問題番号を入力すると、問題文や選択肢、予想倍率が表示されるというもの。

倍率を予想するというのは、固定倍率解除表と同じですが、全く違う仕組みを使っていました。固定倍率解除表のほうは、事前に用意していたものを表示していたんですが、問題取得ツールはそのときに予知人数などのデータを取得して、PCで計算した後に表示するという仕組みなんですよね。同じようで全然違います。

まず、web上で外部ページを取得する自体セキュリティ上いろいろ問題があるんです。それをできるようにするために使ったのがjQuery。

自分のサイト上のものを取得するのは問題ないんですが、外部サイトのデータを取得するのは普通には出来ない(らしい)んです。そこで、yahooYQLというサービスを利用すると、その外部サイトの壁を超えてくれます。僕も詳細については詳しく知りません。

このデータの取得方法をするとスプレッドシートとは違って、簡単に取り出すことが出来ます。そもそもwebのデータは装飾を施すために、同じような系列には同じタグみたいなものがついてるんですよね。そのタグをしていするだけで予知人数などのデータがピンポイントで取得できるので、こっちの取得方法は楽なんですよね。ただ、そのデータをきれいに表示するという点は微妙だったと思います。ちょっと使わないのであまりやる気もなかったですし。

PP回復通知

初期の頃は予言者育成ゲーム内のPP回復の通知もありませんでした。それを解消するためのツール。Twitterのアカウントと今のPPを入力していると、Twitterにリプライがいくというものでした。

まず、これを作るきっかけとなったのはPPの問題ではなく、大アルカナが事前に通知されないというのを対策しようと思ったのがはじまりでした。大アルカナに通知はあったんですが、出現した瞬間な上に、ラグとかあったりすると向かったらもう大アルカナいないじゃんっていうことがあったんですよね。まあ、基本的に自分でアラームをかけておくのがベストなんですが、その時の自分は、なんでこんな意味不明なことをやっていたのか。

誰かがクラスの学級組と出現時間とかを入力しておくと、クラスタグ#~期~組と呟いてる人たちに、リプライで事前通知するようなものを作ったんですよね。ただ、細かい問題とか、いろいろやることが多かったり、そもそも、勝手に知らない人にリプライ飛ぶのもダメだよなあ、ということでボツになりました。

それの仕組みを再利用したのが、PP通知ツールなんですが、自分で少し使ってみて使えないと感じたので、やっぱりボツになりました。そのコンテンツを公開するかしないかはだいたい自分基準でやってます。

固定倍率解除表をはめ込む時の苦悩

スプレッドシートをFTAツール上に表示するときって、基本的にはスプレッドシート側にwebページで公開するみたいな機能があって、そのソースコードを貼り付けるだけなんですよね。でも、その表示がほんとうに見にくくて、いろいろ指定して表示しないと行けないわけなんです。

やっかいなのが、スマホでの表示で、それをちゃんとやりたいためにいろいろ試行錯誤しました。まあ、数字上はそのデバイスの横画面を取得して、そこから計算して拡大縮小してるだけなんですけど。。。

限定召喚カレンダー

未来や過去の限定召喚とか10倍デーとか表示していたもの。

カレンダーを書くプログラム自体は、どこかから拾ってきてそれを使っています。見て思ったんだけど、うるう年とか考慮したカレンダーなんて最初から書けねえよ。。。

それを表示するだけなら、コピペすれば終わりなんですが、それに限定召喚とかを当てはめるには、ちゃんとカレンダー自体を理解しないといけないんですよね。

もともとカレンダーがあるんじゃなくて、今日は何月の何日だから…というところから計算してカレンダーを最初から作るんですよね。そこでがーっとカレンダーを書いている週のすき間に限定召喚の欄も書くようにして作りました。次の月に進むを押したときも事前に用意しているものではなく月が+1されたから…というところから再計算されています。

で、ここで予期しない問題があって、それが前の月に戻るという仕組みを入れるのがなかなか苦戦しました。カレンダーを書くときって1日2日…31日のように数字順にずらーっと書くんですよね。限定召喚の表示もその隙にぽこぽこ書いていくわけなんで、次の月になるときって、その流れで限定召喚を書いていいけばいいわけなんですよ。でも、前の月になるとそうはいかないんです。

まず、プログラム上は最初から日にちの書くので、前の月の1日の限定召喚が何かというのを知る必要があって、前の月の週の数っていくつなのかといわれると、書いてみないとわかんないんですよね。限定召喚の表示を逆にすればいいんじゃなくて、前の週の数を求めて最初の限定召喚を特定してからカレンダーを書いて…みたいな形になりました。あと、単に週の数を数えるだけでなく、日曜日でピッタリ終わる月だと数えた週の数と限定召喚がずれる、とか考慮しないといけないんですよね。

正直、アナログで書いていったほうが早かったと思います。でもそれって面白くないよね。って時間をどんどんかけてしまった予言ツール。

10倍デーの表示はどうなってるかというとこんな感じ。

1日から31日まで順番になっていて、1のところが10倍デー表示になります。プログラムでは最初が0からはじまるので、どれも最初は0になっていて、その次のところから1日の判定になります。

FTAツールのTwitter自動

固定解除30分前に画像つきで知らせてくれるというもの。

影響されたのは、DQ10の提案広場をつぶやいてくれるやつ。情報を1つのツイートに入れ込むって文字数上無理なんです。そこで、画像としてデータを呟くっていう仕組みはすごいなあと思っていました。

使用しているものはgoogle chartというもの、google便利すぎかよ。

これどちらかというと、グラフを作成するツールなんですが、そこにあるURLを送ると画像で返してくれるという機能を利用しています。URLは固定解除スプレッドシートと教えてジャン先生のURLを指定します。ちなみに教えてジャン先生は、別途にURLがあり公式サイトやゲーム内にはそのデータをはめ込める作りになってるみたいです。

アルカナ図鑑

このコンテンツは

カーターさん(@karter_county)FTAアルカナパラメータシート
ttさん(@tt_fta)予言者育成学園 調査データ
mszさん(@masazo0130)FTA行動表・テキスト集

のデータを元に作っています。悪くいうと丸々コピーしています。良く言うと見やすく噛み砕いています。

はなさんの毎回新しいアルカナが出た時の耐性調査もすごく感謝してます!

アルカナ図鑑のはじまり

自分はこういうコンテンツ、作りたくないと思っていました。どうしてかというと、作ることによって毎回更新するのが大変だからです。だからこそ、固定倍率解除表などの自動で更新してくれるようなコンテンツをメインに作っていました。

あるとき、DQ10のチャットでとある人に、アルカナごとのステータスのグラフが見れたらみたいなことを言われました。そこで作ろうと思っちゃうところが、最近の自分のだめなところなんです。はい。

さてさて、アルカナステータスをまとめていたカーターさんにお願いして、アルカナステータスのデータを参照させてもらいました。そこから、グラフを作成しFTAツールで見れるように。自分で更新するのは面倒なので、直接スプレッドシートにリンクするだけでした。アルカナデータといっても48体とランクごと、レベル90とかまでデータがあるので、表示する方法はかなり悩みました。

その後アップデート情報前後あたりに、mszさんがまとめてくれないかなみたいなツイートをしたんですよね。そこで作ろうと思っちゃうところが、最近の自分のだめなところなんですよね。はい。

というか今思い返してみれば、まとめてほしいというのは、データを書き写す作業のことで、FTAツールで見れるようにすることではなかった気もします。

さて、同じようにシートをリンクしてまとめました。そう簡単に行くわけでもなく、ここで問題がでました。1つのシート上にデータをまとめてたせいで、シートがめちゃくちゃ重いんです。特にステータスとかデータ量ハンパない(ほんとにまとめてくれた方には感謝)。そういうわけで、読み込みに非常に時間がかかっていて、非常に使いにくいツールになっていました。

別方向から

リンクするだけなら更新は元に任せればいいので不要ですが、いろいろ不便な面があります。データといっても一枚の画像みたいになっているので、基本的に検索機能などはつけることが出来ません。

そこで予言ツールでは今、データベースではないけど、データベースみたいなGoogle Fusion Tablesというものを使っています。これはスプレッドシートをそのまま変換して、それを全体として公開すればweb上からそのデータを配列方式で取得することが出来ます。

召喚シミュレーターツール

初期の頃ってほんとに月かけでもらえるSSというのが貴重だった、というのもあって、召喚シミュレータを作りました。

とりあえず、48体の中から1体えらぶというだけ。ただ文字を表示するだけだと面白くないということで、文字がカタカタと出てくるようにしたんですが、まあ微妙だったよな(センスない

ちなみに、ぽーちゃんの発言と同様、連続召喚してわざとピンゴだ!ピンゴだ!うわー!とか、ジークやったー!とか出来ないように、一度召喚すると24時間次の召喚が出来ない仕組みにしていました。が、ちゃんと動いてたかどうかはあやしいです。

Twitterで出たアルカナ投稿をできるようにするのも苦労しました。普通にTwitterで指定の文字を呟くようにするだけならそのボタンを設置すればいいんですが、限定召喚を引いてその結果を呟く時にデータとして入れて。。。というのが苦労しましたね。もうどうやってやったかは覚えてないです。

FTAツールショック!

FTAツールが使い物にならなくなったときがありました。それは公式サイトで予言人数が表示されなくなった時。

FTAツールを作るのをやめるつもりはなかったんですけど、FTAツールのコンテンツはほとんどこれで成り立ってるようなものだったので、ほぼ終わりみたいなものでしたね。

倍率予想は諦めませんでした。かろうじて表示されてるデータが、自信アリ率と性別%と年齢%なんですが、ここに着目してやることにしました。全体の年齢割合と、それぞれの選択肢の年齢割合が出てるので、予知人数が多ければ多いほど全体の年齢割合に近づいた結果になるんですよね。そして、予知人数が少ないほど、全体の年齢割合とは遠ざかった表示になるはずです。

ごめん。ここで記事が止まってたので、このツールショックの話は終わり。

問題番号4ケタ問題

当時文字数の長さで切り取ってたりしていた部分があったので、1文字ずれることによりちゃんと表示されなくなるんじゃないかという危険がありました。結果はほとんど変わらず動いてたと思います。あれですね、よくわかんないけど動いてる状態。すごくよくない。

比較するほどではないんですが、こういう問題は2000年問題とか2038年問題とかそういうのに似ていてわくわくします。え、わくわくしませんか?

最後に

予言者育成2周年!!

Twitterでのみんなのつぶやき(創作とかメッセージとか絵とかいろいろ)を見て感動しました。ほんと、このゲームをやっていてよかったなあと思えた瞬間でした。

ちなみに、予言者育成便利ツールはこれからも続けていきます。よろしくね!