2005年04月07日

あなたのBLOGは何系BLOG?

最初にCMSについてですが、基本的な部分は完成したのですが、汎用的な仕様にするつもりが、時間の関係でプログラムとデザインが完全に分離できていなかったりとまだまだな感じです。どうやら、今後も継続して開発していく必要がありそうです。いつの日か、公開できるくらいのものを作りたいとは思っているのですが。

さて、最近初めてRSSを作成してみました。ブログの普及と多様なリーダーの登場でかなり普及しているRSSですが(実際の使用者はどれくらいいるんでしょうかね)、具体的には把握していませんでした。RSSの詳しい説明はRSS -- サイト情報の要約と公開を見ていただければいいのですが、早い話XMLの一つです。

どうやって作るかですが、HTMLを書くような感じでテキストエディタなんかで書けば簡単に作れてしまうのですが、毎回RSSを別に作るのは面倒なので、自動化させたいものです。PHPでRSSを作るなら、PearのXML_Serializerを使うのが一般的なようです(調べてみた感じなので本当のところはどうなのかは分かりませんが)。blogの話をしようかにRSS生成スクリプトが掲載されておりましたので参考にするといいでしょう。ただ、実行してみれば分かりますが、そのままだとうまくいかないかもしれないので試行錯誤してください。

RSSの文法チェックにはFEED Validator for Atom and RSSがお勧めです。ブラウザが適当に解釈してくれるHTMLとは違って、XMLは少々文法が厳しいと思いますので、小まめにチェックするといいでしょう。

さてようやく本題ですが、このRSSを使って何か面白いことができないかなぁ、と考えてみました。非常に多くのサイトがブログサービスを始め、誰もがブロガーとなっているわけですが、自分の文章が一体何系のBLOGなのか客観的に判断されたらどうでしょうか?つまり、あなたのBLOGは、社長系BLOGとかアイドル系BLOGとか技術系BLOGとかスポーツ系BLOGとか・・・。

どうやってそれを判断するかが難しいのですが、今考えているのはまず始めに、RSSで取得した記事の概要を形態素解析(※文章を意味の分かる最小の構成単位に分解して文法解析を行う)して、文章にどのような傾向があるかをつかみます。あらかじめそれぞれのカテゴリのBLOGの傾向は統計的につかんでおきます。ってここがうまくできるかというか、特徴がそれぞれのBLOGで明確に出るかが問題です。社長系BLOGなら語彙が多かったり、技術系だとパソコンの話が頻繁に出てきたり、スポーツ系はスポーツの話が多かったり、などなど。明確に出てくれればいいんですが。

とまぁ考えたわけですが、いざ完成したとしても大して役に立たないものなのでいまいちのアイデアでしょうか・・・。ただ、形態素解析(UNIXだと茶筌が使いやすそう)は面白そうだな、と。あたまがうにになるで紹介されている人工無能も面白い。なんか面白いアイデアないかな、と考える今日この頃です。

お役立ちリンク集
RSS -- サイト情報の要約と公開
XML_Serializer
blogの話をしようか
FEED Validator for Atom and RSS
茶筌
あたまがうにになる  

Posted by anthtx at 08:02Comments(1)TrackBack(0)アイデア

2005年02月19日

CMS(Content Management System)を作ろう

CMSを作ろう、の前に2点お知らせしておこうと思います。一つ目はここで何度も触れているAmazonのWebサービスなんですが、前回、Amazon関連以外のEditorialReviewが取得できるようになったと書いたのですが、それは間違いでした。どうやら、Amazon側のバグだったようで現在は修正されて、EditorialReviewはAmazon関連のものしか返されなくなっています。残念ではありますが、今後は限定的なEditorialReviewと共にCustomerReviewを使っていくしかないと思います。

2つ目はYahoo!JapanがYahoo!商品検索(ベータ版)を始めたようです。検索対象は、1.Yahoo!ショッピングに出店している店舗の商品情報 2.外部のショッピングサイトから掲載申請のあった商品情報 3.検索ロボットが自動収集した商品情報となっており、商品名やキーワードで複数のネット店舗を横断検索できるというもののようです。といっても、今のところYahoo!ショッピングに出店している店舗が圧倒的に多いようですが、ここで取り上げたネットショップ横断検索サイトとアイデアは似ているのではないか、と。

さてそのネットショップ横断検索サイトなんですが、まだまだ開発中でBeta版どころかAlpha版なんじゃないかな、って思っているんですが、ここでも一応紹介しておきます。ネットショップ横断検索サイト:さがそーよドットコムというサイトで名前もまだ変わるかもしれません。現在は書籍のみ7店舗よりISBNでの横断検索が可能です。キーワード検索にも早く対応したいところですが、時間もさることながら技術的な問題もまだまだ色々ありそうです。何かご意見・ご感想がありましたら気軽にお知らせください。

さて、今回はCMS(Content Management System)についてです。CMSとは、早い話、ウェブサイトの管理運営を全てウェブ上でやってしまおう、というものだと思います。恐らく、多くの企業ウェブサイトはCMSで管理されているのではないかと思うのですが、簡単に言えば、最近流行のブログを多様化させたようなものではないでしょうか。そのため、Movable TypeのようなブログをカスタマイズしてCMSとして利用することも可能だと思います。

なぜCMSかと言いますと、最近、2件ほどウェブサイトを作って欲しいという依頼があるのですが(別に仕事でも何でもないですが)、作った後もこちらが管理するのは面倒だな、というのもありますし、どうせなら一度に作ってしまいたい、という思いもあってCMSを作ってみようかな、ということになりました。ブログをカスタマイズすることも考えましたが、それはそれで大変そうなので、自作することにします。

ショッピングサイトの様な複雑な仕組みは必要ないのですが、ブログにあるようなカテゴリの作成、エントリの作成、アップロードなどは最低限行えるようにしたいと思います。言語はもちろんPHPなわけですが、エントリごとにhtmlを吐き出して、ブログ全体を再構築する、というような面倒なことはやめて、mod_rewriteを使用し、動的なページをあたかも静的なページに見せるようにしよう、と思っています。RewriteRuleはかなり便利なのでまたいずれ詳しく触れたいな、と思います。

まだまだ作りはじめで、うまく完成できるかは分かりませんが、出来るだけ汎用的なものを作りたいと思っているので、もしかしたら公開するかも知れません。今回はこんな感じで失礼します。

紹介したリンク集
Yahoo!商品検索(ベータ版)
ネットショップ横断検索サイト:さがそーよドットコム  
Posted by anthtx at 11:03Comments(2)TrackBack(0)

2005年01月20日

PHPでAmazon E-Commerce Service (ECS) 3

del.icio.usやfrickrが最近話題になってきているようなので、これらを使って面白いことを始めたいな、と思っているのですが、それはまた今度の機会にしたいと思います。今回は例のごとくAmazonのWebサービスについてです。

大分前にEditorialReviewで取得できるのはSourceがAmazon.co.jp関連のものだけのようだ、と書いたんですが、最近はもっと多くのエディターレビューが取得できるようになったようです(恐らく以前は限定的だったと思います。)。なぜエディターレビューにこだわるかといえばSEOがらみだったりします。

最近はコンテンツのないページは検索エンジンに敬遠されるようで、コンテンツ(コンテキストと言ったほうがいいかも)が重要となっています(コンテキストがないページでもきちんとコンテンツを持ったページは多々あると思いますが)。そこで、Amazonのエディターレビューがコンテキストとなり、コンテンツとなってくれるはず!?なのです。

さて、EditorialReviewがらみでもう一つ。最近はXHTMLでページを作成することが多いのですが、Amazonから返されるエディターレビューはHTMLです。XHTMLの中にHTMLを差し込んでも表示はされるのですが、構文チェックを行ったりすると必ず問題が発生します(構文チェックにはW3CのMarkup Validation Serviceをいつも使用しています)。当然、検索エンジンもエラーのあるページはお好きじゃないようです。

そこで、HTMLをXHTMLに変換する必要があるのですが、これがなかなか難しい。正規表現でもできそうですが、かなり複雑になりそうです。で、使用するのがtidyというライブラリです。PHP5からは標準で使えるようですが、PHP4.3.xではPECL拡張モジュールとしてインストールする必要があります。インストールに関しては参考リンクを張っておくので参照してください。

tidyの使用方法についてですが、あまりいいサンプルがphpのマニュアルにも載っていなかった様なのでとりあえず作ってみたソースを載せておこうと思います。整形のオプションが色々とあるようなので、詳しくは参考リンクを参照してください。

<?php
// php4.3.10で確認
// UTF8で保存されているものとします。
$html = "これはテストです。<br><p>どうなる?";

// オプション指定
$opts = array("output-xhtml" => true,
                "clean" => true,
                "alt-text" => "",
                "drop-font-tags" => true,
                "drop-empty-paras" => true,
                "wrap" => 80,
                "logical-emphasis" => true,
                "enclose-text" => true,
                "enclose-block-text" => true,
                "show-body-only" => true);

// 文字コード指定(EUCはだめ)
tidy_set_encoding('UTF8');

print tidy_repair_string($html,$opts);
?>

// 結果
<p>これはテストです。<br /></p>
<p>どうなる?</p>

長くなりましたが、エディターレビューは有効活用したいものです。


お役立ちリンク集
W3C Markup Validation Service (English)
PHP: Tidy関数 - Manual
HTML Tidy Configuration Options (English)

[PHP-users 20827]tidyのインストールについて  

2005年01月06日

2005年もよろしくお願いします。

明けましておめでとうございます。年末はかなり忙しくて更新する時間が取れなかったのですが、2005年も週末プログラマとして色々と面白いことを考えていきたいと思っていますのでよろしくお願いいたします。

さてさて、前回ネットショップ横断検索サイトなんてどうでしょう?ということで書き込みましたが、正月休みを利用して作成してみました。基本的な部分はできたので、後はデザイン的な問題と横断検索の対象となるショップを追加していこうかな、という感じでしょうか。近いうちにここでも紹介できると思います。

AmazonのECSはPHP+SOAPでいこうと思っていたのですが、どうもSOAPは遅い。NuSOAPのせいかもしれないので、PEAR::SOAPなどを使ってやってみればいいのかもしれませんが、面倒なのでRESTでやることにしました(RESTの方が速かったもので・・・)。

NuSOAPの場合は連想配列の形で値が返ってくるので非常に使いやすかったのですが、RESTの場合はXMLのままで返ってきます。恐らくXSLTで加工していくのだと思いますが、必要な値だけを利用したいと思っていたので、XMLをPEAR::XML_Unserializerで連想配列化することにしました(意外にここが苦労しました)。

あとはSOAPのときと同じように必要な値を利用するだけです。実際にソースをお見せしていないので、漠然としすぎているかもしれませんが、少しでも参考になればと思います。

PHPでプログラムをするならPEARは必需品だと思います。
PEAR (English)  

2004年12月07日

ネットショップ横断検索サイト

以前、ネット書店横断検索サイトなんてどうでしょう、と書いたわけですがAmazon Webサービスをいじりながら他のショッピングサイトを閲覧してて、横断検索サイトをどうせ作るなら本だけに限定するのはもったいないな、と思いネットショップ横断検索サイトに格上げしてみました。

前回も述べたようにベースはAmazonでいこうと思うのですが、横断検索するには他にどのようなサイトがあるのか知る必要があります。そこで今回は各サイトの商品の取扱状況をまとめてみることにしました。

Amazon.co.jp
取扱商品(ResponseGroupで指定できるもの)は下記の通り。
Books: 和書
ForeignBooks: 洋書
Music: ポピュラー音楽
MusicTracks: 曲名
Classical: クラシック
DVD&VHS: DVD/ビデオ
DVD: DVD
VHS: ビデオ
Electronics: エレクトロニクス
Software: ソフトウェア
VideoGames: ゲーム
Toys: おもちゃ&ホビー
Kitchen: ホーム&キッチン

商品には全てASINがあり、本に関してはASIN = ISBN。
商品ページは下のような感じ。
http://www.amazon.co.jp/exec/obidos/ASIN/4022564695/

bk1
取扱商品は書籍のみ。商品には独自のbibidが指定してある。一度検索してbibidを取得するなど工夫が必要。アフィリエイト有。

楽天ブックス
取扱商品は書籍、DVD・ビデオ、パソコンソフト。商品には独自のIDがある。一度検索してIDを取得するなど工夫が必要。アフィリエイト有(楽天会員)。

紀伊国屋書店BookWeb
取扱商品は書籍、DVD・ビデオ、PCソフトウェア。商品には独自のW-NIPSが指定してある。一度検索してW-NIPSを取得するなど工夫が必要。在庫のある店舗を表示できる。

イーエスブックス
取扱商品は書籍、DVD、CDなど。商品には独自のaccdが指定してある。一度検索してaccdを取得するなど工夫が必要。アフィリエイト有(リンクシェア)。

JBOOK
取扱商品は書籍、CD、DVD、PCソフト、GAME、Hobbyなど。商品にはproductが指定してある。一度検索してproductを取得するなど工夫が必要。

ジュンク堂書店
取扱商品は書籍のみ。商品には独自のIDがある。一度検索してIDを取得するなど工夫が必要。

丸善インターネットショッピング
取扱商品は書籍のみ。商品にはMBNが指定してある。一度検索してMBNを取得するなど工夫が必要。

有名どころのネット書店を中心に商品の取扱状況を集めて気づいたのですが、商品のIDに互換性が全くない、ということです。ベースはあくまでAmazonですからISBNが取得できるわけですが、ISBNが手に入ったからといって他のネット書店の商品を直接指定するのは厳しい、ようです。一段階、ISBNなり商品名で検索をかけてそれぞれの商品ページの情報を入手する必要がありそうです。

しかし、これはかなり大変そうです。前にも書きましたが、Parseがうまく出来るか問題です。これはもう個別に調節していくしかなさそうです。ネットショップ横断検索サイトと銘打ちましたが、下手をすると単なるAmazonの出張店舗になりさがってしまうかもしれません。少し考える必要がありますね・・・。  
Posted by anthtx at 00:24Comments(1)TrackBack(1)アイデア

2004年12月06日

自宅サーバーの面白さ

数年前、まだISDNが全盛だった頃、そしてADSLが普及し始めた頃、何度か自宅サーバーを立てようと試みたことがありました。ダイナミックDNSのサービスを利用したりしましたが結局長続きせずに途中でやめてしまいました。それから何年か経ちインターネット環境は大きく変わりました。100Mbpsの高速回線が自宅に低価格で引けるようになり、固定IPも安価でもらえるようになりました。

これだけ環境が整ったのなら、また挑戦しないわけにはいかない、と思い半年前に自宅サーバーを立てました。自宅サーバーの何が面白いか、といえば制限のないウェブサーバーを構築できることです。ホスティングサービスは無数のごとくあるわけですが、料金に応じて使用できる機能は制限されてしまいます。しかし、自宅サーバーであれば電気代とドメイン料金さえ支払えば自分の力量次第で何でも出来てしまいます。

データセンターにあるわけでもないので24時間365日安定稼動する保障は全くなくセキュリティも自己管理しなければならず、ある意味大変かもしれません。でも、自宅サーバーを立ててから確実にLinuxの知識は増えています。また、ターミナルでコマンドを叩いていると、なんかSF?ってな気分を味わえる気もします。

さて、ドメインを取得しなければウェブサーバーを立てても意味がないでしょう。ただネームサーバーを立てるのはどうも面倒なので(というかBINDがややこしそうで)、いつもVALUE-DOMAIN.COMのサービスを使用しています。.comドメインなら年間990円ですし、ネームサーバーも自由に設定できます。面白いドメインを思いついたら、とりあえず取得してキープしておく、といったことも出来ます。

考えてみると、自宅のサーバーがインターネットという巨大なネットの網の一部を構成するというのは大変感慨深いものがあります。今回はあまり具体的なことに触れませんでしたが、ぜひ自宅サーバーを立ててみることをお勧めします。

自宅サーバー役立ちリンク集。
VALUE-DOMAIN.COM
Fedoraで自宅サーバー構築  
Posted by anthtx at 01:22Comments(1)TrackBack(0)Linux

2004年12月05日

SEO/SEM

週末プログラマと言いながら、週末にもプログラムをする余裕がない状態で面白いネタが思い浮かばないのですが、ウェブサイトを運営するものとして最低限のマナーであるSEO/SEMについて考えてみたいと思います。

SEOとはご存知の通り、Search Engine Optimizationの略で検索エンジン最適化のことですが、簡単に言えばGoogleやYahoo、そしてMSNのようなロボットに優しいウェブサイトを作りましょう、ということでしょう。と、書くと少し誤解があるかもしれませんが、本来の目的はウェブユーザービリティの高いウェブサイトを作ることであり、W3Cの定める基準に従えばおのずとロボットにも人にも優しいウェブサイトが作れる、というのが現在の一般的見解ではないでしょうか。

ライオン丸さんの運営するSEO塾を読めばSEOとはなんたるかは大体分かると思います。SEO塾でも述べられているように、MSNサーチのベータ版が公開されたことにより、検索エンジンサービスにおいて熾烈なシェア争いが始まりそうな感じで、気になるところではあります。

さて、WEBプログラマの視点からSEOがなぜ重要か、といえば、自分がすごく面白いウェブサイトやウェブアプリケーションを開発したとしても、検索エンジンに引っかからなければ誰にも見てもらえないわけで、最低限のSEOのマナーは守っておきたいな、ということです。と書きながら、かくいう私も未だにSEOに関しては模索中で、どういうウェブサイトを作ればいいのか定石を見つけられずにいます。

話し変わって、今ではたまにしか更新されなくなったGoogleのページランクですが、ウェブサイトとしての存在価値のある程度の指標になるものだと思います。Googleツールバーをインストールすれば取得できるページランクですが、ツールバーを必要とせず、ページランクを取得するスクリプトが存在するのですが、それはまた別の機会にすることにしましょう。

SEO/SEMと題しながらSEMについて一切触れなかったのでSEMについてもまた今度。

SEO/SEMに関するお役立ちリンク。
WebmasterWorld (English)
SEO塾
SEOルートディレクトリ by ジェフ・ルート
SEMリサーチ
アフィリエイト研究室(ぐーまに、ぐぅまに)  
Posted by anthtx at 12:08Comments(1)TrackBack(1)SEO/SEM