2024/01/28追記: Amazonへのリンクを修正しました。
Wordle、流行ってますね。 うまく決まれば気持ちいい一方、そんな単語知らんねんってことも多々あります。 そんな鬱憤を晴らすべく補助ツールを作ってみました。
…というのは建前で、Rustの勉強がてら何か作ってみたかったというのが発端です。
つくったもの
CLIでWordleの候補となる単語を洗い出してくれるものです。
abekoh/wordle_helper: Help solving Wordle question with CLI.
特徴は以下の通り。
- インタラクティブに質問に答えるだけで答えにたどり着ける(はず。辞書になければ…)
- カラフルなプレビューがあり視覚的にわかりやすい
- 辞書、文字長などオプションで変更可能
練習用とはいえそこそこリッチになりました。 使ってみたい方いましたら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
感想
RustのEnumとパターンマッチング、依存ライブラリのマクロや言語機能として使えるユニットテストのおかげで気持ちよく書けました。 Rust特有の所有権・ライフタイムについても最初は「ん??」ってなることありましたが、意外と慣れるもので、逆に「これはこのstructに持たせるべきだよなー」とか考えたりできるのが楽しく、他の言語書く時にも活かせるかもと感じました。
ちなみに、学習はこのあたりで進めました。
Rustやってみようとひたすらこれ読み進めてる
— abekoh (@abekoh_bcky) January 2, 2022
ownershipとかlifetimeとか独特だなーと思いつつ、ここC++だなーGoだなーPythonだなーJavaだなーとなって面白いhttps://t.co/JLlXj83A2P
積み本また増やしてしまった
— abekoh (@abekoh_bcky) January 23, 2022
5章まで読んで、公式チュートリアルとはまた違う視点での復習になって良かったhttps://t.co/vRAhNtXC3J
https://www.amazon.co.jp/dp/4873119782
その気になったらまたRustの言語としてどう感じたかの記事とか書いてみたいと思います。