ember コミュニティとわたし
TRANSCRIPT
自己紹介• 佐藤竜之介• 札幌から来ました• えにしテックという会社で働いています• フロント寄りの Web 系プログラマ• 普段は Rails + Ember.js でお仕事
GitHub/Twitter: @tricknotes
よろしくお願いします
https://twitter.com/a_matsuda/status/657464064935723009
https://twitter.com/a_matsuda/status/657493757449732096
考える• 大江戸Ruby会議
• 地域Ruby会議• エモいの OK
• Rails 界隈の話も OK
• 普段やっていることを!
• そうだ、Ember.js の話をしよう
今日のテーマ「Rails を使った web 開発」というコンテキストでのフロントエンド JavaScript の選択について
背景• Rails 開発者も JS を意識せざるをえなくなってきた• JS のライブラリはたくさんあるけど何を使えばいいの?
• 半年ごとにトレンドが変わる(ように見える)
• つらい• 今日はちょっと趣向を変えて、コミュニティ的な側面から考えてみる
今日は Ember コミュニティ とわたしのお話• 他のライブラリとの比較の話はしない
• React はスルー• Angular もあえて見ない
• それぞれのライブラリで、解決したい問題とアプローチが違う• Ember コミュニティの話と、そしてわたしがコミュニティどう関わっているか
今日お話しすること• Ember.js の背景• Ember.js とわたし
第1部 Ember.js の背景
Ember.jsA framework for creating ambitious web applications
For examples...
Travis CI
Idobata
Ember.js• 歴史
• SproutCore が起源• 2011 年から開発開始• 2013 年に v1.0.0 リリース• 現在のバージョンは v2.1.0 (2015-11-08 現在)
• いわゆるフルスタックフレームワーク• Routing, Model, Template などをサポート
フルスタックバージョン: 2.1.0
• Data binding … 2つ以上のデータを同期させる仕組み。• Template … オブジェクトの値を変更すると、自動で画面に反映• Router … URL とアプリケーションを対応付ける• Component … カスタムHTMLタグ。入れ子にして使う。• Service … セッションに依存するデータなどを保持• Ember Data … いわゆるモデル。API と通信してデータを保持す
その他の特徴• FastBoot(Server-Side Rendering)• Glimmer Engine(Virtual DOM)
チーム• 創始者: Yehuda Katz(@wycats)
• コミッター: 30人くらい• コアコミッター: 14人くらい• その他公式ライブラリを含めると 50 人くらい
@wycats
@wycats• OSS コミュニティを育てるのが上手い• 道を作ってあとはひとに託すスタイル
• Rails の AR::Base.scope
• Bundler
• いまは Rust と Ember にコミットしている• Ember には要所要所で豪快にコミットする
Ember.js について• コミュニティ主導• 定例の core team meeting
• 昔は議事録が公開されていたが…
• 各コンポネート毎にエキスパートがいる• 今後の展望はブログに公開: http://emberjs.com/blog/
• 新機能の提案は RFC で: https://github.com/emberjs/rfcs
リリース• Channels: release / beta / canary
• 今後は少し変わる予定 (ref: "Release cycle improvements")
• 定期的に新バージョンをリリース• feature flag
• エコシステム• private API を拡張するようなプラグインも大事にしている• 互換性を大事に。API 変更は deprecation warning を表示する
エコシステム• 開発ツール: Ember CLI
• rails コマンドみたいなツール• ジェネレータ、ビルド、テスト、などをサポート
• 拡張: Ember Addon
• Ember 版 gem みたい• Ember CLI でインストールする
Ruby と Ember.js• @wycats says: "optimized for Developer Happiness"
• Ruby / Rails と同じく、Ember.js もプログラムではなくプログラマーにフォーカス
• 実は @wycats 以外のコミッターも Ruby やってたひとが多い• その昔、ビルドツール群は Ruby 製だった• SproutCore は gem で配布されてた
• $ gem install sproutcore
実際に Ember.js でコードを書いていても、Rails 開発で感じる快適さを感じる(※ あくまで個人の感想であり、効果効能を保証するものではありません)
ここ最近のフロントエンド JavaScript• ようやく JavaScript で本格的なアプリケーションを開発するための土壌が整ってきた• パターン• ビルドツール• JavaScript 自体の仕様
• まだまだ過渡期。これといった一強はない。• お互いに影響を与えながら進化している(ように見える)
ここ最近のフロントエンド JavaScript• 新陳代謝が活発• 日々新しいライブラリが生まれ続けている• Ember は今後の展望を公開している
• マイルストーンを設定して着実に進んでいる• コミュニティの文化を選択基準に入れてみてもよいでのは
• 良し悪しではなく、好み。馴染めるか。
第2部 Ember.js とわたし
出会いから今に至るまでたまたま Ember やってるチームに入った(2013.1)
2013 年当時の Ember• 当時は Ember.js 1.0.0.pre4
• Breaking Change 真っ盛り• 勉強がてらコードとドキュメントを読む• 少しづつパッチを送るようになる
Before v1.0.0• Ember 創世期• 1週間に1回くらい Breaking Change
• ある日、クロスブラウザのサポートが大変という話を耳にする• IE はあまりメンテされてなさそう
• IE6~8 対応とか始める• 直しても数日で壊れるのでまた直す• 意外とエッジケースの漏れが見つかったり
創造と破壊• 大きな機能追加やリファクタリングの直後はだいたい IE で壊れている
• IE 以外でもたまに壊れていることがある
ポイント• 特殊な環境で動かしてみるとおかしなところを見つけやすい
• IE とか• Sprockets(ExecJS) 経由とか
• 自然に使えるように…
• 先んじてハマる• 直すチャンス
https://speakerdeck.com/a_matsuda/the-world-of-ruby
継続する• いろいろ直していると、いつの間にか中のひとになっている
• ember-rails メンテナ• Ember.js + Rails + ES6 にも挑戦
• なぜか Babel のメンバー(Ruby 方面担当)になっていたり
実際ソースコードに手を入れたり会話してみるとわかること
• 現状の課題• これからやりたいこと• どこまでできているかフレームワークに依存しないトレンドみたいなものも得られる
モチベーション• 自分の道具を本家につっこむ -> ember-middleman
• トレンドの移り変わりがよくわかる• これから 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