チーム開発を円滑に進めるためのOSS / Lightning TechTalks 20231102
by
dachi023
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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