working with react

29
REACT導入失敗談

Upload: yutaka-imamura

Post on 11-Jan-2017

97 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Working with react

REACT導入失敗談

Page 2: Working with react

新技術導入

Page 3: Working with react

に失敗してレガシーコードだけが残った

Page 4: Working with react

REACT導入前ViewModel

がひとつのファイルの中で入り乱れる

Page 5: Working with react

巨大なfunction

複数の関数から操作される一つのDOM

Page 6: Working with react

もうメンテナンスできない

Page 7: Working with react

次期ユーザインタフェース

Page 8: Working with react

View操作のプロトコルをReactで固定するViewのルールが整理できた

Page 9: Working with react

FLUX

DOMイベントのハンドリングとデータ更新のプロトコルをFluxで固定するModelのルールが整理できた

Page 10: Working with react

Viewの秩序 → React

Model(というかViewからのコード分離) → Flux

いけそうな気がした

Page 11: Working with react

導入

Page 12: Working with react

学習過程 - 1開発ツール&エコシステムの理解

webpack: JSのリンカgulp: タスクランナーbabel: トランスパイラjest or karma: テストランナー

もうこれだけで正直おなかいっぱいでした

Page 13: Working with react

学習過程 - 2基本パターンの理解

Reactのお約束を理解するFluxのコードを読んでAPIを覚える

ボイラープレートは切り取って部品にする

Page 14: Working with react

いざ実装......

最初のプロトタイプをいちおう作りきった

Page 15: Working with react

機能拡張とメンテナンス穴が増えていく

デザイン上の瑕疵エコシステム周りの整備ミス

Page 16: Working with react

パッケージデザインのミスFluxで機能の役割を整理

→ 役割からはずれた機能を発見

→ 配置するパッケージがわからない

→ とりあえずほとんどutils的なところに

アンチパターン...

Page 17: Working with react

コンポーネントの依存関係のミス1. データAをHTMLとして描画したい2. そのためにはデータBが...3. Bを構築するには...

いきあたりばったりwork around...

Page 18: Working with react

ユニットテスト開発者自身が不安だと思うところをテストする

誰がどうみても複雑な関数

これはまずまず奏功した変更時にデグレが見つかるとか

Page 19: Working with react

依存ライブラリと心中 - 1ローカルではビルド成功

Jenkinsで実行

依存関係の解決でハング

Page 20: Working with react

依存ライブラリと心中 - 2依存ライブラリのバージョンを固定していない

新たにチェックアウトしてビルドする

→ やっぱり壊れる

バージョン間のAPI非互換がすごい

clean buildするたびにどんどん死んでいく

くそ、う、動いていたバージョンってどれだ……

Page 21: Working with react

(まとめ)デザイン上の問題パッケージデザインのミスコンポーネントの依存関係のミスどんどん不明瞭になるデータの関係

→ 自分で決定するべきアーキテクチャデザインは事前におさえる

Page 22: Working with react

(まとめ)エコシステム上の問題依存ライブラリと心中

ビルドできなくなる という進化を遂げた

→ エコシステムの不安定さを知っておくべきだった

Page 23: Working with react

教訓技術的な適合だけではだめ

メンテナンスエコシステムの使い方

使って解る辛さを把握しておくプロダクト特有の癖と付き合うデザイン

Page 24: Working with react

大事なことビジネスサイドのニーズの変化

それに伴って新しい技術を導入するのは良いこと

Page 25: Working with react

でも

Page 26: Working with react

少しずつ使い始めて少し運用する時間を持つこと

小さいプロトタイプを作る社内利用でドッグフーディングするこうした活動に理解のある上司・先輩・同志の支援を受ける

Page 27: Working with react

これから考えたいこと商用サービスに導入するための考慮アンテナをはるということ準備のためににいつ学習の時間を作るか

今はReactの思想の源流っぽいElmを触ってる

Page 28: Working with react

以上