SEO パーソナライズド検索

Googleの検索ってどの程度のバイアス?フィルター?がかかってるんだろう・・・って思うことないですか?
そう、所謂パーソナライズド検索ってやつのことです。
SEOをやってる人は、多分自分のサイトを検索する時にパーソナライズド検索にならないように注意してると思います。
一般の人には自分の好みに合わせて検索してくれるので概ね結果は良い方向に出るので便利な機能だと思いますが。。。

パーソナライズド検索とは

まだSEOを初めて間もない人の為に、
Googleパーソナル検索とは、過去の検索履歴、場所などを検索の条件に加味して個人の興味があるだろうを検索する検索の事です。
例えば「ゴルフ」。同じ発音で意味の違う言葉として良く例に出されて説明られています。
友達から「ゴルフどう?」って聞かれたら、スポーツのゴルフのことか、車のゴルフのことか、あなたなら予想が付きますよね?それと同じことでGoogle検索でも、検索者の過去の検索履歴によってスポーツが車のどちらを優先させるか決めています。

実際にGoogleがどのような基準でパーソナライズ検索を実施しているか私には知ることができませんが、地理的情報・過去の検索結果・ソーシャルな繋がりなどが関与しているのではと考えています。

パーソナライズド検索を無効にするには

私も詳しくないので良く言われている方法を2つ紹介しておきます。
ただし、全くパーソナライズされないかは不明です。少なくも地理的情報は取られているので、その辺りはわかりません。

ブラウザの閲覧履歴を残さないモードにする

あっ、私はブラウザを基本的にChromeとIEしか使わないので、他のブラウザの事はわかりません。あしからず。。。

Chromeの場合「シークレット モード」にします。具体的に、「三本腺メニュー」>「シークレット ウィンドウを開く」をクリックして新しいウィンドウを開けば、シークレット モードになります。
IEの場合「InPrivate ブラウズ」にします。具体的には「歯車メニュー」>「セーフティ」>「InPrivate ブラウズ」をクリックして、新しいウィンドウを開けば、シークレット モードになります。
各々ショートカット キーも有るので、物覚えの良い人は覚えると良いです。

Google Chrome
Macの場合 command+sift+N
Windowsの場合 control+sift+N

Internet Explorer
Macの場合 command+sift+P
Windowsの場合 control+sift+P

URLの後ろに「&pws=0

検索結果の後ろに「&pws=0」を付ける。
実はやり方が良く分かりません。はっきりとしたやり方が書いてあるページは有るのですが、他のページは検索に「&pws=0」を付けろと書いてあるだけなので。。。

で、いろいろ試した結果、一度検索し検索結果が出た後に「&pws=0」を付けます。
https://www.google.co.jp/webhp?sourceid=chrome-ins・・・・・・・・・&pws=0

後、この方法の派生タイプですが、「検索エンジンの編集」で「&pws=0」付きの検索エンジンを登録する方法も有りますが、普段使いには不便なので、方法も有ると言う程度で。

パーソナライズ検索はこれからもどんどん進化して行くだろうと思われます。正確な状態を把握するためにも、バイアス?フィルター?の掛かっていない状態で検索しないとダメですね。
でも、便利な機能ですね。パーソナライズ検索って。

WordPress テーマ Twenty Tenの更新が失敗

WordPressのテーマ「Twenty Ten」の更新が失敗してしまったので、その対応を残しておこうかと。
WordPressを立ち上げたら更新の案内が来ていました(前から来てたですが)。そこで一応使っていないテーマだけど更新をしておこうかなっと思って、更新をしたとこを、失敗してしまいました。
実際は原因は大したことでなく、アクセス権の問題でした。

Twenty Tenの更新が失敗

まずは、更新失敗のアナウンス画面です。
テーマ更新失敗メッセージ画面
途中までは正常に処理できているみたいで、旧バージョンのテーマの削除で失敗しています。
そこで、テーマの格納フォルダのアクセス権を与えてみることにしました。

テーマの格納フォルダのアクセス権を付与画面です。
アクセス権付与画面
元々、アクセス権は読み込みと変更のチェックがONされているので、フォルダにはアクセス権が有るようでした。中のフォルダもしくはファイルに変更のアクセス権が無かったのかもしれません。
左下の「すべての子オブジェクトのアクセス権を置換する」もチェックを入れてアクセス権の設定を実施しました。
ちなみに、フォルダの場所は「\wp-content\themes\twentyten」です。

更新を再実行してみました。
テーマが正常に更新できた画面
無事に成功しました。

このWordPressはレンタルサーバの簡単インストールでインストールしてあります。WordPressのバージョンアップの時もアクセス権絡みで更新が失敗していました。レンタルサーバ任せだと、いろいろなところでちょっとした障害が出てしまうものなのですね。
今回は簡単に済んでめでたしめでたし。

[SQL Server] nvarchar と varchar

nvarchar と varchar の使い分けしていますか?
もしくは、nchar と char の使い分けしていますか?

nchar および nvarchar は Unicode 文字列データを扱う UNICODE UCS-2 文字セットを使用する文字データ型です。
char および varchar は Unicode ではない固定長の文字列データを扱う文字データ型です。

nvarcharとvarcharの違い

上の説明だとわかったような、わからないような気がしますか?

ざっくり言うと nvarchar と varchar の違いは Unicode か Shift_JIS かっていうことですよね。全角2バイト、半角1バイトとかって言う古い概念が varchar で、文字は文字数だけっていうのが nvarchar で、その辺りの違いとも言えます。

特殊な環境で稼働させている場合を除いて、SQL Serverを使っている人は、おおよそOSにWindowsを使っていると思います。Windows自体は現在はJIS X 203(JIS2004)を使っていますが、その土台を支えるFrameworkはUnicode UTF-16 (Unicode Transformation Format、16 ビット エンコーディング形式) を使用しています。
どちらが親和性が高いかと言えば、Unicode かな、、、実際はどっちなんでしょうね?
nvarchar と varchar の変換は内部で自動で行ってくれるので、プログラマ的にはバイナリ―で比較するとかしない限りは無視しても問題ないレベルだと思うし。でも型を曖昧にした変なプログラムを書いちゃダメですけどね。。。

nvarchar と varcharどちらを使う?

じゃ、実際データベースの設計をする時どちらを使う?ってなると、悩むというか、どちらでも良いというか。。。
私はとりあえず最近の設計は全て nvarchar にしてます。文字数を数える時に全角2バイトとか半角1バイトって変換しなくて済むし。
でも、限られたスペースでギリギリに表示を考えている場合は半角なら何文字とか数える人が居ますよね?そういう人が設計に入ってくると文字数を数えて表示幅がどんだけだから。。。ってプログラムで分岐しますよね。そういう人が居るなら数えるのが便利な varcharかな。。。

歯切れがとても悪いのですが、結論はなんとなくnchar、nvarchar、ntextのUnicodeが扱える方が良いかな〜程度です。
明確な理由が無ければそうすると思います。

ちなみに、次の点を除き、nchar、nvarchar、ntext は、それぞれ char、varchar、text と同じです。
・Unicode の方が広範な文字をサポートします。
・Unicode 文字の方が格納に多くの記憶域を必要とします。
・char 型列と varchar 型列の最大サイズは 8,000 文字であるのに対し、nchar 型列の最大サイズは 4,000 文字です。
・nvarchar 型列の最大サイズは、2^31 バイトで、max 指定子を使用して指定します。
・Unicode 定数は先頭に N を付けて指定します。つまり、「N’Unicode 文字列’」と指定します。
・Unicode データは Unicode 標準により規定された文字セットを使用します。

皆さんはどのように分けて使ってますか?

ウェブサイトをモバイルに最適化する

Mobile-Friendly WebsitesというGoogleのWebサイトを見つけました。。。って今頃かよ〜
一通り目を通してみたのですが、フムフム、フムフム?って参考になるような、ならないような。。。
知らないことも有ったので一読は有効かと思います。
興味が有れば覗いてください。

Mobile-Friendly Websites

その中で最近良くお世話になるのが、モバイル フレンドリー テストです。
以前、「スマホ対応」ラベルをWebサイトに付けたいときにはじめて利用しました。
最近は既存のWebサイトのテストやチェックに使っています。

その他にもモバイル ユーザー向けにサイトを最適化するためのさまざまな情報が載っています。例えば、

米国では、スマートフォン所有者の 94% がローカル情報をスマートフォンで検索しています。 モバイル検索の 77% は自宅や職場で行われています。パソコンがある可能性が高いこれらの場所でモバイル検索が行われているのは興味深いことです。
お気に入りのスポーツチームに関するブログの作成、劇場のウェブサイトの運営、顧客への商品の販売など、ビジネスの種類を問わずにモバイルは重要となっており、今後もその重要性は変わらないと考えられます。ユーザーがモバイル端末からサイトにアクセスする場合に、優れたエクスペリエンスを確実に提供できるようにする必要があります。

私も近くにPCが有ってもちょっとした検索ならスマホで行っています。だからなんとなく上のことも理解できます。

私は新しく作るWebサイトはレスポンシブ デザインを取り入れています。多少面倒なところとか上手く行かないところも有りますが、スキル高めていき対応していきたいと考えています。

 

カテゴリー: SEO

【SQL Server】カーソル CURSOR

今回はカーソルについてです。
基本的にデータベースのデータ操作を行う際はメモリIO、ディスクIOを抑えるため一括して行う方が効率良くデータ処理ができます。しかしながら、一括でデータ操作ができないケースも出てきます。
そんな時に活躍するのがカーソル(CURSOR)です。

カーソル CURSORとは

詳細な説明はSQL Serverのドキュメントで見て欲しいのですが、カーソル(CURSOR)はselectで抽出したデータに対して一行づつ取り出すことができる逐次処理ができる仕組み・機能です。
一行づつ取り出しができるので、その行に対して処理を書けることができます。一括で処置ができない、または一括では処理が重たくてレスポンスが悪くなるなどのケースに使用します。
カーソル CURSORの使い方

カーソル(CURSOR)の使い方は難しくありません。カーソル(CURSOR)のネストもできます。ただし、もともと複雑なことを対象に処理を行うことを考えるとトランザクション設計などはきちんとしないといけませんが。。。

カーソル(CURSOR)を使うには、カーソルの宣言を行います。カーソルの宣言にはデータを抽出するSQLも合わせて示すことになります。
また、抽出した際に抽出データを入れる変数も予め宣言しておかなくてはいけません。
その後、カーソル(CURSOR)をOPENして、データが無くなる(Fetchが失敗する)までループさせ一行づつ処理を行います。
データが無くなる(強制的にループを終了させる)った後は、カーソル(CURSOR)をCLOSEして、カーソル(CURSOR)をDEALLOCATEして終わりです。

DEALLOCATEを使ったSQL例

行っていることは、

  • 変数テーブルを作成
  • 適当にデータを入れる
  • 比較する為にテーブル内のデータ抽出表示
  • 抽出用の変数を宣言
  • カーソル(CURSOR)を宣言
  • カーソル(CURSOR)のOPEN
  • Fetch(一行取り出す)
  • while文でFetchが失敗してないか評価
  • Fetchできていたら、その行のポイントを前の行のポイントを加算して更新Fetch(一行取り出す)
  • Fetch(一行取り出す)・・・ループ
  • カーソル(CURSOR)をCLOSE
  • カーソル(CURSOR)をDEALLOCATE
  • 比較する為にテーブル内のデータ抽出表示
declare @tbl1 table(
	id int,
	kbn nchar(10) ,
	point int
)

declare @start_id as int
set @start_id=0

while @start_id < 10
	begin
		print @start_id
		insert into @tbl1 values(@start_id, @start_id % 3, @start_id * Rand() * 10)
		set @start_id = @start_id +1
	end

select * from @tbl1

declare @test_id int, @test_point int
declare @add_point int
set @add_point=100

--カーソル
declare test_cursor cursor for
select id, point from @tbl1 where kbn = 1 order by id
open test_cursor

fetch next from test_cursor into @test_id, @test_point

while @@FETCH_STATUS = 0
begin
	update @tbl1 set point+=@add_point where id=@test_id
	set @add_point=@test_point
	fetch next from test_cursor into @test_id, @test_point
end
close test_cursor
deallocate test_cursor

select * from @tbl1

実行結果
sql-result02

以上、カーソル CURSORの使い方まで

 

【SQL Server】算術演算子

今回はSQL Serverの算術演算子です。
SQLの仕事から離れて、また戻ってくるとMOD(余剰)の演算子を忘れています。

SQL SERVERの算術演算子

 

operator 演算子 意味
加算 + 加算
減算 減算
乗算 * 乗算
除算 / 除算
剰余 % 除算による整数の剰余を返します。 たとえば、12 % 5 の場合、12 を 5 で割ると余りは 2 なので、12 % 5 = 2 となります。

簡単なSQLで確かめてみます。

declare @tbl1 table(num1 int, num2 int)

insert into @tbl1 values(4, 2)
insert into @tbl1 values(5, 2)
insert into @tbl1 values(6, 2)
insert into @tbl1 values(7, 3)
insert into @tbl1 values(8, 3)

select num1, num2, num1 + num2 as '加算', num1 - num2  as '減算',num1 * num2 as '乗算',num1 / num2 as '割算',num1 % num2 as '剰余' from @tbl1

SQLの結果です。
sql-result01

以上、SQL SERVERの算術演算子でした。

【SQL Server】SQL Server Management Studioで上位1000行の選択の行数を変更する

SQL Server Management Studioを使っていて、テーブルを右クリックして出てくるポップアップメニューで「上位1000行の選択」って有りますよね?
1000行以上欲しい時もたまにあるんですが、そういう時は手でSQLを書いてました。まぁ、簡単なSQLなので苦にもならないというか。。。でも、変更する手段があったんです。

SQL Server Management Studio(SSMS)で上位1000行の選択の行数を変更する

ツール>オプションを選択すると、ポップアップウィンドウが開きます。
その中の項目に「SQL Server オブジェクト エクスプローラー」なるものが有ります。
そう、SSMSのオブジェク トエクスプローラーのオプションなんです。
SSMS01
拡大表示して見てもらえばわかる通り、ここで0を設定したら全件を返すようにもできます。あまりにデカい件数のテーブル開いてしまった時の為に、10万件くらいが良いのかも。その辺りはご自由に。

ちなみに、選択の件数だけじゃなく編集の件数もここで修正できます。編集の件数は多分必要ないと思うけど念のため。

以上、備忘録まで。

Android Nexus5にAndroid5.1.1が降ってきた〜

Android5.1.1が降ってきた〜

今回は技術ネタではないです。

Nexus5のAndroid5.1ではメモリリーク不具合の解消されてないと巷で報告されていて、Android5.1.1が早くリリースされないか気になって仕方なかったのですが、今朝、5.1.1がやってきました。
ファクトリーイメージをダウンロードしてインストールする手段も有るようですが、手間も危険も有るのでなるべく簡単&安全な方が良いですもんね。
で、待ちに待ったAndroid5.1.1ですが、サクサク動いて電池長持ちになって欲しいです^^

「スマホ対応」ラベル

「スマホ対応」ラベル

さる2015年2月26日にGoogleから「スマートフォン利用に最適化されたサイトがモバイルでの検索結果で優遇されやすくなるように変更する」と発表され、2015年4月21日より実施されました。
私は今日まで全く知らずに過ごしており、SEO的にはダメダメじゃん生活してました。

「スマホ対応」ラベルとは、スマートフォンでGoogle検索すると、Webサイトがスマホに適切に表示できるようになっていると検索結果のURL前に「スマホ対応」って表示されるラベルのことです。
で、Googleの言うWebサイトがスマホに適切に表示できるようになっているというのは、

  • 携帯端末では一般的でないソフトウェア(Flash など)を使用していないこと
  • ズームしなくても判読できるテキストを使用していること
  • ユーザーが横にスクロールしたりズームしたりする必要がないよう、コンテンツのサイズが画面のサイズと一致していること
  • 目的のリンクを簡単にタップできるよう、それぞれのリンクが十分に離れた状態で配置されていること

で、さっそく本サイトをスマートフォンで検索したところ、あらら、、、「スマホ対応」って出てませんがな。。。
まぁ、他ごとで忙しく放置していた結果なんですけどね。。。
でも、クロールはされてると思うんだけどなぁ。

で、「スマホ対応」ラベルなんですが、どうやったら表示されるのかわかりません。
が、どうやら次の方法で「スマホ対応」ラベルが表示されるかもって話です。

サイトがモバイルフレンドリーか調べる

モバイル フレンドリー テストと言うのをGoogleが用意してくれてます。
モバイルフレンドリーテスト
上のテストを受けて、条件を満たしているなら次のように表示されます。
mobile-friendry01
ダメだった場合は、「モバイルフレンドリーではありません」と出て、修正アドバイスも出るそうです。
その後、Fatch as Googleでインデックスを送信すれば少し待てば「スマホ対応」って表示されるとのことですが、どうなんだろう?ダメもとでやってみてくださいね。
ちなみに、本「システム開発 備忘録&ふと思ったこと」のトップページにスマホ対応って表示されました。

スマホで見てもらえるように、Webサイトをモバイルフレンドリーにしましょうね。

以上、『「スマホ対応」ラベル』でした。

カテゴリー: SEO

google Webマスターツールでupdateの大量エラー WordPressのファイル修正

google Webマスターツールでupdateの大量エラーになにこれ?ってなりました^^;

久しぶりにgoogle Webマスターツールを覗いてみたところ、構造化データのhatomという欄に大量のエラーが発生していました。
うーん、なんか構造化データの項目の一つ(ど言うかupdateだから更新日?)の情報が無いってことらしいです。

早速、ググってみたところ1年前以上から出てたんですね〜

で、早速修正することにしました。
環境というかテーマによって修正箇所が変わるので適宜環境に合わせて直すしかないようです。
私の環境というかテーマは、「 twentyeleven」です。
多分、他のテーマも似たような構成になっていると思いますが、違いも多々ありそうだし。。。

ということで、 「twentyeleven」では、以下のように直しました。
修正内容は、以下のように「date updated」を追加しました
修正前:

printf( __( '<span class="sep">Posted on </span><a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date" datetime="%3$s">%4$s</time></a><span class="by-author"> <span class="sep"> by </span> 

修正後:

printf( __( '<span class="sep">Posted on </span><a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date date updated" datetime="%3$s">%4$s</time></a><span class="by-author"> <span class="sep"> by </span> 

修正ファイルは、「function.php」でディレクトリの有かは、wp-content\themes\twentyelevenに有ります。
修正場所は、以下の通りです。見つけてください。

if ( ! function_exists( 'twentyeleven_posted_on' ) ) :
/**
 * Print HTML with meta information for the current post-date/time and author.
 *
 * Create your own twentyeleven_posted_on to override in a child theme
 *
 * @since Twenty Eleven 1.0
 */
function twentyeleven_posted_on() {
	printf( __( '<span class="sep">Posted on </span><a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date date updated" datetime="%3$s">%4$s</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="%5$s" title="%6$s" rel="author">%7$s</a></span></span>', 'twentyeleven' ),
		esc_url( get_permalink() ),
		esc_attr( get_the_time() ),
		esc_attr( get_the_date( 'c' ) ),
		esc_html( get_the_date() ),
		esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),
		esc_attr( sprintf( __( 'View all posts by %s', 'twentyeleven' ), get_the_author() ) ),
		get_the_author()
	);
}
endif;

これでエラーが修正されるか暫くしてから確認する予定です。
以上、システム開発備忘録でした。

PS.
 3日目でエラー数が若干減りました。若干ですが、新たに増えてないので修正OKな感じです。
 引き続き、暫く監視します。