SlideShare une entreprise Scribd logo
1  sur  32
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.
ご清聴ありがとうございました!

Contenu connexe

Tendances

Jawsfeta tohoku lt_20140906
Jawsfeta tohoku lt_20140906Jawsfeta tohoku lt_20140906
Jawsfeta tohoku lt_20140906Takayuki Niinuma
 
【前半】上級ウェブ解析士取得後のウェブ業界のキャリア
【前半】上級ウェブ解析士取得後のウェブ業界のキャリア【前半】上級ウェブ解析士取得後のウェブ業界のキャリア
【前半】上級ウェブ解析士取得後のウェブ業界のキャリアSae Kanou
 
Decade 20121230
Decade 20121230Decade 20121230
Decade 20121230武 河野
 
最愛戦略とその戦術としてのアクティブサポート
最愛戦略とその戦術としてのアクティブサポート最愛戦略とその戦術としてのアクティブサポート
最愛戦略とその戦術としてのアクティブサポート武 河野
 
20160416 jaws days 2016 re cap
20160416 jaws days 2016 re cap20160416 jaws days 2016 re cap
20160416 jaws days 2016 re capShinya Yamada
 
メンバーズグループ福岡Meetup/メンバーズエッジに入社して変わったこと
メンバーズグループ福岡Meetup/メンバーズエッジに入社して変わったことメンバーズグループ福岡Meetup/メンバーズエッジに入社して変わったこと
メンバーズグループ福岡Meetup/メンバーズエッジに入社して変わったことMembers_corp
 
20191204_WordPressの教科書出版記念イベント_WordPress開発のツボ_森下
20191204_WordPressの教科書出版記念イベント_WordPress開発のツボ_森下20191204_WordPressの教科書出版記念イベント_WordPress開発のツボ_森下
20191204_WordPressの教科書出版記念イベント_WordPress開発のツボ_森下Tomoya Hokari
 
Mercari ogawa cs_youngmeetup_20170123_今年の抱負
Mercari ogawa cs_youngmeetup_20170123_今年の抱負Mercari ogawa cs_youngmeetup_20170123_今年の抱負
Mercari ogawa cs_youngmeetup_20170123_今年の抱負Naoki Ogawa
 
非(エンジニア|プログラマ)でも知っておきたい正規表現【第5回 WordBench山口 セッション2】
非(エンジニア|プログラマ)でも知っておきたい正規表現【第5回 WordBench山口 セッション2】非(エンジニア|プログラマ)でも知っておきたい正規表現【第5回 WordBench山口 セッション2】
非(エンジニア|プログラマ)でも知っておきたい正規表現【第5回 WordBench山口 セッション2】Hiroyuki Ishikawa
 
【ITベンチャーを支えるテクノロジー】成長し続けるサービスを支える技術|ランサーズ株式会社
【ITベンチャーを支えるテクノロジー】成長し続けるサービスを支える技術|ランサーズ株式会社【ITベンチャーを支えるテクノロジー】成長し続けるサービスを支える技術|ランサーズ株式会社
【ITベンチャーを支えるテクノロジー】成長し続けるサービスを支える技術|ランサーズ株式会社leverages_event
 
Web × プログラミング ~JavaScript編~(2017/2/16)
Web × プログラミング ~JavaScript編~(2017/2/16)Web × プログラミング ~JavaScript編~(2017/2/16)
Web × プログラミング ~JavaScript編~(2017/2/16)Hiroyuki Ishikawa
 
今から学ぶ!jQuery Mobile!
今から学ぶ!jQuery Mobile!今から学ぶ!jQuery Mobile!
今から学ぶ!jQuery Mobile!Takami Kazuya
 
Mercari ogawa csjam6_20161020_csの仲間をつくろう
Mercari ogawa csjam6_20161020_csの仲間をつくろうMercari ogawa csjam6_20161020_csの仲間をつくろう
Mercari ogawa csjam6_20161020_csの仲間をつくろうNaoki Ogawa
 
宮崎の山の中でリモートワークしてみた
宮崎の山の中でリモートワークしてみた宮崎の山の中でリモートワークしてみた
宮崎の山の中でリモートワークしてみたTomoe Sawai
 
社内SEはVBAを投げ捨ててPHPの夢を見るか?
社内SEはVBAを投げ捨ててPHPの夢を見るか?社内SEはVBAを投げ捨ててPHPの夢を見るか?
社内SEはVBAを投げ捨ててPHPの夢を見るか?naoto teshima
 
Wakayama.rbが目指すもの
Wakayama.rbが目指すものWakayama.rbが目指すもの
Wakayama.rbが目指すもの三七男 山本
 
WebPayからStripeに移行した話
WebPayからStripeに移行した話WebPayからStripeに移行した話
WebPayからStripeに移行した話Takuro Niitsuma
 
アジャイルマインドの重要性
アジャイルマインドの重要性アジャイルマインドの重要性
アジャイルマインドの重要性Akiyah
 

Tendances (19)

Jawsfeta tohoku lt_20140906
Jawsfeta tohoku lt_20140906Jawsfeta tohoku lt_20140906
Jawsfeta tohoku lt_20140906
 
【前半】上級ウェブ解析士取得後のウェブ業界のキャリア
【前半】上級ウェブ解析士取得後のウェブ業界のキャリア【前半】上級ウェブ解析士取得後のウェブ業界のキャリア
【前半】上級ウェブ解析士取得後のウェブ業界のキャリア
 
Decade 20121230
Decade 20121230Decade 20121230
Decade 20121230
 
最愛戦略とその戦術としてのアクティブサポート
最愛戦略とその戦術としてのアクティブサポート最愛戦略とその戦術としてのアクティブサポート
最愛戦略とその戦術としてのアクティブサポート
 
20160416 jaws days 2016 re cap
20160416 jaws days 2016 re cap20160416 jaws days 2016 re cap
20160416 jaws days 2016 re cap
 
メンバーズグループ福岡Meetup/メンバーズエッジに入社して変わったこと
メンバーズグループ福岡Meetup/メンバーズエッジに入社して変わったことメンバーズグループ福岡Meetup/メンバーズエッジに入社して変わったこと
メンバーズグループ福岡Meetup/メンバーズエッジに入社して変わったこと
 
Decade 2014
Decade 2014Decade 2014
Decade 2014
 
20191204_WordPressの教科書出版記念イベント_WordPress開発のツボ_森下
20191204_WordPressの教科書出版記念イベント_WordPress開発のツボ_森下20191204_WordPressの教科書出版記念イベント_WordPress開発のツボ_森下
20191204_WordPressの教科書出版記念イベント_WordPress開発のツボ_森下
 
Mercari ogawa cs_youngmeetup_20170123_今年の抱負
Mercari ogawa cs_youngmeetup_20170123_今年の抱負Mercari ogawa cs_youngmeetup_20170123_今年の抱負
Mercari ogawa cs_youngmeetup_20170123_今年の抱負
 
非(エンジニア|プログラマ)でも知っておきたい正規表現【第5回 WordBench山口 セッション2】
非(エンジニア|プログラマ)でも知っておきたい正規表現【第5回 WordBench山口 セッション2】非(エンジニア|プログラマ)でも知っておきたい正規表現【第5回 WordBench山口 セッション2】
非(エンジニア|プログラマ)でも知っておきたい正規表現【第5回 WordBench山口 セッション2】
 
【ITベンチャーを支えるテクノロジー】成長し続けるサービスを支える技術|ランサーズ株式会社
【ITベンチャーを支えるテクノロジー】成長し続けるサービスを支える技術|ランサーズ株式会社【ITベンチャーを支えるテクノロジー】成長し続けるサービスを支える技術|ランサーズ株式会社
【ITベンチャーを支えるテクノロジー】成長し続けるサービスを支える技術|ランサーズ株式会社
 
Web × プログラミング ~JavaScript編~(2017/2/16)
Web × プログラミング ~JavaScript編~(2017/2/16)Web × プログラミング ~JavaScript編~(2017/2/16)
Web × プログラミング ~JavaScript編~(2017/2/16)
 
今から学ぶ!jQuery Mobile!
今から学ぶ!jQuery Mobile!今から学ぶ!jQuery Mobile!
今から学ぶ!jQuery Mobile!
 
Mercari ogawa csjam6_20161020_csの仲間をつくろう
Mercari ogawa csjam6_20161020_csの仲間をつくろうMercari ogawa csjam6_20161020_csの仲間をつくろう
Mercari ogawa csjam6_20161020_csの仲間をつくろう
 
宮崎の山の中でリモートワークしてみた
宮崎の山の中でリモートワークしてみた宮崎の山の中でリモートワークしてみた
宮崎の山の中でリモートワークしてみた
 
社内SEはVBAを投げ捨ててPHPの夢を見るか?
社内SEはVBAを投げ捨ててPHPの夢を見るか?社内SEはVBAを投げ捨ててPHPの夢を見るか?
社内SEはVBAを投げ捨ててPHPの夢を見るか?
 
Wakayama.rbが目指すもの
Wakayama.rbが目指すものWakayama.rbが目指すもの
Wakayama.rbが目指すもの
 
WebPayからStripeに移行した話
WebPayからStripeに移行した話WebPayからStripeに移行した話
WebPayからStripeに移行した話
 
アジャイルマインドの重要性
アジャイルマインドの重要性アジャイルマインドの重要性
アジャイルマインドの重要性
 

En vedette

海外で注目されてるJs framework “mithril”の特徴
海外で注目されてるJs framework “mithril”の特徴海外で注目されてるJs framework “mithril”の特徴
海外で注目されてるJs framework “mithril”の特徴Shoyo Kyou
 
MySQLの文字コード事情
MySQLの文字コード事情MySQLの文字コード事情
MySQLの文字コード事情Masahiro Tomita
 
Mithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワークMithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワークsairoutine
 
シリコンスタジオによる HDR出力対応の理論と実践
シリコンスタジオによるHDR出力対応の理論と実践シリコンスタジオによるHDR出力対応の理論と実践
シリコンスタジオによる HDR出力対応の理論と実践Silicon Studio Corporation
 
マジシャンズデッド ポストモーテム ~マテリアル編~ (株式会社Byking: 鈴木孝司様、成相真治様) #UE4DD
マジシャンズデッド ポストモーテム ~マテリアル編~ (株式会社Byking: 鈴木孝司様、成相真治様) #UE4DDマジシャンズデッド ポストモーテム ~マテリアル編~ (株式会社Byking: 鈴木孝司様、成相真治様) #UE4DD
マジシャンズデッド ポストモーテム ~マテリアル編~ (株式会社Byking: 鈴木孝司様、成相真治様) #UE4DDエピック・ゲームズ・ジャパン Epic Games Japan
 
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介Drecom Co., Ltd.
 
CEDEC2016 「コントラスト」で考えるゲームデザイン・レベルデザイン
CEDEC2016 「コントラスト」で考えるゲームデザイン・レベルデザインCEDEC2016 「コントラスト」で考えるゲームデザイン・レベルデザイン
CEDEC2016 「コントラスト」で考えるゲームデザイン・レベルデザインKouji Ohno
 
Unity道場 14 Shader Forge 102 ~ShaderForgeをつかって学ぶシェーダー入門~ カスタムライティング/トゥーンシェーダー編
Unity道場 14 Shader Forge 102 ~ShaderForgeをつかって学ぶシェーダー入門~ カスタムライティング/トゥーンシェーダー編Unity道場 14 Shader Forge 102 ~ShaderForgeをつかって学ぶシェーダー入門~ カスタムライティング/トゥーンシェーダー編
Unity道場 14 Shader Forge 102 ~ShaderForgeをつかって学ぶシェーダー入門~ カスタムライティング/トゥーンシェーダー編小林 信行
 
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組みDeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組みToshiharu Sugiyama
 

En vedette (12)

海外で注目されてるJs framework “mithril”の特徴
海外で注目されてるJs framework “mithril”の特徴海外で注目されてるJs framework “mithril”の特徴
海外で注目されてるJs framework “mithril”の特徴
 
MySQLの文字コード事情
MySQLの文字コード事情MySQLの文字コード事情
MySQLの文字コード事情
 
彼女の紹介
彼女の紹介彼女の紹介
彼女の紹介
 
Mithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワークMithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワーク
 
Mithril
MithrilMithril
Mithril
 
シリコンスタジオによる HDR出力対応の理論と実践
シリコンスタジオによるHDR出力対応の理論と実践シリコンスタジオによるHDR出力対応の理論と実践
シリコンスタジオによる HDR出力対応の理論と実践
 
マジシャンズデッド ポストモーテム ~マテリアル編~ (株式会社Byking: 鈴木孝司様、成相真治様) #UE4DD
マジシャンズデッド ポストモーテム ~マテリアル編~ (株式会社Byking: 鈴木孝司様、成相真治様) #UE4DDマジシャンズデッド ポストモーテム ~マテリアル編~ (株式会社Byking: 鈴木孝司様、成相真治様) #UE4DD
マジシャンズデッド ポストモーテム ~マテリアル編~ (株式会社Byking: 鈴木孝司様、成相真治様) #UE4DD
 
大規模タイトルにおけるエフェクトマテリアル運用 (SQEX大阪: 林武尊様) #UE4DD
大規模タイトルにおけるエフェクトマテリアル運用 (SQEX大阪: 林武尊様) #UE4DD大規模タイトルにおけるエフェクトマテリアル運用 (SQEX大阪: 林武尊様) #UE4DD
大規模タイトルにおけるエフェクトマテリアル運用 (SQEX大阪: 林武尊様) #UE4DD
 
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
 
CEDEC2016 「コントラスト」で考えるゲームデザイン・レベルデザイン
CEDEC2016 「コントラスト」で考えるゲームデザイン・レベルデザインCEDEC2016 「コントラスト」で考えるゲームデザイン・レベルデザイン
CEDEC2016 「コントラスト」で考えるゲームデザイン・レベルデザイン
 
Unity道場 14 Shader Forge 102 ~ShaderForgeをつかって学ぶシェーダー入門~ カスタムライティング/トゥーンシェーダー編
Unity道場 14 Shader Forge 102 ~ShaderForgeをつかって学ぶシェーダー入門~ カスタムライティング/トゥーンシェーダー編Unity道場 14 Shader Forge 102 ~ShaderForgeをつかって学ぶシェーダー入門~ カスタムライティング/トゥーンシェーダー編
Unity道場 14 Shader Forge 102 ~ShaderForgeをつかって学ぶシェーダー入門~ カスタムライティング/トゥーンシェーダー編
 
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組みDeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
DeNA_Techcon2017_DeNAでのチート・脆弱性診断への取り組み
 

Similaire à まだまだ戦えるweb!mithril.js最初の1歩

【勉強会】 はじめてのRuby on Rails 4入門
【勉強会】 はじめてのRuby on Rails 4入門【勉強会】 はじめてのRuby on Rails 4入門
【勉強会】 はじめてのRuby on Rails 4入門Yuta Nakamura
 
Deno 向け WEB 開発用のツールを作ったので 紹介します
Deno 向け WEB 開発用のツールを作ったので 紹介しますDeno 向け WEB 開発用のツールを作ったので 紹介します
Deno 向け WEB 開発用のツールを作ったので 紹介します虎の穴 開発室
 
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア leverages_event
 
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニアヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニアIsamu Suzuki
 
大規模Redisサーバ縮小化の戦い
大規模Redisサーバ縮小化の戦い大規模Redisサーバ縮小化の戦い
大規模Redisサーバ縮小化の戦いYuto Komai
 
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechconDeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechconDeNA
 
DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容sairoutine
 
H2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのかH2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのかIchito Nagata
 
SORACOM User Group Tokyo #10 | SORACOM US奮闘記! / SORACOMとIPアドレスと私
SORACOM User Group Tokyo #10 | SORACOM US奮闘記! / SORACOMとIPアドレスと私SORACOM User Group Tokyo #10 | SORACOM US奮闘記! / SORACOMとIPアドレスと私
SORACOM User Group Tokyo #10 | SORACOM US奮闘記! / SORACOMとIPアドレスと私SORACOM,INC
 
自動運転に向けた取り組みと安全管理
自動運転に向けた取り組みと安全管理自動運転に向けた取り組みと安全管理
自動運転に向けた取り組みと安全管理Kuwabara Kunihito
 
マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話Makoto Haruyama
 
Aws発表資料(dac) 20160721
Aws発表資料(dac) 20160721Aws発表資料(dac) 20160721
Aws発表資料(dac) 20160721Norikazu Yura
 
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れるレガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れるsairoutine
 
DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceDeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceMakoto Haruyama
 
ECCV2018 Everybody dance now論文紹介 (CV勉強会@関東)
ECCV2018 Everybody dance now論文紹介 (CV勉強会@関東)ECCV2018 Everybody dance now論文紹介 (CV勉強会@関東)
ECCV2018 Everybody dance now論文紹介 (CV勉強会@関東)Tenki Lee
 
20111203 忘年会・交流会LT_糟谷さん資料
20111203 忘年会・交流会LT_糟谷さん資料20111203 忘年会・交流会LT_糟谷さん資料
20111203 忘年会・交流会LT_糟谷さん資料WebSig24/7
 
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る虎の穴 開発室
 
rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~
rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~
rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~Ouka Yuka
 
Decade 20091215
Decade 20091215Decade 20091215
Decade 20091215武 河野
 

Similaire à まだまだ戦えるweb!mithril.js最初の1歩 (20)

【勉強会】 はじめてのRuby on Rails 4入門
【勉強会】 はじめてのRuby on Rails 4入門【勉強会】 はじめてのRuby on Rails 4入門
【勉強会】 はじめてのRuby on Rails 4入門
 
Deno 向け WEB 開発用のツールを作ったので 紹介します
Deno 向け WEB 開発用のツールを作ったので 紹介しますDeno 向け WEB 開発用のツールを作ったので 紹介します
Deno 向け WEB 開発用のツールを作ったので 紹介します
 
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
 
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニアヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
 
大規模Redisサーバ縮小化の戦い
大規模Redisサーバ縮小化の戦い大規模Redisサーバ縮小化の戦い
大規模Redisサーバ縮小化の戦い
 
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechconDeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
DeNAのゲームを支えるプラットフォーム Sakasho #denatechcon
 
DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容
 
H2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのかH2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのか
 
SORACOM User Group Tokyo #10 | SORACOM US奮闘記! / SORACOMとIPアドレスと私
SORACOM User Group Tokyo #10 | SORACOM US奮闘記! / SORACOMとIPアドレスと私SORACOM User Group Tokyo #10 | SORACOM US奮闘記! / SORACOMとIPアドレスと私
SORACOM User Group Tokyo #10 | SORACOM US奮闘記! / SORACOMとIPアドレスと私
 
自動運転に向けた取り組みと安全管理
自動運転に向けた取り組みと安全管理自動運転に向けた取り組みと安全管理
自動運転に向けた取り組みと安全管理
 
マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話
 
Aws発表資料(dac) 20160721
Aws発表資料(dac) 20160721Aws発表資料(dac) 20160721
Aws発表資料(dac) 20160721
 
大規模JavaScript開発
大規模JavaScript開発大規模JavaScript開発
大規模JavaScript開発
 
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れるレガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
 
DeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a ServiceDeNAのゲーム開発を支える Game Backend as a Service
DeNAのゲーム開発を支える Game Backend as a Service
 
ECCV2018 Everybody dance now論文紹介 (CV勉強会@関東)
ECCV2018 Everybody dance now論文紹介 (CV勉強会@関東)ECCV2018 Everybody dance now論文紹介 (CV勉強会@関東)
ECCV2018 Everybody dance now論文紹介 (CV勉強会@関東)
 
20111203 忘年会・交流会LT_糟谷さん資料
20111203 忘年会・交流会LT_糟谷さん資料20111203 忘年会・交流会LT_糟谷さん資料
20111203 忘年会・交流会LT_糟谷さん資料
 
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
【20220120 toranoana.deno#4】deno を使って「ログイン」するサービスを作る
 
rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~
rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~
rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~
 
Decade 20091215
Decade 20091215Decade 20091215
Decade 20091215
 

まだまだ戦えるweb!mithril.js最初の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. ご清聴ありがとうございました!