RustでWordle補助ツールつくってみた

Wordle、流行ってますね。 うまく決まれば気持ちいい一方、そんな単語知らんねんってことも多々あります。 そんな鬱憤を晴らすべく補助ツールを作ってみました。

…というのは建前で、Rustの勉強がてら何か作ってみたかったというのが発端です。

つくったもの

CLIでWordleの候補となる単語を洗い出してくれるものです。

abekoh/wordle_helper: Help solving Wordle question with CLI.

Demo

特徴は以下の通り。

  • インタラクティブに質問に答えるだけで答えにたどり着ける(はず。辞書になければ…)
  • カラフルなプレビューがあり視覚的にわかりやすい
  • 辞書、文字長などオプションで変更可能

練習用とはいえそこそこリッチになりました。 使ってみたい方いましたらGitHubのREADME覗いてください。

日本語対応したかったが…

ポケモンWordle たるものも登場したので、日本語も対応しようとしたのですが… 依存している mitsuhiko/dialoguer がASCII以外の文字を受け付けないようで、そこに改修が必要になってくるのでひとまずStayで。

Error is occured when input Japanese characters · Issue #36 · abekoh/wordle_helper

一応 sindresorhus/pokemon を拝借してポケモン辞書作成して、fuzzy-selectを↑↓だけで選択してあげれば動きます。表示ズレ起きますが。。

curl https://raw.githubusercontent.com/sindresorhus/pokemon/main/data/ja.json | jq --raw-output '.[]' > /tmp/poke_jp.txt
wordle-helper -d /tmp/poke_jp.txt -m 10

Demo Poke

感想

RustのEnumとパターンマッチング、依存ライブラリのマクロや言語機能として使えるユニットテストのおかげで気持ちよく書けました。 Rust特有の所有権・ライフタイムについても最初は「ん??」ってなることありましたが、意外と慣れるもので、逆に「これはこのstructに持たせるべきだよなー」とか考えたりできるのが楽しく、他の言語書く時にも活かせるかもと感じました。

ちなみに、学習はこのあたりで進めました。

その気になったらまたRustの言語としてどう感じたかの記事とか書いてみたいと思います。