2008-03-13

MagpieRSSで簡単にRSSを操作

ブログを始めニュースサイト等などで更新情報を配信する手段としてRSSが使われています。皆さんはそれらRSSをどのように活用していますか?
RSSリーダを利用してそのRSSを読むというのが一般的だと思います。既製のRSSリーダを利用して楽しむのも良いですが、PHPを使うとこれらRSSを取得し自分好みにアレンジして表示するということが簡単にできます。

今回紹介するのは、それをPHPで簡単に実現することができるライブラリ「MagpieRSS」です。

MagpieRSSは、GPLで開発されているRSSを解析するライブラリ、いわゆるRSSパーサです。PHPでリモートからRSSを取得して解析、キャッシュを行います。対応しているRSSはRSS 0.9からRSS 1.0とRSS 1.0のモジュールと、RSS 2.0と Atomの一部になります。

MagpieRSSのサイトからMagpieRSSをダウンロードして解凍します。出てきたファイルの中で使用するのは基本的に、 rss_cache.inc、rss_fetch.inc、rss_parse.inc、rss_utils.inc の4つのファイルとextlibディレクトリです。

これらを同じディレクトリ階層におき下記スクリプトを書き保存して実行してください。

<?php
require_once('rss_fetch.inc');
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');

$url = 'http://feeds.feedburner.jp/trans-log';
$rss = fetch_rss($url);
$title = $rss->channel['title'];
echo "<h1>$title</h1>\n";
echo "<dl>\n";
foreach ($rss->items as $item ) {
    $title = $item['title'];
    $link = $item['link'];
    $desc = $item['description'];
    echo "<dt><a href=\"$link\">$title</a></dt>\n";
    echo "<dd>$desc</dd>\n";
}
echo "</dl>\n";
?> 

RSSが読み込まれ整形されて表示されます。流れを簡単に説明すると、fetch_rss()で指定されたURLからRSSを取得、あとは配列にデータが入っているので欲しいものだけ取り出す。それだけです。
ちなみに、そのままでは日本語が文字化けを起こします。そのため、上記スクリプトでも行っていますが、

define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');

として、エンコーディングをUTF-8に変更するのを忘れないでください。
簡単にRSSを取得し自分の好みに操作できるMagpieRSS、ブログに埋め込んだり自作のRSSリーダを作成したり、可能性が広がるのではないでしょうか。
ちなみに、始めにも述べましたがMagpieRSSはGPLです。場合によってはプロジェクト内で使うには制約がきついかもしれません。その辺を十分考慮して使用してください。

MagpieRSSのサイト:http://magpierss.sourceforge.net/

2008-03-12

キーワード出現頻度について

WEBページ内に占める総出現キーワードにおける特定のキーワードの出現回数の割合をキーワード出現頻度といいます。
キーワード出現頻度は以下の計算式で求めることができます。

特定キーワード出現数/総キーワード出現数*100

検索エンジンは特定のキーワードの出現頻度が高いWEBページを、特定のキーワードと関連性が高いWEBページと判断して、特定キーワードで検索された際に上位に表示数する傾向があります。
よってWEBページ内に目標キーワードを多く出現させることにより高いSEO効果が得られます。 ただし、過度にキーワードを埋め込むと検索エンジンにスパムと判定され検索結果に表示されなくなることもあります。

SEO上、キーワード出現頻度を意識する場合は、多すぎず少なすぎないように配置するのが基本になります。

不自然にキーワードを埋め込まず、以下のように自然な文章の中にキーワードを埋め込むよう努力しましょう。

1.代名詞を使わず記述する

代名詞(それ、これ、あれetc)などを使わずに名詞を使用することによりキーワード出現頻度を高める事ができます。

×これを見直すとSEO効果が高いですよ
○キーワード出現頻度を見直すとSEO効果が高いですよ


2.主語を省略せず記述する

主語を省略せずに記述する事により、主語のキーワード出現頻度を高める事ができます。 説明の主旨などが主語に含まれる場合は省略せず記述するようにしましょう。

×見直すとSEO効果が高いですよ
○キーワード出現頻度を見直すとSEO効果が高いですよ


3.見出しなどににキーワードを追加する

説明文中に意図的にキーワードを増やそうとする場合、説明が意味不明な内容になる場合があります。説明文などよりかわ見出しなどの方が自然にキーワードを追加できます。
また、見出しはli要素やh要素に記述される事が多いのでhtml的にもSEO効果が高いと言えす。

×詳細情報
○SEOに関する詳細情報


キーワード出現頻度のまとめ

こつとしては検索エンジンを相手しようとせずに、サイトを訪れた人にWEBサイトの主旨をアピールする気持ちでキーワードを増やすといいと思います。
不自然にキーワードがちりばめられたサイトよりも、自然にキーワードがちりばめられたサイトの方がお客さんも安心してサイトを見る事ができます。
サイトの訪問者は、検索エンジンではなくサイトを訪れた人ということを忘れないようにキーワード出現頻度を変更してみるのもおすすめです。

SEO対策に必要な内的要因と外的要因

SEO対策には2つの視点があると言われています。

内的要因と外的要因と呼ばれるもので、内的要因はWEBサイトその物が検索エンジンに与える要因、外的要因とは対象のWEBサイト以外(リンク先のWEBサイトやリンク元のWEBサイト、検索エンジンetc)が検索エンジンに与える要因になります。

内的要因と外的要因の代表的なSEO手法

内部要因
  1. 最適化された(x)html
  2. キーワード出現頻度
  3. キーワード突出度
  4. サイト更新頻度
  5. キーワード近接度

外部要因
  1. リンクポピュラリティ
  2. クリックポピュラリティ

内部要因はサイト運営者なら対策をとる事が出来るのですぐに効果的なSEO効果が期待できます。

外的要因はコントロールがしづらく、すぐにSEO効果が現れません。
内部要因だけで満足せずに長期的に外部要因を獲得することにより、長期的でより効果的なSEO効果が上がります。

SEOとは?

SEOとは(検索エンジン最適化)の略でgoogleやyahoo、msnなどの検索エンジンのキーワード検索で上位に表示する技術のことです。

googleやyahoo、msnなどの検索エンジンは、エンドユーザーが検索を行った際に、良いサイトを上位に表示しようとします。
検索エンジンはコンピューターなので、良いサイトという判断を様々な観点(検索アルゴリズム)から判断します。

有名な検索アルゴリズムにはGoogleで使用されているPageRankアルゴリズムというものがあります。
PageRankアルゴリズムとは『多くのサイトからリンクが張られているのは良いサイト』『良いサイトからリンクが張られているのは良いサイト』というわかりやすいアルゴリズムになります。
PageRankアルゴリズムで良いサイトと評価されるためには、数多くのサイトからリンクをはってもらう必要があります。またそのリンクをはってもらうサイトがPageRankアルゴリズムで良いサイトと判断されているとより高く評価されることになります。

上記のように検索エンジンで上位に表示されることを目的として何か工夫をすることがSEOになります。

検索エンジンの検索アルゴリズムの数は非常に多くて頻繁に変更されており、各検索エンジン会社ごとに違います。
それに加え検索アルゴリズムの内容は公開されておらず、どのようにしたら検索エンジンで上位に表示されるという正確な情報はありません。
正確な情報がなければどうやってSEOを行うのかと疑問にお思いの人も多いと思いますが、いくつかの検索エンジンアルゴリズムに関してはすでに解析されております。

そもそもSEOは、検索エンジンで上位に表示する為の手段ですが、目的は違います。SEOの目的は、検索エンジンで上位に表示することだけでないはずです。

検索エンジンからWEBサイトへユーザーをナビゲートする流れは以下のようになります。

  1. 検索エンジンでキーワードを検索する
  2. 検索結果をクリックしてWEBサイトに訪れてもらう
  3. WEBサイト上で目的を達成する

SEOが担う役割は(2)になります。 検索エンジンからウェブサイトに訪れるユーザーを増やすことです。
しかし、最終的な目的は(3)になるはずです。

WEBサイト運営者にはSEOの目的について誤解されてる方が多くいます。
SEOは売り上げアップの一つの手段であって、SEO対策だけでWEBサイトの売り上げが上がることはありません。
SEO対策を行う前に『本当に売れるサイト』とは何か?
もう一度考えてみる必要がありそうですね。

2008-03-10

IE7 を含むモダンブラウザ向けの CSS ハックまとめ

Easy CSS hacks for IE7 - Nano See, Nano Do で紹介されていたハック比較的シンプルかもです。
想定ブラウザは下記のとおり。

ブラウザごとのハック

全てのサンプルは body 要素を指定の対象としている。

バージョン6以下のIEにのみ適用
* html body

バージョン7のIEにのみ適用
*+html body

バージョン7を含む全てのIEにのみ適用
*+html body, * html body

IE7を含むモダンブラウザにのみ適用(バージョン6以下のIEを除外)
html>body

IE7を除くモダンブラウザにのみ適用
html>/**/body

上記IE7向けのハックは、あくまでbeta2でのものですので正式版では使えなくなっている可能性もあります。

その他、ブラウザ振り分けに使えそうなハック

対象要素に属性があれば、属性セレクタを使ったハックなんかも使える。例えば、下記のような要素を対象としてみる。

<p class="foo" id="bar">...</p>

IE6 以下を弾きたければ、CSS3の属性セレクタを使って p[id$="bar"]{...} とすれば良いかもしれない。さらに IE7 も弾きたければ、否定擬似クラスを使って p[id$="bar"]:not([class="hoge"]){...} とか。
ただ、これだとOpera9も弾かれてしまうので、CSS3のMedia Queries使って@media screen and (min-width: 0) {p[id$="bar"]{...}} って感じで上書きさせれば大丈夫。

@cc規則でIEとその他のユーザーエージェントのCSSを振り分ける

IEとその他のユーザーエージェントで異なるCSSの規則を適用させるためには、IEの独自仕様である条件付きコメントを利用する方法、CSSのバグや実装状況を逆手にとった方法、サーバサイドで処理する方法など多くの方法がありますが、記述がシンプルな@cc規則を利用する例について紹介します。

@cc規則はIEの独自仕様で、IEやその他のユーザーエージェント、IEのバージョンによって適用させたいCSSの規則集合を分岐させるために使います。@cc規則は次のように記述します。

@cc 条件
{
  規則集合
}

または、次のようにbeginとendを使用して記述します。

@cc 条件 begin;
規則集合
@cc end;

前者の記述方法は、IE以外のユーザーエージェントで不具合が起きる可能性もあるため、後者の記述方法が安全です。条件にはIEの条件付きコメントと同じものが利用できます。例えば、body要素の背景色をIE6以下では赤色、IE7以上では青色、IE以外では緑色にする場合、CSSは次のように記述します。

/* IE 6以下 */
@cc lte IE 6 begin;
body
{
  color: red;
}
@cc end;

/* IE 7以上 */
@cc gte IE 7 begin;
body
{
  color: blue;
}
@cc end;

/* IE以外 */
@cc !IE begin;
body
{
  color: green;
}
@cc end;

IE以外のユーザーエージェントでは@cc規則は無視されます。CSSの規則集合は、そのspecificityが同じ場合には原則として後から読み込まれたものが優先されるので、IE以外のユーザーエージェント用の規則集合は一番最後に記述するようにします。@import規則を併用して、読み込むCSSをIEとその他のユーザーエージェントで振り分けるようにするとよりシンプルになるでしょう。

これはAbout Conditional CommentsのCommunity Contentで提案されていた方法ですが、あくまでも提案ということなので実際には機能しません。IEを排除するには未対応のセレクタを使うのが一番スマートで安全です。


CSS -> WEBブラウザの識別と振り分け

ちょっと古いブラウザに対する識別と振分けの対策です。

1.Netscape 4.xにCSSを適用しないようにする

Netscape 4.xに外部スタイルシートを読み込ませないようにするには、HTMLのlink要素にmedia属性を指定し、「screen」と一致しない値を指定します。つまり、値として「all」などの他の値を指定するか、「screen,print」などのように複数の値を指定します。

Netscape 4.xの初期バージョンで@importが実行されると、強制終了したりフリーズしたりすることが確認されているため、HTML側で最初にはじいておくのが原則。

<link href="example.css" rel="stylesheet" type="text/css" media="screen,print" />

2.IE 4にCSSを適用しないようにする

IE 4(Windows版・Mac版とも)にCSSを適用しないようにするには、CSSの@importを利用します。@importで読み込む外部スタイルシートのURLは、url( )形式、または単純に引用符(" ")で囲う文字列形式のいずれかで指定できますが、IE 4はurl( )形式にしか対応していません。したがって、@importで指定するURLを文字列形式で指定すると、CSSが適用されなくなります。

@import "example.css";

3.Mac版IE 4.5にCSSを適用しないようにする

Mac版のIE 4.5にCSSを適用しない場合も、CSSの@importを利用します。Mac版のIE 4.5は、読み込む外部スタイルシートのURLをurl( )形式で指定する際に、URL部分が二重引用符で囲われていると、外部スタイルシートを読み込まなくなります。よって、@importで指定するURLを url("~")のように指定すると、CSSが適用されなくなります。

@import url("example.css");

4.特定のWEBブラウザに外部スタイルシートを読み込ませる

以下に示すような書式を使って指定された外部スタイルシートは、それぞれ特定のWEBブラウザにしか読み込まれません。これを利用して、通常の外部スタイルシートを読み込んでいる部分の下で、特定のWEBブラウザ専用の外部スタイルシートを読み込ませておけば、そのWEBブラウザで表示の問題があった場合に、その専用ファイルの中で必要なプロパティの値を上書きして修正することができます。

Windows版IE 5にだけ外部CSSを読み込ませるためのCSSソース

@media tty {
i{content:"¥";/*" "*/}}; @import 'example.css';{;}/*";}
}/* */

Windows版IE 5.5にだけ外部CSSを読み込ませるためのCSSソース

@media tty {
i{content:"¥";/*" "*/}}@m; @import 'example.css';/*";}
}/* */

Windows版IE 5と5.5にだけ外部CSSを読み込ませるためのCSSソース

@media tty {
i{content:"¥";/*" "*/}} @import 'example.css';/*";}
}/* */

Mac版IE 5.xにだけ外部CSSを読み込ませるためのCSSソース

/*¥*//*/
@import "example.css";
/**/

Bookmark

AddThis Social Bookmark Button