はじめに
こんにちは。細々とプログラミングをしているsotanengelです。
Rust Tokyo 2024現地で参加してきました〜〜〜!!!!!
プログラミング歴は5年くらいなのですが、こういった現地イベントに参加したことは初めてだったので、とても新鮮な経験ができました!
そこで今年参加できなかった人向けに「どんな感じの発表だったのか」の私的なメモをこの記事にまとめます。
発表メモ
Rust で TUI アプリケーションを作った話
- jqフィルターの話
- ratatuiは最優先で使われるライブラリ。上記のライブラリを裏で持ちつつ、リッチなグラフィックを作成できる
- uiコンポーネントはそれぞれ組み合わせることで追加が容易になりそう
- 無いので作ったjqリポジトリ
-
rustc -L
とかで依存してるライブラリとか探せる - rustc -Lとかでライブラリとか探せる
-
cargo-dist
でbrewとかにリリースできる!(リポジトリ)
新卒2年目が挑んだ!! RustとOSS、実は怖くない話
- 挑戦したossはasync-graphqlとzed
- いきなりgood first issueやろうとすると、文脈とか今までの流れを掴む必要があって大変なこともあるよ
- ⇧なので普段自分が作っているツールの問題にチャレンジするとかでもいいかも
- 新卒2年目だがめっちゃプログラミングは経験者だつおい・・・・
Rust と歩んだ 7 年間:プロダクションコードのための実践的テスト
- dbのカラム変化でテストケースなどが壊れやすいよー
- 対応
- sqlファイルを準備:カラムの修正の際に個々のファイルを修正しないとダメ
- ある関数で呼び出し:呼び出し側の対応が多いカラムの修正の際に全部修正しないとダメだよね
- 🔴テーブルと同じ構造を持つ構造体を作成する
- ビルダーを作って対応することで最小限の変更で抑えられるよー
- 外部apiはレートリミットとかapi側のエラーの切り分けがむずい
- crate Mokitoでサーバーを建てるのが良さげ
- SNSのAPIは仕様変更が急に行われることがあるため、異常な例だけ退避して分析するとかの対応も必要かもね
Fairy DevicesがRustを採用して5年が経ちました
- c++のリソース少なかったので性能もいいRustを採用
- 音声処理は非同期処理が発生する
- Rustを使い始めてからコンパイル後に辛いことは無くなったかも
- 少しずつリプレイス
- axum、sqlx、tracing、anyhowが現環境では有名でserdeに関してはずっと現役スゴイ
- テストカバレッジ(参考)で網羅性を担保してる
総会員数1,500万人のレストランWeb予約サービスにおけるRustの活用
- バックエンドトラフィックは1000req/sec
- webバックエンド、エッジコンピューティング、全文検索エンジン、社内連絡用api、フレームはaxumで、Pythonとかc#に移行している
- サービス全体で使用する言語を分散することでリスクヘッジを行なっている
- cargo workspaceでリポジトリをモジュラーにする
- utoipaでAPIドキュメント記載
- axumのextractorに定義する
- cpuバウンドはrayonに委託する
- https://ryhl.io/blog/async-what-is-blocking/
- エッジコンピューティングではfastlyを利用しており、パーソナライズじゃないページや会員ランクに応じたコンテンツキャッシュ
- エッジでwasmを実行している
さいごに
めっちゃ最高の会でした!
「実際にRustが活用されている事例」や「技術の最先端」みたいなものに触れる機会はモチベーションのアップにかなり繋がることをひしひしと感じました。
今回の回で特に印象的だったのは(ちょっとどなたの発表か忘れてしまったのですが・・・)
社内でRustを内製するだけではRustの技術がニッチなものになってしまうので、
このような場で知見を共有してコミュニティの発展に〜〜〜〜
という趣旨のコメントをしていた企業さんがあったことでした。
確かにPythonやJavaだって最初は使っている人は少なかったものの、知見を持った人が増えてそれを共有する場があって、徐々に浸透するフェーズがあったはずで、
ちょうど自分たちはRustの浸透期を目の当たりにしているのではないかなと思いました。
私も少しでも共有できるものは共有して、Rustというコミュニティを盛り上げていける一員になれればいいな。
さいごに、Rust Tokyoの運営の皆様、ならびに発表者の皆様
素敵な機会をいただきありがとうございました!!!!