SlideShare a Scribd company logo
1 of 111
Download to read offline
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
まだ勉強中なんですよね
?
プログレッシブ・エンハンスメント

役割を分ける
JS(インタラクション)を削除しても、

内容が通じる
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

What's hot

One Time Binding & Digest Loop
One Time Binding & Digest LoopOne Time Binding & Digest Loop
One Time Binding & Digest LoopKon Yuichi
 
React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門React.jsでクライアントサイドなWebアプリ入門
React.jsでクライアントサイドなWebアプリ入門spring_raining
 
仕事で使うちょっとしたコードをOSSとして開発メンテしていく - Django Redshift Backend の開発 - PyCon JP 2016
仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016仕事で使うちょっとしたコードをOSSとして開発メンテしていく- Django Redshift Backend の開発 - PyCon JP 2016
仕事で使うちょっとしたコードをOSSとして開発メンテしていく - Django Redshift Backend の開発 - PyCon JP 2016Takayuki Shimizukawa
 
chat bot framework for Java8
chat bot framework for Java8chat bot framework for Java8
chat bot framework for Java8masahitojp
 
HTML5 開発環境の紹介
HTML5 開発環境の紹介HTML5 開発環境の紹介
HTML5 開発環境の紹介tomo_masakura
 
Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門Yusuke Wada
 
AngularJSでの非同期処理の話
AngularJSでの非同期処理の話AngularJSでの非同期処理の話
AngularJSでの非同期処理の話Yosuke Onoue
 
asm.jsとWebAssemblyって実際なんなの?
asm.jsとWebAssemblyって実際なんなの?asm.jsとWebAssemblyって実際なんなの?
asm.jsとWebAssemblyって実際なんなの?Yosuke Onoue
 
HTML5 & The Web Platform
HTML5 & The Web PlatformHTML5 & The Web Platform
HTML5 & The Web PlatformMasataka Yakura
 
Backbonejs @BuildInsiderOffline #1
Backbonejs @BuildInsiderOffline #1Backbonejs @BuildInsiderOffline #1
Backbonejs @BuildInsiderOffline #1daisuke shimizu
 
Angular js or_backbonejs
Angular js or_backbonejsAngular js or_backbonejs
Angular js or_backbonejsOmasa Yusaku
 
閉じタグを超えた先に僕が見た景色とは
閉じタグを超えた先に僕が見た景色とは閉じタグを超えた先に僕が見た景色とは
閉じタグを超えた先に僕が見た景色とはMuyuu Fujita
 
Web Platform -- Moving Forward!
Web Platform -- Moving Forward!Web Platform -- Moving Forward!
Web Platform -- Moving Forward!Masataka Yakura
 
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義ria1201
 
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeomantomo_masakura
 
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷javaY Watanabe
 
Web制作勉強会 #2
Web制作勉強会 #2Web制作勉強会 #2
Web制作勉強会 #2Moto Yan
 
オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践Shumpei Shiraishi
 

What's hot (20)

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

Viewers also liked

ModelとViewに分ける設計 - #JSオジサン
ModelとViewに分ける設計 - #JSオジサンModelとViewに分ける設計 - #JSオジサン
ModelとViewに分ける設計 - #JSオジサンGinpei Takanashi
 
"今" 使えるJavaScriptのトレンド
"今" 使えるJavaScriptのトレンド"今" 使えるJavaScriptのトレンド
"今" 使えるJavaScriptのトレンドHayato Mizuno
 
Vue.jsコンポーネントのススメ
Vue.jsコンポーネントのススメVue.jsコンポーネントのススメ
Vue.jsコンポーネントのススメtakanori sugawara
 
5.6 以前の InnoDB Flushing
5.6 以前の InnoDB Flushing5.6 以前の InnoDB Flushing
5.6 以前の InnoDB FlushingTakanori Sejima
 
MySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っているMySQL 5.7の罠があなたを狙っている
MySQL 5.7の罠があなたを狙っているyoku0825
 

Viewers also liked (9)

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

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

jsライブラリで実装する効率的なWeb制作
jsライブラリで実装する効率的なWeb制作jsライブラリで実装する効率的なWeb制作
jsライブラリで実装する効率的なWeb制作西畑 一馬
 
WordBench Saitama vol.6
WordBench Saitama vol.6WordBench Saitama vol.6
WordBench Saitama vol.6masaaki komori
 
ブラウザにやさしいHTML/CSS
ブラウザにやさしいHTML/CSSブラウザにやさしいHTML/CSS
ブラウザにやさしいHTML/CSSTakeharu Igari
 
BMXUG つきじ#4
BMXUG つきじ#4BMXUG つきじ#4
BMXUG つきじ#4K Kimura
 
2012年8月10日 勉強会
2012年8月10日 勉強会2012年8月10日 勉強会
2012年8月10日 勉強会Rin Yano
 
Webapp startup example_to_dolist
Webapp startup example_to_dolistWebapp startup example_to_dolist
Webapp startup example_to_dolistShinichiro Kumeuchi
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップYasuhito Yabe
 
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフラインWebフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフラインShumpei Shiraishi
 
jQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & TipsjQuery Mobile 最新情報 & Tips
jQuery Mobile 最新情報 & Tipsyoshikawa_t
 
20121112 jaws-ug sapporo8
20121112 jaws-ug sapporo820121112 jaws-ug sapporo8
20121112 jaws-ug sapporo8Hirokazu Ouchi
 
第19回html5とか勉強会 pjax
第19回html5とか勉強会 pjax第19回html5とか勉強会 pjax
第19回html5とか勉強会 pjaxKensaku Komatsu
 
Material DesignをPolymerで表現しよう(神戸ITフェスティバル × HTML5fun@神戸)
Material DesignをPolymerで表現しよう(神戸ITフェスティバル × HTML5fun@神戸)Material DesignをPolymerで表現しよう(神戸ITフェスティバル × HTML5fun@神戸)
Material DesignをPolymerで表現しよう(神戸ITフェスティバル × HTML5fun@神戸)Masayuki Abe
 
Web frontend performance tuning
Web frontend      performance tuningWeb frontend      performance tuning
Web frontend performance tuningssuser3c214d
 
イマドキのフロントエンドエンジニアの道具箱
イマドキのフロントエンドエンジニアの道具箱イマドキのフロントエンドエンジニアの道具箱
イマドキのフロントエンドエンジニアの道具箱Fumio SAGAWA
 
ウェブから情報をあつめる
ウェブから情報をあつめるウェブから情報をあつめる
ウェブから情報をあつめるShuhei Iitsuka
 
CSS Design and Programming
CSS Design and ProgrammingCSS Design and Programming
CSS Design and ProgrammingTaku AMANO
 
Couch Db勉強会0623 by yssk22
Couch Db勉強会0623 by yssk22Couch Db勉強会0623 by yssk22
Couch Db勉強会0623 by yssk22Yohei Sasaki
 
CRF を使った Web 本文抽出 for WebDB Forum 2011
CRF を使った Web 本文抽出 for WebDB Forum 2011CRF を使った Web 本文抽出 for WebDB Forum 2011
CRF を使った Web 本文抽出 for WebDB Forum 2011Shuyo Nakatani
 

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

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

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