Migdal

Fafs F. Sashimi
Fafs F. Sashimi

投稿

あなたの人工言語でwordleを? できらぁ!

Image description
リパライン語版wordleをさらっと作ってみたので、覚え書きとしてなぐり書きしておく。

何故、この記事を書いたのかというと、まあ人工言語界隈には隣接領域だからかプログラミング強者が大量に居る(どうりで論理言語学に興味が偏るわけだ)わけだが、私のようなプログラミングを齧っただけのクソ雑魚無精者面倒くさがり屋マンも存在しないとは限らない。
wordleをイチから作るのもプログラミングの課題としては面白そうだが、そういった「マン」にとってはいきなりハードルが高すぎる。そういう高いハードルをいきなり課してせっかく思いついたアイデアが泡と消えるのはとても悲しいことだ。
ただ、私もプログラミング強者というわけではないので、取り敢えず私がどのようにして人工言語版のwordleを作ったのかについて以下で過程をかいてみるというわけである。

より効率的な方法だったり、「こうしたほうがいいよ」ってのがあれば教えてくれると嬉しいです。諸兄・諸姉のご協力に感謝!

今回使うのはAidan Pine氏が作ったAnyLanguage-wordleだ。これを利用することで簡単に他言語版のwordleをデプロイ出来るというわけだ。彼の書いたブログ記事(英語)に導入方法は一通り解説されているのだが、私のような開発経験のないプログラミング弱者は些細なことで躓く。

ああ、そうそう。環境構築のまえにwordle内で出題させる辞書の準備をしておこう。AnyLanguage-wordleでは一単語あたりの字数を5以上で指定することも出来るようだが、私は標準的なものが作りたかったので5のままにしておくことにした。
PDICの正規表現で [-.1234567890']['][']['][-.1234567890]$ で検索し、高度な検索設定で外部に一行PDIC形式でファイル出力させる。私はgrepとか知らん雑魚なので、日本語プログラミング言語「なでしこ」でさらっと整形して単語を取り出し、一行ずつ" '単語',"に置換していった。変換した文字列は後でwordle内の辞書編集時に使うから適当なテキストファイルに保存しておく。

んで、取り敢えずこのリポジトリをフォークして自分のところに持ってきて、またそれをgithub desktopでローカルに下ろしてくる。

先に挙げたブログにはnpmなる謎の存在があるが、どうやらこれはnode.jsのなにからしい(我ながら解釈が酷い1)。とにかくインストールしてみる。

まずはちゃんと動くかバニラ状態でテストしてみよう。ブログの言うとおり、package.jsonを開いて、homepageの値を"fafsfalira.github.io/AnyLanguage-wordle"に変更。powershellをローカルのAnyLanguage-wordleのフォルダ内で起動。npm installとnpm run-script deployを実行。これで行けたな(ニヤァ)

しかし、謎の良く分からんエラーが出てくる。エラーでググるとgitが入ってないから怒られているということらしい。
しかし、私はすでにgithub desktopを入れていたので混乱する。私がローカルでやっていたgit commitは一体……?

どうやら、github desktopのgitは変なところにあるらしく、パスを通さないと上手く行かないらしい。qiitaのこの記事を参考にパスを通して、PCを再起動。これだからwindowsは

これでnpm run-script deployをしたら通りましたね。github pagesのURLにアクセスすると、ちゃんとwordleが表示された!

アレンジ

上のブログに書いてある通り、src/constants/以下のtsファイルに自言語の設定を入れていく。

まずはorthography.ts。
これは一文字と見なす文字を入力していく。どうやらキーボードにそのままの順番で反映されるのでqwertyじゃないと発狂する人やdvorak以外は認めんとかいう御人は順番に注意すると良いだろう。

次がvalidGuesses.tsとwordlist.ts。
どっちも元ある単語データを消して、先に用意したwordle内辞書の文字列を貼り付ければ終わりだ。ちゃんと読んでないので分からないが、多分前者は入力を受け入れる単語のリスト、後者は多分お題として出される単語のリストだと思う。何で分けてるんだろ?

最後にconfig.ts。
ここには色々言語だったり作者の情報を入れていく。

細かいこと

フォントを変更するにはindex.cssを弄る。私はリパーシェフォントをウェブフォントとして読み込ませたかったので以下のように読み込ませた。

@font-face {
font-family: 'ketiven';
src: url('./liparxe.woff') format('woff');
}

div {
font-family: 'ketiven', sans-serif, bold;
}

テキストの翻訳

 ゲーム内に登場するテキストを翻訳したい場合、src/components/modals/内を参照しよう。AboutModal.tsx(下のリンク)とInfoModal.tsx(遊び方)とStatsModal.tsx(ゲーム終了後の統計のごく一部)に翻訳すべき文字列があるのでこれを各自の言語に変更すると良いだろう。
 ただ、ボタンとかゲーム終了後の統計だったりの文字列がどこにあるのか分からないので中途半端に訳しそびれている。typescriptとかreactとかこういうのに詳しい諸兄・諸姉助けて。


  1. 「linuxのaptみたいだな」という感想はあったので、そういうなにかという解釈をしていた。 

新しい順のコメント(7)

Collapse
 
atridott profile image
Atridott

やろうとしたが語彙力がなさすぎる……

Collapse
 
sashimiwiki profile image
Fafs F. Sashimi

今ある語彙に合わせたwordleを設計すれば……あ(技術力死亡人間)

Collapse
 
halka_ffez profile image
佐藤陽花 • Edited

取り敢えずオエル語でも出題単語データ出力してみた(といっても現在ある単語少ない
G Drive

let luux = ["ārnok","adder","adege","akwan","akƣez","argaz",
"batis","baшen","brīen","cudua","danēж","edder","eveas",
"glūxk","guwor","halez","hsohn","hsoso","ibrāi",
"kāsiм","karon","karon","kaska","ko'uc","kolфe","kusne",
"lanva","liwob","luƣa'","nabar","neдas","neƣāz",
"qaмau","qiмūƣ","rbāsn","sāduz","saшas","tange","tece'","teder","texnē",
"ūlwen","vānūt","vasta","vaжi'","wethe","xaker","xūtso","yetшi",
"zoмot","zrabī","zunāм","мorwe","пaotш","пorшa",
"фuшer","чaina","ъa'āk"];
Enter fullscreen mode Exit fullscreen mode

(色々多用あるし眠いので今日のところは組み入れないが

Collapse
 
hsjoihs profile image
hsjoihs / jekto.vatimeliju

多分前者は入力を受け入れる単語のリスト、後者は多分お題として出される単語のリストだと思う。何で分けてるんだろ?

原作 Wordle が分けていて、それを踏襲しているっぽいです。

Collapse
 
kozet profile image
+merlan #flirora

アルカのWordleを作った

kyarei.gitlab.io/arka-wordle/

Collapse
 
sashimiwiki profile image
Fafs F. Sashimi • Edited

これってキーボードのEnter、Delete部分ってどうやって変更したんです?

Collapse
 
kozet profile image
+merlan #flirora

src/components/keyboard/Keyboard.tsx → lines 67, 76