TechFeed Live#2 「React vs Angular2」 に行ってきたメモ #techfeed
そもそものところで色々ツッコミたい気持ちはみなさんあるでしょうが、せっかく当選したので観戦に行ってきました。
- React陣営は @koba04 & @yosuke_furukawa
- Angular陣営は @laco0416 & @armorik83
- モデレータは @Shumpei
メモは雑なので、漏れとか齟齬とかあるかもですよ。
トークバトル
- React / Angular 2の概要
- スター数とかバージョンとか
- コードがだいたいこんな感じとか
開発言語
- こば: だいたいBabel、TypeScriptでもやれる
- 会長: だいたいBabel使ってると幸せになれる
- らこ: JavaScript or TypeScript or Dart
- らこ: まあTypeScriptですよね
- らこ: Dartはリポジトリが分かれました
- はち: ReactやるからAngularやるからで開発言語を選ぶのはナンセンスだ!
- 会長: それはそうだがエコシステムがそうなってる
- 会長: JSXキモいけど他の選択肢が・・
- はち: Flowってどうなの
- 会長: `propTypes`をFlowでチェックしようみたいな動きとかはある
- こば: でもそれをReactは強制してるわけではないよ
アーキテクチャ(Fluxとかそういう意味で
- 会長: ReactはViewの機能しかないので何かしら必要
- 会長: ちなみにFluxはデザパタです
- 会長: それをコードに落としたので一番流行ってるのがRedux
- はち: Angular 2ではなく1のことを振り返る
- はち: あの頃はなんでもAngular.moduleでなんとかするしかなかった
- はち: しかし2はそうじゃないので、One Frameworkつっても自由度はある
- はち: Rxjsと一緒に使うのが多いし、Observableな流れはキテると思う
- はち: Angular 2とReduxもやってみたけど相性が・・
- はち: reducerの中でDIできないならAngularでやる意味なくね
- らこ: AngularはDIがあるので、そもそもReduxなんかいらない
- こば: ReactとRxjsとかの組合せはあるけど、自由に使えばいいのでは
ビルドツール
- 会長: WebpackとかBrowserifyとか
- 会長: エコシステムがそうなってるので基本的にはコレ
- らこ: 大差ないと思う
- らこ: SystemJSはhttp/2がありふれる世界になってから
ルーティング
テンプレート
- はち: どっちもキモいので好きな方を
- らこ: Angular 2はぎりぎりHTMLなのでツールチェインもワンチャン
- らこ: テンプレート内で`import`したりできる
- らこ: JSXの`className`とか書いててキモくないんですか?
- 会長: HTMLセントリックを語るならRiotくらいやってほしい
- らこ: XSS対策のサニタイズとかしてくれる?
- 会長: 場所によってはしてくれる(`a.href`とか`iframe.src`とかはしてない
- らこ: Angularは厳しいくらいセキュアです
- らこ: WebComponents対応は?
- こば: CustomElementとか書けるし、この先に期待
いったんLT
詳細は下に。
スタイリング(CSS in JS的な話
APIコールまわり
- らこ: Ajaxならangular-httpというのがある
- 会長: それは別パッケージ?
- らこ: リポジトリは別だが開発は一緒
- こば: 本体がサポートする理由は?
- らこ: フルスタックなフレームワークなので・・DIありきなので・・
- らこ: FetchAPIがくれば切り替えできるようにはなってる
- はち: 何使ってもいいけど、テストの時に上手いことしてくれたりする
- 会長: ReduxのMiddlewareに戸惑うのはまだまだ慣れてない証拠です
- 会長: 非同期処理やるにもReduxのMiddlewareはいっぱいある
- 会長: 何がしたいかでMiddlewareをちゃんと選ぶ必要があって、それが辛いと思うなら何か勘違いしてる
ツールサポート(エディタ・IDEとか
テスト
- はち: E2Eテストどうしてますか
- こば: ここで話すこと・・?
- 会長: コンポーネントのテストするかしないか、書くなら何使う?
- はち: Karmaかな?Angularチームが作ってるし
- らこ: Angular 2にはテスト用のAPIがあって、Enzymeみたいな
- こば: Reactのコンポーネントは関数なので、テストは簡単
- らこ: 書くか書かないかでいくと、Angular 2はコンパイル可能かどうかテストしないと死ぬ
- 会長: JSXならランタイムでエラーになるから利点っちゃあ利点
- 会長: でもコンポーネントのテストはコストになるので書かないで良いと思ってる
- らこ: コンポーネントの性質が違うから・・DIありきなので・・
パフォーマンス
- らこ: 初期ロードはちょい遅いけど、その後は遅くない
- はち: Angular 1の頃は、Angularのせいにできた
- 会長: DOMの書き換えとか変更検知とかは?
- らこ: Zoneというのがあって・・
- らこ: `window`をモンキーパッチ
- らこ: VDOMなくても速い
- こば: チューニングする箇所が決まってるのでやりやすい
- らこ: `PureComponent`ってなんなの
- こば: VDOMの比較がコストになる時があるので、そういう時に
- らこ: それはVDOMの敗北では???
- こば: エスケープハッチとして・・
- 会長: チューニングできる選択肢が増えたということで
サーバーサイドレンダリング
ライブラリ vs フレームワーク
- はち: なんだこのイベントは!そもそも比較するもんじゃねーだろ!
まあ一言でいうとコレなんですけど、このように本人の申し立てがあったのでもう少し追記しますw
りぃ君まとめ、すぐに掲載されてあのまとめ力はホント素晴らしいんだけど、私の終盤噛みついたやつの意図がバッッサリ無くなっててただのウルサイやつになってたのだけは不満なので、本人にクレームしました #techfeed
— 83 (@armorik83) 2016年9月7日
- はち: そもそもReactとAngularは領域が違う(被ってるとこはあるけど)ので、比較するのがそもそもおかしい
- はち: それよりか、双方踏まえた上でこれからのフロントエンドをどう設計していくかみたいな話の方が有益だったのでは
激しいdisり合いを彷彿とさせてるところがコマーシャリズムで、比較すべきはそこじゃないし、数年で廃れるライブラリより、フロントエンドとしてどのWeb標準の組み合わせを現代において選択して、未来はどう便利になっていくのか、ってそういう話を聞きたいんだろ!?って主張もとにかく腕力不足
— 83 (@armorik83) 2016年9月7日
まぁネタをネタと見抜けない人には(ry
相手側のいいなと思う点
相手側のイケてないと思う点
- らこ: ユーザー層が偏ってない?初心者向けのがないような・・
- 会長: Node学園祭にNodeSchoolというのがありまして・・
- らこ: 逆にAngularは上級者がいない
- らこ: 上級者はReactに流れていく
- こば: ハンズオンとかMeetupとかありますので
会場質問
Angular 2のアプリをビルドしてみたら、ファイル600KBくらいあったけどアレはなんぞ・・・?
- らこ: Inline SourceMapが重いので、Uglifyとかしてください
なぜReduxを使うの?他にないの?
- 会長: 流行ってるから
- こば: 必要だと思えば使えばいいと思う
- こば: できれば何も使わずに使った上で、ライブラリに手を出して欲しい
- 会長: バケツリレーの辛さを感じるべし
- 会長: 結局ReactはViewしかやってくれなくて、(それだとアプリは作れなくて、)Stateを持つ場所が欲しいのでReduxとかを使う
Stateはサーバーに置けないもの・・?
- 会長: GraphQLやRelayみたいな派閥もある
- 会長: React自体はStatelessが哲学なので、そのほかはRedux等に委ねたいのかも
LT
各陣営から2人ずつ、5分間のLT。
Express+React+Redux+TypeScriptでSSRの話
なんとLunascapeの中の人!もうお一人はメイド喫茶の経営とかしてたらしいw
- タイトルの技術を使ったスタック
- それぞれ頭文字がNERRTBS -> Goemon
- https://github.com/goemonjs/goemon
- 0からReduxするの大変だと思うので、参考にしてもらえれば
SSR事始め by @teyosh
ng-japanユーザーグループからの刺客・・!
型とテストのある暮らし〜jasmineの香りを添えて〜 by @uryyyyyyy
- Angular 2には期待してるけど安定するまでReact使います
- TypeScriptいいよね
- karmaでカバレッジ取ったりしてる
- 前はjsdomとか使ってたけど
Angular2 と Swagger by @taxpon
- Swaggerとは
- REST APIを記述するための仕様
- YAMLで書いたらコードができる
- https://github.com/taxpon/ng2-swagger-example
- 3Dプリンタ使い放題の会社です