SlideShare a Scribd company logo
SEOとJavaScript。
∼ 文書構造とチームと、時々、闇 ∼


2016/01/16 WDF研修 「半歩先のSEOで効率よく結果を出そう」
DMM.com Labo Yuki Minakawa
自己紹介
• 2015/09/01 ∼

DMM.com Labo 加賀デザイン部に

フロントエンドエンジニアとしてJoinしました
• 業務では、HTML/CSS/JavaScript等の

実装や開発環境の準備・宴会部長まで

幅広くやらせて頂いてます :-)
ミナカワ ユウキ
HP : kglabo.com
初LT
よろしくお願いします!
気になる
先に結論
極力、JS書かないようにしよう
極力、JSを書かないようにしよう
本日のアジェンダ
• 検索エンジンに反映されるまで
• 文書構造を意識する
• 理想と現実
検索エンジンに反映されるまで
※前置き
検索エンジンに反映されるまで
検索エンジンに反映されるまで
1. 検索エンジンがクローラーを使ってページの情報を集める
検索エンジンに反映されるまで
1. 検索エンジンがクローラーを使ってページの情報を集める
検索エンジン

Google / Yahoo 等
クローラー
GoogleBot 等
検索エンジンに反映されるまで
1. 検索エンジンがクローラーを使ってページの情報を集める
情報あつめてきてー
検索エンジン

Google / Yahoo 等
クローラー
GoogleBot 等
検索エンジンに反映されるまで
情報あつめてきてー
検索エンジン

Google / Yahoo 等
クローラー
GoogleBot 等
わかりましたー
1. 検索エンジンがクローラーを使ってページの情報を集める
検索エンジンに反映されるまで
情報あつめてきてー
検索エンジン

Google / Yahoo 等
クローラー
GoogleBot 等
1. 検索エンジンがクローラーを使ってページの情報を集める
検索エンジンに反映されるまで
1. 検索エンジンがクローラーを使ってページの情報を集める
2. クローラーが集めた情報を検索エンジンがインデックスしていく
いただきます!
検索エンジン

Google / Yahoo 等
クローラー
GoogleBot 等
もってきた!
検索エンジンに反映されるまで
1. 検索エンジンがクローラーを使ってページの情報を集める
2. クローラーが集めた情報を検索エンジンがインデックスしていく
きろくしよう
検索エンジン

Google / Yahoo 等 データベース
検索エンジンに反映されるまで
1. 検索エンジンがクローラーを使ってページの情報を集める
2. クローラーが集めた情報を検索エンジンがインデックスしていく
きろく完了
検索エンジン

Google / Yahoo 等 データベース
検索エンジンに反映されるまで
1. 検索エンジンがクローラーを使ってページの情報を集める
2. クローラーが集めた情報を検索エンジンがインデックスしていく
検索エンジン

Google / Yahoo 等 データベース
検索結果に表示
各種ブラウザ
ここまで覚えればOK
その中の、
途中の出来事
クローラー
GoogleBot 等
なになに・・・?
途中の出来事
クローラー
GoogleBot 等
・・・・・・・。
• クローラー 内容が理解できない問題
途中の出来事
クローラー
GoogleBot 等
imgしか…無い…!
• クローラー 内容が理解できない問題
途中の出来事
クローラー
GoogleBot 等
imgしか…無い…!
• クローラー 内容が理解できない問題
途中の出来事
クローラー
GoogleBot 等
imgしか…無い…!
今回はコレの話
文書構造を意識する
文書構造を意識する
• ユーザは表示されているページを見ている。
クローラー
GoogleBot 等
見出しが無エ!
文書構造を意識する
• ユーザは表示されているページを見ている。
• クローラーはソースコードを見ている。
クローラー
GoogleBot 等
テキスト無エ!
文書構造を意識する
• ユーザは表示されているページを見ている。
• クローラーはソースコードを見ている。
クローラー
GoogleBot 等
altもそれほど入って無エ!
文書構造を意識する
• ユーザは表示されているページを見ている。
クローラー
GoogleBot 等
imgしか…無い…!
文書構造を意識している
• クローラーはソースコードを見ている。
<h1 class="entryTitle">1/16開催 WDF研修「半歩先のSEOで効率よく結果を出そう」</h1>

<p>

 WDFの2016年最初のセミナーは、SEOの第一人者でWDFに過去3回講演していただいている

 住 太陽さんをお招きして、WDF研修「半歩先のSEOで効率よく結果を出そう」を開催します。

 住さんからは、「直近のセミナーで話した内容すべてを詰め込んだ総集編」、

 「内容の濃すぎるセミナー」というコメントをいただいています。

 日々の運用のヒントが必ず見つかります。ぜひご参加ください。

</p>



<h2>半歩先のSEOで効率よく結果を出そう</h2>

<p>

 ウェブマスターの手間と時間は何よりも大切なもの。効果の薄い最適化施策や、

 PVばかりで売上につながらないコンテンツ作りに、大切な手間と時間はかけられません。

 確実に、しかも、効率よく結果を出すには、集中すべきところとそうでないところを

 切り分ける必要があります。

</p>
文書構造を意識している
• クローラーはソースコードを見ている。
<h1 class="entryTitle">1/16開催 WDF研修「半歩先のSEOで効率よく結果を出そう」</h1>

<p>

 WDFの2016年最初のセミナーは、SEOの第一人者でWDFに過去3回講演していただいている

 住 太陽さんをお招きして、WDF研修「半歩先のSEOで効率よく結果を出そう」を開催します。

 住さんからは、「直近のセミナーで話した内容すべてを詰め込んだ総集編」、

 「内容の濃すぎるセミナー」というコメントをいただいています。

 日々の運用のヒントが必ず見つかります。ぜひご参加ください。

</p>



<h2>半歩先のSEOで効率よく結果を出そう</h2>

<p>

 ウェブマスターの手間と時間は何よりも大切なもの。効果の薄い最適化施策や、

 PVばかりで売上につながらないコンテンツ作りに、大切な手間と時間はかけられません。

 確実に、しかも、効率よく結果を出すには、集中すべきところとそうでないところを

 切り分ける必要があります。

</p>
…ほう。大見出しは「1/16開催 WDF..
文書構造を意識してない
• クローラーはソースコードを見ている。
<b>1/16開催 WDF研修「半歩先のSEOで効率よく結果を出そう」</b><br>

<br>

WDFの2016年最初のセミナーは、SEOの第一人者でWDFに過去3回講演していただいている

住 太陽さんをお招きして、WDF研修「半歩先のSEOで効率よく結果を出そう」を開催します。

住さんからは、「直近のセミナーで話した内容すべてを詰め込んだ総集編」、

「内容の濃すぎるセミナー」というコメントをいただいています。

日々の運用のヒントが必ず見つかります。ぜひご参加ください。

<br>

<br>

<b>半歩先のSEOで効率よく結果を出そう</b><br>

<br>

ウェブマスターの手間と時間は何よりも大切なもの。効果の薄い最適化施策や、

PVばかりで売上につながらないコンテンツ作りに、大切な手間と時間はかけられません。

確実に、しかも、効率よく結果を出すには、集中すべきところとそうでないところを

切り分ける必要があります。

文書構造を意識してない
• クローラーはソースコードを見ている。
<b>1/16開催 WDF研修「半歩先のSEOで効率よく結果を出そう」</b><br>

<br>

WDFの2016年最初のセミナーは、SEOの第一人者でWDFに過去3回講演していただいている

住 太陽さんをお招きして、WDF研修「半歩先のSEOで効率よく結果を出そう」を開催します。

住さんからは、「直近のセミナーで話した内容すべてを詰め込んだ総集編」、

「内容の濃すぎるセミナー」というコメントをいただいています。

日々の運用のヒントが必ず見つかります。ぜひご参加ください。

<br>

<br>

<b>半歩先のSEOで効率よく結果を出そう</b><br>

<br>

ウェブマスターの手間と時間は何よりも大切なもの。効果の薄い最適化施策や、

PVばかりで売上につながらないコンテンツ作りに、大切な手間と時間はかけられません。

確実に、しかも、効率よく結果を出すには、集中すべきところとそうでないところを

切り分ける必要があります。

…どういう事だってばよ!?
文書構造とは何だったのか
• クローラーはソースコードを見ている。
<img src="/images/ttl_h1_01.png" alt="">



<img src="/images/txt_01.png" alt="">



<img src="/images/ttl_h2_01.png" alt="">



<img src="/images/txt_02.png" alt="">
つらい
お前は一体、

何を言っているんだ。
※クローラーです
この件については、

上に伝えさせてもらう。
※クローラーです
機会損失
美味しいソースをくれ!
※クローラーです
正しい文書構造、大事。
クローラー
GoogleBot 等
JS CSS
クローラーは

ソースコードを みている
これは一体。
クローラーは

どうしていいのか わからない!
クローラー
GoogleBot 等
JS CSS
ああ、噂のJSですよね
クローラーの クローリング!

MP が たりない!
クローラー
GoogleBot 等
JS CSS
まだ勉強中なんですよね
?
プログレッシブ・エンハンスメント

SEOとJava Script。 〜文書構造とチームと、時々、闇〜
SEOとJava Script。 〜文書構造とチームと、時々、闇〜
SEOとJava Script。 〜文書構造とチームと、時々、闇〜
役割を分ける
SEOとJava Script。 〜文書構造とチームと、時々、闇〜
JS(インタラクション)を削除しても、

内容が通じる
SEOとJava Script。 〜文書構造とチームと、時々、闇〜
CSS(スタイル)を削除しても、

内容が通じる
役割を分ける
役割を分ける
役割を分ける
• HTMLは適切にマークアップ
• 見栄えに関わるものはCSS
• インタラクションはJSで
適切なマークアップ?
適切なマークアップ
• テキストがそのコンテンツを示すタグで囲まれている

・見出しは<h⃝>タグに、段落は<p>で囲まれている etc
適切なマークアップ
• テキストがそのコンテンツを示すタグで囲まれている

・見出しは<h⃝>タグに、段落は<p>で囲まれている etc
• HTML要素が正しく利用されている

・<h1>タグ等を文字サイズを大きくする為ではなく、

 見出しとして適切に利用する etc
適切なマークアップ
• テキストがそのコンテンツを示すタグで囲まれている

・見出しは<h⃝>タグに、段落は<p>で囲まれている etc
• HTML要素が正しく利用されている

・<h1>タグ等を文字サイズを大きくする為ではなく、

 見出しとして適切に利用する etc
• テキストにスタイル属性を直接的に含まない

・<font>や<center>タグや<div style= > 

・ちゃんとCSSに記載する

極力、JS書かないようにしよう
極力、JS書かないようにしよう
非同期コンテンツについて
• JavaScriptで動的に生成するコンテンツについては、

クローラーは完全に理解する事ができない。
非同期コンテンツについて
• JavaScriptで動的に生成するコンテンツについては、

クローラーは完全に理解する事ができない。
非同期コンテンツについて
• JavaScriptで動的に生成するコンテンツについては、

クローラーは完全に理解する事ができない。





• HTML スナップショット?
非同期コンテンツについて
• JavaScriptで動的に生成するコンテンツについては、

クローラーは完全に理解する事ができない。





• HTML スナップショット?

・工数が掛かる

・その前に構成的に問題ない?
非同期コンテンツについて
• JavaScriptで動的に生成するコンテンツについては、

クローラーは完全に理解する事ができない。





• JavaScriptを切っても情報を、

閲覧・ページ遷移できるように作る!

何でもかんでもJSで処理しない
何でもかんでもJSで処理しない
JSONのデータをJSでHTMLに描画

JSONのデータをJSでHTMLに描画

















// HTML

<body>

<h1>艦隊一覧</h1> 

<ul>

<li></li>

<li></li>

</ul>

</body>
何でもかんでもJSで処理しない
JSONのデータをJSでHTMLに描画

// JSON

[

{

"title": "叢雲",

"genre": "駆逐艦",

"note": “我々の業界ではご褒美です",

"url": “https://murakumo.com”

},

{

"title": "島風",

"genre": "駆逐艦",

"note": “めっちゃ早い",

"url": “https://simakaze.com”

},

]
















// HTML

<body>

<h1>艦隊一覧</h1> 

<ul>

<li></li>

<li></li>

</ul>

</body>
何でもかんでもJSで処理しない
JSONのデータをJSでHTMLに描画

// JS

$.getJSON(“itemlist.json” ,function(data) {

$(data).each(function){

$(“<h2><a href=“”+this.url+””>+this.title+”</a></h2>”)

.appendTo(‘ul li’);

}

});



// HTML

<body>

<h1>艦隊一覧</h1> 

<ul>

<li></li>

<li></li>

</ul>

</body>
// JSON

[

{

"title": "叢雲",

"genre": "駆逐艦",

"note": “我々の業界ではご褒美です",

"url": “https://murakumo.com”

},

{

"title": "島風",

"genre": "駆逐艦",

"note": “めっちゃ早い",

"url": “https://simakaze.com”

},

]
何でもかんでもJSで処理しない
JSONのデータをJSでHTMLに描画

// JS

$.getJSON(“itemlist.json” ,function(data) {

$(data).each(function){

$(“<h2><a href=“”+this.url+””>+this.title+”</a></h2>”)

.appendTo(‘ul li’);

}

});



// HTML

<body>

<h1>艦隊一覧</h1> 

<ul>

<li><h2><a href=“https://murakumo.com”>叢雲</a></h2></li>

<li><h2><a href=“https://simakaze.com”>島風</a></h2></li>

</ul>

</body>
// JSON

[

{

"title": "叢雲",

"genre": "駆逐艦",

"note": “我々の業界ではご褒美です",

"url": “https://murakumo.com”

},

{

"title": "島風",

"genre": "駆逐艦",

"note": “めっちゃ早い",

"url": “https://simakaze.com”

},

]
何でもかんでもJSで処理しない
JSONのデータをJSでHTMLに描画

// JSON

[

{

"title": "叢雲",

"genre": "駆逐艦",

"note": “我々の業界ではご褒美です",

"url": “https://murakumo.com”

},

{

"title": "島風",

"genre": "駆逐艦",

"note": “めっちゃ早い",

"url": “https://simakaze.com”

},

]
// JS

$.getJSON(“itemlist.json” ,function(data) {

$(data).each(function){

$(“<h2><a href=“”+this.url+””>+this.title+”</a></h2>”)

.appendTo(‘ul li’);

}

});



// HTML

<body>

<h1>艦隊一覧</h1> 

<ul>

<li><h2><a href=“https://murakumo.com”>叢雲</a></h2></li>

<li><h2><a href=“https://simakaze.com”>島風</a></h2></li>

</ul>

</body>
何でもかんでもJSで処理しない
• URLは動的に生成しない

※不完全なURLをクロールしてエラーを出す事がある為
JSONのデータをJSでHTMLに描画

// JSON

[

{

"title": "叢雲",

"genre": "駆逐艦",

"note": “我々の業界ではご褒美です",

"url": “https://murakumo.com”

},

{

"title": "島風",

"genre": "駆逐艦",

"note": “めっちゃ早い",

"url": “https://simakaze.com”

},

]
// JS

$.getJSON(“itemlist.json” ,function(data) {

$(data).each(function){

$(“<h2><a href=“”+this.url+””>+this.title+”</a></h2>”)

.appendTo(‘ul li’);

}

});



// HTML

<body>

<h1>艦隊一覧</h1> 

<ul>

<li><h2><a href=“https://murakumo.com”>叢雲</a></h2></li>

<li><h2><a href=“https://simakaze.com”>島風</a></h2></li>

</ul>

</body>
何でもかんでもJSで処理しない
• URLは動的に生成しない

※不完全なURLをクロールしてエラーを出す事がある為
• HTML自体に <a href= hoge >で記載する
JSONのデータをJSでHTMLに描画

// JSON

[

{

"title": "叢雲",

"genre": "駆逐艦",

"note": “我々の業界ではご褒美です",

"url": “https://murakumo.com”

},

{

"title": "島風",

"genre": "駆逐艦",

"note": “めっちゃ早い",

"url": “https://simakaze.com”

},

]
// JS

$.getJSON(“itemlist.json” ,function(data) {

$(data).each(function){

$(“<h2><a href=“”+this.url+””>+this.title+”</a></h2>”)

.appendTo(‘ul li’);

}

});



// HTML

<body>

<h1>艦隊一覧</h1> 

<ul>

<li><h2><a href=“https://murakumo.com”>叢雲</a></h2></li>

<li><h2><a href=“https://simakaze.com”>島風</a></h2></li>

</ul>

</body>
何でもかんでもJSで処理しない
• URLは動的に生成しない

※不完全なURLをクロールしてエラーを出す事がある為
• HTML自体に <a href= hoge >で記載する
• オリジナルテキストは非同期にしない

※Googleはオリジナルテキストを高く評価する傾向がある為
何でもかんでもJSで処理しない
JSONのデータをJSでHTMLに描画

// JSON

[

{

"title": "叢雲",

"genre": "駆逐艦",

"note": “我々の業界ではご褒美です",

"url": “https://murakumo.com”

},

{

"title": "島風",

"genre": "駆逐艦",

"note": “めっちゃ早い",

"url": “https://simakaze.com”

},

]
// JS

$.getJSON(“itemlist.json” ,function(data) {

$(data).each(function){

$(“<h2><a href=“”+this.url+””>+this.title+”</a></h2>”)

.appendTo(‘ul li’);

}

});



// HTML

<body>

<h1>艦隊一覧</h1> 

<ul>

<li><h2><a href=“https://murakumo.com”>叢雲</a></h2></li>

<li><h2><a href=“https://simakaze.com”>島風</a></h2></li>

</ul>

</body>
• URLは動的に生成しない

※不完全なURLをクロールしてエラーを出す事がある為
• HTML自体に <a href= hoge >で記載する
• オリジナルテキストは非同期にしない

※Googleはオリジナルテキストを高く評価する傾向がある為
• 更に複数ページに利用するとペナルティ

※コンテンツ内容が乏しいページがサイト内に多数あった場合、低品質サイトと判断
何でもかんでもJSで処理しない
JSONのデータをJSでHTMLに描画

// JS

$.getJSON(“itemlist.json” ,function(data) {

$(data).each(function){

$(“<h2><a href=“”+this.url+””>+this.title+”</a></h2>”)

.appendTo(‘ul li’);

}

});



// HTML

<body>

<h1>艦隊一覧</h1> 

<ul>

<li><h2><a href=“https://murakumo.com”>叢雲</a></h2></li>

<li><h2><a href=“https://simakaze.com”>島風</a></h2></li>

</ul>

</body>
// JSON

[

{

"title": "叢雲",

"genre": "駆逐艦",

"note": “我々の業界ではご褒美です",

"url": “https://murakumo.com”

},

{

"title": "島風",

"genre": "駆逐艦",

"note": “めっちゃ早い",

"url": “https://simakaze.com”

},

]
何でもかんでもJSで処理しない
スライダーはJSを切っても全部表示されるようにする

スライダーはJSを切っても全部表示されるようにする

何でもかんでもJSで処理しない
Slider images
Slider images
スライダーはJSを切っても全部表示されるようにする

li { display:none;}
JS OFF
$(function(){

$(“.slide li”).show();

});
何でもかんでもJSで処理しない
スライダーはJSを切っても全部表示されるようにする

Slider images
li { display:none;}
JS OFF
$(function(){

$(“.slide li”).show();

});
何でもかんでもJSで処理しない
スライダーはJSを切っても全部表示されるようにする

Slider images
li { display:none;}
JS OFF
$(function(){

$(“.slide li”).show();

});
何でもかんでもJSで処理しない
スライダーはJSを切っても全部表示されるようにする

Slider images
JS OFF
何でもかんでもJSで処理しない
スライダーはJSを切っても全部表示されるようにする

Slider images
JS OFF
何でもかんでもJSで処理しない
他にも色々
• ナビ等の主要なリンクを非同期コンテンツにしない
• JavaScriptによるリダイレクト
• ブラウザにレンダリングさせる前に、

サーバサイドでレンダリング出来ないか考える。
• アプリインストールを促す「インタースティシャル広告」も

コンテンツの大半を覆うようなものだと、ペナルティ対象
とは言うものの
難しい時もある
理想と現実
分業の闇
分業の闇
デザイナー
デザインカンプ出来たので、

マークアップお願いします。
分業の闇
デザイナー
デザインカンプ出来たので、

マークアップお願いします。
わ、わかりました!
新人くん
分業の闇
デザイナー
・・・・・!
新人くん
分業の闇
デザイナー
出来ました!
新人くん
分業の闇
_人人人人人人人_
> <div>まみれ <
 ̄Y^Y^Y^Y^Y^Y ̄
※あくまで起こりうる闇の例であり、弊社の事例ではありません。
分業の闇
デザイナー
コーディングが完了したので、
JSの処理導入お願いします。
エンジニア
分業の闇
デザイナー
コーディングが完了したので、
JSの処理導入お願いします。
エンジニア
了解しました。
内容確認します。
分業の闇
_人人人人人人人_
> imgしかない <
 ̄Y^Y^Y^Y^Y^Y ̄
※あくまで起こりうる闇の例であり、弊社の事例ではありません。
_人人人人人人人人人人人_
> text-indent:100% <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
_人人人人人_
> つらい <
 ̄Y^Y^Y^Y^ ̄
※あくまで起こりうる闇の例であり、当社の事例ではありません。
※あくまで起こりうる闇の
例であり、弊社の事例では
ありません。
ちなみに
弊社がやってる事
• 社内 / 社外向けのガイドライン作成
弊社がやってる事
• 社内 / 社外向けのガイドライン作成
• 定期的な社内勉強会の開催 (東京⇔石川)
弊社がやってる事
• 社内 / 社外向けのガイドライン作成
• 定期的な社内勉強会の開催 (東京⇔石川)
• Slackを利用して活発に情報交換
弊社がやってる事
• 社内 / 社外向けのガイドライン作成
• 定期的な社内勉強会の開催
• Slackを利用して活発に情報交換
弊社がやってる事
• 社内 / 社外向けのガイドライン作成
• 定期的な社内勉強会の開催
• Slackを利用して活発に情報交換
まとめ
まとめ
• クローラーの動きを理解して、

SEOを考慮したマークアップを行うこと。
まとめ
• クローラーの動きを理解して、

SEOを考慮したマークアップを行うこと。
• 部分的にしか担当できないモノもあるので、

その制限の中で、出来る事は何か考える。
まとめ
• クローラーの動きを理解して、

SEOを考慮したマークアップを行うこと。
• 部分的にしか担当できないモノもあるので、

その制限の中で、出来る事は何か考える。
• チームみんなでSEOについて考え、

知識を共有する事、大事。
Thank you :-D

More Related Content

PDF
jQuery Performance Tips – jQueryにおける高速化 -
PDF
The master plan of scaling a web application
PDF
Async Enhancement
PDF
いまさら聞けない!?Backbone.js 超入門
PDF
⑯jQueryをおぼえよう!その2
PDF
はじめよう Backbone.js
PDF
【Camphor ×サイボウズ】selenium勉強会
PDF
Web workers&parallel.js html5勉強会lt大会
jQuery Performance Tips – jQueryにおける高速化 -
The master plan of scaling a web application
Async Enhancement
いまさら聞けない!?Backbone.js 超入門
⑯jQueryをおぼえよう!その2
はじめよう Backbone.js
【Camphor ×サイボウズ】selenium勉強会
Web workers&parallel.js html5勉強会lt大会

What's hot (20)

PDF
Haikara
PDF
One Time Binding & Digest Loop
PDF
React.jsでクライアントサイドなWebアプリ入門
PPTX
仕事で使うちょっとしたコードをOSSとして開発メンテしていく - Django Redshift Backend の開発 - PyCon JP 2016
PDF
chat bot framework for Java8
ODP
HTML5 開発環境の紹介
PDF
Mojoliciousでつくる! Webアプリ入門
PDF
AngularJSでの非同期処理の話
PDF
React Redux Redux-Saga + サーバサイドレンダリング
PDF
asm.jsとWebAssemblyって実際なんなの?
PDF
HTML5 & The Web Platform
PDF
Backbonejs @BuildInsiderOffline #1
PDF
Angular js or_backbonejs
PDF
閉じタグを超えた先に僕が見た景色とは
PDF
Web Platform -- Moving Forward!
KEY
EC-CUBEプラグイン講義
ODP
今流行りのウェブアプリ開発環境Yeoman
PDF
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
PDF
Web制作勉強会 #2
PPTX
オフラインファーストの思想と実践
Haikara
One Time Binding & Digest Loop
React.jsでクライアントサイドなWebアプリ入門
仕事で使うちょっとしたコードをOSSとして開発メンテしていく - Django Redshift Backend の開発 - PyCon JP 2016
chat bot framework for Java8
HTML5 開発環境の紹介
Mojoliciousでつくる! Webアプリ入門
AngularJSでの非同期処理の話
React Redux Redux-Saga + サーバサイドレンダリング
asm.jsとWebAssemblyって実際なんなの?
HTML5 & The Web Platform
Backbonejs @BuildInsiderOffline #1
Angular js or_backbonejs
閉じタグを超えた先に僕が見た景色とは
Web Platform -- Moving Forward!
EC-CUBEプラグイン講義
今流行りのウェブアプリ開発環境Yeoman
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
Web制作勉強会 #2
オフラインファーストの思想と実践
Ad

Viewers also liked (9)

PPTX
ModelとViewに分ける設計 - #JSオジサン
PDF
"今" 使えるJavaScriptのトレンド
PDF
Vue.jsコンポーネントのススメ
PDF
5.6 以前の InnoDB Flushing
PDF
MySQL 5.7の罠があなたを狙っている
PDF
PDF
PDF
PDF
Xamarin.forms入門
ModelとViewに分ける設計 - #JSオジサン
"今" 使えるJavaScriptのトレンド
Vue.jsコンポーネントのススメ
5.6 以前の InnoDB Flushing
MySQL 5.7の罠があなたを狙っている
Xamarin.forms入門
Ad

Similar to SEOとJava Script。 〜文書構造とチームと、時々、闇〜 (20)

PPT
jsライブラリで実装する効率的なWeb制作
PDF
WordBench Saitama vol.6
PDF
ブラウザにやさしいHTML/CSS
PDF
BMXUG つきじ#4
PDF
2012年8月10日 勉強会
KEY
Webapp startup example_to_dolist
PDF
「html5 boilerplate」から考える、これからのマークアップ
PDF
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
PDF
jQuery Mobile 最新情報 & Tips
PPTX
20121112 jaws-ug sapporo8
PPTX
第19回html5とか勉強会 pjax
PPTX
Material DesignをPolymerで表現しよう(神戸ITフェスティバル × HTML5fun@神戸)
PDF
Web frontend performance tuning
PDF
イマドキのフロントエンドエンジニアの道具箱
PPTX
ウェブから情報をあつめる
PDF
CSS Design and Programming
PPTX
Couch Db勉強会0623 by yssk22
PDF
CRF を使った Web 本文抽出 for WebDB Forum 2011
jsライブラリで実装する効率的なWeb制作
WordBench Saitama vol.6
ブラウザにやさしいHTML/CSS
BMXUG つきじ#4
2012年8月10日 勉強会
Webapp startup example_to_dolist
「html5 boilerplate」から考える、これからのマークアップ
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
jQuery Mobile 最新情報 & Tips
20121112 jaws-ug sapporo8
第19回html5とか勉強会 pjax
Material DesignをPolymerで表現しよう(神戸ITフェスティバル × HTML5fun@神戸)
Web frontend performance tuning
イマドキのフロントエンドエンジニアの道具箱
ウェブから情報をあつめる
CSS Design and Programming
Couch Db勉強会0623 by yssk22
CRF を使った Web 本文抽出 for WebDB Forum 2011

SEOとJava Script。 〜文書構造とチームと、時々、闇〜