今日は(ほぼ)Rust未経験の私が1日でDiscordBotを作ったときに気が付いたことや知っておくと便利な事柄ついて記載していきます。
作ったものの記事→ くそアプリアドベントカレンダー
環境構築って大変→DevConteinerに任せよう
Rust、Python、C#など幅広い言語のサポートがされており、物足りなければDockerConteinerを自前で作ればいい気軽さ。これで環境依存のエラーとはおさらばだ
DiscordBot作成は簡単だぞRustならね。
https://github.com/serenity-rs/serenity
RustでDiscord実装を行う際の定番ライブラリーであるserenity
は2022年12月現在ですと、以下の組み合わせでInstallができます。
Installコマンドを打たなくても勝手に大丈夫かチェックしInstallまでしてくれる当たりすごい仕組みが動いているんだなと思いました。今後詳しく調べてみたい事項の一つですね。
[dependencies]
serenity = "0.11"
tokio = { version = "1.21.2", features = ["macros", "rt-multi-thread"] }
他言語で言うSwitch相当のmatch構文が便利!
型回り(特にString型をmatch構文で扱う際は、&*
を接頭辞に入れて&str
型に変換して比較しないといけない)に多少癖があるもののシンプルなシンタックスでかけるSwitch文はアプリケーション開発において便利度が高いなぁということを実感しました。
let hoge:String = ~~~
match *&hoge{
"case1" => {
///処理
}
"case2" => {
///処理
}
_ => {
///すべて当てはまらない時の処理
}
}
エラーは起こすものの、シンタックスハイライトがかなり親切
シンタックスハイライト等の内容がかなり詳しく書かれており、特別な導入なくcargo init
とTomlの記述でライブラリーも認識してくれる点がかなり助かりました。
一日使ってみての所感
今回はDiscordAPIというシンプルな用途で使ったのですが、かなり開発体験もよくこれからも勉強して使えるところは使っていきたいなと思えるような言語でした。
docs.rsというサイトにライブラリーのドキュメントが大まかに乗っており同じプラットフォーム内で使える点もかなり魅力的な環境に思えてきました。
今回は時間の関係で使えなかったのですが形態素解析のライブラリーもあるみたいなので、そのあたりも使って次はアプリを作れたらなという風に思っております。
参考資料
https://dev.classmethod.jp/articles/rust-discordbot/
公式のExsamplesも豊富でこちらもぜひ
https://github.com/rust-random/rand/tree/master/examples