複数プロダクトで利用する共通ライブラリの戦略と運用経験
Battle Conference Under30
Leko
About me
チーフエンジニア at 株式会社CureApp
TypeScript, Node.js, React, React Native
言語処理系、ASTいじり
CureApp, Inc
医療 / ヘルスケア
最近のメディア掲載
ニコチン依存症治療用アプリが治験で効果確認:日経メディカル
「新しい治療効果をアプリで生み出す」--キュア・アップ、総額22億円の資金調達 - CNET Japan
医師から「アプリを処方される」時代が来る? ニコチン依存症治療用アプリ開発の裏側 | Forbes JAPAN(フォーブス ジャパン)
インフラ
技術
JavaScript / TypeScript
React, React Native, Node.js, Redux, etc
CQRS + Event sourcing
lib, util, common, shared
これ別のプロダクトで書いたな... 🤔
共通の画面
認証、認可
アセット管理
コンテンツ管理
共通のUIパーツ
CIの設定の設定
ボイラープレート
医学的な値のバリデーション
通知の有無、タイミング・優先度制御
利用規約、個人情報保護指針の同意チェック
バグが少なく
高品質なプロダクト開発を
素早く遂行する
この1年のnpm publish
仕事: 473回
個人OSS: 196回
1. 〜を作るために
先に
ライブラリを作っておく
能書きだけで書くと使えないものになりやすい
2.
ドッグフーディング
しすぎて汎用性がない
PoCが作ってバグ取り済んだら早めに分離
ボイラープレートは作らない
維持コストの方が高い、ペイしない
形骸化、ブラックボックス化
ベストプラクティス集
くらいにしとく
3. アップデートで情報格差
Pushの情報共有は自動化
あとからPullできる情報整備
Release note書く
4. 1プロダクト都合でアップデート
スコープを明示
プラグイン機構を用意
2プロダクト以上のエンジニアがレビュー
破壊的変更はProposal PR/Issue作る
5. 新規メンバーのキャッチアップが大変
命名で妥協しない
型
をちゃんと効かせる
ドキュメントの作成・維持コスト
を加味
定期的にモブプロ・ペアプロ
内部設計や
思想を共有
実プロダクトに投入をワイワイやる
破壊的変更のマイグレーション
times警察 👮♂️
登壇してフィードバックを得る
機密を抜き汎用的な技術の話に変えて話す
懇親会でフィードバックもらう、議論する
Code and Learn
プロダクトから離れて集中合宿
エンジニアの中でだけ「共通」
共通(にしたい)UIパーツ
デザイナー、意思決定者も巻き込む
結果
生産性上がるライブラリが何個かできた
縦割りが薄らぎチーム間で助け合い
OSSに貢献するエンジニアが増えた
まとめ
作って得する
勝算
はあるか
コード書く以外の
フォロー
もする
事業の優先順位
に併せて手を打つ
OSSをリスペクトし運用
する
We are hiring
こだわり、考え抜くJavaScriptエンジニア集団に加わろう
Thanks
GitHub: Leko
Twitter: @L_e_k_o
Blog:
https://blog.leko.jp
Other talks:
https://talks.leko.jp