100日後にRustをちょっと知ってる人になる: [Day 66]Blessed.rs
Day 66 のテーマ
突然ですが、Rust ってサードパーティ製のライブラリ(クレート)の利用がとても多くないですか?
僕は元々 Java や Kotlin をやっていて、そこから Rust を学び始めているわけなのですが、とてもサードパーティ製のクレートに依存しているような気がしています。Java などでももちろんサードパーティ製のライブラリは使いますよ。それこそ、Spring Framework などは、Java 本体から見るとサードパーティ製のライブラリになると思います。さらに、Spring Framework から見ても、例えば Hibernates のようなフレームワークはサードパーティになります。
とは言え、大きな塊でのサードパーティ製のものは利用するものの、粒度を小さく様々なサードパーティなライブラリを利用するということはなかったかなと思っています。
さて、そのようにサードパーティ製のクレートを使用するとして、みなさんはどんな風にして探しているのでしょうか?
crate.io で探していたりしますか?
crate.io も様々なクレートが登録されていて、便利なサイトだとおもいますが、対象のクレートを予め知っておかないと検索できなくはないでしょうか?
例えば、非同期処理とえば tokio
みたいに有名なものや、使ったことがあるようなものであれば簡単に検索できますよね。
しかし、非同期処理を行いたい、とか、日付日時計算したい、とか、暗号化処理をしたいみたいに ○○をしたいというような目的からクレートを探すときはどうしたらよいでしょうか?
そんな用途の時に役に立つのが、今日紹介する Blessed.rs なのです。
Blessed.rs
Blessed.rs の冒頭の紹介文にもサードパーティ製のクレートについての言及がありました。
Rustの標準ライブラリは、Python や Go などと比べてはるかに小さいです。
crate.io エコシステムと Cargo パッケージ・マネージャから、足らない機能を入手しています。
しかし、10万近いクレートから選択する必要があり、新しい Rust 開発者の共通の不満は、どこから始めればいいのか、どのクレートを使うべきなのか、どのクレートを信用すればいいのか分からないということです。
まさに、僕が思っていたことそのままです。サードパーティ製のクレートの中から何を使えばいいのか、初学者にとっては勘が働かないのです。
というようなことは、世界中でも言われていたのでしょうね。だから、この Blessed.rs では、おすすめのクレートのリストを提供してくれているのです。(本当に助かります)
とは言え、10万近い量のクレートをリストしている訳ではないですけれど、それでもそこそこのボリュームでのリストを提供してくれています。
今日は大きなカテゴリーでどのような機能群のクレートがまとめられているのかを確認してみたいと思います。
Blessed.rs のカテゴリ
- 開発者ツール
- 一般的な機能
- 汎用的用途
- エラー処理(エラーをより簡単に処理する)
- ロギング
- 言語拡張(言語や stdlib 機能を拡張)
- システム(基盤となるプラットフォームや OS との低レベルでの対話用)
- 相互運用(多言語との対話)
- 暗号化(暗号化アルゴリズムの実装)
- ネットワーク
- 非同期処理
- HTTP(HTTP クライアント ライブラリとサーバー ライブラリ)
- WebSocket
- gRPC
- データベース
- SQL データベース
- その他のデータベース
- DB ユーティリティ
- CLI
- 引数の解析
- CLI 実装用ユーティリティ
- 端末レンダリング
- 並列処理
- データ構造
- グラフィック
- GUI
- ゲーム開発
このようなカテゴリで分類され、それぞれにおすすめのクレートが紹介されています。
Day 66 のまとめ
正直、知らないクレートがたくさん紹介されていました。しかし、紹介されているクレートを検索してみると、実績や人気のあるクレートのようでした。まだまだこれらクレートを知らない僕は改めて初学者だなと思い知らされるわけです。
今後、この Blessed.rs で紹介されている各クレートをみていきたいなと思います。
Discussion