Shinjuku.rs #7 に行ってきた
RustのLT会 Shinjuku.rs #7 @FORCIA に行ってきました。会場は新宿駅直結ミライナタワー。都心に久しぶりに行きましたが人や建物が多いせいか暖かくて秋かなって感じですね。立川に戻ったらぐっと寒くてすぐに耳が痛くなりました。
Rustを業務に導入した話
Rust を導入する際に『Rust は書けないけど読める』というメンバーを増やしておくことでビジネスロジックの部分だけでもコードレビューをしてもらえるようにしておくと捗る。なぜかというと、Rust はコンパイルが通っていればたいてい動くため、ビジネスロジックがちゃんとしてそうかだけを見てもらえれば十分という感じのことをお話されていました。たしかになるほどという感じです。
あとは Rust を導入してみてユニットテストが非常に書きやすかったとのことでした。実装コードと同じファイル内の一番下に tests
module を定義してテストを書いていって $ cargo test
でシュッと実行できるやつ。境界値のテストを書くぐらいがちょうどよかったとのことで、確かに Rust だったらそれで十分そうな気がしました。
RustでSpotifyクライアントを作った話
Spotify の API ( https://developer.spotify.com/documentation/web-api/reference/ ) はいろいろな Platform 向けに提供されていて内容もかなり豊富でアプリでできることならたいていできるとのこと。
作るにあたって以下のようなライブラリを使ったとのこと。
- https://github.com/fdehau/tui-rs
- https://github.com/redox-os/termion
- https://github.com/ramsayleung/rspotify
- https://github.com/crossbeam-rs/crossbeam
アプリのデモをされていましたが、なんというか Vim っぽくてすごく好みでした。音楽はあまり聞きませんが聞くんだったらターミナル経由で操作したいなという気持ちになりました。
コードは https://github.com/togatoga/spoterm
HOGWILD!
難しかった。。とりあえず読み方はホグワイルド。
Rust の場合、Unsafe を使ったとしても Unsafe な部分とそうでない部分が視覚的にわかるのがよいというのを聞いてたしかにそうなりそうと思いました。
https://github.com/rayon-rs/rayon を使ったとのこと。さっき似たようなライブラリで https://github.com/crossbeam-rs/crossbeam が出てきたけれど、rayon は crossbeam-deque に依存しているのね。
RustのWebアプリケーションの計測とチューニング
- https://github.com/fcsonline/drill
- https://github.com/llogiq/flame
flame::start
とflame::end
で囲った部分や、flame::span_of("foo", || bar())
で指定した処理、flame::start_guard
を含むブロックを測ったりできる。
「Go言語でつくるインタプリタ」を Rust で移植してみた
Youtube 版は以下。
「Go言語でつくるインタプリタ」は以下。
しんどかったところをどれも解決には持っていっていてすごいと思いました。
Rc
や RefCell
、わりと見かけるので使いこなせるようになっておきたい。
あと https://github.com/kei-s/waiir/commits/master のようにコミットの本文に日記を書くというの、振り返った時に楽しそう。
cargo makeについて
cargo-make (https://github.com/sagiegurari/cargo-make) 、Makefile が TOML で書けて、Predefined tasks も充実していて ( https://github.com/sagiegurari/cargo-make/blob/8a9639e6fa24d2c0ae40c47ffb39b7c2b7a36ac0/src/lib/Makefile.stable.toml これかな?) CI 流す際などに便利に使えるとのことで、さっそく使っていきたい気持ちになりました。
ハマりどころもいくつか紹介されていて、たしかにこれはハマりそうという感じ。先にわかっておけるのありがたい。