狠狠撸

狠狠撸Share a Scribd company logo
Copyright ? DeNA Co.,Ltd. All Rights Reserved.Copyright ? DeNA Co.,Ltd. All Rights Reserved.
まだまだ戦えるweb!
Mithril.js 最初の1歩
株式会社 DeNA Games Osaka
技術編成部
森 啓介 keisuke.a.mori@dena.com
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
まずは自己紹介
■ 森 啓介 (もり けいすけ) keisuke mori
■ 株式会社 DeNA Games Osaka 2016年 5月 入社
■ 元コミュニティ系 Webアプリケーションエンジニア
■ 5歳の男の子と3歳の女の子、2児のパパさん
■ 今は某450万人ユーザー超えブラウザゲームの開発?運用をメインでやっ
てます
■ 一応FaceBook (https://www.facebook.com/milksoap777)
■ IT勉強会、初登壇です← (ここ大事)
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
ブラウザゲームの
開発?運用を
メインでやってます
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
え?
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
ブラウザゲームって
まだ稼働してるの?
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
DeNAでは、まだまだブラウザタイトルも現役で稼働中!
※2016年度 第1四半期決算説明会資料より
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
アプリのゲーム技術も日々進化していますが、
ブラウザ(Web)ゲームの技術もまだまだ進化しています!
今日はそんなWeb技術の中から、1つだけご紹介!
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
Mithril.js
(みすりる じぇいえす)
http://mithril-ja.js.org/
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
Mithril.js とは
■ クライアントサイドMVCフレームワーク
■ 軽量
■ 高い堅牢性
■ 非常に高速かつ、高いパフォーマンス
■ Route機能もありSPAにも最適!
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
Mithril.jsの特徴 - 1
■ クライアントサイドMVCフレームワーク
-> フレームワークでコードや構造をきれいに構成、
メンテナンスしやすいソースコードに
-> MVCモデルの詳細については割愛
■ 軽量
-> gzip圧縮したもので、たったの 7.8KB! (jquery-2.1.0.min.js で 82KB)
-> 他のライブラリへの依存がない
■ 高い堅牢性
-> Mithrilのテンプレートはデフォルトで安全な動作をするようになっており、
セキュリティホールが作られにくい設計となっている
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
Mithril.jsの特徴 - 2
■ Virtual DOM 差分更新
-> 現在流行りの仮想DOM (最近で言うとReactとかmercuryとか有名)
-> 高速化
-> view関数が実行され、その関数が返すJavaScriptのオブジェクトを
キャッシュし、差分検知して表示する事で高速化を行っている
-> Reactとは違い、完全なMVCフレームワークとして提供されるので、
システム的に仮想DOMエンジンの効率が良い設計となっている
■ コンパイル可能なテンプレート
非常に高速
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
Mithril.jsの特徴 - 3
■ 現存するクライアントサイドMVCフレームワークで最速級
-> イベントハンドラが完了したタイミングで再描画を仕掛けるという仕組み
-> なるべく再描画自体の回数や頻度を最小にすることで高速化
-> 必要であればController側から強制的に再描画をしかけることもできる
高いパフォーマンス
( ※公式サイト ベンチマークテスト結果より )
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
Mithril.jsの特徴 - 4
■ 充実したドキュメンテーション
-> この手のフレームワークには珍しいちゃんとした公式の日本語翻訳サイト
■ 小さくシンプルなAPI
-> 関数はわずか23個、主要なAPIは4個程度
-> ソースコードは1500行くらい、困った時にソースを追っても苦にならない
■ オライリーからも本が出てるよ!
-> http://www.oreilly.co.jp/books/9784873117447/
学習が容易
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
そんな Mithril.js ですが、
DeNA Osakaでは……!
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
現在運用中の
ブラウザタイトルの
新イベントに採用!
現在
鋭意開発中!!
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
さらに!
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
DeNAが運営している
mobage Developers blog にも
大阪から記事を寄稿してます!
(http://developers.mobage.jp/blog/mithril-introduction)
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
では、実際のコードを少しだけご紹介
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
Mithril.jsの書き方 - 1
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
Mithril.jsの書き方 - 2
■ Modelの定義
-> m.request ( http://mithril-ja.js.org/mithril.request.html )
ちなみに json の中身はこんな感じ
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
m()
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
Mithrilでは、[ m ]という
予めmithrilが用意した関数を使用して
全てのAPIを操作します!!
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
Mithril.jsの書き方 - 3
■ ControllerとViewの定義
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
Mithril.jsの書き方 - 4
■ Viewをもうちょっと詳しく
<a href="getting-started.html">Getting Started</a>
これが
こう出力される
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
Mithril.jsの書き方 - 5
■ 初期化
m.mountで指定したDOMに対して、初期化を行う
<div id="example"></div>
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
簡単!!
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
その他 - 1
jQueryとの相性はあまり良くない
-> 仮想DOMを扱うMithril.jsと生DOMを扱うjQueryは相性が悪い
実際に実装して詰まったところ!
-> JQueryのプラグインと組み合わせるときに、
最初のレンダリング時だけ初期化処理を走らせたい!!
↓ (何も考えずに書くと)
DOMの生成タイミングが不明!何か変更する度に初期化処理が走る!
生DOMの操作が必要になる場合は「config擬似属性」というものを使って、
初回レンダリング時に色々とよしなに出来る!
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
その他 - 2
そもそもDOMの構築が面倒くさい!
-> マークアップするのに、m(“ほにゃらら”)とか書いてもよくわかんない!
公式のHTML→Mithrilテンプレート変換ツールもあります
-> m() を手で書きまくらないと駄目かというとそんなことはない (安心)
http://mithril.js.org/tools/template-converter.html
また、React.jsのJSXツールをカスタマイズしてMithrilの内部DSL形式の
テンプレートに変換するように改造されたMSXというものもある(らしい)
Returnで直接DOMを書く事も出来る!
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
Mithril.js
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
引き続きDeNAでは、
アプリタイトルも
ブラウザタイトルも、
盛り上げてまいります!!
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
DeNA Osakaでは
一緒にゲームを創る仲間も
募集中!!
Copyright ? DeNA Co.,Ltd. All Rights Reserved.
ご清聴ありがとうございました!

More Related Content

まだまだ戦える飞别产!尘颈迟丑谤颈濒.箩蝉最初の1歩

  • 1. Copyright ? DeNA Co.,Ltd. All Rights Reserved.Copyright ? DeNA Co.,Ltd. All Rights Reserved. まだまだ戦えるweb! Mithril.js 最初の1歩 株式会社 DeNA Games Osaka 技術編成部 森 啓介 keisuke.a.mori@dena.com
  • 2. Copyright ? DeNA Co.,Ltd. All Rights Reserved. まずは自己紹介 ■ 森 啓介 (もり けいすけ) keisuke mori ■ 株式会社 DeNA Games Osaka 2016年 5月 入社 ■ 元コミュニティ系 Webアプリケーションエンジニア ■ 5歳の男の子と3歳の女の子、2児のパパさん ■ 今は某450万人ユーザー超えブラウザゲームの開発?運用をメインでやっ てます ■ 一応FaceBook (https://www.facebook.com/milksoap777) ■ IT勉強会、初登壇です← (ここ大事)
  • 3. Copyright ? DeNA Co.,Ltd. All Rights Reserved. ブラウザゲームの 開発?運用を メインでやってます
  • 4. Copyright ? DeNA Co.,Ltd. All Rights Reserved. え?
  • 5. Copyright ? DeNA Co.,Ltd. All Rights Reserved. ブラウザゲームって まだ稼働してるの?
  • 6. Copyright ? DeNA Co.,Ltd. All Rights Reserved. DeNAでは、まだまだブラウザタイトルも現役で稼働中! ※2016年度 第1四半期決算説明会資料より
  • 7. Copyright ? DeNA Co.,Ltd. All Rights Reserved. アプリのゲーム技術も日々進化していますが、 ブラウザ(Web)ゲームの技術もまだまだ進化しています! 今日はそんなWeb技術の中から、1つだけご紹介!
  • 8. Copyright ? DeNA Co.,Ltd. All Rights Reserved. Mithril.js (みすりる じぇいえす) http://mithril-ja.js.org/
  • 9. Copyright ? DeNA Co.,Ltd. All Rights Reserved. Mithril.js とは ■ クライアントサイドMVCフレームワーク ■ 軽量 ■ 高い堅牢性 ■ 非常に高速かつ、高いパフォーマンス ■ Route機能もありSPAにも最適!
  • 10. Copyright ? DeNA Co.,Ltd. All Rights Reserved. Mithril.jsの特徴 - 1 ■ クライアントサイドMVCフレームワーク -> フレームワークでコードや構造をきれいに構成、 メンテナンスしやすいソースコードに -> MVCモデルの詳細については割愛 ■ 軽量 -> gzip圧縮したもので、たったの 7.8KB! (jquery-2.1.0.min.js で 82KB) -> 他のライブラリへの依存がない ■ 高い堅牢性 -> Mithrilのテンプレートはデフォルトで安全な動作をするようになっており、 セキュリティホールが作られにくい設計となっている
  • 11. Copyright ? DeNA Co.,Ltd. All Rights Reserved. Mithril.jsの特徴 - 2 ■ Virtual DOM 差分更新 -> 現在流行りの仮想DOM (最近で言うとReactとかmercuryとか有名) -> 高速化 -> view関数が実行され、その関数が返すJavaScriptのオブジェクトを キャッシュし、差分検知して表示する事で高速化を行っている -> Reactとは違い、完全なMVCフレームワークとして提供されるので、 システム的に仮想DOMエンジンの効率が良い設計となっている ■ コンパイル可能なテンプレート 非常に高速
  • 12. Copyright ? DeNA Co.,Ltd. All Rights Reserved. Mithril.jsの特徴 - 3 ■ 現存するクライアントサイドMVCフレームワークで最速級 -> イベントハンドラが完了したタイミングで再描画を仕掛けるという仕組み -> なるべく再描画自体の回数や頻度を最小にすることで高速化 -> 必要であればController側から強制的に再描画をしかけることもできる 高いパフォーマンス ( ※公式サイト ベンチマークテスト結果より )
  • 13. Copyright ? DeNA Co.,Ltd. All Rights Reserved. Mithril.jsの特徴 - 4 ■ 充実したドキュメンテーション -> この手のフレームワークには珍しいちゃんとした公式の日本語翻訳サイト ■ 小さくシンプルなAPI -> 関数はわずか23個、主要なAPIは4個程度 -> ソースコードは1500行くらい、困った時にソースを追っても苦にならない ■ オライリーからも本が出てるよ! -> http://www.oreilly.co.jp/books/9784873117447/ 学習が容易
  • 14. Copyright ? DeNA Co.,Ltd. All Rights Reserved. そんな Mithril.js ですが、 DeNA Osakaでは……!
  • 15. Copyright ? DeNA Co.,Ltd. All Rights Reserved. 現在運用中の ブラウザタイトルの 新イベントに採用! 現在 鋭意開発中!!
  • 16. Copyright ? DeNA Co.,Ltd. All Rights Reserved. さらに!
  • 17. Copyright ? DeNA Co.,Ltd. All Rights Reserved. DeNAが運営している mobage Developers blog にも 大阪から記事を寄稿してます! (http://developers.mobage.jp/blog/mithril-introduction)
  • 18. Copyright ? DeNA Co.,Ltd. All Rights Reserved. では、実際のコードを少しだけご紹介
  • 19. Copyright ? DeNA Co.,Ltd. All Rights Reserved. Mithril.jsの書き方 - 1
  • 20. Copyright ? DeNA Co.,Ltd. All Rights Reserved. Mithril.jsの書き方 - 2 ■ Modelの定義 -> m.request ( http://mithril-ja.js.org/mithril.request.html ) ちなみに json の中身はこんな感じ
  • 21. Copyright ? DeNA Co.,Ltd. All Rights Reserved. m()
  • 22. Copyright ? DeNA Co.,Ltd. All Rights Reserved. Mithrilでは、[ m ]という 予めmithrilが用意した関数を使用して 全てのAPIを操作します!!
  • 23. Copyright ? DeNA Co.,Ltd. All Rights Reserved. Mithril.jsの書き方 - 3 ■ ControllerとViewの定義
  • 24. Copyright ? DeNA Co.,Ltd. All Rights Reserved. Mithril.jsの書き方 - 4 ■ Viewをもうちょっと詳しく <a href="getting-started.html">Getting Started</a> これが こう出力される
  • 25. Copyright ? DeNA Co.,Ltd. All Rights Reserved. Mithril.jsの書き方 - 5 ■ 初期化 m.mountで指定したDOMに対して、初期化を行う <div id="example"></div>
  • 26. Copyright ? DeNA Co.,Ltd. All Rights Reserved. 簡単!!
  • 27. Copyright ? DeNA Co.,Ltd. All Rights Reserved. その他 - 1 jQueryとの相性はあまり良くない -> 仮想DOMを扱うMithril.jsと生DOMを扱うjQueryは相性が悪い 実際に実装して詰まったところ! -> JQueryのプラグインと組み合わせるときに、 最初のレンダリング時だけ初期化処理を走らせたい!! ↓ (何も考えずに書くと) DOMの生成タイミングが不明!何か変更する度に初期化処理が走る! 生DOMの操作が必要になる場合は「config擬似属性」というものを使って、 初回レンダリング時に色々とよしなに出来る!
  • 28. Copyright ? DeNA Co.,Ltd. All Rights Reserved. その他 - 2 そもそもDOMの構築が面倒くさい! -> マークアップするのに、m(“ほにゃらら”)とか書いてもよくわかんない! 公式のHTML→Mithrilテンプレート変換ツールもあります -> m() を手で書きまくらないと駄目かというとそんなことはない (安心) http://mithril.js.org/tools/template-converter.html また、React.jsのJSXツールをカスタマイズしてMithrilの内部DSL形式の テンプレートに変換するように改造されたMSXというものもある(らしい) Returnで直接DOMを書く事も出来る!
  • 29. Copyright ? DeNA Co.,Ltd. All Rights Reserved. Mithril.js
  • 30. Copyright ? DeNA Co.,Ltd. All Rights Reserved. 引き続きDeNAでは、 アプリタイトルも ブラウザタイトルも、 盛り上げてまいります!!
  • 31. Copyright ? DeNA Co.,Ltd. All Rights Reserved. DeNA Osakaでは 一緒にゲームを創る仲間も 募集中!!
  • 32. Copyright ? DeNA Co.,Ltd. All Rights Reserved. ご清聴ありがとうございました!