SlideShare a Scribd company logo
1 of 33
Download to read offline
JavaScriptのクロスプラット
フォーム開発について色々
2013­09­10 20:30
@sugimoto1981 
自己紹介
1.杉本 吉章 ( @sugimoto1981 )
2.株式会社 音生
3.フロントエンドエンジニア…?
作ってるものとかはgithub見てください(๑╹‫ڡ‬ )╹๑
https://github.com/ysugimoto
Agenda
1.クライアントサイドJavaScript
2.スマートフォンJavaScript(Web Browser)
3.スマートフォンJavaScript(Native)
4.デスクトップアプリJavaScript
Case1: クライアントサイドJavaScript
最近のJavaScript
1.シングルページ / Statefulアプリケーション
– JavaScript MVC / Worker Thread
2.高度なアニメーション/グラフィック表現
– Canvas / WebGL
3.幅広くなったNetwork周り
– WebSocket / Cross Origin XHR
4.サーバーサイドでもJavaScript
– Node.js
and more...
周辺技術の多様化
1. ECMAScript...5? 6?
– それこのブラウザで使えるんですか?
2. Gruntで自動化する人が増えた
– JavaScriptをビルドする/ 周辺ツールとの組み合わせ
3. altJSで型安全に書く人も
– Haxe / TypeScript
4. アプリケーション規模の拡大(コードステップ数の増加)
– メンテナブル / テスタブルな設計が求められるように
– jQueryで書き散らしたコードだと近い将来死ぬ
5. IE6対応してたら仙人と呼ばれるようになった
特に紹介するツールがないのでこの辺で…
Node.js / Gruntについては後半で紹介しているアプリで使っています
Case 2:
スマートフォン
JavaScript
(Web Browser)
スマートフォンでもクロスブラウザ…
1. iOSはバージョンいくつから対応ですか
– 実機用意してもらえるんですよね?
2. Androidェ・・・
3. リクエスト減らして!
4. 画像最適化して!
5. リフロー/リペイントに気を遣って!
6. 一つ一つの処理は可能な限り軽くして!
シビアな処理対応の要求
1.ライブラリの選定から考える
– ネットワークコストは?実行コストは?
– そのライブラリは必ず必要?
2.要求知識も広くなる
– HTTPの仕組みと知識も必要になってくる
3.ブラウザの気持ちを知る、ブラウザの気持ちになる
– リフロー/ リペイントのタイミング制御
– Composite Layerの理解とか
4.Chrome Devtoolの使い方覚えなきゃ
ここも紹介するツールがないのでこの辺で…
Case 3:
スマートフォン
JavaScript
(Native)
開発ツール(サービス)
今日はTitanium触ってみたので話します。
(本当はHerlockの話したかったんですが、
βアカウントが開放されるのがギリギリすぎた)
Titanium Alloy
1. Appcerelatorが公式に提供しているMVC-Framework
2. Node.js(npm)で提供されている
3. Railsライクなgeneratorが使える
4. ModelはBackbone.jsを継承している
– Collectionも使える(Modelと同じクラスで定義するのでちょっと違和感が
ある)
– SQLiteアダプタが使えるのでDB操作が楽
– RESTアダプタが欲しい
5. Viewはxmlで定義する
How to Install?
$ npm install -g alloy
Document
http://docs.appcelerator.com/titanium/3.0/#!/guide/Alloy_Quick_Start
お題
今日のイベントの概要・参加者リストを取ってきて
表示する(だけの)アプリをTitanium Alloyで
出来上がったものがこちら
https://github.com/ysugimoto/HTML5_Study_Nagoya_7/tree/master/titanium-alloy
GenyMotion
Genymotion
1.標準のエミュレータに比べて爆速で動くエミュレータ
2.ただしAndroid4.xからのデバイスのみ
3.VirtualBoxと連携して動作する
4.OpenGLを使っているらしくヌルヌル動く
これからのAndroid開発はこれを使うのが良いんじゃないでしょうか
https://cloud.genymotion.com/page/customer/login/?next=/
How to Install and build
1. 公式サイトにサインアップ、ログイン
2. それぞれのプラットフォームのファイルをダウンロード
3. ビルドしてパスを通す
4. 好きなデバイスを作成してローンチ
5. デバイスはVirtualBox経由でネットワーク接続されているので、デ
バッグビルドの転送はちょっと手間がかかる
Titaniumとの連携は下記を参照
http://qiita.com/sngmr/items/d7c244114d7242c681c5
または、サンプルアプリでgruntビルドタスクを書いたので参考にしてください
Case 4:
デスクトップアプリ
JavaScriptでデスクトップアプリ
1. Tide SDK
2. node-webkit
3. Windowsは標準で作成可能
node-webkitを触ってみたので話します。
node-webkit
1. Chromiumをベースにnodeを再実装しているらしい
– なにそれキモイ
2. nodeが動く→npmが使える
– 多様なモジュールが利用できる
3. クロスプラットフォーム
4.採用例も少しある
– Prepros http://alphapixels.com/prepros/
こんな感じ
<script>
var fs = require('fs');
fs.readFile('/path/to/file', function(err, buffer) {
var element = document.getElementById('hogehoge');
element.innerHTML = buffer;
});
</script>
!?
DOM meets node
Hou to install and build
1. GithubからOS用のパッケージをダウンロード
2. index.html作成
3. package.json作成
4. コマンド実行でコンパイル
5. アプリケーション実行
自分でビルドするのは結構しんどい・・・
パッケージのダウンロード
https://github.com/rogerwang/node-webkit
index.htmlの作成
普通のHTML
package.jsonの作成
npmのpakcage.jsonといい感じにマージされる
コマンド実行でコンパイル
$ zip app.nw /path/to/project/* ­r
実際はzip圧縮しているだけ
node_modulesをバンドルしておけばnpmがrequireで使える
Windowsの場合は一旦.zipにしてからリネームでOK(未検証)
アプリケーション実行
$ /usr/local/bin/nw app.nw
パッケージ内のnwコマンドの引数にアプリケーションを渡す
Windowsの場合はapp.nwをnw.exeにDrag-Dropで起動
実行ファイルにしたい場合は・・・
$ cp nw.pak /path/to/project/
$ zip app.nw /path/to/project/* ­r
$ cat /usr/local/bin/nw app.nw > app
$ chmod +x app
お題
今日のイベントの概要・参加者リストを取ってきて
表示する(だけの)アプリをnode-webkitで
出来上がったものがこちら
https://github.com/ysugimoto/HTML5_Study_Nagoya_7/tree/master/node-webkit
感想など
1. まだ不安定な部分が結構ある
– watchしてるとissue(というか質問)がバシバシ
– 特にメディア周りがちょっと…
2. さくっとデスクトップアプリ作るのにいいかも
– Webアプリのデータ入力I/Fとか監視ツールとか
3. altJS使いながら書けばそれっぽくなる(かも)
結構期待している
ありがとうございました
Photos in this slide:
http://bit.ly/15JSSbq / http://bit.ly/16fbJhO
http://bit.ly/1e9uwkw/ http://bit.ly/14z6Zp9

More Related Content

What's hot

【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオン
【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオン【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオン
【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオンKohki Nakaji
 
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −Kohei Asai
 
モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目大樹 小倉
 
continuatioN Linking
continuatioN LinkingcontinuatioN Linking
continuatioN LinkingKouji Matsui
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011Hiroh Satoh
 
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときNode.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときRyunosuke SATO
 
はじめる Ember.js!! ~ Getting started with ember.js ~
はじめる Ember.js!! ~ Getting started with ember.js ~はじめる Ember.js!! ~ Getting started with ember.js ~
はじめる Ember.js!! ~ Getting started with ember.js ~Ryunosuke SATO
 
Type scriptmemo
Type scriptmemoType scriptmemo
Type scriptmemoytanno
 
YAPC::Asia 2010 / 前夜祭
YAPC::Asia 2010 / 前夜祭YAPC::Asia 2010 / 前夜祭
YAPC::Asia 2010 / 前夜祭Yuji Shimada
 
いろんなCRuby on windows
いろんなCRuby on windowsいろんなCRuby on windows
いろんなCRuby on windows真吾 森
 
Javascriptのあれやこれやをまとめて説明してみる
Javascriptのあれやこれやをまとめて説明してみるJavascriptのあれやこれやをまとめて説明してみる
Javascriptのあれやこれやをまとめて説明してみるShunji Konishi
 
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~Ryunosuke SATO
 
SignalRブートキャンプ
SignalRブートキャンプSignalRブートキャンプ
SignalRブートキャンプKouji Matsui
 
Non blocking and asynchronous
Non blocking and asynchronousNon blocking and asynchronous
Non blocking and asynchronousNorio Kobota
 

What's hot (20)

【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオン
【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオン【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオン
【サポーターズCoLab勉強会】「美少女になりたい…」お手軽VTuber入門ハンズオン
 
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
 
モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目
 
continuatioN Linking
continuatioN LinkingcontinuatioN Linking
continuatioN Linking
 
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
 
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときNode.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
 
はじめる Ember.js!! ~ Getting started with ember.js ~
はじめる Ember.js!! ~ Getting started with ember.js ~はじめる Ember.js!! ~ Getting started with ember.js ~
はじめる Ember.js!! ~ Getting started with ember.js ~
 
Type scriptmemo
Type scriptmemoType scriptmemo
Type scriptmemo
 
JavaScript TDD紹介 #agilesamurai
JavaScript TDD紹介 #agilesamuraiJavaScript TDD紹介 #agilesamurai
JavaScript TDD紹介 #agilesamurai
 
YAPC::Asia 2010 / 前夜祭
YAPC::Asia 2010 / 前夜祭YAPC::Asia 2010 / 前夜祭
YAPC::Asia 2010 / 前夜祭
 
いろんなCRuby on windows
いろんなCRuby on windowsいろんなCRuby on windows
いろんなCRuby on windows
 
Hello Ruby
Hello RubyHello Ruby
Hello Ruby
 
Javascriptのあれやこれやをまとめて説明してみる
Javascriptのあれやこれやをまとめて説明してみるJavascriptのあれやこれやをまとめて説明してみる
Javascriptのあれやこれやをまとめて説明してみる
 
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
 
SignalRブートキャンプ
SignalRブートキャンプSignalRブートキャンプ
SignalRブートキャンプ
 
Js mvc
Js mvcJs mvc
Js mvc
 
GroovyでJSON2014
GroovyでJSON2014GroovyでJSON2014
GroovyでJSON2014
 
Grimoire.js + HoloLens
Grimoire.js + HoloLensGrimoire.js + HoloLens
Grimoire.js + HoloLens
 
Non blocking and asynchronous
Non blocking and asynchronousNon blocking and asynchronous
Non blocking and asynchronous
 
Hello, Node.js
Hello, Node.jsHello, Node.js
Hello, Node.js
 

Similar to Html5 nagoya 07

ガラケーで楽しむオレJSの勧め
ガラケーで楽しむオレJSの勧めガラケーで楽しむオレJSの勧め
ガラケーで楽しむオレJSの勧めHiroshi Tokumaru
 
Html5概要 & デモ
Html5概要 & デモHtml5概要 & デモ
Html5概要 & デモyoshikawa_t
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発Yuta Matsumura
 
レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】Yasuhito Yabe
 
2016/12/17 ASP.NET フロントエンドタスク入門
 2016/12/17 ASP.NET フロントエンドタスク入門 2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門miso- soup3
 
Microservices and Servcie Mesh on Azure
Microservices and Servcie Mesh on AzureMicroservices and Servcie Mesh on Azure
Microservices and Servcie Mesh on AzureTsukasa Kato
 
キャッチアップJavaScriptビルド - ビルドから見るJSの今/2016春
キャッチアップJavaScriptビルド -ビルドから見るJSの今/2016春キャッチアップJavaScriptビルド -ビルドから見るJSの今/2016春
キャッチアップJavaScriptビルド - ビルドから見るJSの今/2016春Kondo Hitoshi
 
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験AdvancedTechNight
 
20130511 jjug ccc講演 さらばjsp JAXBとmixer2
20130511 jjug ccc講演 さらばjsp JAXBとmixer220130511 jjug ccc講演 さらばjsp JAXBとmixer2
20130511 jjug ccc講演 さらばjsp JAXBとmixer2Y Watanabe
 
Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in DartGoro Fuji
 
HTML5開発最前線
HTML5開発最前線HTML5開発最前線
HTML5開発最前線yoshikawa_t
 
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~normalian
 
Javascript を使ってみよう!!
Javascript を使ってみよう!!Javascript を使ってみよう!!
Javascript を使ってみよう!!誠 小林
 
Java scriptの進化
Java scriptの進化Java scriptの進化
Java scriptの進化maruyama097
 

Similar to Html5 nagoya 07 (20)

ガラケーで楽しむオレJSの勧め
ガラケーで楽しむオレJSの勧めガラケーで楽しむオレJSの勧め
ガラケーで楽しむオレJSの勧め
 
Html5概要 & デモ
Html5概要 & デモHtml5概要 & デモ
Html5概要 & デモ
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】
 
Grailsのススメ(仮)
Grailsのススメ(仮)Grailsのススメ(仮)
Grailsのススメ(仮)
 
いまさらJavaScript
いまさらJavaScriptいまさらJavaScript
いまさらJavaScript
 
2016/12/17 ASP.NET フロントエンドタスク入門
 2016/12/17 ASP.NET フロントエンドタスク入門 2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門
 
SocketStream入門
SocketStream入門SocketStream入門
SocketStream入門
 
Microservices and Servcie Mesh on Azure
Microservices and Servcie Mesh on AzureMicroservices and Servcie Mesh on Azure
Microservices and Servcie Mesh on Azure
 
キャッチアップJavaScriptビルド - ビルドから見るJSの今/2016春
キャッチアップJavaScriptビルド -ビルドから見るJSの今/2016春キャッチアップJavaScriptビルド -ビルドから見るJSの今/2016春
キャッチアップJavaScriptビルド - ビルドから見るJSの今/2016春
 
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験
 
20130511 jjug ccc講演 さらばjsp JAXBとmixer2
20130511 jjug ccc講演 さらばjsp JAXBとmixer220130511 jjug ccc講演 さらばjsp JAXBとmixer2
20130511 jjug ccc講演 さらばjsp JAXBとmixer2
 
Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in Dart
 
HTML5開発最前線
HTML5開発最前線HTML5開発最前線
HTML5開発最前線
 
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
 
Harmoware-VIS Tutorial
Harmoware-VIS TutorialHarmoware-VIS Tutorial
Harmoware-VIS Tutorial
 
Mvc conf session_5_isami
Mvc conf session_5_isamiMvc conf session_5_isami
Mvc conf session_5_isami
 
Javascript を使ってみよう!!
Javascript を使ってみよう!!Javascript を使ってみよう!!
Javascript を使ってみよう!!
 
いまさら触るAwt
いまさら触るAwtいまさら触るAwt
いまさら触るAwt
 
Java scriptの進化
Java scriptの進化Java scriptの進化
Java scriptの進化
 

Html5 nagoya 07