SlideShare a Scribd company logo
1 of 41
Download to read offline
© aratana.inc
とあるjQueryのコードレビュー
Miyazaki.js
ver.1.0.0【Miyazaki.js vol.2】
© aratana.inc
自己紹介
1
高見 和也(Takami Kazuya)
Twitter@miiitaka
Facebook@miiitaka
株式会社アラタナ
フロントエンドエンジニア
JavaScriptと友達です。
© aratana.inc
仕様
2
Question:
h2タグにクリックイベントを追加(IDで指定)
→ クリックで次要素のulタグ表示
→ 再度クリックでulタグが非表示
→ 500ミリ秒で開閉する
liタグにクリックのイベント追加
→ クリックしたらalert()を表示
→ alert()の内容はクリックした要素のテキストを表示
© aratana.inc
基本のコードはこちら
3
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Sample</title>
<style>
#click_trigger {
background: #ccc;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(function () {
});
</script>
</head>
<body>
<h1>Sample</h1>
<h2 id="click_trigger">Click!</h2>
<ul>
<li>メニュー01</li>
<li>メニュー02</li>
<li>メニュー03</li>
</ul>
</body>
</html>
© aratana.inc
追記場所
4
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Sample</title>
<style>
#click_trigger {
background: #ccc;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(function () {
// 記述ができるのはここだけ。ほかのコードは触らないで作りましょう (^o^)
});
</script>
</head>
<body>
<h1>Sample</h1>
<h2 id="click_trigger">Click!</h2>
<ul>
<li>メニュー01</li>
<li>メニュー02</li>
<li>メニュー03</li>
</ul>
</body>
</html>
© aratana.inc
JavaScript だけ抜粋
5
$(function () {
$("h2").click(function () {
$("#click_trigger + ul > li").slideToggle(500);
});
$("#click_trigger + ul > li").on("click", function () {
alert($(this).text());
});
});
© aratana.inc
OH…
6
う、う………ん、まぁ、動くけどね。
© aratana.inc
改善その1:要素をキャッシュする
7
要素をキャッシュする
© aratana.inc
改善その1:要素をキャッシュする
8
要素は変数に保持してキャッシュ化しておきます。
その時の指定方法は、以下の通り。
idで指定する
タグ名で指定する
classで指定する
属性で指定する
jQuery独自拡張セレクタで指定する
速い
遅い
高速化の方法は様々あるが、DOM操作は一番パフォーマンスが左
右されるのでより高速にアクセスする方法を身につけておく。
© aratana.inc
改善その1:要素をキャッシュする
9
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Sample</title>
<style>
#click_trigger {
background: #ccc;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script>
$(function () {
});
</script>
</head>
<body>
<h1>Sample</h1>
<h2 id="click_trigger">Click!</h2>
<ul>
<li>メニュー01</li>
<li>メニュー02</li>
<li>メニュー03</li>
</ul>
</body>
</html>
IDが設定されている
© aratana.inc
改善その1:要素をキャッシュする
10
$(function () {
$("h2").click(function () {
”use strict”;
var
click_trigger = $(”#click_trigger”);
click_trigger.click(function () {
$("#click_trigger + ul > li").slideToggle(500);
});
$("#click_trigger + ul > li").on("click", function () {
alert($(this).text());
});
});
変数に保持してそれを
使いまわします。
© aratana.inc
改善その2:イベントのバインド
11
イベントのバインド
© aratana.inc
改善その2:イベントのバインド
12
jQuery1.7以上であれば、on(), off() でバインド(関連付け)しま
しょう。
$(function () {
”use strict”;
var
click_trigger = $(”#click_trigger”);
click_trigger.click(function () {
click_trigger.on("click", function () {
$("#click_trigger + ul > li").slideToggle(500);
});
$("#click_trigger + ul > li").on("click", function () {
alert($(this).text());
});
});
© aratana.inc
改善その2:イベントのバインド
13
.click(fn)は、.on("click", fn)のショートカットメソッドなので、良い
といえば良いが…
拡張性やメリットを考慮して .on(“click”, fn) を採用しましょう。
© aratana.inc
改善その2:イベントのバインド
14
メリット①:複数のイベントタイプが設定できます。
$("#hoge").on("touchstart click", function () {
// 処理を書きます
});
© aratana.inc
改善その2:イベントのバインド
15
メリット②:複数のイベントハンドラが設定できます。
$("#hoge").on({
"mouseenter": function () {
},
"mouseleave": function () {
}
});
© aratana.inc
改善その2:イベントのバインド
16
メリット③:ロード後に追加した要素に対してイベントをバインド
できます。
※これは、この後のイベントデリゲートにところで。
© aratana.inc
改善その2:イベントのバインド
17
メリット④:イベントに引数を渡すことができます。
.on( events [, selector ] [, data ], handler(eventObject) );
© aratana.inc
改善その3:キュー構造の理解
18
アニメーションのキュー
© aratana.inc
改善その3:キュー構造の理解
19
liが対象になると、slideToggle()メソッドがliの数分発生するので無
駄な処理が動作してしまいます。
$(function () {
”use strict”;
var
click_trigger = $(”#click_trigger”);
click_trigger.on("click", function () {
$("#click_trigger + ul > li").slideToggle(500);
$(this).next("ul").slideToggle(500);
});
$("#click_trigger + ul > li").on("click", function () {
alert($(this).text());
});
});
© aratana.inc
改善その3:キュー構造の理解
20
スライド(500ms) Click!キュー
(queue)
アニメーション処理がキュー
に保持
© aratana.inc
改善その3:キュー構造の理解
21
スライド(500ms)
Click!キュー
(queue)
アニメーションの時間、500
ミリ秒処理が実行される。
© aratana.inc
改善その3:キュー構造の理解
22
スライド(500ms)
Click!キュー
(queue)
500ミリ秒後、処理完了。
キューから削除される。
© aratana.inc
改善その3:キュー構造の理解
23
スライド(500ms)
Click!
Click!
Click!
Click!
Click!
Click!
キュー
(queue)
ものすごくClick!
スライド(500ms)
スライド(500ms)
スライド(500ms)
スライド(500ms)
スライド(500ms)
© aratana.inc
改善その3:キュー構造の理解
24
スライド(500ms)
Click!
Click!
Click!
Click!
Click!
Click!
キュー
(queue)
キューには終了していない処
理が待ち状態になる。
スライド(500ms)
スライド(500ms)
スライド(500ms)
スライド(500ms)
スライド(500ms)
© aratana.inc
改善その3:キュー構造の理解
25
スライド(500ms)
Click!
Click!
Click!
Click!
Click!
Click!
キュー
(queue)
500ミリ秒アニメーションが
順番に処理されていく。スライド(500ms)
スライド(500ms)
スライド(500ms)
スライド(500ms)
スライド(500ms)
© aratana.inc
改善その3:キュー構造の理解
26
スライド(500ms)
キュー
(queue)
スライド(500ms)
スライド(500ms)
スライド(500ms)
スライド(500ms)
スライド(500ms)
キューの中の処理が終わるま
で処理は続く。
© aratana.inc
改善その3:キュー構造の理解
27
キューのアニメーションを破棄してから次のアニメーションを動作
させます。
$(function () {
”use strict”;
var
click_trigger = $(”#click_trigger”);
click_trigger.on("click", function () {
$(this).next("ul").stop().slideToggle(500);
});
$("#click_trigger + ul > li").on("click", function () {
alert($(this).text());
});
});
© aratana.inc
改善その3:キュー構造の理解
28
スライド(500ms)
キュー
(queue)
stop()でキューの中身が削除され
る。
スライド(500ms)
スライド(500ms)
スライド(500ms)
スライド(500ms)
スライド(500ms)
© aratana.inc
改善その3:キュー構造の理解
29
キュー
(queue)
次のslideToggle()が格納される。
スライド(500ms)
© aratana.inc
改善その3:キュー構造の理解
30
キュー
(queue)
美しい。(^o^)
スライド(500ms)
© aratana.inc
改善その4:少ないアクセスで済ませる
31
イベントデリゲート
(イベントの委譲)
© aratana.inc
改善その4:少ないアクセスで済ませる
32
liをクリックするとalert()を動作させたい。
liにイベントを設定しているが、この設定対象を変えます。
$(function () {
”use strict”;
var
click_trigger = $(”#click_trigger”);
click_trigger.on("click", function () {
$(this).next("ul").stop().slideToggle(500);
});
$("#click_trigger + ul > li").on("click", function () {
alert($(this).text());
});
});
© aratana.inc
改善その4:少ないアクセスで済ませる
33
liにアクセスするより、ID+ulセレクタにアクセスするほうが速い。
イベント設定対象が減る。
$(function () {
”use strict”;
var
click_trigger = $(”#click_trigger”);
click_trigger.on("click", function () {
$(this).next("ul").stop().slideToggle(500);
});
click_trigger.next("ul").on("click", "li", function () {
$("#click_trigger + ul > li").on("click", function () {
alert($(this).text());
});
});
© aratana.inc
改善その4:少ないアクセスで済ませる
34
window
document
h2h1 ul
li
liのclickを発動!
© aratana.inc
改善その4:少ないアクセスで済ませる
35
window
document
h2h1 ul
li
$(window).on(“click”, fn) が発動!
$(document).on(“click”, fn) が発動!
$(“ul”).on(“click”,
fn) が発動!
© aratana.inc
改善その4:少ないアクセスで済ませる
36
window
document
h2h1 ul
li
これをバブリングと
言います。
© aratana.inc
改善その4:少ないアクセスで済ませる
37
バブリングの発生を止めておきましょう。
$(function () {
”use strict”;
var
click_trigger = $(”#click_trigger”);
click_trigger.on("click", function (e) {
e.stopPropagation();
$(this).next("ul").stop().slideToggle(500);
});
click_trigger.next("ul").on("click", "li", function (e) {
e.stopPropagation();
alert($(this).text());
});
});
© aratana.inc
改善その4:少ないアクセスで済ませる
38
<ul>
<li>メニュー01</li>
<li>メニュー02</li>
<li>メニュー03</li>
<li>メニュー04</li>
</ul>
要素を動的に増やすと
しましょう。
$("button").on("click", function (e) {
e.stopPropagation();
var
objLi = $("<li>").text("メニュー04");
click_trigger.next("ul").append(objLi);
});
© aratana.inc
改善その4:少ないアクセスで済ませる
39
.on() でバインドしてイベントデリゲートにしておくと、動的に追
加した要素にも自動的にイベントが設定されます。
click_trigger.next("ul").on("click", "li", function (e) {
e.stopPropagation();
alert($(this).text());
});
$("#click_trigger + ul > li").on("click", function () {
alert($(this).text());
});
○拡張ある記述
×拡張性がない
© aratana.inc
ご清聴ありがとうございました。
40
ご清聴
ありがとうございました。

More Related Content

Similar to Miyazaki.js vol.2

20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会Yukihiro Kitazawa
 
20110714 j queryベーシック
20110714 j queryベーシック20110714 j queryベーシック
20110714 j queryベーシック良太 増子
 
Springのプログラムモデルと動く仕様~テスト編~
Springのプログラムモデルと動く仕様~テスト編~Springのプログラムモデルと動く仕様~テスト編~
Springのプログラムモデルと動く仕様~テスト編~terahide
 
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策wintechq
 
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみようJavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみようHiroaki Wakamatsu
 
学生向けAndroid勉強会(入門編)
学生向けAndroid勉強会(入門編)学生向けAndroid勉強会(入門編)
学生向けAndroid勉強会(入門編)Itsuki Kuroda
 
第四回 JavaScriptから始めるプログラミング2016
第四回 JavaScriptから始めるプログラミング2016第四回 JavaScriptから始めるプログラミング2016
第四回 JavaScriptから始めるプログラミング2016kyoto university
 
Elastic Cloudを活用!!ゼロトラストセキュリティの「はじめの一歩」
Elastic Cloudを活用!!ゼロトラストセキュリティの「はじめの一歩」Elastic Cloudを活用!!ゼロトラストセキュリティの「はじめの一歩」
Elastic Cloudを活用!!ゼロトラストセキュリティの「はじめの一歩」Hibino Hisashi
 
20150221 めとべや東京-プライベートコード共有サービス
20150221 めとべや東京-プライベートコード共有サービス20150221 めとべや東京-プライベートコード共有サービス
20150221 めとべや東京-プライベートコード共有サービスTakayoshi Tanaka
 
Twitter連携chrome extension作り方
Twitter連携chrome extension作り方Twitter連携chrome extension作り方
Twitter連携chrome extension作り方Hiroshi Oyamada
 
HTML5 conference 2013
HTML5 conference 2013HTML5 conference 2013
HTML5 conference 2013Takuo Kihira
 
SORACOM UG 関西 x JAWS-UG 関西 IoT専門支部共催 | #あのボタン 開発のちょっといい話とSORACOM アップデート
SORACOM UG 関西 x JAWS-UG 関西 IoT専門支部共催 | #あのボタン 開発のちょっといい話とSORACOM アップデートSORACOM UG 関西 x JAWS-UG 関西 IoT専門支部共催 | #あのボタン 開発のちょっといい話とSORACOM アップデート
SORACOM UG 関西 x JAWS-UG 関西 IoT専門支部共催 | #あのボタン 開発のちょっといい話とSORACOM アップデートSORACOM,INC
 
Brush up your Coding! 2013 winter
Brush up your Coding! 2013 winterBrush up your Coding! 2013 winter
Brush up your Coding! 2013 winterShogo Sensui
 
Jqm20120210
Jqm20120210Jqm20120210
Jqm20120210cmtomoda
 
03 piggyback -by-simple-code-public
03 piggyback -by-simple-code-public03 piggyback -by-simple-code-public
03 piggyback -by-simple-code-publicSmz Nbys
 

Similar to Miyazaki.js vol.2 (20)

20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会
 
20110714 j queryベーシック
20110714 j queryベーシック20110714 j queryベーシック
20110714 j queryベーシック
 
jQuery超入門編
jQuery超入門編jQuery超入門編
jQuery超入門編
 
Springのプログラムモデルと動く仕様~テスト編~
Springのプログラムモデルと動く仕様~テスト編~Springのプログラムモデルと動く仕様~テスト編~
Springのプログラムモデルと動く仕様~テスト編~
 
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
Microsoft Antimalware for Azure による Azure 仮想マシンの簡易的なマルウェア対策
 
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみようJavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
 
IgGrid 入門編
IgGrid 入門編IgGrid 入門編
IgGrid 入門編
 
Not CVE-2013-xxxx
Not CVE-2013-xxxxNot CVE-2013-xxxx
Not CVE-2013-xxxx
 
学生向けAndroid勉強会(入門編)
学生向けAndroid勉強会(入門編)学生向けAndroid勉強会(入門編)
学生向けAndroid勉強会(入門編)
 
Knockout
KnockoutKnockout
Knockout
 
第四回 JavaScriptから始めるプログラミング2016
第四回 JavaScriptから始めるプログラミング2016第四回 JavaScriptから始めるプログラミング2016
第四回 JavaScriptから始めるプログラミング2016
 
Elastic Cloudを活用!!ゼロトラストセキュリティの「はじめの一歩」
Elastic Cloudを活用!!ゼロトラストセキュリティの「はじめの一歩」Elastic Cloudを活用!!ゼロトラストセキュリティの「はじめの一歩」
Elastic Cloudを活用!!ゼロトラストセキュリティの「はじめの一歩」
 
20150221 めとべや東京-プライベートコード共有サービス
20150221 めとべや東京-プライベートコード共有サービス20150221 めとべや東京-プライベートコード共有サービス
20150221 めとべや東京-プライベートコード共有サービス
 
Twitter連携chrome extension作り方
Twitter連携chrome extension作り方Twitter連携chrome extension作り方
Twitter連携chrome extension作り方
 
HTML5 conference 2013
HTML5 conference 2013HTML5 conference 2013
HTML5 conference 2013
 
SORACOM UG 関西 x JAWS-UG 関西 IoT専門支部共催 | #あのボタン 開発のちょっといい話とSORACOM アップデート
SORACOM UG 関西 x JAWS-UG 関西 IoT専門支部共催 | #あのボタン 開発のちょっといい話とSORACOM アップデートSORACOM UG 関西 x JAWS-UG 関西 IoT専門支部共催 | #あのボタン 開発のちょっといい話とSORACOM アップデート
SORACOM UG 関西 x JAWS-UG 関西 IoT専門支部共催 | #あのボタン 開発のちょっといい話とSORACOM アップデート
 
Brush up your Coding! 2013 winter
Brush up your Coding! 2013 winterBrush up your Coding! 2013 winter
Brush up your Coding! 2013 winter
 
Visualforce + jQuery
Visualforce + jQueryVisualforce + jQuery
Visualforce + jQuery
 
Jqm20120210
Jqm20120210Jqm20120210
Jqm20120210
 
03 piggyback -by-simple-code-public
03 piggyback -by-simple-code-public03 piggyback -by-simple-code-public
03 piggyback -by-simple-code-public
 

More from Takami Kazuya

HTML栄枯盛衰は世の習い
HTML栄枯盛衰は世の習いHTML栄枯盛衰は世の習い
HTML栄枯盛衰は世の習いTakami Kazuya
 
Google Apps Script 入門
Google Apps Script 入門Google Apps Script 入門
Google Apps Script 入門Takami Kazuya
 
GoogleAppsScript入門
GoogleAppsScript入門GoogleAppsScript入門
GoogleAppsScript入門Takami Kazuya
 
Googleデータポータルで見える化に挑戦vol.2
Googleデータポータルで見える化に挑戦vol.2Googleデータポータルで見える化に挑戦vol.2
Googleデータポータルで見える化に挑戦vol.2Takami Kazuya
 
WordPressで考えるこれからのコンテンツ制作
WordPressで考えるこれからのコンテンツ制作WordPressで考えるこれからのコンテンツ制作
WordPressで考えるこれからのコンテンツ制作Takami Kazuya
 
WordPressをこれから始める人のためのテーマ講座
WordPressをこれから始める人のためのテーマ講座WordPressをこれから始める人のためのテーマ講座
WordPressをこれから始める人のためのテーマ講座Takami Kazuya
 
WordPress+JSON-LDで構造化するこれからのマークアップ WordFes Nagoya 2016
WordPress+JSON-LDで構造化するこれからのマークアップ WordFes Nagoya 2016WordPress+JSON-LDで構造化するこれからのマークアップ WordFes Nagoya 2016
WordPress+JSON-LDで構造化するこれからのマークアップ WordFes Nagoya 2016Takami Kazuya
 
WordPress + JSON-LDで構造化するこれからのマークアップ
WordPress + JSON-LDで構造化するこれからのマークアップWordPress + JSON-LDで構造化するこれからのマークアップ
WordPress + JSON-LDで構造化するこれからのマークアップTakami Kazuya
 
jQuery3.0-beta1-point
jQuery3.0-beta1-pointjQuery3.0-beta1-point
jQuery3.0-beta1-pointTakami Kazuya
 
プラグイン公開までの道のり
プラグイン公開までの道のりプラグイン公開までの道のり
プラグイン公開までの道のりTakami Kazuya
 
JSON-LD schema.org定義によるデータ構造化のススメ
JSON-LD schema.org定義によるデータ構造化のススメJSON-LD schema.org定義によるデータ構造化のススメ
JSON-LD schema.org定義によるデータ構造化のススメTakami Kazuya
 
WordPress widget api
WordPress widget apiWordPress widget api
WordPress widget apiTakami Kazuya
 
React Facebook JavaScript Library
React Facebook JavaScript LibraryReact Facebook JavaScript Library
React Facebook JavaScript LibraryTakami Kazuya
 
Wordpress カスタム投稿
Wordpress カスタム投稿Wordpress カスタム投稿
Wordpress カスタム投稿Takami Kazuya
 
WordPressプラグインの作り方
WordPressプラグインの作り方WordPressプラグインの作り方
WordPressプラグインの作り方Takami Kazuya
 
【WordBench宮崎】第3回・4回アンケート報告
【WordBench宮崎】第3回・4回アンケート報告【WordBench宮崎】第3回・4回アンケート報告
【WordBench宮崎】第3回・4回アンケート報告Takami Kazuya
 
WordPressプラグイン考察
WordPressプラグイン考察WordPressプラグイン考察
WordPressプラグイン考察Takami Kazuya
 
WordPressテーマ作成
WordPressテーマ作成WordPressテーマ作成
WordPressテーマ作成Takami Kazuya
 

More from Takami Kazuya (20)

HTML栄枯盛衰は世の習い
HTML栄枯盛衰は世の習いHTML栄枯盛衰は世の習い
HTML栄枯盛衰は世の習い
 
Google Apps Script 入門
Google Apps Script 入門Google Apps Script 入門
Google Apps Script 入門
 
GoogleAppsScript入門
GoogleAppsScript入門GoogleAppsScript入門
GoogleAppsScript入門
 
Googleデータポータルで見える化に挑戦vol.2
Googleデータポータルで見える化に挑戦vol.2Googleデータポータルで見える化に挑戦vol.2
Googleデータポータルで見える化に挑戦vol.2
 
WordPressで考えるこれからのコンテンツ制作
WordPressで考えるこれからのコンテンツ制作WordPressで考えるこれからのコンテンツ制作
WordPressで考えるこれからのコンテンツ制作
 
WordPressをこれから始める人のためのテーマ講座
WordPressをこれから始める人のためのテーマ講座WordPressをこれから始める人のためのテーマ講座
WordPressをこれから始める人のためのテーマ講座
 
WordPress+AMP
WordPress+AMPWordPress+AMP
WordPress+AMP
 
WordPress+JSON-LDで構造化するこれからのマークアップ WordFes Nagoya 2016
WordPress+JSON-LDで構造化するこれからのマークアップ WordFes Nagoya 2016WordPress+JSON-LDで構造化するこれからのマークアップ WordFes Nagoya 2016
WordPress+JSON-LDで構造化するこれからのマークアップ WordFes Nagoya 2016
 
WordPress + JSON-LDで構造化するこれからのマークアップ
WordPress + JSON-LDで構造化するこれからのマークアップWordPress + JSON-LDで構造化するこれからのマークアップ
WordPress + JSON-LDで構造化するこれからのマークアップ
 
jQuery3.0-beta1-point
jQuery3.0-beta1-pointjQuery3.0-beta1-point
jQuery3.0-beta1-point
 
プラグイン公開までの道のり
プラグイン公開までの道のりプラグイン公開までの道のり
プラグイン公開までの道のり
 
History api
History apiHistory api
History api
 
JSON-LD schema.org定義によるデータ構造化のススメ
JSON-LD schema.org定義によるデータ構造化のススメJSON-LD schema.org定義によるデータ構造化のススメ
JSON-LD schema.org定義によるデータ構造化のススメ
 
WordPress widget api
WordPress widget apiWordPress widget api
WordPress widget api
 
React Facebook JavaScript Library
React Facebook JavaScript LibraryReact Facebook JavaScript Library
React Facebook JavaScript Library
 
Wordpress カスタム投稿
Wordpress カスタム投稿Wordpress カスタム投稿
Wordpress カスタム投稿
 
WordPressプラグインの作り方
WordPressプラグインの作り方WordPressプラグインの作り方
WordPressプラグインの作り方
 
【WordBench宮崎】第3回・4回アンケート報告
【WordBench宮崎】第3回・4回アンケート報告【WordBench宮崎】第3回・4回アンケート報告
【WordBench宮崎】第3回・4回アンケート報告
 
WordPressプラグイン考察
WordPressプラグイン考察WordPressプラグイン考察
WordPressプラグイン考察
 
WordPressテーマ作成
WordPressテーマ作成WordPressテーマ作成
WordPressテーマ作成
 

Miyazaki.js vol.2