Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
【Gen-AX】20250417開催_Findyオンラインイベント_Rust開発の裏側 各社が...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Gen-AX株式会社
May 08, 2025
Technology
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
【Gen-AX】20250417開催_Findyオンラインイベント_Rust開発の裏側 各社が語る課題と今後の挑戦とは
2025.04.17に開催された、Findyオンラインイベント「Rust開発の裏側 各社が語る課題と今後の挑戦とは?」のGen-AX株式会社の登壇資料です。
Gen-AX株式会社
May 08, 2025
More Decks by Gen-AX株式会社
See All by Gen-AX株式会社
【Gen-AX】20260910開催_AGNTCon + MCPCon Japan 2026
genax
0
21
【Gen-AX】20260608開催_AI Engineering Summit Tokyo 2026_AI同士の通話で実現する音声AIエージェントの品質検証
genax
0
190
【Gen-AX】20260530開催_JJUG CCC 2026 Spring
genax
1
1.2k
【Gen-AX】20260115開催_マルチモーダルAI技術勉強会TL会登壇_CTO 木田
genax
0
330
【Gen-AX】20251101開催_KotlinFest2025_PowerAssert
genax
0
270
【Gen-AX】Gen-AX株式会社_採用カンパニーデック
genax
0
35k
【Gen-AX】20250514開催_Findyオンラインイベント_技術選定を突き詰める
genax
0
2.6k
【Gen-AX】Gen-AX株式会社_カンパニーデック
genax
0
2k
Other Decks in Technology
See All in Technology
The Agent Builder Loop from Daily Work to OSS
minorun365
PRO
3
110
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
3
390
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
0
270
Screen Lens - 今見てる画面を翻訳する
komagata
0
140
Bet AI Day 2026丨How We Bet AI: AIとともに働く場をつくる
layerx
PRO
2
2.8k
スクラムで身についていた動き方を、XPで捉え直してみた
codmoninc
PRO
1
320
Nav2、Nav3 ... はたまた自作?〜 作って理解する Nav3 の設計意図 〜 / Nav2, Nav3 ... or Build Your Own? — Understanding Nav3's design intent by building it from scratch
yanzm
0
260
2026-09-04 SRE Tech Talk #15 怠惰なTerraform / Lazy Terraform
masasuzu
0
230
SQL文一行も書けない人事がCortexもろもろを使って人事業務を楽にしてみる
ponponmikankan
1
170
Snowflakeのコスト最適化を支えるアーキテクチャ設計
ktatsuya
0
970
10分で知る最近のOmarchy
komagata
0
150
Deploying a Full-Stack Bun-Native Framework on Cloudflare Workers
7nohe
0
120
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
210
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Odyssey Design
rkendrick25
PRO
2
800
Abbi's Birthday
coloredviolet
3
9.8k
Design in an AI World
tapps
1
310
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
45k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
470
Mobile First: as difficult as doing things right
swwweet
225
10k
Transcript
© Gen-AX Corp. All Rights Reserved. 1 B2B向け⽣成AI SaaSプロダクト開発で Rust採⽤の理由
2025年4⽉17⽇ テックリード 中村秀樹
© Gen-AX Corp. All Rights Reserved. 2 ⾃⼰紹介 • 中村
秀樹 • テックリード • Gen-AX(ジェナックス)初期⽴ち上げメンバー • 組込エンジニアからキャリアをスタートして、Web系へ • Rust歴 1.5年 • 猫好き • “さかがみ家”でお世話した保護猫の最初の⾥親
© Gen-AX Corp. All Rights Reserved. 3 本発表で話すこと • Rustで開発しているプロダクトの概要
• Rust採⽤の理由 • Rustでの開発の良い点・悪い点
© Gen-AX Corp. All Rights Reserved. 4 会社紹介 ※ ジェナックスと読みます
※
© Gen-AX Corp. All Rights Reserved. 5 Gen-AXのプロダクト
© Gen-AX Corp. All Rights Reserved. 6 X-Boost(クロスブースト) • コンタクトセンター特化型のRAG
RAG: Retrieval-Argumented Generation
© Gen-AX Corp. All Rights Reserved. X-Boost(クロスブースト) • 検索データの作成、AIモデルのファインチューニングをセルフサービスで実⾏可能 7
© Gen-AX Corp. All Rights Reserved. 8 X-Boost システム構成図
© Gen-AX Corp. All Rights Reserved. 9 X-Boost 技術スタック Frontend
• Typescript • Next.js Backend • Rust • axum IdP • Keycloak AI • Python 開発環境 • Cloud︓Azure • GitHub Enterprise(Cloud) • Monorepo開発 • CI︓GitHub Actions • CD︓ArgoCD • Notion/Jira
© Gen-AX Corp. All Rights Reserved. 10 X-Boost 技術スタック Frontend
• Typescript • Next.js Backend • Rust • axum IdP • Keycloak AI • Python 開発環境 • Cloud︓Azure • GitHub Enterprise(Cloud) • Monorepo開発 • CI︓GitHub Actions • CD︓ArgoCD • Notion/Jira レガシーコードをRustに移⾏するのではなく、 Backendの新規開発で”Rust“を採⽤
© Gen-AX Corp. All Rights Reserved. 11 なぜRustを選んだのか︖ • 技術選定⽅針
① チーム開発に最適な静的型付け⾔語を前提 ② 関数型的アプローチを取り⼊れて質の⾼いコードを⽬指す • 関数型⾔語を採⽤する意味ではない • 具体的には・・・ • 型の表現⼒を⽣かす • Railway Oriented Programmingによるエラーハンドリング BtoB向けSaaS ⾼信頼な製品が求められる 開発対象
© Gen-AX Corp. All Rights Reserved. 12 Railway Oriented Programming(ROP)とは
• 成功時の結果とエラーの両⽅を扱える”Result型”を関数の戻り値にする書き⽅で、処理 のパイプラインを構築するという設計⼿法 • Webアプリでよく⾒かける、エラーが発⽣する可能性がある関数を複数回呼び出し、エ ラーが発⽣したらエラーレスポンスを返すような実装に向いている • メリット • エラーハンドリングの実装をシンプルにでき、正常系処理の流れの⾒通しをよくする F# for Fun and Profit Railway Oriented Programmingより(https://fsharpforfunandprofit.com/rop/)
© Gen-AX Corp. All Rights Reserved. 13 なぜRustを選んだのか︖ ① チーム開発に最適な静的型付け⾔語
Java Kotlin Go Rust Java Kotlin Go Rust Python Ruby Javascript Typescript
© Gen-AX Corp. All Rights Reserved. 14 なぜRustを選んだのか︖ ② 関数型的アプローチを取り⼊れて質の⾼いコードを⽬指す
A) 型の表現⼒を⽣かす B) Railway Oriented Programmingによるエラーハンドリング • Option型/Result型がサポートされるか Kotlin Rust Java Kotlin Go Rust
© Gen-AX Corp. All Rights Reserved. 15 なぜRustを選んだのか︖ • 技術選定⽅針以外の観点で⽐較
• プロダクトの特性との親和性 • データ前処理が多い • リバースエンジニアリングのしにくさ • ⼤企業向けにはSaaSではなくパッケージ提供も想定 → どれも決め⼿に⽋ける • 0から開発するタイミングだからこその選択 • エンジニアに愛される⾔語 • 最悪、ダメなら別の⾔語に変更も視野に⼊れて選択 最終的には、よりチャレンジングな⾔語(Rust)を選定
© Gen-AX Corp. All Rights Reserved. 16 型の表現⼒ • Newtypeパターンによる型安全性向上
• 「中⾝は同じ型」だが「意味論的に異なる型」を定義、引数不⼀致などをコンパイラで検知 • (例)各種ID、⼀部のIDの型はULIDだが、種類によって異なるケース async fn bulk_replace( &self, org_id: &OrgId, model_id: &ModelId, testset_ids: Vec<TestsetId>, user_id: &UserId, revision: Revision, ) -> AppResult<()> { if testset_ids.is_empty() { return Ok(()); } self.repository .bulk_replace(org_id, model_id, testset_ids, user_id, revision) .await?; ・・・
© Gen-AX Corp. All Rights Reserved. 17 型の表現⼒ • Newtypeパターンによる型安全性向上
• 「中⾝は同じ型」だが「意味論的に異なる型」を定義、引数不⼀致などをコンパイラで検知 • (例)各種ID、⼀部のIDの型はULIDだが、種類によって異なるケース async fn bulk_replace( &self, org_id: &OrgId, model_id: &ModelId, testset_ids: Vec<TestsetId>, user_id: &UserId, revision: Revision, ) -> AppResult<()> { if testset_ids.is_empty() { return Ok(()); } self.repository .bulk_replace(org_id, model_id, testset_ids, user_id, revision) .await?; ・・・ pub struct ModelId(ulid::Ulid); pub struct TestsetId(ulid::Ulid);
© Gen-AX Corp. All Rights Reserved. 18 Railway Oriented Programming(ROP)
• 成功時の結果とエラーの両⽅を扱える”Result型”を関数の戻り値にする書き⽅で、処理 のパイプラインを構築するという設計⼿法 → Rustのエラーハンドリング設計⽅針に合致 • 特に、エラーが発⽣したらエラーを呼び出し元に返す実装は、”?”(question mark operator)で簡潔に書ける tx, err := db.Beginx() if err != nil { return nil, err } _, err = tx.NamedExec(“INSERT INTO person・・・ “) if err != nil { return nil, err } ・・・ (例) Transaction実装 let mut tx = db.begin().await?; sqlx::query!(”INSERT INTO person・・・”, ・・・) .execute(&mut tx) .await?; ・・・ Go Rust 対応
© Gen-AX Corp. All Rights Reserved. 19 Railway Oriented Programming(ROP)
(Rustだからの問題ではないが) • ROPを採⽤しても以下の考慮は必要 • エラーを返すべきなのか、異常終了させるべきなのか • Rustでは以下を推奨 • 回復可能なエラー → Resultで返す • 回復不可能なエラー → panic!(unwrap, expect)を呼び出す※ ※axumでは、panic!を呼び出しても異常終了せず、500エラーが返る • エラーの種別、粒度をどうするか • エラー種別を細かくしすぎても、”エラー定義地獄” • 細かくハンドリングできず、コードの⾒通しが悪くなるだけ • まとめすぎると、情報が⽋落し、デバッグ時に必要な情報が残っていない
© Gen-AX Corp. All Rights Reserved. 20 Rustを採⽤したメリット • コンパイルが通った場合の品質への安⼼感が⾼い
• 他⾔語ではテストコードで担保することが多いが、コンパイルが通ることがある意味テスト • コンパイラーによるエラーハンドリングの抜け漏れ排除 • エラーをenumで定義し、Rustの強⼒なパターンマッチ機構により、バグを排除 • コードの⾒通しが良くなった • if⽂による分岐が減り、ハッピーパスの⾒通しがよくなった • Rust固有のSyntaxのおかげ • 独⾃型の導⼊の敷居が低く、関数宣⾔である程度実装の意図も残せる • トレイトにより、独⾃型も、簡単にPrimitive型と同じような演算が定義できる • 独⾃型の導⼊が進むと、関数宣⾔で、実装の意図も残せる
© Gen-AX Corp. All Rights Reserved. 21 Rustの⾟み • 使い⽅やサンプルコードの情報が少ない
• Docsを⾒ても説明が少なく、サンプルコードもほとんどない • 直接実装コードを⾒て確認 • ChatGPT(o3-miniなど)に聞いても、ハルシネーションが起きやすい • CrateのVersion upで破壊的変更が⼊ることも多い • 多くのcrateが1.0未満のVersionも多く、安定していないことが起因 • 今後、時間が経てば解決する問題 • ビルド、lintに多くのリソースを消費する • rust-analyzerや、ビルド時にメモリも多く消費 • rust-analyzerも3GB程度消費、 • ビルド時間も結構かかる(依存するcrateが多いとコンパイル対象が多く時間がかかる)
© Gen-AX Corp. All Rights Reserved. 22 今後の課題 • 依存crateの⾒直し
• crateのVersion Upで破壊的変更が⼊るものあるので、適宜Upgradeも対応していく • Feature設定の⾒直し、依存crateが少ないものに変更 • azure core/azure storage/azure storage blobsなど • データ処理実装の最適化 • サービスリリース初期は、データ量も多くはないので、機能実装を優先 • 今後、データ量が増えたとき、効率的なデータ処理が必要 • 処理速度だけでなく、メモリ使⽤量も考慮した最適化 • CI時間の短縮 • ⾼速リンカー(mold)への変更 • ビルドキャッシュの⾒直しなど
© Gen-AX Corp. All Rights Reserved. 23 エンジニアを募集しています • ⽣成AI照会業務⽀援プロダクト(X-Boost)
• 機能改善・新機能開発 • RAGの精度改善 • データ処理実装の最適化 • 外部CRM連携 など • ⾃律思考型AIの⾳声応対プロダクト • 新規開発 • 電話・⾳声処理(PBX連携、⾳声ストリームの取り回しなど) • 管理・モニタリング機能 • お客様毎の業務カスタマイズ機能 • プロダクトを作って価値提供していきたいエンジニアを募集中︕ • Rust⾃体は未経験でも問題ありません