Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
takenspc
4,616 views
WebIDLを見てみる
JSer.info 5周年記念イベント http://jser.connpass.com/event/24202/
Engineering
◦
Read more
6
Save
Share
Embed
Embed presentation
Download
Downloaded 12 times
1
/ 55
2
/ 55
3
/ 55
4
/ 55
5
/ 55
6
/ 55
7
/ 55
8
/ 55
9
/ 55
10
/ 55
11
/ 55
12
/ 55
13
/ 55
14
/ 55
15
/ 55
16
/ 55
17
/ 55
18
/ 55
19
/ 55
20
/ 55
21
/ 55
22
/ 55
23
/ 55
24
/ 55
25
/ 55
26
/ 55
27
/ 55
28
/ 55
29
/ 55
30
/ 55
31
/ 55
32
/ 55
33
/ 55
34
/ 55
35
/ 55
36
/ 55
37
/ 55
38
/ 55
39
/ 55
40
/ 55
41
/ 55
42
/ 55
43
/ 55
44
/ 55
45
/ 55
46
/ 55
47
/ 55
48
/ 55
49
/ 55
50
/ 55
51
/ 55
52
/ 55
53
/ 55
54
/ 55
55
/ 55
More Related Content
PPTX
Keycloak入門
by
Hiroyuki Wada
PDF
Javaのログ出力: 道具と考え方
by
Taku Miyakawa
PPTX
KeycloakでAPI認可に入門する
by
Hitachi, Ltd. OSS Solution Center.
PDF
Apache Arrow - データ処理ツールの次世代プラットフォーム
by
Kouhei Sutou
PDF
何となく勉強した気分になれるパーサ入門
by
masayoshi takahashi
PDF
文字コードに起因する脆弱性とその対策(増補版)
by
Hiroshi Tokumaru
PDF
WebSocket / WebRTCの技術紹介
by
Yasuhiro Mawarimichi
PDF
DockerとKubernetesをかけめぐる
by
Kohei Tokunaga
Keycloak入門
by
Hiroyuki Wada
Javaのログ出力: 道具と考え方
by
Taku Miyakawa
KeycloakでAPI認可に入門する
by
Hitachi, Ltd. OSS Solution Center.
Apache Arrow - データ処理ツールの次世代プラットフォーム
by
Kouhei Sutou
何となく勉強した気分になれるパーサ入門
by
masayoshi takahashi
文字コードに起因する脆弱性とその対策(増補版)
by
Hiroshi Tokumaru
WebSocket / WebRTCの技術紹介
by
Yasuhiro Mawarimichi
DockerとKubernetesをかけめぐる
by
Kohei Tokunaga
What's hot
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
by
Hiroshi Tokumaru
PDF
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
by
ssuser070fa9
PPTX
いまさら、AWSのネットワーク設計
by
Serverworks Co.,Ltd.
PDF
Scapyで作る・解析するパケット
by
Takaaki Hoyo
PDF
Ethernetの受信処理
by
Takuya ASADA
PDF
WebAssemblyのWeb以外のことぜんぶ話す
by
Takaya Saeki
PPTX
Keycloakのステップアップ認証について
by
Hitachi, Ltd. OSS Solution Center.
PPTX
はじめてのElasticsearchクラスタ
by
Satoyuki Tsukano
PDF
Kubernetes雑にまとめてみた 2020年8月版
by
VirtualTech Japan Inc.
PDF
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
by
Tatsuo Kudo
PPTX
Azure Key Vault
by
junichi anno
PDF
GoogleのSHA-1のはなし
by
MITSUNARI Shigeo
PDF
TLS, HTTP/2演習
by
shigeki_ohtsu
PPTX
マイクロサービスにおける 結果整合性との戦い
by
ota42y
PDF
OSTree: OSイメージとパッケージシステムの間にGitのアプローチを
by
i_yudai
PDF
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
by
Naoki Nagazumi
PDF
Dockerfileを改善するためのBest Practice 2019年版
by
Masahito Zembutsu
PDF
目grep入門 +解説
by
murachue
PDF
とある診断員とSQLインジェクション
by
zaki4649
PDF
Swaggerでのapi開発よもやま話
by
KEISUKE KONISHI
SPAセキュリティ入門~PHP Conference Japan 2021
by
Hiroshi Tokumaru
AngularとSpring Bootで作るSPA + RESTful Web Serviceアプリケーション
by
ssuser070fa9
いまさら、AWSのネットワーク設計
by
Serverworks Co.,Ltd.
Scapyで作る・解析するパケット
by
Takaaki Hoyo
Ethernetの受信処理
by
Takuya ASADA
WebAssemblyのWeb以外のことぜんぶ話す
by
Takaya Saeki
Keycloakのステップアップ認証について
by
Hitachi, Ltd. OSS Solution Center.
はじめてのElasticsearchクラスタ
by
Satoyuki Tsukano
Kubernetes雑にまとめてみた 2020年8月版
by
VirtualTech Japan Inc.
OAuth / OpenID Connectを中心とするAPIセキュリティについて #yuzawaws
by
Tatsuo Kudo
Azure Key Vault
by
junichi anno
GoogleのSHA-1のはなし
by
MITSUNARI Shigeo
TLS, HTTP/2演習
by
shigeki_ohtsu
マイクロサービスにおける 結果整合性との戦い
by
ota42y
OSTree: OSイメージとパッケージシステムの間にGitのアプローチを
by
i_yudai
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
by
Naoki Nagazumi
Dockerfileを改善するためのBest Practice 2019年版
by
Masahito Zembutsu
目grep入門 +解説
by
murachue
とある診断員とSQLインジェクション
by
zaki4649
Swaggerでのapi開発よもやま話
by
KEISUKE KONISHI
Similar to WebIDLを見てみる
PDF
Web on Kernel
by
dynamis
PDF
Kilimanjaro Event
by
dynamis
PDF
Browser and Mozilla
by
dynamis
PDF
JavaScript And Keywords
by
uupaa
PDF
Concentrated HTML5 & Attractive HTML5
by
Sho Ito
PDF
Firefox OS - Blaze Your Own Path
by
dynamis
PDF
Web is the OS (Firefox OS)
by
dynamis
PDF
Web API入門
by
Masao Takaku
PPTX
HTML5最新動向
by
Shumpei Shiraishi
PDF
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
by
Akira Inoue
PPTX
HTML5&API総まくり
by
Shumpei Shiraishi
PDF
マイクロソフトにとってのWebって?
by
Microsoft
PDF
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
by
Toru Kawamura
ODP
HTML5 のお話
by
tomo_masakura
PDF
猫でも分かる Android WebKit
by
Naruto TAKAHASHI
PDF
50分で掴み取る ASP.NET Web API パターン&テクニック
by
miso- soup3
PDF
ASP.NET WebAPI 体験記 #clrh99
by
Katsuya Shimizu
PPTX
HTML5とWeb開発に関する最新動向
by
Shumpei Shiraishi
PDF
Mobile Web
by
Makoto Kato
PDF
デバイス WebAPI設計の進め方
by
Device WebAPI Consortium
Web on Kernel
by
dynamis
Kilimanjaro Event
by
dynamis
Browser and Mozilla
by
dynamis
JavaScript And Keywords
by
uupaa
Concentrated HTML5 & Attractive HTML5
by
Sho Ito
Firefox OS - Blaze Your Own Path
by
dynamis
Web is the OS (Firefox OS)
by
dynamis
Web API入門
by
Masao Takaku
HTML5最新動向
by
Shumpei Shiraishi
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
by
Akira Inoue
HTML5&API総まくり
by
Shumpei Shiraishi
マイクロソフトにとってのWebって?
by
Microsoft
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
by
Toru Kawamura
HTML5 のお話
by
tomo_masakura
猫でも分かる Android WebKit
by
Naruto TAKAHASHI
50分で掴み取る ASP.NET Web API パターン&テクニック
by
miso- soup3
ASP.NET WebAPI 体験記 #clrh99
by
Katsuya Shimizu
HTML5とWeb開発に関する最新動向
by
Shumpei Shiraishi
Mobile Web
by
Makoto Kato
デバイス WebAPI設計の進め方
by
Device WebAPI Consortium
WebIDLを見てみる
1.
WebIDL を見てみる ブラウザーに実装されている API
を知りたい @Takenspc
2.
内容 ● 背景 ● WebIDL を見てみる ● まとめ
3.
背景 ● ブラウザーで使える API :たくさんある –
新たな API が生まれる – 途中で API が変わる ● 実際に使える API は何なのか、知りたい
4.
Specifications BrowserContent ??? ??? ??? ??? ???
5.
例えば、こう書ける? const url =
new URL('…?foo=0&bar=1'); for (const param of url.searchParams) { console.log(param[0], param[1]); }
6.
http://caniuse.com/#search=URLSearchParams
7.
https://dev.windows.com/en-us/microsoft-edge/platform/status/urlapi
8.
https://developer.mozilla.org/en-US/docs/Web/API/URL
9.
実際のところ… Chrome Firefox IE
Safari URL.searchParams N/A 29+ N/A N/A URLSearchParams 49+ 29+ N/A N/A @@iterator 49+ 44+ N/A N/A
10.
現状 ● ブラウザーの実装とドキュメントが分離 – 粒度や作成・更新頻度がニーズと異なる場合も
11.
ブラウザーの実装は…? ● ブラウザーも誰かが書いてるはず
12.
Specifications BrowserContent ??? ??? ??? ??? ???
13.
結論から言うと ● 主なブラウザーの開発では WebIDL からイン タフェースを機械生成 ● WebIDL
は各仕様が定義
14.
Specifications BrowserContent WebIDL WebIDL
15.
Specifications BrowserContent Available Behind a flag Not
compiled Not implemented WebIDL WebIDL
16.
WebIDL ● Web 技術向け IDL –
ECMAScript に特化
17.
https://heycam.github.io/webidl/
18.
WebIDL ● 仕様とブラウザーの共通言語の 1 つ –
共通言語なので比較可能
19.
WebIDL を見てみる ● 仕様( URL
Standard ) ● Web Platform Tests ● Gecko ● Chromium ● WebKit
20.
https://url.spec.whatwg.org/#api
21.
[Constructor(USVString url, optional
USVString base), Exposed=(Window,Worker)] interface URL { static USVString domainToASCII(USVString domain); static USVString domainToUnicode(USVString domain); stringifier attribute USVString href; readonly attribute USVString origin; attribute USVString protocol; … attribute USVString search; readonly attribute URLSearchParams searchParams; attribute USVString hash; }; URL Standard
22.
[Constructor(USVString url, optional
USVString base), Exposed=(Window,Worker)] interface URL { static USVString domainToASCII(USVString domain); static USVString domainToUnicode(USVString domain); stringifier attribute USVString href; readonly attribute USVString origin; attribute USVString protocol; … attribute USVString search; readonly attribute URLSearchParams searchParams; attribute USVString hash; }; コンストラクタ インタフェース名 仮引数 URL Standard
23.
[Constructor(USVString url, optional
USVString base), Exposed=(Window,Worker)] interface URL { static USVString domainToASCII(USVString domain); static USVString domainToUnicode(USVString domain); stringifier attribute USVString href; readonly attribute USVString origin; attribute USVString protocol; … attribute USVString search; readonly attribute URLSearchParams searchParams; attribute USVString hash; }; 戻り値の型 メソッド名 仮引数 URL Standard
24.
[Constructor(USVString url, optional
USVString base), Exposed=(Window,Worker)] interface URL { static USVString domainToASCII(USVString domain); static USVString domainToUnicode(USVString domain); stringifier attribute USVString href; readonly attribute USVString origin; attribute USVString protocol; … attribute USVString search; readonly attribute URLSearchParams searchParams; attribute USVString hash; }; 型 プロパティ名 URL Standard
25.
[Constructor(USVString url, optional
USVString base), Exposed=(Window,Worker)] interface URL { static USVString domainToASCII(USVString domain); static USVString domainToUnicode(USVString domain); stringifier attribute USVString href; readonly attribute USVString origin; attribute USVString protocol; … attribute USVString search; readonly attribute URLSearchParams searchParams; attribute USVString hash; }; URL Standard
26.
https://github.com/w3c/web-platform-tests/blob/master/url/interfaces.html
27.
https://dxr.mozilla.org/mozilla-central/source/dom/webidl/URL.webidl
28.
[…] interface URL { … […]
attribute USVString search; readonly attribute URLSearchParams searchParams; … }; Gecko
29.
https://chromium.googlesource.com/chromium/src/+/master/third_party/WebKit/Source/core/dom/URL.idl
30.
[Constructor(USVString url, optional
USVString base), Exposed=(Window,Worker), …] interface URL { … […] static DOMString? createObjectURL(Blob blob); […] static void revokeObjectURL(DOMString url); }; URL implements URLUtils; Chromium
31.
[Constructor(USVString url, optional
USVString base), Exposed=(Window,Worker), …] interface URL { … […] static DOMString? createObjectURL(Blob blob); […] static void revokeObjectURL(DOMString url); }; URL implements URLUtils; Chromium
32.
https://chromium.googlesource.com/chromium/src/+/master/third_party/WebKit/Source/core/dom/URLUtils.idl
33.
[…] interface URLUtils { … attribute
USVString search; // Not yet implemented. // attribute URLSearchParams searchParams; … }; Chromium
34.
http://trac.webkit.org/browser/trunk/Source/WebCore/html/DOMURL.idl
35.
http://trac.webkit.org/browser/trunk/Source/WebCore/html/URLUtils.idl
36.
WebIDL を比較するには ● 継承などの解決 ● Extended attributes
( [ と ] の間)
37.
URL Standard
38.
Gecko
39.
Chromium
40.
WebKit
41.
まとめ ● WebIDL は仕様とブラウザーの共通言語の 1 つ ● API
の実装状況が知りたい: WebIDL も参考になるかも
42.
ご清聴ありがとうございました
43.
おまけ ● URL 関連 API
の変化 ● WebIDL である必然性 ● WebIDL の仕様と実際の WebIDL ● 実際にコンパイルされる WebIDL の推定
44.
URL 関連 API
の変化 ● 仕様( URL Standard ) – 2015 年夏頃まで: URL.href や HTMLAnchor.href 、 Location.href などを URLUtils にまとめる – 2015 年夏以降: URLUtils などにまとめることを 断念
45.
URLUtils URLUtilsSearchParams URLUtilsReadOnlyWorkerLocation HTMLAnchorElement HTMLAreaElement Location URL 仕様( 2015 年夏ごろまで)
46.
HTMLHyperlinkElementUtils WorkerLocation HTMLAnchorElement HTMLAreaElement Location URL 仕様( 2016 年
1 月)
47.
URL 関連 API
の変化 ● ブラウザーの実装 – Gecko : 45 で仕様に合わせて更新 ( Bug 121385) – Chromium :今後仕様に合わせて更新? ( dff906e) – WebKit :?
48.
HTMLHyperlinkElementUtils URLUtilsReadOnlyWorkerLocation HTMLAnchorElement HTMLAreaElement Location URL Gecko
49.
URLUtils URLUtilsReadOnlyWorkerLocation HTMLAnchorElement HTMLAreaElement Location URL Chromium
50.
URLUtils WorkerLocation HTMLAnchorElement HTMLAreaElement Location URL WebKit
51.
WebIDL である必然性 ● WebIDL の構文は
ECMAScript とは別物 – WebIDL でインタフェースを定義する必然性はない ● Ecmarkup を使っている仕様 https://streams.spec.whatwg.org/
52.
WebIDL の仕様と実際の WebIDL ● 仕様に書かれている
WebIDL – 古い WebIDL 仕様をもとに書かれている ● ブラウザーの開発に使われている WebIDL – 古い WebIDL 仕様をもとに書かれている – 独自拡張が施されている
53.
Foo[] → FronzenArray<Foo> ● https://lists.w3.org/Archives/Public/pu blic-webapps/2015JulSep/0165.html –
WebIDL の仕様が変わったよ – それぞれの仕様に書かれている WebIDL も更新し よう ● まだ終わっていない
54.
ブラウザーの WebIDL ● MDN: Information
contained in a WebIDL f fle ● WebIDL in Blink ● WebKitIDL
55.
ビルドされる WebIDL の推定 ● どの機能がビルドされるかの推定が面倒 –
実際にビルドするのも面倒… ● ( Gecko )ランタイムフラグの推定が面倒 – Worker.webidl – mozilla::dom::workers::WorkerPrivate::Work erAvailable
Download