1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

yuriacatsAdvent Calendar 2022

Day 10

Rustで一日でDiscordBotを作る

Posted at

今日は(ほぼ)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

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?