SlideShare a Scribd company logo
1 of 55
Download to read offline
WebIDL を見てみる
ブラウザーに実装されている API を知りたい
@Takenspc
内容
●
背景
●
WebIDL を見てみる
●
まとめ
背景
●
ブラウザーで使える API :たくさんある
– 新たな API が生まれる
– 途中で API が変わる
●
実際に使える API は何なのか、知りたい
Specifications
BrowserContent
???
???
???
???
???
例えば、こう書ける?
const url = new URL('…?foo=0&bar=1');
for (const param of url.searchParams) {
console.log(param[0], param[1]);
}
http://caniuse.com/#search=URLSearchParams
https://dev.windows.com/en-us/microsoft-edge/platform/status/urlapi
https://developer.mozilla.org/en-US/docs/Web/API/URL
実際のところ…
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
現状
●
ブラウザーの実装とドキュメントが分離
– 粒度や作成・更新頻度がニーズと異なる場合も
ブラウザーの実装は…?
●
ブラウザーも誰かが書いてるはず
Specifications
BrowserContent
???
???
???
???
???
結論から言うと
●
主なブラウザーの開発では WebIDL からイン
タフェースを機械生成
●
WebIDL は各仕様が定義
Specifications
BrowserContent
WebIDL
WebIDL
Specifications
BrowserContent
Available
Behind a flag
Not compiled
Not implemented
WebIDL
WebIDL
WebIDL
●
Web 技術向け IDL
– ECMAScript に特化
https://heycam.github.io/webidl/
WebIDL
●
仕様とブラウザーの共通言語の 1 つ
– 共通言語なので比較可能
WebIDL を見てみる
●
仕様( URL Standard )
●
Web Platform Tests
●
Gecko
●
Chromium
●
WebKit
https://url.spec.whatwg.org/#api
[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
[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
[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
[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
[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
https://github.com/w3c/web-platform-tests/blob/master/url/interfaces.html
https://dxr.mozilla.org/mozilla-central/source/dom/webidl/URL.webidl
[…]
interface URL {
…
[…] attribute USVString search;
readonly attribute URLSearchParams searchParams;
…
};
Gecko
https://chromium.googlesource.com/chromium/src/+/master/third_party/WebKit/Source/core/dom/URL.idl
[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
[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
https://chromium.googlesource.com/chromium/src/+/master/third_party/WebKit/Source/core/dom/URLUtils.idl
[…]
interface URLUtils {
…
attribute USVString search;
// Not yet implemented.
// attribute URLSearchParams searchParams;
…
};
Chromium
http://trac.webkit.org/browser/trunk/Source/WebCore/html/DOMURL.idl
http://trac.webkit.org/browser/trunk/Source/WebCore/html/URLUtils.idl
WebIDL を比較するには
●
継承などの解決
●
Extended attributes ( [ と ] の間)
URL Standard
Gecko
Chromium
WebKit
まとめ
●
WebIDL は仕様とブラウザーの共通言語の 1
つ
●
API の実装状況が知りたい:
WebIDL も参考になるかも
ご清聴ありがとうございました
おまけ
●
URL 関連 API の変化
●
WebIDL である必然性
●
WebIDL の仕様と実際の WebIDL
●
実際にコンパイルされる WebIDL の推定
URL 関連 API の変化
●
仕様( URL Standard )
– 2015 年夏頃まで: URL.href や
HTMLAnchor.href 、 Location.href などを
URLUtils にまとめる
– 2015 年夏以降: URLUtils などにまとめることを
断念
URLUtils
URLUtilsSearchParams
URLUtilsReadOnlyWorkerLocation
HTMLAnchorElement
HTMLAreaElement
Location
URL
仕様( 2015 年夏ごろまで)
HTMLHyperlinkElementUtils
WorkerLocation
HTMLAnchorElement
HTMLAreaElement
Location
URL
仕様( 2016 年 1 月)
URL 関連 API の変化
●
ブラウザーの実装
– Gecko : 45 で仕様に合わせて更新
( Bug 121385)
– Chromium :今後仕様に合わせて更新?
( dff906e)
– WebKit :?
HTMLHyperlinkElementUtils
URLUtilsReadOnlyWorkerLocation
HTMLAnchorElement
HTMLAreaElement
Location
URL
Gecko
URLUtils
URLUtilsReadOnlyWorkerLocation
HTMLAnchorElement
HTMLAreaElement
Location
URL
Chromium
URLUtils
WorkerLocation
HTMLAnchorElement
HTMLAreaElement
Location
URL
WebKit
WebIDL である必然性
●
WebIDL の構文は ECMAScript とは別物
– WebIDL でインタフェースを定義する必然性はない
●
Ecmarkup を使っている仕様
https://streams.spec.whatwg.org/
WebIDL の仕様と実際の WebIDL
●
仕様に書かれている WebIDL
– 古い WebIDL 仕様をもとに書かれている
●
ブラウザーの開発に使われている WebIDL
– 古い WebIDL 仕様をもとに書かれている
– 独自拡張が施されている
Foo[] → FronzenArray<Foo>
●
https://lists.w3.org/Archives/Public/pu
blic-webapps/2015JulSep/0165.html
– WebIDL の仕様が変わったよ
– それぞれの仕様に書かれている WebIDL も更新し
よう
●
まだ終わっていない
ブラウザーの WebIDL
●
MDN: Information contained in a WebIDL f
fle
●
WebIDL in Blink
●
WebKitIDL
ビルドされる WebIDL の推定
●
どの機能がビルドされるかの推定が面倒
– 実際にビルドするのも面倒…
●
( Gecko )ランタイムフラグの推定が面倒
– Worker.webidl
– mozilla::dom::workers::WorkerPrivate::Work
erAvailable

More Related Content

What's hot

RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介MITSUNARI Shigeo
 
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~Fujio Kojima
 
SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-
SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-
SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-uedayou
 
C#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのかC#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのかYoshifumi Kawai
 
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説Fumiya Sakai
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけらAtsushi Nakamura
 
オンプレ回帰も簡単実現!自由自在なデータベース運用とは
オンプレ回帰も簡単実現!自由自在なデータベース運用とはオンプレ回帰も簡単実現!自由自在なデータベース運用とは
オンプレ回帰も簡単実現!自由自在なデータベース運用とは株式会社クライム
 
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)NTT DATA Technology & Innovation
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計sairoutine
 
REST API のコツ
REST API のコツREST API のコツ
REST API のコツpospome
 
TDD のこころ @ OSH2014
TDD のこころ @ OSH2014TDD のこころ @ OSH2014
TDD のこころ @ OSH2014Takuto Wada
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しようUnity Technologies Japan K.K.
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
TRICK 2022 Results
TRICK 2022 ResultsTRICK 2022 Results
TRICK 2022 Resultsmametter
 
エラーハンドリング
エラーハンドリングエラーハンドリング
エラーハンドリング道化師 堂華
 
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!Genya Murakami
 
Linked Open Data勉強会2020 後編:SPARQLの簡単な使い方、SPARQLを使った簡単なアプリ開発
Linked Open Data勉強会2020 後編:SPARQLの簡単な使い方、SPARQLを使った簡単なアプリ開発Linked Open Data勉強会2020 後編:SPARQLの簡単な使い方、SPARQLを使った簡単なアプリ開発
Linked Open Data勉強会2020 後編:SPARQLの簡単な使い方、SPARQLを使った簡単なアプリ開発KnowledgeGraph
 
Azure App Service Overview
Azure App Service OverviewAzure App Service Overview
Azure App Service OverviewTakeshi Fukuhara
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学MITSUNARI Shigeo
 

What's hot (20)

RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介
 
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
 
SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-
SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-
SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-
 
C#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのかC#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのか
 
Docker Tokyo
Docker TokyoDocker Tokyo
Docker Tokyo
 
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
 
オンプレ回帰も簡単実現!自由自在なデータベース運用とは
オンプレ回帰も簡単実現!自由自在なデータベース運用とはオンプレ回帰も簡単実現!自由自在なデータベース運用とは
オンプレ回帰も簡単実現!自由自在なデータベース運用とは
 
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
 
REST API のコツ
REST API のコツREST API のコツ
REST API のコツ
 
TDD のこころ @ OSH2014
TDD のこころ @ OSH2014TDD のこころ @ OSH2014
TDD のこころ @ OSH2014
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
TRICK 2022 Results
TRICK 2022 ResultsTRICK 2022 Results
TRICK 2022 Results
 
エラーハンドリング
エラーハンドリングエラーハンドリング
エラーハンドリング
 
すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!
 
Linked Open Data勉強会2020 後編:SPARQLの簡単な使い方、SPARQLを使った簡単なアプリ開発
Linked Open Data勉強会2020 後編:SPARQLの簡単な使い方、SPARQLを使った簡単なアプリ開発Linked Open Data勉強会2020 後編:SPARQLの簡単な使い方、SPARQLを使った簡単なアプリ開発
Linked Open Data勉強会2020 後編:SPARQLの簡単な使い方、SPARQLを使った簡単なアプリ開発
 
Azure App Service Overview
Azure App Service OverviewAzure App Service Overview
Azure App Service Overview
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 

Similar to WebIDLを見てみる

Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみようAlfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみようTasuku Otani
 
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016Yu Ito
 
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)Toru Kawamura
 
検索エンジンを有効利用するWEBサイト構築
検索エンジンを有効利用するWEBサイト構築検索エンジンを有効利用するWEBサイト構築
検索エンジンを有効利用するWEBサイト構築sato165 @delab
 
WebAPIではじめるphp入門
WebAPIではじめるphp入門WebAPIではじめるphp入門
WebAPIではじめるphp入門Hiroaki Murayama
 
未来のwebに欠かせないREST APIをApache Solr + Drupal8で実装しよう@PHPカンファレンス2016 東京
未来のwebに欠かせないREST APIをApache Solr + Drupal8で実装しよう@PHPカンファレンス2016 東京未来のwebに欠かせないREST APIをApache Solr + Drupal8で実装しよう@PHPカンファレンス2016 東京
未来のwebに欠かせないREST APIをApache Solr + Drupal8で実装しよう@PHPカンファレンス2016 東京Masayuki Abe
 
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC WebアプリケーションPlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC WebアプリケーションKazuhiro Hara
 
シラサギハンズオン 大阪
シラサギハンズオン 大阪シラサギハンズオン 大阪
シラサギハンズオン 大阪Yu Ito
 
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用Yatabe Terumasa
 
Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...
Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...
Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...Shotaro Suzuki
 
シラサギハンズオン 東京
シラサギハンズオン 東京シラサギハンズオン 東京
シラサギハンズオン 東京Yu Ito
 
WordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリWordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリアシアル株式会社
 
Power shell で DSL
Power shell で DSLPower shell で DSL
Power shell で DSLurasandesu
 
現場的!オンプレとAWSの違い
現場的!オンプレとAWSの違い現場的!オンプレとAWSの違い
現場的!オンプレとAWSの違い真吾 吉田
 
Azure Search クックブック
Azure Search クックブックAzure Search クックブック
Azure Search クックブックKazuyuki Miyake
 
徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925Yu Ito
 
Mvc conf session_2_shibamura
Mvc conf session_2_shibamuraMvc conf session_2_shibamura
Mvc conf session_2_shibamuraHiroshi Okunushi
 

Similar to WebIDLを見てみる (20)

Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみようAlfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
 
シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016シラサギハンズオン 1015 1016
シラサギハンズオン 1015 1016
 
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
 
WordPress と Bootstrap
WordPress と BootstrapWordPress と Bootstrap
WordPress と Bootstrap
 
Apache Module
Apache ModuleApache Module
Apache Module
 
検索エンジンを有効利用するWEBサイト構築
検索エンジンを有効利用するWEBサイト構築検索エンジンを有効利用するWEBサイト構築
検索エンジンを有効利用するWEBサイト構築
 
APIMeetup 20170329_ichimura
APIMeetup 20170329_ichimuraAPIMeetup 20170329_ichimura
APIMeetup 20170329_ichimura
 
WebAPIではじめるphp入門
WebAPIではじめるphp入門WebAPIではじめるphp入門
WebAPIではじめるphp入門
 
未来のwebに欠かせないREST APIをApache Solr + Drupal8で実装しよう@PHPカンファレンス2016 東京
未来のwebに欠かせないREST APIをApache Solr + Drupal8で実装しよう@PHPカンファレンス2016 東京未来のwebに欠かせないREST APIをApache Solr + Drupal8で実装しよう@PHPカンファレンス2016 東京
未来のwebに欠かせないREST APIをApache Solr + Drupal8で実装しよう@PHPカンファレンス2016 東京
 
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC WebアプリケーションPlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
PlayFramework 2.0 Javaと WebSocketでつくる リアルタイムMVC Webアプリケーション
 
シラサギハンズオン 大阪
シラサギハンズオン 大阪シラサギハンズオン 大阪
シラサギハンズオン 大阪
 
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用
 
Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...
Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...
Developing .NET 6 Blazor WebAssemby apps with Radzen Blazor component library...
 
シラサギハンズオン 東京
シラサギハンズオン 東京シラサギハンズオン 東京
シラサギハンズオン 東京
 
WordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリWordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリ
 
Power shell で DSL
Power shell で DSLPower shell で DSL
Power shell で DSL
 
現場的!オンプレとAWSの違い
現場的!オンプレとAWSの違い現場的!オンプレとAWSの違い
現場的!オンプレとAWSの違い
 
Azure Search クックブック
Azure Search クックブックAzure Search クックブック
Azure Search クックブック
 
徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925
 
Mvc conf session_2_shibamura
Mvc conf session_2_shibamuraMvc conf session_2_shibamura
Mvc conf session_2_shibamura
 

WebIDLを見てみる