SlideShare a Scribd company logo
1 of 15
SCIVONE Tech Talks
#0
マルチデバイス対応を踏まえたフロントエンド開発事情
Hika Maeng  株式会社クイン代表取締役、 Bsidesoft CEO

1
SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情

本日のアウトライン

実務面でのオープンソースライブラリの課題
コーディング戦略
JavaScript の特徴を活かそう
SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情

実務面でのオープンソースライブラリの課題

1

継続的なブラウザの更新に対応できない

初期開発時

時間経過

2011, IE9, jQuery 1.3

2013, IE10, jQuery 1.9
jQuery を更新する
API の不一致、変更が原因で、
サイト全体を見直す必要が出てくる

jQuery を更新しない
新しいブラウザの特性に対応しておらず、
パフォーマンスとセキュリティの問題が発生
SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情

実務面でのオープンソースライブラリの課題

2

ブラウザの互換性が保障されない

IE8

IE9

IE10

12.44%

22.27%

15.67%
HTML5 標準対応を機に、ほとんどの古いブラウザのサポートが終了
たとえば、 jQuery が Internet Explorer 6 ~ 8 をサポートするのは 1.9 まで。

しかし現実には、無視できないシェア

statCounter:http://gs.statcounter.com/#browser_version-JP-monthly-201301-201310-bar
SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情

実務面でのオープンソースライブラリの課題

3

モバイルブラウザ対応
1. iPhone - 8
Safari - 5.x, 6.x, 7.x
Opera, mini,
Chrome, Firefox
Facebook
2. iPad – 8
3. Andorid - 30
NativeBrowser – 30over,
Chrome
4. smartTV, Android Tablet – 10over

50

over
iconfinder.com
SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情

コーディング戦略
ラッピング ライブラリを包括するレイヤーを構成して使用
$( ‘#stage’ ).css( ‘width’, 30 );

function css( $selector, $k, $v ){
$( $selector ).css( $k, $v );
}

function css( $selector, $k, $v ){
var dom = Sizzle( $selector );
dom.style[$k] = $v + ‘px’;
}

css( ‘#stage’, ‘width’, 30 );
css( ‘#stage’, ‘width’, 30 );

実際の具現化には
オープンソースの課題
ライセンス問題、技術サポート、機能の追加、制御されていない開発チーム
自前で実装する場合の課題
膨大な開発コスト、深い知識、メンテナンスコスト
SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情

JavaScript の特徴を活かそう

1

DOM Wrapper

2

Hash Map

3

Prototype

4

Scope

7
SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情

JavaScript の特徴を活かそう

1

DOM Wrapper

HTML System

HTML System
Tag Element
<canvas id=”c1”>

<style id=”s1”>

c1 = document.getElementById('c1');
context = c1.getContext('2d');
context.draw(..);

s1 = document.getElementById('s1');
sheet = s1.sheet;
sheet.rules.insertRule(...);

Tag Element

Context Object
Context
Object
SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情

JavaScript の特徴を活かそう
keys

2

hash
function

hashes
00

Hash Map

John Smith

01
02

Lisa Smith
Sam Doe

03
04

自由に Key 、 Value の追加削除ができる
00

var temp = {};
temp.newKey = 3;
delete temp.newKey;

JavaScript 内のすべてのオブジェクトは HashMap

オブジェクトではないもの: Primitive
参照されずにコピーされる
string, number, boolean, NaN, undefined, null

var temp = function(){};
temp.a =3;
temp = new Date;
temp.b = 3;
temp = [3,4,5];
temp.c = 3
http://en.wikipedia.org/wiki/Hash_table
SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情

JavaScript の特徴を活かそう

3

Prototype
クラスがない
共有リソース(メソッド、フィールド)を保管する場所がない

関数の特定のキーを共有するリソースのアーカイブに使用
var temp = function(){};
temp.prototype = {};

prototype keyChain
new でオブジェクトを作成すると、指定された関数の prototype を共有する
var func = function(){};
func.prototype = {
test:function(){}
}

var a = {};
a.__proto__ = func.prototype;
var temp= func.apply( a, arguments );
if( typeof temp == 'object' ) a = temp;

var a = new func;

a.test();
a['test'] == undefined a.__proto__.test == func.prototype.test
SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情

JavaScript の特徴を活かそう

4

Scope
関数の実行時に、
Execution Context ( EC )を作成

function test( a, b ){
var c, d;
}

test( 3, 4, 5 );

testEC1 = {
this:window,
arguments:[3,4,5],
a:3, b:4,
c:undefined, d:undefined,
parent:??
}

EC : Execution Context (実行コンテキスト)

test( 6 );

testEC2 = {
this:window,
arguments:[6,undefined],
a:6, b:undefined,
c:undefined, d:undefined,
parent:??
}
SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情

JavaScript の特徴を活かそう

4

Scope
EC 生成をコンパイラが処理するための設計図 ― 関数の Scope
function test( a, b ){
var c, d;
}
test.scope = {
arguments:['a','b'],
locals:['c','d'],
parent:??
}

arg = scope.arguments;
for( i = 0 ; i < arg.length ; i++ ){
key = arg[i];
testEC1[key] = testEC1.arguments[i];
}
locals = scope.locals;
for( i = 0 ; i < locals.length ; i++ ){
key = locals[i];
testEC1[key] = undefined;
}
testEC1.parent = scope.parent;

EC : Execution Context (実行コンテキスト)

test.call( {k:3}, 3, 4, 5 );
testEC1 = {
this:{k:3},
arguments:[3,4,5],
a:3, b:4,
c:undefined, d:undefined,
parent:??
}
SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情

JavaScript の特徴を活かそう

4

Scope
Parent ― 環境関数の EC
function test( a, b ){
var c, d;
}
function global(){
function test( a, b ){
var c, d;
}
}
global();

EC : Execution Context (実行コンテキスト)

function environmentalFunction(){
function concreateFunction(){
}
concreateFunction.scope.parent = environmentalFunction_EC1;
}
environmentalFunction();
environmentalFunction_EC1 = {...};
SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情

JavaScript の特徴を活かそう

4

Scope
Scope Key Chain

function ev(){
var data = "hello";
return function c( $data ){
console.log( 'origin:', data,
'new:', $data );
data = $data;
}
}
var c = ev();
c( "aloha" );
c( "bye" );

var c = ev();

c( "aloha" );

c( "bye" );

ev_EC = {
this:window,
arguments:[],
data:'hello'
} = c.scope.parent

c_EC1 = {
this:window,
arguments:["aloha"],
$data:'aloha',
parent:c.scope.parent
}

c_EC2 = {
this:window,
arguments:["bye"],
$data:'bye',
parent:c.scope.parent
}

c_EC1.data == undefined
c_EC1.parent.data = 'hello'
origin: hello, new: aloha
c_EC1.parent.data = c_EC1.$data
= 'aloha'
ご清聴ありがとうございました。
Enjoy Your Happy Dev Life!

15

More Related Content

What's hot

Visual Studio Code #phpcon2015
Visual Studio Code #phpcon2015Visual Studio Code #phpcon2015
Visual Studio Code #phpcon2015Aya Tokura
 
Responsableを使ったadr実装
Responsableを使ったadr実装Responsableを使ったadr実装
Responsableを使ったadr実装Kenjiro Kubota
 
Pythonで始めるWebアプリケーション開発
Pythonで始めるWebアプリケーション開発Pythonで始めるWebアプリケーション開発
Pythonで始めるWebアプリケーション開発Takahiro Kubo
 
20151021 cookpad talk_test_engineer
20151021 cookpad talk_test_engineer20151021 cookpad talk_test_engineer
20151021 cookpad talk_test_engineerKazuaki Matsuo
 
【19-B-4】 そろそろ俺たちの本気を見せてやるぜ!~ マイクロソフトとOSSごった煮 DevOps 衝撃デモシリーズ!
【19-B-4】 そろそろ俺たちの本気を見せてやるぜ!~ マイクロソフトとOSSごった煮 DevOps 衝撃デモシリーズ!【19-B-4】 そろそろ俺たちの本気を見せてやるぜ!~ マイクロソフトとOSSごった煮 DevOps 衝撃デモシリーズ!
【19-B-4】 そろそろ俺たちの本気を見せてやるぜ!~ マイクロソフトとOSSごった煮 DevOps 衝撃デモシリーズ!Developers Summit
 
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しようUnityTechnologiesJapan002
 
わんくま名古屋 #37 (20151114) TDD道場 #25
わんくま名古屋 #37 (20151114) TDD道場 #25わんくま名古屋 #37 (20151114) TDD道場 #25
わんくま名古屋 #37 (20151114) TDD道場 #25Yasuhiko Yamamoto
 
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指してAkira Inoue
 
Mizukiryu refactering-20110821
Mizukiryu refactering-20110821Mizukiryu refactering-20110821
Mizukiryu refactering-20110821Mizuki Yamanaka
 
Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化Kenichi Kambara
 
Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦urasandesu
 
今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略信之 岩永
 
ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略Naoki Umehara
 
iOSアプリケーションの Unit Test
iOSアプリケーションの Unit TestiOSアプリケーションの Unit Test
iOSアプリケーションの Unit TestKatsumi Kishikawa
 
【Agile Forum in Gifu】 Visual Studio 2010 でみる、アジャイル開発における開発支援ツールの活用
【Agile Forum in Gifu】 Visual Studio 2010 でみる、アジャイル開発における開発支援ツールの活用【Agile Forum in Gifu】 Visual Studio 2010 でみる、アジャイル開発における開発支援ツールの活用
【Agile Forum in Gifu】 Visual Studio 2010 でみる、アジャイル開発における開発支援ツールの活用智治 長沢
 
Session11 - LabVIEW NXG Training Course
Session11 - LabVIEW NXG Training CourseSession11 - LabVIEW NXG Training Course
Session11 - LabVIEW NXG Training CourseYusuke Tochigi
 

What's hot (20)

Visual Studio Code #phpcon2015
Visual Studio Code #phpcon2015Visual Studio Code #phpcon2015
Visual Studio Code #phpcon2015
 
Responsableを使ったadr実装
Responsableを使ったadr実装Responsableを使ったadr実装
Responsableを使ったadr実装
 
PHP agile test tips
PHP agile test tipsPHP agile test tips
PHP agile test tips
 
Pythonで始めるWebアプリケーション開発
Pythonで始めるWebアプリケーション開発Pythonで始めるWebアプリケーション開発
Pythonで始めるWebアプリケーション開発
 
20151021 cookpad talk_test_engineer
20151021 cookpad talk_test_engineer20151021 cookpad talk_test_engineer
20151021 cookpad talk_test_engineer
 
【19-B-4】 そろそろ俺たちの本気を見せてやるぜ!~ マイクロソフトとOSSごった煮 DevOps 衝撃デモシリーズ!
【19-B-4】 そろそろ俺たちの本気を見せてやるぜ!~ マイクロソフトとOSSごった煮 DevOps 衝撃デモシリーズ!【19-B-4】 そろそろ俺たちの本気を見せてやるぜ!~ マイクロソフトとOSSごった煮 DevOps 衝撃デモシリーズ!
【19-B-4】 そろそろ俺たちの本気を見せてやるぜ!~ マイクロソフトとOSSごった煮 DevOps 衝撃デモシリーズ!
 
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
 
わんくま名古屋 #37 (20151114) TDD道場 #25
わんくま名古屋 #37 (20151114) TDD道場 #25わんくま名古屋 #37 (20151114) TDD道場 #25
わんくま名古屋 #37 (20151114) TDD道場 #25
 
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
 
Mizukiryu refactering-20110821
Mizukiryu refactering-20110821Mizukiryu refactering-20110821
Mizukiryu refactering-20110821
 
Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化Jenkinsを用いたAndroidアプリビルド作業効率化
Jenkinsを用いたAndroidアプリビルド作業効率化
 
Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦
 
今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略今から始める、Windows 10&新.NETへの移行戦略
今から始める、Windows 10&新.NETへの移行戦略
 
ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略
 
iOSアプリケーションの Unit Test
iOSアプリケーションの Unit TestiOSアプリケーションの Unit Test
iOSアプリケーションの Unit Test
 
Klocworkのご紹介
Klocworkのご紹介Klocworkのご紹介
Klocworkのご紹介
 
Modern .NET
Modern .NETModern .NET
Modern .NET
 
C#の書き方
C#の書き方C#の書き方
C#の書き方
 
【Agile Forum in Gifu】 Visual Studio 2010 でみる、アジャイル開発における開発支援ツールの活用
【Agile Forum in Gifu】 Visual Studio 2010 でみる、アジャイル開発における開発支援ツールの活用【Agile Forum in Gifu】 Visual Studio 2010 でみる、アジャイル開発における開発支援ツールの活用
【Agile Forum in Gifu】 Visual Studio 2010 でみる、アジャイル開発における開発支援ツールの活用
 
Session11 - LabVIEW NXG Training Course
Session11 - LabVIEW NXG Training CourseSession11 - LabVIEW NXG Training Course
Session11 - LabVIEW NXG Training Course
 

Similar to tech talk about JS #0

ボット開発でも DevOps! BotBuilder のテスト手法
ボット開発でも DevOps! BotBuilder のテスト手法ボット開発でも DevOps! BotBuilder のテスト手法
ボット開発でも DevOps! BotBuilder のテスト手法Kenichiro Nakamura
 
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説Akira Inoue
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をAtsuhiro Kubo
 
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像Akira Inoue
 
pi-1. プログラミング入門
pi-1. プログラミング入門pi-1. プログラミング入門
pi-1. プログラミング入門kunihikokaneko1
 
How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2 How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2 ichikaway
 
Kubernetes 導入から始める DevOps について
Kubernetes 導入から始める DevOps についてKubernetes 導入から始める DevOps について
Kubernetes 導入から始める DevOps についてShigeru Tatsuta
 
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!智治 長沢
 
でぶさみ夏2013 キーノート オレンジレンジャーの資料
でぶさみ夏2013 キーノート オレンジレンジャーの資料でぶさみ夏2013 キーノート オレンジレンジャーの資料
でぶさみ夏2013 キーノート オレンジレンジャーの資料Tomohiro Fujii
 
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】 Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】 智治 長沢
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/AndroidセキュアコーディングMasaki Kubo
 
【JaSST'11 Tokyo】 テスト イノベーション
【JaSST'11 Tokyo】 テスト イノベーション【JaSST'11 Tokyo】 テスト イノベーション
【JaSST'11 Tokyo】 テスト イノベーション智治 長沢
 
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用de:code 2017
 
C#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのかC#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのかYoshifumi Kawai
 
DEV-003_新しく生まれ変わったデータ アクセス テクノロジ ~Entity Framework Core 1.0 の全貌~
DEV-003_新しく生まれ変わったデータ アクセス テクノロジ ~Entity Framework Core 1.0 の全貌~DEV-003_新しく生まれ変わったデータ アクセス テクノロジ ~Entity Framework Core 1.0 の全貌~
DEV-003_新しく生まれ変わったデータ アクセス テクノロジ ~Entity Framework Core 1.0 の全貌~decode2016
 
バグ0の資産を積み上げるための証明駆動開発入門
バグ0の資産を積み上げるための証明駆動開発入門バグ0の資産を積み上げるための証明駆動開発入門
バグ0の資産を積み上げるための証明駆動開発入門Riku Sakamoto
 
JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例Takeshi Kondo
 
世界をすこしだけ前に進めるということ
世界をすこしだけ前に進めるということ世界をすこしだけ前に進めるということ
世界をすこしだけ前に進めるということYukei Wachi
 
Mobile-first, Cloud-first のその先へ ~ Microsoft が描く Web/Mobile の未来
Mobile-first, Cloud-first のその先へ ~ Microsoft が描く Web/Mobile の未来Mobile-first, Cloud-first のその先へ ~ Microsoft が描く Web/Mobile の未来
Mobile-first, Cloud-first のその先へ ~ Microsoft が描く Web/Mobile の未来Akira Inoue
 

Similar to tech talk about JS #0 (20)

ボット開発でも DevOps! BotBuilder のテスト手法
ボット開発でも DevOps! BotBuilder のテスト手法ボット開発でも DevOps! BotBuilder のテスト手法
ボット開発でも DevOps! BotBuilder のテスト手法
 
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
ASP.NET 新時代に向けて ~ ASP.NET 5 / Visual Studio 2015 基礎解説
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発を
 
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
 
pi-1. プログラミング入門
pi-1. プログラミング入門pi-1. プログラミング入門
pi-1. プログラミング入門
 
How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2 How to manage Cakephp @CakePHP_Fukuoka_2
How to manage Cakephp @CakePHP_Fukuoka_2
 
[GrapeCity Web TECH FORUM 2018]グレープシティJavaScript製品のご紹介 活用のコツと開発のポイント
[GrapeCity Web TECH FORUM 2018]グレープシティJavaScript製品のご紹介 活用のコツと開発のポイント[GrapeCity Web TECH FORUM 2018]グレープシティJavaScript製品のご紹介 活用のコツと開発のポイント
[GrapeCity Web TECH FORUM 2018]グレープシティJavaScript製品のご紹介 活用のコツと開発のポイント
 
Kubernetes 導入から始める DevOps について
Kubernetes 導入から始める DevOps についてKubernetes 導入から始める DevOps について
Kubernetes 導入から始める DevOps について
 
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
【JaSST'11 Kansai】 開発者とテスト担当者に最適なコラボレーションと効率化を!
 
でぶさみ夏2013 キーノート オレンジレンジャーの資料
でぶさみ夏2013 キーノート オレンジレンジャーの資料でぶさみ夏2013 キーノート オレンジレンジャーの資料
でぶさみ夏2013 キーノート オレンジレンジャーの資料
 
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】 Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/Androidセキュアコーディング
 
【JaSST'11 Tokyo】 テスト イノベーション
【JaSST'11 Tokyo】 テスト イノベーション【JaSST'11 Tokyo】 テスト イノベーション
【JaSST'11 Tokyo】 テスト イノベーション
 
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
 
C#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのかC#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのか
 
DEV-003_新しく生まれ変わったデータ アクセス テクノロジ ~Entity Framework Core 1.0 の全貌~
DEV-003_新しく生まれ変わったデータ アクセス テクノロジ ~Entity Framework Core 1.0 の全貌~DEV-003_新しく生まれ変わったデータ アクセス テクノロジ ~Entity Framework Core 1.0 の全貌~
DEV-003_新しく生まれ変わったデータ アクセス テクノロジ ~Entity Framework Core 1.0 の全貌~
 
バグ0の資産を積み上げるための証明駆動開発入門
バグ0の資産を積み上げるための証明駆動開発入門バグ0の資産を積み上げるための証明駆動開発入門
バグ0の資産を積み上げるための証明駆動開発入門
 
JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例
 
世界をすこしだけ前に進めるということ
世界をすこしだけ前に進めるということ世界をすこしだけ前に進めるということ
世界をすこしだけ前に進めるということ
 
Mobile-first, Cloud-first のその先へ ~ Microsoft が描く Web/Mobile の未来
Mobile-first, Cloud-first のその先へ ~ Microsoft が描く Web/Mobile の未来Mobile-first, Cloud-first のその先へ ~ Microsoft が描く Web/Mobile の未来
Mobile-first, Cloud-first のその先へ ~ Microsoft が描く Web/Mobile の未来
 

Recently uploaded

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 

Recently uploaded (8)

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 

tech talk about JS #0

  • 2. SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情 本日のアウトライン 実務面でのオープンソースライブラリの課題 コーディング戦略 JavaScript の特徴を活かそう
  • 3. SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情 実務面でのオープンソースライブラリの課題 1 継続的なブラウザの更新に対応できない 初期開発時 時間経過 2011, IE9, jQuery 1.3 2013, IE10, jQuery 1.9 jQuery を更新する API の不一致、変更が原因で、 サイト全体を見直す必要が出てくる jQuery を更新しない 新しいブラウザの特性に対応しておらず、 パフォーマンスとセキュリティの問題が発生
  • 4. SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情 実務面でのオープンソースライブラリの課題 2 ブラウザの互換性が保障されない IE8 IE9 IE10 12.44% 22.27% 15.67% HTML5 標準対応を機に、ほとんどの古いブラウザのサポートが終了 たとえば、 jQuery が Internet Explorer 6 ~ 8 をサポートするのは 1.9 まで。 しかし現実には、無視できないシェア statCounter:http://gs.statcounter.com/#browser_version-JP-monthly-201301-201310-bar
  • 5. SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情 実務面でのオープンソースライブラリの課題 3 モバイルブラウザ対応 1. iPhone - 8 Safari - 5.x, 6.x, 7.x Opera, mini, Chrome, Firefox Facebook 2. iPad – 8 3. Andorid - 30 NativeBrowser – 30over, Chrome 4. smartTV, Android Tablet – 10over 50 over iconfinder.com
  • 6. SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情 コーディング戦略 ラッピング ライブラリを包括するレイヤーを構成して使用 $( ‘#stage’ ).css( ‘width’, 30 ); function css( $selector, $k, $v ){ $( $selector ).css( $k, $v ); } function css( $selector, $k, $v ){ var dom = Sizzle( $selector ); dom.style[$k] = $v + ‘px’; } css( ‘#stage’, ‘width’, 30 ); css( ‘#stage’, ‘width’, 30 ); 実際の具現化には オープンソースの課題 ライセンス問題、技術サポート、機能の追加、制御されていない開発チーム 自前で実装する場合の課題 膨大な開発コスト、深い知識、メンテナンスコスト
  • 7. SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情 JavaScript の特徴を活かそう 1 DOM Wrapper 2 Hash Map 3 Prototype 4 Scope 7
  • 8. SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情 JavaScript の特徴を活かそう 1 DOM Wrapper HTML System HTML System Tag Element <canvas id=”c1”> <style id=”s1”> c1 = document.getElementById('c1'); context = c1.getContext('2d'); context.draw(..); s1 = document.getElementById('s1'); sheet = s1.sheet; sheet.rules.insertRule(...); Tag Element Context Object Context Object
  • 9. SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情 JavaScript の特徴を活かそう keys 2 hash function hashes 00 Hash Map John Smith 01 02 Lisa Smith Sam Doe 03 04 自由に Key 、 Value の追加削除ができる 00 var temp = {}; temp.newKey = 3; delete temp.newKey; JavaScript 内のすべてのオブジェクトは HashMap オブジェクトではないもの: Primitive 参照されずにコピーされる string, number, boolean, NaN, undefined, null var temp = function(){}; temp.a =3; temp = new Date; temp.b = 3; temp = [3,4,5]; temp.c = 3 http://en.wikipedia.org/wiki/Hash_table
  • 10. SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情 JavaScript の特徴を活かそう 3 Prototype クラスがない 共有リソース(メソッド、フィールド)を保管する場所がない 関数の特定のキーを共有するリソースのアーカイブに使用 var temp = function(){}; temp.prototype = {}; prototype keyChain new でオブジェクトを作成すると、指定された関数の prototype を共有する var func = function(){}; func.prototype = { test:function(){} } var a = {}; a.__proto__ = func.prototype; var temp= func.apply( a, arguments ); if( typeof temp == 'object' ) a = temp; var a = new func; a.test(); a['test'] == undefined a.__proto__.test == func.prototype.test
  • 11. SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情 JavaScript の特徴を活かそう 4 Scope 関数の実行時に、 Execution Context ( EC )を作成 function test( a, b ){ var c, d; } test( 3, 4, 5 ); testEC1 = { this:window, arguments:[3,4,5], a:3, b:4, c:undefined, d:undefined, parent:?? } EC : Execution Context (実行コンテキスト) test( 6 ); testEC2 = { this:window, arguments:[6,undefined], a:6, b:undefined, c:undefined, d:undefined, parent:?? }
  • 12. SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情 JavaScript の特徴を活かそう 4 Scope EC 生成をコンパイラが処理するための設計図 ― 関数の Scope function test( a, b ){ var c, d; } test.scope = { arguments:['a','b'], locals:['c','d'], parent:?? } arg = scope.arguments; for( i = 0 ; i < arg.length ; i++ ){ key = arg[i]; testEC1[key] = testEC1.arguments[i]; } locals = scope.locals; for( i = 0 ; i < locals.length ; i++ ){ key = locals[i]; testEC1[key] = undefined; } testEC1.parent = scope.parent; EC : Execution Context (実行コンテキスト) test.call( {k:3}, 3, 4, 5 ); testEC1 = { this:{k:3}, arguments:[3,4,5], a:3, b:4, c:undefined, d:undefined, parent:?? }
  • 13. SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情 JavaScript の特徴を活かそう 4 Scope Parent ― 環境関数の EC function test( a, b ){ var c, d; } function global(){ function test( a, b ){ var c, d; } } global(); EC : Execution Context (実行コンテキスト) function environmentalFunction(){ function concreateFunction(){ } concreateFunction.scope.parent = environmentalFunction_EC1; } environmentalFunction(); environmentalFunction_EC1 = {...};
  • 14. SCIVONE Tech Talks #0 マルチデバイス対応を踏まえたフロントエンド開発事情 JavaScript の特徴を活かそう 4 Scope Scope Key Chain function ev(){ var data = "hello"; return function c( $data ){ console.log( 'origin:', data, 'new:', $data ); data = $data; } } var c = ev(); c( "aloha" ); c( "bye" ); var c = ev(); c( "aloha" ); c( "bye" ); ev_EC = { this:window, arguments:[], data:'hello' } = c.scope.parent c_EC1 = { this:window, arguments:["aloha"], $data:'aloha', parent:c.scope.parent } c_EC2 = { this:window, arguments:["bye"], $data:'bye', parent:c.scope.parent } c_EC1.data == undefined c_EC1.parent.data = 'hello' origin: hello, new: aloha c_EC1.parent.data = c_EC1.$data = 'aloha'