【FF14】Javascriptで命名規則を実装するには?-FF14風ランダム名前メーカーができるまで

FF14//
FF14風ランダム名前メーカー
この度、ファイナルファンタジー14の命名規則風の名前をランダムで出力するお名前メーカーを作ってみました。 このWebツールはHTML+CSS+Javascriptで構成されており、利用に際してダウンロードの必要はありません。 また、レスポンシブ対応してあるのでスマホからでも利用可能です。 ランダム命名機能の出力結果を手作業でコピペして候補に入れているため、どうしても公式に比べ出力結果が少なくなっていますが、ゲームクライアントを立ち上げずにどこでも使えます。 キャラメイク、リテイナーの名前考案等にご活用ください。 せっかくですので完成に至るまでのきっかけと経緯・どんな風にできているのかについて、おもにFF14利用者に関係のありそうな側面からまとめました。 Javascript上の詰まった箇所や詳しい解決策についてはまた別途書きます。

作ろうと思ったきっかけ

もともと海外の方が作ったっぽい命名規則風名前メーカーがあったんですが、ある時期そのサイトが閲覧できなくなっていたことがあり、このままなくなっちゃったら不便だなーと思って勉強がてら自分で作ってみることにしたのがきっかけでした。 (今はまた見れるようになっているっぽい?です) 作り始めたのは2018年の夏頃ですが、当時はJavascriptが一切わからなかったので一度凍結し、2019年5月ごろに再度取り組み始めました。 思ったより時間がかかってしまいましたけど、無事完成にこぎつけ公開できてよかったです。 ちなみに、jQery等のライブラリは使用していません。(基礎のJavascriptしかまだ勉強してなかったので…) [adrotate banner=”6″]  

命名規則をどのようにJavascriptで再現したか

命名規則の理解

基礎となるランダム出力機能の完成後、いよいよFF14向けに仕立て直すにあたって、 公式フォーラム、encyclopedia Eorzea(エンサイクロペディア)に掲載の種族名ルールをよく読み、規則性の理解に努めました。 自キャラとして使っているアウラに関しては比較的理解が進んでいたのですが、全種族作るとなると他のものも理解しておく必要がありました。 参考:公式フォーラムの命名ルール:http://forum.square-enix.com/ffxiv/forums/539 (英語版)http://forum.square-enix.com/ffxiv/forums/491

法則性から自動化できる箇所を分割

命名ルールを改めてチェックしたところ、法則性をプログラムで組める種族と、そうでない種族(候補をそのまま格納しておいて呼び出してくるだけ)に分かれました。
・法則性をプログラムで再現できる種族 プレーンフォーク デューンフォーク ゼーヴォルフ(一部) サンシーカー ムーンキーパー(一部)
ララフェルは独特の韻を踏む命名になっているのでサンプルを格納する順や組み立てが難しかったです。 韻を踏んでいる部分を独立して格納し、それ以外の箇所と分けて呼び出してきています。 デューンフォーク女性だけはちょっとうまく連動できなかったので、同じ韻のものを同じ格納順にして同一番号を呼んでくることで対処しています。 ゼーヴォルフについては父親の姓の再利用と特定の文字列の付与(男性ならsin、女性ならwyn)だけなので、分かればさほど難しくはありません。 サンシーカーは女性の場合、姓にあたる出力部分に父親の名前を使いますが、父名(=男性名)は部族の後に続くため頭文字が小文字であり、これを大文字にしてやる仕掛けを入れる工程が必要でした。 公式のランダム命名機能を見ているとサンシーカーの女性の姓用のものと男性の名前のものは微妙に候補が異なっている感じでしたが、「FF14風ランダム名前メーカー」では命名規則のほうに従って男性名に格納されている候補を呼び出してくるように組んであります。 ムーンキーパーは男性のみ出生順が付与されるため、1つ要素を増やして出力しています。
・格納されている名前例を呼び出してくるだけの種族 ミッドランダー ハイランダー フォレスター シェーダー ローエンガルデ アウラ・レン アウラ・ゼラ
ロスガル、ヴィエラは制作当時命名ルールが公開延期になっていたためひとまずはゲーム中のキャラメイク画面で仕えるランダム名前機能で出てきた候補をベタ打ちで入れました。

フォーラムのサンプル名を配列に入れる

上記で選り分けた種族の配列に、出力用の名前の候補を入れていきます。 配列=Javascriptで使える、データのひとかたまりのことです。今回のようないくつか候補をもつデータをあらかじめ格納しておき、任意のタイミングで呼び出したり使うことができます。 開発段階では公式フォーラム上の命名ルールページに記載の名前(各種族4~5つほど)入れて作業していました。

作っておいた出力用のコードに、各種族ごとに合わせていく

最後に、配列に入れたサンプル名を出力用のコードで呼び出して、「名+姓」の順になるよう出力させます。 この時に、自動化できる箇所のある種族はプログラムの調整を行いました。

EX:特定の種族で性別の選択肢を減らす

ロスガル、ヴィエラは5.0実装時点ではキャラメイクで片方の性別しか選択できないため、これらを選択した場合にはそれぞれ女・男の選択肢が消えるように指定してあります。 正確には、
  • ロスガル、ヴィエラ選択時に性別欄を一度空欄にする
  • 空欄になったところに、該当する性別を入れる(ロスガルなら男など)
  • 再度ロスガル、ヴィエラ以外の選択肢を選んだ時に、性別欄を2つに復活させる
という処理を行わせています。 FF14風ランダム名前メーカーの利用はこちらから [blogcard url=”https://azkr-tool.com/ffxivracename/index.html″] ◆FF14攻略関連記事