PR
スポンサーリンク
スポンサーリンク

《花騎士》 花騎士アビリティ検索システム【β 0.6】

フラワーナイトガール
スポンサーリンク

皆さま、こんばんは。
このような辺境まで、お越し頂き、ありがとうございます。

先日、唐突に発表されたバランス調整で絶望したと思ったら、まだまだ本物の地獄はこれからだぜ、と言わんがばかりにアビリティ表示の改定がきて、止めをさされたこのシステムです。

検索の仕方や表に記載するデータの変更が必要なので、大改修となりました。
DB更新周りはもう、とりあえず放り投げて手を付けてなかったシステム改修をちまちまと進めております。

そんな感じで、一応、動くようになりましたのでこのほど、記事を更新しました。
へっぽこなおっさんが錆び付いた頭で作った検索システム更新のご案内です。

【注意】

これは遥か昔に少しだけプログラムを齧った程度のおっさんが、独学で適当に組んだものです。
本職の方が見たら、見るも無残な事になっているのですが、そこは笑って流してください。

また、アドバイスは歓迎ですが対応するかは私の気分次第な事を予めご承知おき下さい。
とりあえずバグってようが私が活用できれば良いので修正作業の優先順位が低いです。
少し強い言葉になりますが、他の方の為に作ったものではないという一点をご理解いただいた上で、活用いただければ幸いです。

そう言った経緯があるので拡散・宣伝は無しでお願いします。
だって恥ずかしいし、そもそも多用されたら止まります、多分。

あくまで、日頃こちらのブログを読んで下さる団長様向けのおすそ分けやお礼の意味が強いのです。

もっと素敵なサイトがありますし、可能であれば、そちらを拡散・活用してくださいませ。

そうだ、新アビリティ表記に対応させよう

2021y10m04d_001932547

nn先日、花騎士は更に新たな局面へと突入いたしました。
バランス調整による花騎士達の大幅強化に加え、アビリティ表記の変更であります。

あかん、バランス調整はまだデータを引っ張ってくるだけでいいですが、表記変更は致命的すぎる。
何せ検索用の語句やその組み合わせ方が、ガラッと変わってしまうのですから。

まぁ、私のシステム的にはDB変更だけで実はある程度対応できる仕様なのですが、
どうせ手を入れるなら気になるところはつぶしておきたいです。

結局のところ……

アビリティ検索システム(笑)を対応させるしかない(やりたくないでござる)

まぁ、そんな訳で手を入れ始めたのですが、これがまた割と苦労することに……。
そんなこんなで、改修版をご紹介です。

また注意にも書きましたが、趣味と勉強を兼ねて適当に作ったものなので、その点は留意して、ご自身の責任の元、お使いいただければ助かります。

過去の私は何をやっていたんだと問い詰めたい

さて、久々にGASを起動して驚きました。

やばい、ソースがスパゲティ過ぎて、意味不明すぎる(ぉ

なんで私、ここでこんな冗長な書き方してるの?
いや、そもそもこのパラメータ引っ張ってこなくても、とか、まぁ出るわ出るわ。

これプログラムをしたことある方ならあるあるだと思うんですけど、
なにも理解してないところから、組んでいったソースって後で見ると酷さが目に付くんですよね。

今回もその例にもれず、ダメなところとか意味不明な処理が目白押しでした。
もう一から組んだほうが早いんじゃない? とか思うくらいには、酷かった(ぉ

しかも最後に触ってからかなり経っていたこともあって、
むしろどこをいじったらどんな影響が出るかわからない始末。
これもプログラマーあるあるです。

まぁ、それでも過去の自分が書いたソースですから、癖みたいなものがあって
割合早く読み解くことができました(1週間くらい)

そしてどうせ触るなら、ちゃんとしたものに仕上げたいと、無駄な改修も行いました。
まぁ、花騎士内でアビリティの絞り込みはできますから、私のぽんこつシステムなんぞ無くても誰も困らんでしょというのもありますし、今回はのんびりとやらせて頂きました。

使用言語やツール等の紹介

一応、簡単に今回の物を作るにあたって使用したものです。

必須:Googleアカウント(Gmail)

【使用言語】
・HTML
・CSS
・JavaScript
・GAS(Google Apps Script)

【使用環境】
・ネットにつながるPC
・Google Drive
・Google スプレッドシート

【期間】
・約3か月ちょい(うちDB入力未完)

たったこれだけです。何よりお金かかってないのが素晴らしい。
やはり言語の知識がネックですが、やる気と折れない心があれば問題ありません。

プログラムを組んだことがある方はお分かりかと思いますが……
まず、新しい言語の場合、分からない事だらけの意味不明な状況が日常的に続きます。
解けない問題に延々とチャレンジしていくような感覚です。

それをひとつづつ、解きほぐすように解決していく気力と根性が必要です。
私の場合は、その時間もまた楽しいのですが、悩んでる間は、ムキーッってなる事もあります。

そう言う時間に向き合える精神力が必須ですので、その辺りは折れない覚悟をして取り組むことをお勧めします。

まぁ、本当であれば教えてくれる方が近くにいれば、そのストレスもかなり軽減されるんですけどね!

簡単な使い方とか

① 検索したい項目を選択するとチェックが入るよ!
② 一番下にある「検索ボタン」を押すと、検索が始まるよ!


以上(ぁ

ちなみに、検索はAND検索なので、全ての項目が合致する花騎士のみがヒットする……筈です。
実際は、諸事情により面白い動きをする事も多いのですが、そこも含めて楽しんで下さい。

また一度選んだ項目を取り消すには、同じボタンを選択してください。
一括解除ボタンもありますが、こちらは全部いっぺんに解除されますので、ご注意を。

想定としては、一つずつ項目を増やして絞り込んでいくことでお目当ての花騎士を探し出すことを目的としています。

ただ基本的には直感で何となく使える、あふんな仕様になってると思います。
とりあえず、触って楽しんで頂ければ嬉しいです。

今回更新した事とか詰まった事とか

今回更新したのは以下の通りです。

① HPレイアウト表示をDBで制御
② 検索ワードを新仕様に対応

② 新旧アビリティ表記が混じっていても検索に対応

仕様部分を変更したのですが、思った以上に苦戦しました。

改修ポイント① HPレイアウト表示をDBで制御

実はこのシステムを作成したとき、アビリティ以外の検索項目が増えることは想定してなかったんです。

具体的にはアビリティタイプの追加は想定外だったんですよね。
けど、こちらで調べたい人も出てくるかもですし、アビリティにかかわる部分ですから反映したいなと。

ただ項目を追加するだけなら、同じようにソースを弄って手書きで加えちゃえばいいんですが、どうせならDB側から読み込んで表示が変更されるように変更した方が楽だなと思いまして、その方向で改修しました。

またHTMLソースの作成を今までは皆さんのクライアント側で処理してもらっていたのですが、こちらをサーバー側で吐き出す形に変更しました。
マシンパワーのあるPCなら恩恵は無いですが、スマホや低スペックマシンなら少しは軽くなったかもしれません。

さらにこちらは運用上の仕様なので使う皆さんには関係ない話ですが、今後は何か検索項目を増やしたくなったら、即座に対応できるようになります。
運営さんの気まぐれで何か仕様変更が来ても、基本的にはこれで対応可能でしょう。

まぁ、対応するかは私の気分次第なんですけどね!(鬼

② 検索ワードを新仕様に対応

アビリティの表記ががらっと変わってしまったため、検索システムの用語や検索範囲など仕様そのものに変更が入りました。
こちらも仕様変更なので、使用感には特に何も変更はありません。

そして、前回のシステムでは検索範囲とかの指定をがっつりと手動指定で行っていたため、DBが一段ずれると云々みたいな面倒なことが発生しておりました。
具体的にはアビリティはDBのこの列からこの列までみたいな指定の仕方ですね。

こんなんやってられんということで、この辺りも全部自動化しました。
キーワードでとってくればDBの構造はわかるので、そこから全部お任せで数値とってきて範囲構成するように仕様変更しました。

これの何が苦戦したって、例のごとくGASのエディタが超絶ポンコツなので、思い通りのデバッグができないってことなんですよね。
これでも前よりマシになったんだから、過去の私、超頑張った。

いや、正確にはデバッグはできるんですけど、さくっと落ちるっていう。
あと実際の環境に連結した動作ができない(関数ごとしか無理)とかいう腐った仕様です。
ほかにも連続してデバッグ出来ないとか、値を書き出して残しておかないとダメとか
とにかく「うがっぁあ!? この糞デバッガ!!」って感じで、割と殺意の波動があふれる作業となりました。

やっぱり開発環境って大事だわ。Googleさん、GASが広まらないのこれが原因ですから。
割と初心者の入門には、お勧めできる媒体なのに、開発環境のせいでお勧めできない。うん。
まぁ、それでも昔みたいにコンソールでやるよりはるかに楽だけど。

ちなみに、デバッグ中に想定外のところで止まる場合は、そこに何かエラーがあります
ですがデバッガはエラー吐きませんので、最初にそれに気が付くまで、かなり時間を費やしました。
エラーを吐かないので、原因究明は手探りです。まぁ、直前の処理である程度のあたりはつくんですけどね。

そんなわけで、相変わらずどうでも良い所で苦労してます。はい。

改修ポイント③ 新旧両方の表記が混じっていても検索可能に

これは対応を行う上で一番肝になる部分だったのですが、検索語句を工夫することで何とかなりました。

このポンコツシステムは正規表現を使って検索をかけているのですが、OR文を中にねじ込むことで一応、期待通りの動きを実現することが可能となっております。

例えば、〇〇〇と×××のAND検索の場合は、

^(=?.*〇〇〇)(=?.*×××)

となるわけですが、これに更に内部にOR検索を加えることで、
(〇〇〇または△△△)のAND××× みたいなことができます。

^(=?.*〇〇〇|.*△△△)(=?.*×××)

この辺りは、私もあまり詳しくないのでちょっと無駄なこともしているかもですが、とりあえずこれで綺麗に検索分けが可能なので、DB更新がすむまではこちらで対応したいと思います。

その為DB更新作業は後回しにしても、とりあえずシステム自体は動かせるようになりました。
これが出来なかったらDBの更新が終わるまで待つか、DBがほぼまっさらな状態で運用するしかなかったので、割と助かってます。

ただし、逆に問題もかなり発生しています。
併用型にしているので、正直に申し上げてただでさえ低い検索精度がガタ落ちしてます(致命的)

特に数値が混ざるとかなりダメな感じになるのですが、
その中でもクリティカル系は今のところあるかないかくらいしかわからない程度の精度に落ちてますので、そのつもりでお使いください。

ただ、新標記にすればおおむね解決する話なので、DB更新を急げば、その分、精度があがります。

DOMってなんだっけ? 今更理解する

何かあったなーそんなもの、くらいの認識しかなかったのですが、割と理解が進んだこの状態で改めて調べたら、めっちゃ必要な子だった件(今更

今まで、制御に関してはHTMLタグにIDを付加して、それで制御していたのですがDOM(Document Object Model)を使えばもっと幅広く活用できるようになりそうです。

しかし、その為に組んだプログラムで意味不明なバグが発生し、1日足踏みしました。
具体的には、行数がある程度多くなるとTypeErrorが頻発して完全に詰むという笑える状況です。

え? なんで? 型も間違ってないのに、何故えぇ!?

と、色々試した結果……なんでか指定していた(と思っていた)ものと別の変数が読み込まれていたため、ある特定の条件下でそれがオーバーフローしUndifindを返すことでTypeErrorを誘発して居たっぽいです。

わかるか、そんなん!?

と、逆切れしつつ何とか、こちらも稼働するようになり無事、ポンコツシステムもお目見えすることとなりました。

正直DB更新がもう一人では無理っぽい件

これは前から薄々感づいてはいたのですが……
やはり、この膨大な量のテキストを一人で短期間で更新するのは割と無理っぽいです(今さら

新規の花騎士達やバランス調整で変更になった花騎士達の更新は、運営さんがテキストベースにしてくれたので、いずれ全てのバランス調整が終了した暁には、更新も完了すると思います。
思いますが、この運営さんの歩みの遅さからすれば、それは何年後の話なのだという。

なので今回は、ちょっと読者の皆様のお力も少しお借りしようかと思います。

こちらに弄られても何の痛痒も無いスタイルシートを用意いたしました。
どなたでも自由にいじる事が可能です。

もしご自分の嫁やお気に入りの花騎士がいて、既存のアビリティ要件に書き換えても良いよって方がいらっしゃいましたら、こちらのシートに記入をして頂けますと、その分、私の労力が激減致します。

入力して頂きたい内容は、以下の通りです。

〇 アビリティ(新規記入版)
〇 アビリティタイプ(選択型)
〇 国家等抜けている情報(ごく最近の子で少数)

また英数記号は全て半角にて記入をお願い致します。

多分やらかすのは数字と一部記号(%や[ ])です。

これをミスって全角で入れたら、ヒットせずにその子は虚無の空間を漂う事になるでしょう。
一応、私も確認したりツールで修正かけたりしますが、絶対はないのです。

そんな感じで、もし暇な時間がおありで、ちょっと記入してやるかと言う方がいらっしゃいましたら、お手数とは思いますが宜しくお願い致します。

ただ、一つ注意点があります。
最近、こういうご時世ですのでもしかしたら速攻で愉快な方に荒らされるかもしれません。

その時は、残念ですがそのままブックごと消し去りたいと思います。
右クリック一つで終わる話なので(鬼
なので、その辺りの作業が無駄になるかもしれない可能性も含め、ご理解いただいた上で、それでもやってやるぜって方はお願いしますね。

基本的にコメントなどでお知らせ頂ければ、その都度、私が時間の空いた時に反映作業を行わせていただきます。

今回の記事は以上になります。
お読み頂き、ありがとうございました。

FLOWER KNIGHT GIRL オンラインゲーム 
☆注意! リンク先は音が出ます!

本ブログに使用しているゲームの画像・情報の全ては以下の権利者より引用させて頂きました。
問題がある場合は削除いたしますので、お手数ですがご一報下さい。
『フラワーナイトガール』©︎2015 EXNOA LLC

コメント

  1. どろろん より:

    更新お疲れ様です。
    ソースコードとは別の話ですが、自分も製品開発上で評価しているとき、何故過去の自分はこういう条件で評価しなかったんだとか思う事はしょっちゅうですね~。
    経験積んで分かってから、昔のデータ振り返ると思う事マックスですな( ̄▽ ̄;)。
    後、システムの拡張性って大事ですよね~。まあ、そこらへんはコストとの兼ね合いもあるのでなかなかバランスが難しい所でもありますが。
    おすそ分けありがとうございます。
    シート記入の方も時間あれば、我が推し花騎士の情報書き込んでいこうかな~と思いまする。とりあえず元verのアネモネの項目は記載させていただきました(*´ω`)。

  2. 泉絽 より:

    >>1
    どろろんさんへ
    こんにちはー。
    おお、こちらの記事でもコメントありがとうございます。
    そうなんですよね、過去の自分の未熟さが見えるって凹みますよね。
    ただ、それも成長の証なので良い事ではあるのですが、凹むものは凹むのです(ぉ
    システムの拡張性は大事ですね。
    勿論、コストとの兼ね合いがありますが、多分一番大事なんじゃないかな?
    結果として初期投資渋ると、後で数倍になって跳ね返ってきますからね。
    こちらこそ、お使い頂きありがとうございます。
    まだあまり機能しないシステムですが、チマチマ改修していくので気になる点、要望ありましたらそっとお伝えください。
    気が向けば対応します。私の技術的に、できればと言うのが前提ですが(そこが大問題
    アネモネさん項目の修正ありがとうございます!
    後で確認して問題なさそうなら反映しておきますね。
    今はゲーム画面からベタ打ちするしかないので、お迎えしていない子はそもそも無理なんですよね……。
    バランス調整が来てくれればそれを流用できそうですけど、次はいつ来るでしょうかね。
    ではではー。

タイトルとURLをコピーしました