Shinjuku.rs #7 に行ってきた

RustのLT会 Shinjuku.rs #7 @FORCIA に行ってきました。会場は新宿駅直結ミライナタワー。都心に久しぶりに行きましたが人や建物が多いせいか暖かくて秋かなって感じですね。立川に戻ったらぐっと寒くてすぐに耳が痛くなりました。

Rustを業務に導入した話

docs.google.com

Rust を導入する際に『Rust は書けないけど読める』というメンバーを増やしておくことでビジネスロジックの部分だけでもコードレビューをしてもらえるようにしておくと捗る。なぜかというと、Rust はコンパイルが通っていればたいてい動くため、ビジネスロジックがちゃんとしてそうかだけを見てもらえれば十分という感じのことをお話されていました。たしかになるほどという感じです。

あとは Rust を導入してみてユニットテストが非常に書きやすかったとのことでした。実装コードと同じファイル内の一番下に tests module を定義してテストを書いていって $ cargo test でシュッと実行できるやつ。境界値のテストを書くぐらいがちょうどよかったとのことで、確かに Rust だったらそれで十分そうな気がしました。

RustでSpotifyクライアントを作った話

github.com

SpotifyAPI ( https://developer.spotify.com/documentation/web-api/reference/ ) はいろいろな Platform 向けに提供されていて内容もかなり豊富でアプリでできることならたいていできるとのこと。

作るにあたって以下のようなライブラリを使ったとのこと。

アプリのデモをされていましたが、なんというか Vim っぽくてすごく好みでした。音楽はあまり聞きませんが聞くんだったらターミナル経由で操作したいなという気持ちになりました。

コードは https://github.com/togatoga/spoterm

HOGWILD!

speakerdeck.com

難しかった。。とりあえず読み方はホグワイルド。

Rust の場合、Unsafe を使ったとしても Unsafe な部分とそうでない部分が視覚的にわかるのがよいというのを聞いてたしかにそうなりそうと思いました。

https://github.com/rayon-rs/rayon を使ったとのこと。さっき似たようなライブラリで https://github.com/crossbeam-rs/crossbeam が出てきたけれど、rayon は crossbeam-deque に依存しているのね。

RustのWebアプリケーションの計測とチューニング

hackmd.io

  • https://github.com/fcsonline/drill
    • 設定を YAML でかけるのがウリな Rust 製の負荷テストツール。
    • 例えばベンチマークを取ってから 2 ヶ月後にまたベンチマークを取りたいとなった時でも YAML で書いておければ安心。コマンドの引数であれこれ指定する方式だと忘れてしまう。
  • https://github.com/llogiq/flame
    • flame::startflame::end で囲った部分や、flame::span_of("foo", || bar()) で指定した処理、flame::start_guard を含むブロックを測ったりできる。

「Go言語でつくるインタプリタ」を Rust で移植してみた

speakerdeck.com

Youtube 版は以下。

www.youtube.com

「Go言語でつくるインタプリタ」は以下。

www.oreilly.co.jp

しんどかったところをどれも解決には持っていっていてすごいと思いました。

RcRefCell、わりと見かけるので使いこなせるようになっておきたい。

あと https://github.com/kei-s/waiir/commits/master のようにコミットの本文に日記を書くというの、振り返った時に楽しそう。

cargo makeについて

www.slideshare.net

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 流す際などに便利に使えるとのことで、さっそく使っていきたい気持ちになりました。

ハマりどころもいくつか紹介されていて、たしかにこれはハマりそうという感じ。先にわかっておけるのありがたい。