ember コミュニティとわたし

41
Ember コミュニティ とわたし 大江戸Ruby会議05 - 2015.11.08 佐藤竜之介(@tricknotes)

Upload: ryunosuke-sato

Post on 09-Feb-2017

6.240 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Ember コミュニティとわたし

Ember コミュニティ とわたし

大江戸Ruby会議05 - 2015.11.08佐藤竜之介(@tricknotes)

Page 2: Ember コミュニティとわたし

自己紹介• 佐藤竜之介• 札幌から来ました• えにしテックという会社で働いています• フロント寄りの Web 系プログラマ• 普段は Rails + Ember.js でお仕事

Page 3: Ember コミュニティとわたし

GitHub/Twitter: @tricknotes

Page 4: Ember コミュニティとわたし

よろしくお願いします

Page 5: Ember コミュニティとわたし

https://twitter.com/a_matsuda/status/657464064935723009

Page 6: Ember コミュニティとわたし

https://twitter.com/a_matsuda/status/657493757449732096

Page 7: Ember コミュニティとわたし

考える• 大江戸Ruby会議

• 地域Ruby会議• エモいの OK

• Rails 界隈の話も OK

• 普段やっていることを!

• そうだ、Ember.js の話をしよう

Page 8: Ember コミュニティとわたし

今日のテーマ「Rails を使った web 開発」というコンテキストでのフロントエンド JavaScript の選択について

Page 9: Ember コミュニティとわたし

背景• Rails 開発者も JS を意識せざるをえなくなってきた• JS のライブラリはたくさんあるけど何を使えばいいの?

• 半年ごとにトレンドが変わる(ように見える)

• つらい• 今日はちょっと趣向を変えて、コミュニティ的な側面から考えてみる

Page 10: Ember コミュニティとわたし

今日は Ember コミュニティ とわたしのお話• 他のライブラリとの比較の話はしない

• React はスルー• Angular もあえて見ない

• それぞれのライブラリで、解決したい問題とアプローチが違う• Ember コミュニティの話と、そしてわたしがコミュニティどう関わっているか

Page 11: Ember コミュニティとわたし

今日お話しすること• Ember.js の背景• Ember.js とわたし

Page 12: Ember コミュニティとわたし

第1部 Ember.js の背景

Page 13: Ember コミュニティとわたし

Ember.jsA framework for creating ambitious web applications

Page 14: Ember コミュニティとわたし

For examples...

Page 15: Ember コミュニティとわたし

Travis CI

Page 16: Ember コミュニティとわたし

Idobata

Page 17: Ember コミュニティとわたし

Ember.js• 歴史

• SproutCore が起源• 2011 年から開発開始• 2013 年に v1.0.0 リリース• 現在のバージョンは v2.1.0 (2015-11-08 現在)

• いわゆるフルスタックフレームワーク• Routing, Model, Template などをサポート

Page 18: Ember コミュニティとわたし

フルスタックバージョン: 2.1.0

• Data binding … 2つ以上のデータを同期させる仕組み。• Template … オブジェクトの値を変更すると、自動で画面に反映• Router … URL とアプリケーションを対応付ける• Component … カスタムHTMLタグ。入れ子にして使う。• Service … セッションに依存するデータなどを保持• Ember Data … いわゆるモデル。API と通信してデータを保持す

Page 19: Ember コミュニティとわたし

その他の特徴• FastBoot(Server-Side Rendering)• Glimmer Engine(Virtual DOM)

Page 20: Ember コミュニティとわたし

チーム• 創始者: Yehuda Katz(@wycats)

• コミッター: 30人くらい• コアコミッター: 14人くらい• その他公式ライブラリを含めると 50 人くらい

Page 21: Ember コミュニティとわたし

@wycats

Page 22: Ember コミュニティとわたし

@wycats• OSS コミュニティを育てるのが上手い• 道を作ってあとはひとに託すスタイル

• Rails の AR::Base.scope

• Bundler

• いまは Rust と Ember にコミットしている• Ember には要所要所で豪快にコミットする

Page 23: Ember コミュニティとわたし

Ember.js について• コミュニティ主導• 定例の core team meeting

• 昔は議事録が公開されていたが…

• 各コンポネート毎にエキスパートがいる• 今後の展望はブログに公開: http://emberjs.com/blog/

• 新機能の提案は RFC で: https://github.com/emberjs/rfcs

Page 24: Ember コミュニティとわたし

リリース• Channels: release / beta / canary

• 今後は少し変わる予定 (ref: "Release cycle improvements")

• 定期的に新バージョンをリリース• feature flag

• エコシステム• private API を拡張するようなプラグインも大事にしている• 互換性を大事に。API 変更は deprecation warning を表示する

Page 25: Ember コミュニティとわたし

エコシステム• 開発ツール: Ember CLI

• rails コマンドみたいなツール• ジェネレータ、ビルド、テスト、などをサポート

• 拡張: Ember Addon

• Ember 版 gem みたい• Ember CLI でインストールする

Page 26: Ember コミュニティとわたし

Ruby と Ember.js• @wycats says: "optimized for Developer Happiness"

• Ruby / Rails と同じく、Ember.js もプログラムではなくプログラマーにフォーカス

• 実は @wycats 以外のコミッターも Ruby やってたひとが多い• その昔、ビルドツール群は Ruby 製だった• SproutCore は gem で配布されてた

• $ gem install sproutcore

Page 27: Ember コミュニティとわたし

実際に Ember.js でコードを書いていても、Rails 開発で感じる快適さを感じる(※ あくまで個人の感想であり、効果効能を保証するものではありません)

Page 28: Ember コミュニティとわたし

ここ最近のフロントエンド JavaScript• ようやく JavaScript で本格的なアプリケーションを開発するための土壌が整ってきた• パターン• ビルドツール• JavaScript 自体の仕様

• まだまだ過渡期。これといった一強はない。• お互いに影響を与えながら進化している(ように見える)

Page 29: Ember コミュニティとわたし

ここ最近のフロントエンド JavaScript• 新陳代謝が活発• 日々新しいライブラリが生まれ続けている• Ember は今後の展望を公開している

• マイルストーンを設定して着実に進んでいる• コミュニティの文化を選択基準に入れてみてもよいでのは

• 良し悪しではなく、好み。馴染めるか。

Page 30: Ember コミュニティとわたし

第2部 Ember.js とわたし

Page 31: Ember コミュニティとわたし

出会いから今に至るまでたまたま Ember やってるチームに入った(2013.1)

Page 32: Ember コミュニティとわたし

2013 年当時の Ember• 当時は Ember.js 1.0.0.pre4

• Breaking Change 真っ盛り• 勉強がてらコードとドキュメントを読む• 少しづつパッチを送るようになる

Page 33: Ember コミュニティとわたし

Before v1.0.0• Ember 創世期• 1週間に1回くらい Breaking Change

• ある日、クロスブラウザのサポートが大変という話を耳にする• IE はあまりメンテされてなさそう

• IE6~8 対応とか始める• 直しても数日で壊れるのでまた直す• 意外とエッジケースの漏れが見つかったり

Page 34: Ember コミュニティとわたし

創造と破壊• 大きな機能追加やリファクタリングの直後はだいたい IE で壊れている

• IE 以外でもたまに壊れていることがある

Page 35: Ember コミュニティとわたし

ポイント• 特殊な環境で動かしてみるとおかしなところを見つけやすい

• IE とか• Sprockets(ExecJS) 経由とか

• 自然に使えるように…

• 先んじてハマる• 直すチャンス

Page 36: Ember コミュニティとわたし

https://speakerdeck.com/a_matsuda/the-world-of-ruby

Page 37: Ember コミュニティとわたし

継続する• いろいろ直していると、いつの間にか中のひとになっている

• ember-rails メンテナ• Ember.js + Rails + ES6 にも挑戦

• なぜか Babel のメンバー(Ruby 方面担当)になっていたり

Page 38: Ember コミュニティとわたし

実際ソースコードに手を入れたり会話してみるとわかること

• 現状の課題• これからやりたいこと• どこまでできているかフレームワークに依存しないトレンドみたいなものも得られる

Page 39: Ember コミュニティとわたし

モチベーション• 自分の道具を本家につっこむ -> ember-middleman

• トレンドの移り変わりがよくわかる• これから Ember 始めるひとが、バグを踏まない状態だと嬉しい

Page 40: Ember コミュニティとわたし

まとめ• ライブラリの選択基準のひとつにコミュニティを含めてみてもよいのでは

• ちょっとだけでもコミュニティに関わってみると、得られるものも多いですよ

Page 41: Ember コミュニティとわたし

参考資料• http://blog.yodersolutions.com/why-i-recommend-emberjs-over-

angularjs/• https://speakerdeck.com/wycats/ember-dot-js-at-the-east-bay-

ruby-meetup• http://shoptalkshow.com/episodes/147-tom-dale/

• http://wazanova.jp/items/1637• https://frontsidethepodcast.simplecast.fm/16

• http://wazanova.jp/items/1639