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

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

takahiro suzuki
November 17, 2024
530

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

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

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 を配置する
 
 を採用。