ゲームだけじゃないhtml5

41
ゲームだけじゃないHTML5 技術本部 システム研究開発センター 下田 豆ナイトPresents HTML5ナイト ~その導入から活用まで~」 2013/3/21 Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 1

Upload: osamu-shimoda

Post on 28-May-2015

1.525 views

Category:

Technology


1 download

DESCRIPTION

2013/3/21に行われた 豆ナイトPresents「HTML5ナイト~その導入から活用まで~」 の発表資料です。

TRANSCRIPT

Page 1: ゲームだけじゃないHTML5

ゲームだけじゃないHTML5

技術本部 システム研究開発センター 下田 修

豆ナイトPresents 「HTML5ナイト ~その導入から活用まで~」

2013/3/21 Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 1

Page 2: ゲームだけじゃないHTML5

自己紹介

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 2

下田 修(しもだ おさむ)

所属はバリバリのSIer…ですがその中の研究所で 技術開発したり案件支援したりしてます

最近はフロントに近いところをメインに見ています 会社ではJava(JavaEE, Seasar2), HTML/CSS/JavaScript,

Flex(Flash)やWPF(.Net)など “hifive”というHTML5ベースの

Webアプリケーション開発プラットフォームを開発してます

Page 3: ゲームだけじゃないHTML5

アジェンダ

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 3

HTML5に至る流れをさらっとおさらい HTML5×企業システム 「はじめてのHTML5」をやってみたら HTML5×開発一回り とあるSIerの開発基盤、の場合

Page 4: ゲームだけじゃないHTML5

思えば遠くへ来たものです

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 4

<video> • (前史) : IE6長期政権 • 2008 : iPhone3G発売、Chrome1.0リリース • 2009 : HT-03A(Android1.6)発売、Packager for iPhone発表 • 2010 : Flash vs HTML5

“Thoughts on Flash”、Flash Player 10.1 for Android リリース • 2011 : IE9リリース、Firefoxが高速リリースサイクルを採用 • 2012 : ブラウザプラグイン排除の流れ

Flash Player for Android提供終了、IE10におけるActiveX P-in廃止

• 2013 : HTML5が「第3のモバイルOS」アプリ開発技術の中心

Page 5: ゲームだけじゃないHTML5

「HTML5」に対する認識

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 5

Flash(特に広告・ビデオ)の代替技術 ゲームプラットフォーム スマートフォン向けWebサイト構築技術 マルチプラットフォーム対応 アプリケーション開発技術

5

「ドキュメント記述言語」(静的)から

「アプリケーションプラットフォーム」(動的)へ

CSS3

JavaScript with APIs

Web Storage

Web Workers

Geolocation

Indexed DB (Web SQL

DB)

Offline App Caching

Canvas iSVG Video/Audio

HTML5 Forms

狭義

広義

File API

WebSocket

XHR Level2 (Ajax)

今日のスコープはこちら

Page 6: ゲームだけじゃないHTML5

×企業システム

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 6

Page 7: ゲームだけじゃないHTML5

企業システムのトレンド

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 7

クラウド ・場所を選ばない可搬性 - 肌身離さず持っている ・直観的な指先での操作性

・資料作成(図形・テキスト) ・大きな画面での参照 ・パワフルな計算能力 ・緻密な操作性 ・豊富なアプリケーション

・大きな画面での参照 - 対面での情報共有 ・十分なバッテリー ・直観的な指先での操作性

クラウド、モバイル、ビッグデータ、ソーシャル BYOD、BI/DSS、コンシューマライゼーション、・・・

Page 8: ゲームだけじゃないHTML5

HTML5って今までと何が違うんだろう…?

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 8

HTML5を活用したWebシステム よくある社内Webシステム

• 視覚的表現 • ユーザー操作にリアルタイムに反応 • 動的な部分画面更新

• データを単純表示 • 画面遷移ベースの一括更新

Page 9: ゲームだけじゃないHTML5

業務アプリ分野におけるHTML5への期待

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 9

データ可視化、BI 高い表現力 より良い操作性 リアルタイム(差分更新) ハイパフォーマンス

スマートデバイス対応 営業・販売業務の高度化 B2Cサイトのスマホ対応 BYOD オフライン動作とデータ同期

互換性向上 ベースラインの確実な動作

実現のためのテクノロジ

• Canvas • SVG • CSS3 • File API • データベース

(IndexedDB, WebSQLDB)

• XHR2(Ajax)

• WebSocket • CSS Media Queries • デバイス連携

(センサー、カメラ、…)

• AppCache • Web Components • WebRTC etc.

技術はある! (いろいろ大変なことも

あるけど…)

Page 10: ゲームだけじゃないHTML5

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 10

Page 11: ゲームだけじゃないHTML5

例:QosmoNavire(コスモナヴィール)の場合

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 11

目的 DCにおける障害監視・原因追究 システム構成・状態の可視化

利用技術 SVG CSS3(CSS Transform等) その他Ajax、ES5 API、DOM Level3

API 等 特長:高速描画 ノード・エッジ等のレイヤリング 可視範囲外の描画の省略 データ層⇒ビュー層への更新伝搬

Page 12: ゲームだけじゃないHTML5

「はじめてのHTML5」をやってみたら

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 12

Page 13: ゲームだけじゃないHTML5

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 13

5人集めてスマホ向けアプリを作ってみた 新人~ふつうのWeb/Javaアプリ開発の経験ありの人 JavaScriptは「バリデータや簡単なスクリプトくらいは…」という程度

jQueryは「勉強会で聞いたことはある…」

アプリの仕様 スマートフォン向けアプリ 基本的なCRUD、Ajax、グラフ描画 jQuery / jQuery Mobile使用 HTML5っぽいものを詰め込む

<video>、WebSQLDB、CSS Animation、Media Queries、 Server-Sent Event、…

とりあえず各自調べながら作ってみよう!

Page 14: ゲームだけじゃないHTML5

スコープを意識しない記述でコンフリクト

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 14

A.js

B.js

同時にJS読み込んだら 動かないんですけど

Page 15: ゲームだけじゃないHTML5

業務処理と画面操作の混在

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 15

db.transaction(function(tr) { var query = "INSERT INTO Food(FoodId, Name, …); tr.executeSql(query, [++lastFoodId + "", name, foodCategory, getFoodScore(calorie, foodCategory), calorie], function(tr, rs) { makeFoodListItem(lastFoodId, name, calorie, foodCategory, getFoodScore(calorie, foodCategory)); $("#regist_food_name").val(""); } ); });

DB操作/サーバー通信

計算ロジック呼出

画面更新

「ごめんサーバAPI仕様 ちょっと変えた」

「…どこ変えればいいんだ…」

Page 16: ゲームだけじゃないHTML5

デバッグコードの混入

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 16

「ここボタン押してから重いなぁ」 「調べ、…ますか…」

Page 17: ゲームだけじゃないHTML5

ビュー生成方法もいろいろ

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 17

var foodCountDiv = document.createElement("div"); foodCountDiv.setAttribute("class", "food_count_div"); var downCountButton = document.createElement("input"); downCountButton.value = "-"; downCountButton.setAttribute("onclick", "downFoodCount(" + foodId + ")");

「リストにあてるCSSクラス変えて」 「GREP→全置換→動かない…」

$(‘<div class=“food_count_div”><input value=“’ + DEFAULT_VALUE + ’” onclick=“downFoodCount(‘ + foodId + ’)”>’).appendTo(‘.list’);

Page 18: ゲームだけじゃないHTML5

イベントハンドラの書き方もバラバラ

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 18

• <li onclick=“func()”> • $(‘.item’).bind(‘click’, function(){}); • $(‘.item’).click(function(){}); • $(‘ul’).on(‘.item’, ‘click’, function(){});

「onclickはさすがにNGだよねー」 「ところでbind()とclick()って

何が違うんですか?」

Page 19: ゲームだけじゃないHTML5

もちろん画面ロード時の初期化処理だって

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 19

• (function(){})(); • $(function(){}); • $(window).bind(‘load’, function(){}); • init();

「なぜかちょっとずつ 動くタイミングが違う…」

Page 20: ゲームだけじゃないHTML5

×開発一回り

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 20

Page 21: ゲームだけじゃないHTML5

HTML5×開発一回り

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 21

要件定義 設計 実装 テスト 運用・保守

サーバーサイドで通ってきた道を 今度はクライアントサイドで

実現可能性 互換性

開発環境

生産性向上

アジャイル

自動化 アーキテクチャ

見積り

人材確保

分業/体制 実機動作検証

Page 22: ゲームだけじゃないHTML5

実現可能性 互換性

開発環境

生産性向上

アジャイル

自動化 アーキテクチャ

見積り

人材確保

分業/体制 実機動作検証

要素技術の状況

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 22

MV*フレームワーク テストフレームワーク

CI

HTML5対応 IDE&ツール

BaaS

JS変換型言語 デバッグツール UIフレームワーク

要件定義 設計 実装 テスト 運用・保守

情報収集

やってみる

テストサービス

技術面をカバーするツール・ライブラリ・フレームワークは 揃いつつある

Page 23: ゲームだけじゃないHTML5

個別要素技術の紹介(設計・実装)

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 23

DOM操作(&基本的なブラウザ差異吸収) jQuery、Underscore、…

MV*フレームワーク Backbone.js、Knockout、AngularJS、hifive、…

CSSフレームワーク SCSS、LESS、…

ビューテンプレートエンジン Hogan、EJS、Handlebars、…

UIフレームワーク Bootstrap、jQueryUI、YUI、jQuery Mobile、…

旧ブラウザ対応 IE9.js、html5shiv、…

ドキュメント生成 JSDoc3、…

デバッグツール ブラウザ内蔵開発者ツール、Adobe Shadow、…

Page 24: ゲームだけじゃないHTML5

個別要素技術の紹介(テスト)

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 24

テストフレームワーク QUnit、Jasmine、JsTestDriver、Selenium、…

テストモック作成ライブラリ Sinon.JS、…

CI (テストフレームワークとも連携) Jenkins、Testacular、…

カバレッジ計測 JSCover、…

ソースコード静的検査 JSLint、JSHint、…

JSソースコード最適化 Closure Compiler、UglifyJS、…

実機動作検証サービス AppKitBox/Remote TestKit for Android(NTTレゾナントさん)

Page 25: ゲームだけじゃないHTML5

個別要素技術の紹介(その他)

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 25

言語(JavaScriptの問題点を解決) 静的型付け:TypeScript、Haxe、JSX、… Dart、CoffeeScript、…

開発環境 Sencha、appMobi、… VisualStudio、WebStorm、… Adobe Edge、Dreamweaver、…

ハイブリッドアプリケーション開発(スマートデバイス向け)

PhoneGap、Trigger.io、…

Page 26: ゲームだけじゃないHTML5

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 26

技術面をカバーするツール・ライブラリ・ フレームワークは揃いつつある

自分たちのニーズ、HTML5を採用して 得たいメリットを考慮して適切なものを選択

勿論、これがなかなか大変なわけですが・・・

Page 27: ゲームだけじゃないHTML5

とあるSIerの開発基盤、の場合

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 27

Page 28: ゲームだけじゃないHTML5

こんなものを作ってます。 オープンソースです。

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 28

www.htmlhifive.com

Page 29: ゲームだけじゃないHTML5

実現可能性 互換性

開発環境

生産性向上

アジャイル

自動化 アーキテクチャ

見積り

人材確保

分業/体制 実機動作検証

【再掲】要素技術の状況

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 29

MV*フレームワーク テストフレームワーク

CI

HTML5対応 IDE&ツール

BaaS

JS変換型言語 デバッグツール UIフレームワーク

要件定義 設計 実装 テスト 運用・保守

情報収集

やってみる

テストサービス

ある程度以上の規模の案件を成功させるには 整合性のある技術選択と人間系の整備が必須

Page 30: ゲームだけじゃないHTML5

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 30

ユーザー • フレームワーク • 高速・高機能部品 • 開発ガイド • 支援ツール • 開発者教育

• サンプルアプリ • すぐに使える

クラウドサービス • HTML5技術の啓蒙

協働 • アジャイル・高速プロトタイピング • 分散/分担開発の枠組み

開発者

Page 31: ゲームだけじゃないHTML5

hifiveの場合

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 31

開発支援ツール

開発コミュニティ

サンプル・ チュートリアル

コアフレームワーク ランタイム(自製)

言語仕様 実行環境

単体テスト(QUnit)

静的検査(JSLint/Hint)

チーム開発で 困らない JSの書き方 ・JSDoc ・コード補完/アウトライン ・スコープの考慮

その他ノウハウ ・パフォーマンスを考慮した記述、etc.

開発環境 (Eclipse)

カバレッジ (JSCoverage)

ツール・テスト

規約・ガイド

サーバーサイド ・REST/JSON ・データ同期機構

MVC、 疑似的なデータ型定義

UI(ビュー層)は 他ライブラリを利用

Page 32: ゲームだけじゃないHTML5

なぜこうしたか?

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 32

コアアーキテクチャ 画面機能の柔軟な分割/構造化とライフサイクル制御は必須 敷居を低く

JavaScriptのプロ、でなくてもミスしにくいような書き方に誘導

保守・仕様変更時の致命的なデータ不整合を防ぎたい

UI ブラウザごとのサポート度合い・挙動の違いが激しい

基本的なUI部品は他ライブラリに任せる(良いものが既にある)

高速動作/高機能が求められるものは順次開発

まずは使い始めて見る、実行しながらノウハウを蓄える!

Page 33: ゲームだけじゃないHTML5

得られたメリット例(技術系)

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 33

コードの見通しが良くなった 機能ごとに分担して設計・実装

非同期プログラミングのスタイル統一 HTML5な世界では「非同期」の扱いは重要 FWのサポートにより非同期処理のエラー処理を統一

テストしやすくなった 単体テスト/カバレッジ計測が容易

今に始まったことではない、 でも、必要なことを

確実にやってはじめて 規模の増加に対応できる

Page 34: ゲームだけじゃないHTML5

例:テストが大変。どうする?

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 34

hifiveのフレームワークランタイムの テスト環境の組み合わせ: ブラウザ:5 jQueryのバージョン:10 ビルド:2 IEのDocumentMode:2~4

さらに、手持ちのスマホ15機種でテスト

300パターン

300パターン

これらの組み合わせなので…

Page 35: ゲームだけじゃないHTML5

CI環境構築例

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 35

Jenkins

VCS(github)

各ブラウザ@VM Jenkins Agent

テストコード ホストサーバ

共有フォルダ

テストホストサーバ

kill agent

① ② ③

⑦ ⑧ ⑨

• 環境組み合わせごとにジョブを作成 • VM上の各ブラウザでQUnitテスト

⇒1ランナーごと結果をサーバーに送信 ⇒JUnitXML形式に変換して保存 ⇒Jenkinsに吸い上げ

• スマホの場合はランナーを順次自動実行 ⇒最後にまとめて吸い上げる

テストクライアント

Page 36: ゲームだけじゃないHTML5

得られたメリット例(人間系)

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 36

見積りの精度向上 アーキテクチャを整備することで計数が可能に 画面数、コントローラ数、イベントハンドラ数、サーバAPI数、… スクラッチ or Not、1画面内のハンドラ数、…などに応じて 係数をかける

要件の早期収束・“アジャイル”への対応 動きの多い画面はプロトタイプを作る プロトタイプ自体をより迅速に作る仕組みも整備中

ノウハウの蓄積 古いIE、Android(特に2.x系)はやっぱりつらい ライブラリにフィードバックし、同じ過ちを繰り返さない

Page 37: ゲームだけじゃないHTML5

おわりに

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 37

Page 38: ゲームだけじゃないHTML5

おわりに

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 38

全てのアプリ、全ての画面、全ての機能を 今すぐ「HTML5化」しなくてもよい HTML5は今までのWebの延長線上にある。 これは大きなメリット

本当に必要な所から、必要十分性を確かめて取り組む

ツール・フレームワーク・開発環境等 必要なパーツは出てきている “定番化”にはもう少し時間はかかるか ノウハウ蓄積をそろそろ始めてみませんか?

Page 39: ゲームだけじゃないHTML5

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 39

HTML “Living Standard”

Page 40: ゲームだけじゃないHTML5

商標について

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 40

NS Solutions、NS(ロゴ)、NSSOLは、新日鉄住金ソリューションズ株式会社の登録商標です。

hifive、hifive(ロゴ)は、新日鉄住金ソリューションズ株式会社の登録商標です。

QosmoNavire\コスモナヴィールは、新日鉄住金ソリューションズ株式会社の登録商標です。

JAVAは、米国ORACLE Corp.の登録商標です。

Windowsは、米国Microsoft Corp.の米国及びその他の国における商標又は登録商標です。

HTML5 Logo by W3C.

その他本文記載の会社名及び製品名は、それぞれ各社の商標又は登録商標です。

Page 41: ゲームだけじゃないHTML5

Copyright (C) 2013 NS Solutions Corporation, All Rights Reserved. 41

www.htmlhifive.com