Upgrade to Pro — share decks privately, control downloads, hide ads and more …

生産性を爆上げするため入社後すぐBiomeを導入した話

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for takahiro suzuki takahiro suzuki
November 17, 2024
1.7k

 生産性を爆上げするため入社後すぐBiomeを導入した話

tskaigi kansai 2024 登壇資料
株式会社トグルホールディングス スポンサーLT

Avatar for takahiro suzuki

takahiro suzuki

November 17, 2024
Tweet

Transcript

  1. 2
 © toggle holdings inc. 鈴⽊ 貴⼤ 所属 2024/07〜現在 トグルホールディングス株式会社

    出⾝ 兵庫県神⼾市 フルスタックに TypeScriptで 開発しています!
  2. 8
 © toggle holdings inc. Rust 製の非常に高速なフォーマット・静的解析ツール JavaScript, TypeScript, JSX,

    CSS, JSON, GraphQL などをサポート Prettier と97%の互換性 ESLint, typescript-eslint, その他のソースに由来する 200以上のルール を備えている とは
  3. 11
 © toggle holdings inc. 開発環境の改善 移⾏前の状況 deno フォーマットは deno

    fmt による CLI での実⾏ Lint は ESLint による静的解析 ランタイム なぜ移⾏したかったのか
  4. 12
 © toggle holdings inc. ランタイム 開発環境の改善 deno fmt /

    lint は Rust製で早いので、そのまま利⽤ しかし... なぜ移⾏したかったのか deno fmt/lint
  5. 13
 © toggle holdings inc. 設定ファイルで deno.enable を false に

    しないとLSP が deno になってしまう • VSCode上に lint が表⽰されない • VSCodeで保存時にフォーマット されない コマンドを実⾏しなければ format / lint ができない Node.js 環境では VSCodeとdeno fmt / lint の相性が悪い
  6. 14
 © toggle holdings inc. なぜ移⾏したかったのか - 開発環境の改善 VSCode に

    lint 表⽰されないのは困る ⇒ ESLint を導⼊ • 機能が重複 • ESLintは各リポジトリで バージョン管理が必要 deno fmt/lint なぜ移⾏したかったのか
  7. 21
 © toggle holdings inc. TSKaigi kansai に Biomeへの移⾏をテーマで プロポーザルを出してみたら、社内受けが良かった!

    避けられないコンフリクト モノレポのため、リポジトリに関わる開発の⼈数が多い  移⾏へのハードル
  8. 26
 © toggle holdings inc. 
 ├── biome.json
 ├── package-lock.json

    
 ├── package.json 
 └── packages
 ├── backend
 │ ├── biome.json 
 │ ├── package.json 
 │ └── src
 └── frontend
 ├── biome.json 
 ├── package.json 
 └── src
 モノレポのリポジトリをルートディレクトリ で開いた場合は、ルートの設定が反映される CLIの場合は、各リポジトリで実⾏すれば 個別の biome.json の設定を活⽤できる 開いているディレクトリから⼀番近い biome.json を参照する Biome もいまのところ モノレポとの相性はそれほど⾼くない
  9. 42
 © toggle holdings inc. それでも... • ツールを 2 out

    1 in で Biome に集約できるのはいい • 実⾏が早い • VSCode でも WebStorm でもバッチリ動く
  10. 43
 © toggle holdings inc. FullTypeScript のモノレポは Biomeで爆速 ! TS

    Kaigi 駆動開発できてよかった まとめ 1 2
  11. 採⽤強化ポジション プロダクトエンジニア 必須要件:e-Typing 250点以上、Git 及び GitHub を用いた開発経験がある 
 歓迎要件:自社サービス開発 /運営を行う企業における

    Web開発の経験など 求める人物像:当社 Purpose / Mission に共感できる方 詳細はHRMOSへ AIエンジニア 必須要件:Git 及び GitHub を用いた開発経験がある、数理的にあるいはデータ構造的に、 取り扱う難易度が高い技術に向き合うことが好きな方など 
 歓迎要件:SQL / R / Pythonなどのツール (いずれかで可 )を利用したデータ分析の経験 求める人物像:当社 Purpose / Mission に共感できる方 詳細はHRMOSへ プラットフォームエンジニア 必須要件:e-Typing 250点以上、Git 及び GitHub を用いた開発経験がある 
 歓迎要件:コンピュータサイエンスを専攻、またはソフトウェア開発の経験など 求める人物像:当社 Purpose / Mission に共感できる方 詳細はHRMOSへ QAエンジニア 必須要件:ソフトウェアテストの実施設計業務経験2年以上など 
 歓迎要件:TypeScript、Python で開発された Webサービスの開発経験など 求める人物像:当社 Purpose / Mission に共感できる方 詳細はHRMOSへ エンジニアリングマネージャー 必須要件:e-Typing 250点以上、Git 及び GitHub を用いた開発経験がある 
 歓迎要件:自社サービス開発・運営を行う企業での Webアプリケーション開発の経験、テッ クリード等のサービス設計開発を主導した経験、エンジニアリングマネージャーの経験など 求める人物像:当社 Purpose / Mission に共感できる方 詳細はHRMOSへ
  12. 自己紹介
 名前: 鈴木 貴大
 所属: トグルホールディングス株式会社 
 2024/07 〜 現在


    出身: 兵庫県神戸市
 フルスタックにTypeScriptで開発しています!

  13. 目次
 1. モノレポ環境の format/lint を Biome に移行してみた
 2. なぜ移行したかったのか
 3.

    移行方法
 4. IDE と Biome について
 5. 会社紹介
 6. まとめ

  14. とは
 • Rust 製の非常に高速なフォーマット・静的解析ツール
 • JavaScript, TypeScript, JSX, CSS, JSON,

    GraphQL 
 などをサポート
 • Prettier と97%の互換性
 • ESLint, typescript-eslint, その他のソースに由来する
 200以上のルールを備えている

  15. なぜ移行したかったのか - 開発環境の改善 
 移行前の状況 
 
 • フォーマットは deno

    fmt による CLI での実行 
 • Lint は ESLint による静的解析 

  16. なぜ移行したかったのか - 開発環境の改善 
 移行前の状況 
 
 • フォーマットは deno

    fmt による CLI での実行 
 • Lint は ESLint による静的解析 
 ランタイム 

  17. なぜ移行したかったのか - 開発環境の改善 
 Node.js 環境では VSCode と deno fmt/lint

    の相性が悪い 
 設定ファイルで deno.enable を false にしな いと
 LSP が deno になってしまう
 
 • VSCode 上に lint が表示されない
 • VSCode で保存時にフォーマットされ ない
 コマンドを実行しなければ format / lint ができない 

  18. なぜ移行したかったのか - 開発環境の改善 
 VSCode に lint 表示されないのは困る 
 ⇒

    ESLint を導入 
 deno fmt/lint 
 • 機能が重複
 • ESLint は各リポジトリでバー ジョン管理が必要

  19. Biome もいまのところ モノレポとの相性はそれほど高くない 
 開いているディレクトリから一番近い biome.json を参照する 
 .
 ├──

    biome.json
 ├── package-lock.json
 ├── package.json
 └── packages
 ├── backend
 │ ├── biome.json
 │ ├── package.json
 │ └── src
 └── frontend
 ├── biome.json
 ├── package.json
 └── src
 モノレポのリポジトリをルートディレクトリ
 で開いた場合は、ルートの設定が反映される
 CLIの場合は、各リポジトリで実行すれば
 個別の biome.json の設定を活用できる

  20. 移行について 
 • formatter
 • linter
 • files
 
 それぞれにおいて対象を絞ることが

    出来る
 
 
 ディレクトリごとの 
 移行がしやすい 

  21. それでも
 • ツールを 2 out 1 in で Biome に集約できるのはいい


    
 • 実行が早い
 
 • VSCode でも WebStorm でもバッチリ動く

  22. 開発効率
 • deno fmt / lint はRust製なので実行速度は早い。
 • しかし毎回、コマンド実行が必要。
 •

    コマンド実行を忘れたまま、GithubにPushするとCIで落ちる。
 • format/lint をローカルで回して再度CIを回す。
 
 無駄

  23. 解決策
 • husky 入れる。precommit
 • cmd + S をトリガーにするプラグインを入れる
 


    
 根本解決ではない。
 
 そして何より、夢がない。

  24. Deno の設定 
 deno.enabled: false に設定すること で、LSP が deno になることは避け

    られるが、lint の表示が VSCode に表示されなくなる。

  25. 問題が顕在化するまで対処されない事が多い 
 • サポート期限の到来 
 • セキュリティインシデントの発生 
 • メンテナンスコストの増大

    
 • 既存システムで困難な対応 
 etc…
 
 • ライブラリのバージョンアップ 
 • フレームワークの移行 

  26. モノレポにおける Biome 移行のゴール 
 1. Deno lint / format +

    ESLint の設定がうまくBiomeに移行できること
 
 2. 開発効率を高めるため VSCode + Biome がうまく動作すること

  27. 1. Deno lint / format + ESLint の設定がうまくBiomeに移行できること 
 1.

    Deno lint / format + ESLint の設定がうまくBiomeに移行できること
 
 2. 開発効率を高めるため VSCode + Biome がうまく動作すること

  28. モノレポにおける Biome 移行方法 
 2. ルートに biome.json を置く
 
 VSCode

    の実行は可能。
 ただし、exclude に手動で追加する必要がある。
 

  29. モノレポにおける Biome 移行方法 
 3. vscode-biomejs プラグインの prerelease 版を使う
 


    
 バグが多い。動きはするがうまくいかなかった。
 最近マージされた v3
 
 今後の本命はこれになる。
 
 

  30. モノレポにおける Biome 移行方法 
 3. vscode-biomejs プラグインの prerelease 版を使う
 


    を見据えつつ、
 
 1.それぞれのリポジトリにbiome.json を配置する
 
 を採用。