チーム開発を円滑に進めるためのOSS / Lightning TechTalks 20231102
by
dachi
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
チーム開発を円滑に進めるためのOSS
Slide 2
Slide 2 text
Ryo Adachi (アダチ リョウ) https://www.dachi.one Mosh Inc. / プロダクティビティチーム https://corp.mosh.jp Web基盤の整備、機能開発など プロフィール dachi023 dachi_023
Slide 3
Slide 3 text
はじめに
Slide 4
Slide 4 text
● ⼿間のかかる作業の⾃動化 ● 複雑だったものをシンプルにしていく ● 開発者のやりたい事に集中できる チーム開発が円滑に進むとは
Slide 5
Slide 5 text
● API ○ Python, AWS Lambda, OpenAPI ● Client ○ Angular, TypeScript, TailwindCSS Moshの技術スタック
Slide 6
Slide 6 text
● Prettier plugins ● Nx ● openapi-generator (OpenAPI) この5分間で紹介したいもの
Slide 7
Slide 7 text
Prettierができることを増やす
Slide 8
Slide 8 text
● フォーマットされる部分を増やしたい ○ 細かい部分でフォーマットされずモヤモヤする Prettierのまだやれる感
Slide 9
Slide 9 text
● import⽂の⾃動ソート ● 元はeslint-plugin-importでやっていた ○ フォーマッタとしての機能はPrettierに寄せたい ● 正規表現でグルーピングなども設定可能 ○ ^mylib-(.*)$ ○ ^@mylib/(.*)$ ● trivago/prettier-plugin-sort-imports @trivago/prettier-plugin-sort-imports
Slide 10
Slide 10 text
● class名をソートする ● tailwind.config.jsの内容を読み込んでくれる ● Angular / React / Vueはデフォルトで対応済み ○ ngClass / className / :class ○ それ以外の独⾃形式でも設定すれば利⽤可能 ● tailwindlabs/prettier-plugin-tailwindcss prettier-plugin-tailwindcss
Slide 11
Slide 11 text
NxでMonorepo管理を楽にする
Slide 12
Slide 12 text
● Monorepo構成管理ツールの1つ ○ 他にはyarn workspace / lerna / turborepoなど ○ コンセプトや⽤途が異なるため⽬的に合わせて選ぶと良い ● Pluginによる設定の少なさ ● Monorepoでもコードキャッシュ‧差分ビルド ● エディタ拡張を利⽤してgenerate, runなど ● nx.dev nrwl/nx
Slide 13
Slide 13 text
ビルド周りの課題 ● 複数あるモジュールの扱いが難しい ○ 共通の関数‧コンポーネントが切り出されている ■ core / shared / page など ○ 開発中のビルド順の制御が難しい ■ sharedより先にpageがビルドされるとエラーになる ○ モジュールを跨ぐと差分ビルドできない ■ 別プロセスでwatchしているので差分検知が難しい
Slide 14
Slide 14 text
Nxで解決できたこと ● ビルド順の制御 ○ 依存関係から順番を制御してくれる ○ どのタスクで制御する必要があるかも指定可能 ● コードキャッシュ ○ モジュールを跨いでも差分ビルドが効く ○ ↑とキャッシュの効果でビルド速度が⼤幅に改善
Slide 15
Slide 15 text
openapi-generatorで API周りの簡略化
Slide 16
Slide 16 text
● openapi.ymlからAPIサーバやクライアントを⽣成 ● 複数⾔語‧FWに対応 ● openapi-generator.tech openapi-generator
Slide 17
Slide 17 text
● APIは既にopenapi.ymlに定義されたI/Fで実装 ○ フロントエンドのAPIクライアントは⼿動実装 ○ ⼿動実装ゆえのI/F変更への追従コストが発⽣ ● APIのI/Fに対しての関⼼が薄い ○ 設計フェーズではAPI開発者の中でI/Fが決まる ○ 画⾯の実装をする⼈が別だった場合にどうしても意識が薄れがち ● APIがリリースされないと実装できない ○ APIよりも先⾏して実装を進めることが難しい API周りの課題
Slide 18
Slide 18 text
OpenAPIによって得られたもの 導⼊したてなので以下希望 (そうなってほしい) ● APIへの実装の追従コストの軽減 ○ APIの追加‧変更に⼿動で対応しなくてよい ● フロントエンドとバックエンドの共通の財産 ○ openapi.ymlを通してAPIのI/Fレビューができる ○ APIクライアントを⽣成するためのリソースなので関⼼が湧く ● APIが組み上がる前にStubで試せる ○ 事前にI/Fを知り、何か問題があればAPIを実装する前に気付ける
Slide 19
Slide 19 text
OpenAPIによって得られたもの openapi.yml APIクライアント⽣成 TS型定義⽣成 Stub Server起動 スキーマ(I/F)定義 テストケース⽣成
Slide 20
Slide 20 text
さいごに
Slide 21
Slide 21 text
紹介しきれなかったOSSたち ● Storybook (+ Chromatic) ○ UIカタログとしてもテストツールとしても有能 ○ Chromaticで共有のホスティング‧テスト環境が作れる ● ESLint ○ 現代のフロントエンド開発では標準装備したいOSS ● TypeScript ○ こちらも標準装備したい ○ 型によって未然に防げる不具合がたくさんある
Slide 22
Slide 22 text
OSSなしにプロダクト開発は語れない ● IssueやPRなどで積極的に貢献していきましょう
Slide 23
Slide 23 text
We’re hiring! careers.mosh.jp