Slide 1

Slide 1 text

Copyright © LabBase, Inc. All Rights Reserved.  LabBaseのサービスプラットフォームの データ収集機能開発にRustを活用した話 株式会社LabBase プラットフォーム開発本部 上久保 竜輝

Slide 2

Slide 2 text

Copyright © LabBase, Inc. All Rights Reserved.  自己紹介 上久保 竜輝(Kamikubo Ryuki) 趣味 > テニス、ランニング、ボドゲ、競プロ(過去形) ソフトウェアエンジニア > frontend : backend = 6:4 > React,TypeScript,Rust,Python,PHP(Laravel) 職歴 > 2019年 4月 大手通信会社 入社 > 2021年10月 株式会社LabBase 入社 最近の興味 > アーキテクチャ,DDD,インフラ周り強くなりたい

Slide 3

Slide 3 text

Copyright © LabBase, Inc. All Rights Reserved. 

Slide 4

Slide 4 text

Copyright © LabBase, Inc. All Rights Reserved.  サービス紹介

Slide 5

Slide 5 text

Copyright © LabBase, Inc. All Rights Reserved. 

Slide 6

Slide 6 text

Copyright © LabBase, Inc. All Rights Reserved.  約1年前 CTO「Rustやろう」ぼくら「「「はい」」」 Rustで業務開発経験あるエンジニアなし、無茶振りに焦る > 新しい技術を学ぶのはみんな好き

Slide 7

Slide 7 text

Copyright © LabBase, Inc. All Rights Reserved.  現在 エンジニアの半数以上がRustで開発している 新規開発のバックエンドは基本的にRust プラットフォーム基盤などの重要なシステムにもRustを利用 > 実はCTOの無茶振りのおかげで仕事でRustがかなり書ける会社です!!

Slide 8

Slide 8 text

Copyright © LabBase, Inc. All Rights Reserved.  自分がRustで開発したプロダクト紹介: 企業マスタ 企業情報をバッチ処理で 外部APIを叩いて取得 社内の他プロダクトがア クセスできるようにgRPC サーバを構築

Slide 9

Slide 9 text

Copyright © LabBase, Inc. All Rights Reserved.  自分がRustで開発したプロダクト紹介: 研究室データ投入 集めた大量の研究室や指導 教官に関するデータを投入 するツール > JSON形式のデータをparseして DB投入

Slide 10

Slide 10 text

Copyright © LabBase, Inc. All Rights Reserved.  最初はやっぱり大変 無限に所有権で怒られる > 所有権やCopyトレイトを学んで 解決

Slide 11

Slide 11 text

Copyright © LabBase, Inc. All Rights Reserved.  Rust、何もわからない... スマートポインタわからん 動的ディスパッチわからん ライフタイム注釈わからん > 見た目がいかつくて怖い(※個人の感想で す) > 文法がわかっても存在理由や使い道がしっ くりきていない

Slide 12

Slide 12 text

Copyright © LabBase, Inc. All Rights Reserved.  慣れてくると段々いい感じに Option型、Result型によるエ ラーハンドリング便利 > ?やmap_errなどを使うとネストが 深くならなくて可読性保てる

Slide 13

Slide 13 text

Copyright © LabBase, Inc. All Rights Reserved.  よかったこと SeaORMいい感じだった > Seeding,Migration,Entity自動生 成など一通りできる > MockのConnectionなど簡単に作れ てテスト書きやすい

Slide 14

Slide 14 text

Copyright © LabBase, Inc. All Rights Reserved.  よかったこと ユニットテストを実装と同ファイルに書くと、見通し良い

Slide 15

Slide 15 text

Copyright © LabBase, Inc. All Rights Reserved.  学んだこと ソフトウェアアーキテクチャを 実現するのにRustは向いている なと思った > 階層ごとにpublic設定しないとアク セスできないので、意図しない公開を 防げる [lib.rs] pub mod models; [models.rs] pub mod laboratory; [laboratory.rs] pub mod lab_name;

Slide 16

Slide 16 text

Copyright © LabBase, Inc. All Rights Reserved.  学んだこと > domainやinfra層をそれぞれ別の パッケージとして実装。変更差分の あるパッケージだけビルドできる し、各層間の依存関係も表現できる > テックブログ書きました 企業マスタのディレクトリ構成

Slide 17

Slide 17 text

Copyright © LabBase, Inc. All Rights Reserved.  学んだこと Rustは早いと言われているが、遅 く書けてしまう(当たり前) > clone(),to_owned()祭り > 遅いアルゴリズム、不必要なSQLでの呼 び出しなどなど

Slide 18

Slide 18 text

Copyright © LabBase, Inc. All Rights Reserved.  感じたこと Rustじゃなきゃダメっていう問題解決的な動機での導入では ないが、様々な言語の良い部分がRustに取り入れられてお り、他の言語からやってくると新たな発見があって楽しい > CargoやCrateの充実もそう > エラー文がとても親切・アドバイスもしてくれる(clippyもいい)

Slide 19

Slide 19 text

Copyright © LabBase, Inc. All Rights Reserved.  感じたこと 所有権の概念と冗長なコードに慣れれば走り出せる > 実際に開発しながら、これなんだろ?で調べるの繰り返しがいいと思 う つよつよな人が多いおかげでネットで本質的な情報を探しや すい!

Slide 20

Slide 20 text

Copyright © LabBase, Inc. All Rights Reserved.  まとめ Rustは開発しながら学習意欲、知的好奇心を満たせる > 仕様を学ぶごとに2週目ダンジョンの隠しステージが見えてくるよう Rustの難しさは必要な複雑性、自分の理解の甘さ 業務開発の中でアーキテクチャ、アルゴリズムなど疎かにし ない、あくまで総合格闘技

Slide 21

Slide 21 text

Copyright © LabBase, Inc. All Rights Reserved.  最後に LabBaseで一緒に開発する仲間を募集中です!Rustに興味がある皆 さん是非! ● ソフトウェアエンジニア ● リサーチエンジニア

Slide 22

Slide 22 text

Copyright © LabBase, Inc. All Rights Reserved.  最後に エンジニアメンバーでテックノートを書いています!