FORCIA CUBEフォルシアの情報を多面的に発信するブログ

Shinjuku.rs #13を開催しました

2021.01.14

Shinjuku.rs Rust

旅行プラットフォーム部の髙橋です。本年もどうぞよろしくお願いいたします。

年をまたいでの投稿となってしまいましたが、昨年末に開催したShinjuku.rs #13のイベントレポート記事となります。

前回、前々回のイベントの様子はこちらをご覧ください。

LTの様子

LT1 | RustでPostgresの拡張を書く | matsu7874(フォルシア)

pic_210114_01.png

前回の #12 に引き続き、LTのトップバッターは弊社の松本となりました。今回はPostgreSQLの拡張をRustで書いてみた、という内容です。
このLTの内容はブログ記事にもなっているので、ぜひこちらもご覧ください。

RustでPostgreSQLのユーザー定義関数を書く

フォルシアでは普段、C言語を用いてPostgreSQLの独自関数を作成することが多いのですが、pgxというフレームワークを用いるとRustでも関数の拡張を書くことができるそうです。
C言語とRustでの実装例を比較すると、Rust(pgx)の方がPostgreSQL固有のマクロがアトリビュートとして表現されているため可読性が高く(もちろん人によるとは思いますが)、さらにテストも書きやすいことが強みのようです。特にテストはRustの中でのユニットテストに加えて、PostgreSQLとつなぎこんでのテストもpgxがサポートしているということでした。

気になる実行速度もC言語と比較して遜色ない(むしろRustの方が速いくらい)ようですので、今後PostgreSQLで拡張関数を作成する際はRustでの実装も十分候補にあがりそうですね。

LT2 | RustでKeyValueStoreをつくる | ymgyt さん

pic_210114_02.png

2人目のLTでは、Rustでのkey value storeの実装についてymgyt さんからお話しいただきました。

LTの内容は以下のブログにて詳しく解説されていますので、こちらもぜひご覧ください。
https://blog.ymgyt.io/entry/key_value_store_with_tokio

今回のLTで紹介いただいたのは、clientからTCPでremoteのサーバーと通信し、key valueをCRUDに更新できるserverの実装についてです。TCP通信はRustの非同期通信でよく利用される Tokio を用いて実装されたそうで、その際には mini redifsの実装がとても参考になったとのことでした。
スライドがおしゃれでわかりやすく、はまったポイントやおすすめのテストなども随所に紹介していただき、多くの人にとって為になる発表だったのではないかと思います。

TCPというと自分にとっては「通信のプロトコルの一種ね、知ってる知ってる」くらいの理解にとどまっていて、自分で実装してみるなんて考えたこともありませんでした。「自前で実装し直してみた」系のLTはShinjuku.rsでもたびたび見かけるテーマですが、自分の勉強のためにあえて車輪の再発明に取り組んでみることも大事だなぁと改めて感じています。

おわりに

年の瀬ということもあり忙しい方も多かったのか、直近の2回よりは参加者が少なかった今回のShinjuku.rs #13でしたが、発表の内容はどれも濃いものでした。Shinjuku.rsは2021年も引き続き開催していく予定ですので、本年もどうぞよろしくお願いいたします!

LT登壇いただいたみなさま、ご参加いただいたみなさま、ありがとうございました!

次回のShinjuku.rs #14は 2/16 に開催予定です

以下のページから参加申し込みできます。

Shinjuku.rs #14 connpassイベントページ

Rustを商用利用した話、Rustでこんなものを開発したぜ、Rustの面白い仕様を紹介したい、Rustにcontributeしたなど、Rustに関連する内容ならなんでもWelcomeです。皆様からのLTをお待ちしています。

この記事を書いた人

髙橋 優樹

2019年新卒入社。旅行プラットフォーム部エンジニア。
個人的な今年の抱負を表す漢字は「決」です。