2023 paild, Inc.
Developers Summit 2023
10-D-8
4年前にRustで新規プロダクトを?!
枯れてない技術の採択にまつわるエトセトラ
2023 paild, Inc.
誰ですか?
株式会社ペイルド
Chief Technology Officer
@IgnorantCoder
IgnorantCoder
2023 paild, Inc.
技術選定って、どのようにしてますか?
2023 paild, Inc.
技術選定とは
特定の目的や要件に対して、適切な技術を選択することを意味します。これは、
開発やプロジェクトにおいて重要な役割を果たします。適切な技術を選ぶこと
で、効率的かつ効果的な開発や実装が可能になります。
→ 開発や実装を効率的かつ効果的にするために適切な技術を選びたい
2023 paild, Inc.
技術選定とは(現実)
● C++で作られた既存のライブラリを使ってください
● 社内の事情により、Windows Serverで動くものじゃないと駄目です
● 開発ベンダーは変えられませんので、工数確保できる言語でお願いします
2023 paild, Inc.
技術選定とは(再掲)
特定の目的や要件に対して、適切な技術を選択することを意味します。これは、
開発やプロジェクトにおいて重要な役割を果たします。適切な技術を選ぶこと
で、効率的かつ効果的な開発や実装が可能になります。
→ 所与の条件を満たしつつ、開発を効率的にするために適切な技術を選びたい
2023 paild, Inc.
弊社の技術スタック
● 開発言語
○ (フロント)TypeScript + React
○ (サーバー)Rust + actix-web/axum
● インフラ
○ AWS
○ CircleCi / GitHub Actions
○ and so on …
2023 paild, Inc.
技術選定とは(現実その2)
● なぜRustを選びましたか?
● それって大丈夫なんですか?
2023 paild, Inc.
なぜRustを選んだのか?
高速な実行速度を実現することに対して伸びしろがあり、またオブジェクトのラ
イフタイムなどまで含めた、コンパイラによる高度な静的チェックが優秀である
ためバグを生みにくいからです。
また、traitや所有権などの現代的な機能がデフォルトで提供されており、cargo
も洗練されており、後発の言語ならではのよさがあります。
欧米のテックジャイアントと呼ばれる企業群も積極的に投資を始めており、今後
の成長性なども見込めるため…
2023 paild, Inc.
なぜRustを選んだのか?
高速な実行速度を実現することに対して伸びしろがあり、またオブジェクトのラ
イフタイムなどまで含めた、コンパイラによる高度な静的チェックが優秀である
ためバグを生みにくいからです。
また、traitや所有権などの現代的な機能がデフォルトで提供されており、cargo
も洗練されており、後発の言語ならではのよさがあります。
欧米のテックジャイアントと呼ばれる企業群も積極的に投資を始めており、今後
の成長性なども見込めるため…
適当です
2023 paild, Inc.
実際に困ったこと
● 非同期ランタイムが天下統一されるまでに、かなりの時間を要した
● 各種SDKにRustがない、または公式サポートなものがない
● IDLとの相性が悪い
● リリース3ヶ月前に、actix-webのリポジトリが消失
2023 paild, Inc.
実際に困ったこと 〜非同期ランタイム今昔〜
● Rustでは、永らく非同期周りのデファクトが定まっていなかった
○ tokio vs async-std vs smolだけならまだしもactix-rtなどの亜種も...
○ 今はtokioが天下統一した(はず)
● しかし、まだ非同期への道のりは長い
○ dieselは未だに非同期対応が進んでいない
○ asyncなtraitを作るためには外部crateが必要
2023 paild, Inc.
実際に困ったこと 〜SDK問題〜
● 当然のようにSDKのサポート言語にRustが含まれている状態ではない
○ Auth0 / SendGrid などなど、どうにかはなるができれば公式でサポートしてほしい…
○ 有志によるライブラリがない場合はAPIを直接叩きあれこれする必要があります
● AWS SDKの問題
○ 永らくRusotoという非公式なライブラリがデファクトだった
○ aws-sdk-rustの登場により公式SDK爆誕、しかし…
2023 paild, Inc.
実際に困ったこと 〜OpenAPI/Protocol Buffers〜
● OpenAPIからサーバーコードを吐き出したいがなかなかうまくいかない
○ サーバーコードにマクロをつけてOpenAPIを吐き出すというのが昨今の主流
○ サーバーサイドコードを触らないとインターフェースが決められないということになる
● Protocol Buffersでtonicのサーバーコードを吐き出せる!
○ over httpするにはgatewayが必要だがwritten by Rustなgatewayを吐き出すのは難しい...
2023 paild, Inc.
実際に困ったこと 〜actix-webのお家騒動〜
● actix-webのメンテナがリポジトリをアーカイブしてしまった
○ 色々と事情はあったみたいだけど、要するに使っていたフレームワークがいきなり消失した
○ OSSなので、当然のリスクではあるものの…相当震えました
○ 本件については、その後JohnTitorがメンテナーに就任することで解決した
2023 paild, Inc.
採用は?
2023 paild, Inc.
採用に関して
● 幸いなことにRustを書きたいというdeveloperは多い
○ 弊社もポジションオープンしてるので、是非ご応募ください♥
● ただ、会社のスケーリングに合うほどかどうかは会社による
○ 来月から10人Rustで本番コードの開発経験がある人を、予算内で調達!とかは多分厳しい
● オンボーディングについてはさほど問題にならない
○ プログラミン言語の難しさ <<< Webの本質的な難しさ
2023 paild, Inc.
まとめ
● 日頃から技術の特性・雰囲気について情報を収集しておくと、いざ選定の際
に選んでも大丈夫かどうかくらいの判断材料にはできる
● RustでのWebサービス開発は、しんどい部分も経験してきたが、それを補っ
て余りある良い部分があるし、それでも最近はかなり枯れてきた
● 採用に関しては、会社のフェーズや人的リソースの確保のやり方によっては
スケールしない
2023 paild, Inc.
Thank you for listening!!!

4年前にRustで新規プロダクトを?!枯れてない技術の採択にまつわるエトセトラ:developers summit 2023 10-d-8