祝 MTコンテスト2006
アスキービジネス賞受賞!
え~、うぉっほん。
Movable Typeコンテスト2006 で全国高校サッカーNaviが アスキービジネス賞を受賞しました~!
このサイト、不肖hayasakitが「管理人&シュミグラマー(趣味でプログラミング)」をしているサイトであります。
Six Apartさん、アスキーさん!
ご選出いただき、ありがとうございました。
残念ながら、はやさきっとは、
仕事の都合で授賞式に出席できませんでしたが、
本日、嫁とじゅんが出席してきました。
授賞式の様子はこちらになります。
出席できなかった代わりといっては、なんですが、
全国高校サッカーNavi 製作のプロセス&技術的なTipsをこのエントリに簡単に纏めておきます。
以下、簡単に纏めるつもりが、長文になってしまいました~
<(。_。)> モウシワケナイ
興味があれば、お読みください。
興味がなければ、読み飛ばしてください。
アスキービジネス賞受賞!
え~、うぉっほん。
Movable Typeコンテスト2006 で全国高校サッカーNaviが アスキービジネス賞を受賞しました~!
このサイト、不肖hayasakitが「管理人&シュミグラマー(趣味でプログラミング)」をしているサイトであります。
Six Apartさん、アスキーさん!
ご選出いただき、ありがとうございました。
残念ながら、はやさきっとは、
仕事の都合で授賞式に出席できませんでしたが、
本日、嫁とじゅんが出席してきました。
授賞式の様子はこちらになります。
出席できなかった代わりといっては、なんですが、
全国高校サッカーNavi 製作のプロセス&技術的なTipsをこのエントリに簡単に纏めておきます。
以下、簡単に纏めるつもりが、長文になってしまいました~
<(。_。)> モウシワケナイ
興味があれば、お読みください。
興味がなければ、読み飛ばしてください。
~全国高校サッカーNaviのサイト作成のプロセス~
■そのサイトに魂はあるのか
2007年02月13日の棚橋さんのエントリ:そのサイトに魂はあるのか にも書いてありましたが、
サイトの設計・構築に先立ちまずは、「魂」に磨きをかけました。
(2006年7月上旬)
ただし、棚橋さんが定義されている
「魂=サイトのコンセプト」
というより、
「魂=発信者(管理人)の思い」
という非常に個人的なものになるまで煮詰めました。
その理由は、プロジェクトメンバー(わずか4人ですが・・)
の動機付けのためです。
こんなお金が発生しない趣味(?)プロジェクトを組織・運営するにあたり、 このプロセスは非常に重要だったと思います。
「お金」を貰ってSIをするのであれば、「お金」でプロジェクトメンバーの モチベーションを何とか保つことができます。
(もちろん「お金」を貰っても空中分解したプロジェクトに何度か参加した経験はありますが・・)
お金にならない趣味プロジェクトを
最後まで空中分解させずにランディングさせるには、
(ありきたりな表現ですが、)報酬は「やりがい」になります。
その意味だとNGO?やNPO?といった非営利組織のコンセプトと似てくるかもしれません。
なので、最初に魂を磨くプロセスを経ることにしました。
で、そのWhyを煮詰めた結果がこれ。
「日本のサッカー文化の発展に少しでも貢献したい」自分たちの傲慢かつ勝手な欲求2つになりました。
「フリー百科事典 日本語版ウィキペディアの出島サイトとして、日本語版ウィキペディアの発展に少しでも貢献したい」
(でも、それでいいと思っています。)
途中で空中分解しそうになったとき、この2つの言葉に助けられました。
やはり、寄りかかる柱がないと、ぐらついた時に倒れてしまいます。
はい。
■リソース不足との戦い
リソースが潤沢にあり余っているプロジェクトなんて滅多にありませんが、 今回は、ま~ったくありませんでした。
こんな感じです。
お金:ない。(ってか、拙者のポケットマネーのみ。)
プログラマー:2人(我輩と嫁)
記事作成者:1人(オレッチの小中学の同級生じゅん)
製作にあてられる時間:本業が終わったあと。
本番機:(お金がないので)格安共用レンサバ。
当然、各種スペックは最低のやつ。
開発機:(5万円くらいの)DELLの一番安いやつ。
各種開発ソフトウェアライセンス(Photoshopとか):ない。
ネット文化のノウハウ:ない。
SEOのノウハウ:ない。
プログラマー:2人(我輩と嫁)
記事作成者:1人(オレッチの小中学の同級生じゅん)
製作にあてられる時間:本業が終わったあと。
本番機:(お金がないので)格安共用レンサバ。
当然、各種スペックは最低のやつ。
開発機:(5万円くらいの)DELLの一番安いやつ。
各種開発ソフトウェアライセンス(Photoshopとか):ない。
ネット文化のノウハウ:ない。
SEOのノウハウ:ない。
人・金・物・ノウハウなし。。。
これ、どーするよ。
(でも、みんな最初は、こんな感じで趣味ページ作ってるのか・・)
■設計&構築方針・スケジュール決定
ということで、「ないないづくし」を踏まえて、
採った「方針&スケジュール」は、こんな感じ。
・方針
1.CMSを導入し、誰でも簡単にコンテンツ更新ができるようにし、
かつ開発工数を削減する。
2.自動化できるものは極力自動化する。
3.なるべくフリーのソフトウェアを使用する。
4.格安でも信用度が比較的高いレンタルサーバー屋を使う。
5.(みんなフルタイムで関わってる訳ではないので、)
工数のわりに効果の低い機能は切り落とす。
1.CMSを導入し、誰でも簡単にコンテンツ更新ができるようにし、
かつ開発工数を削減する。
2.自動化できるものは極力自動化する。
3.なるべくフリーのソフトウェアを使用する。
4.格安でも信用度が比較的高いレンタルサーバー屋を使う。
5.(みんなフルタイムで関わってる訳ではないので、)
工数のわりに効果の低い機能は切り落とす。
・スケジュール
2006年8月スタート~2006年11月リリース。
2006年8月スタート~2006年11月リリース。
ということにしました。
(趣味Pjでも最初にリリースのお尻をきめたのは、よかったな。)
■方針から具体策へ
・方針1
CMSを導入し、簡単にコンテンツ更新ができるようにしかつ開発工数を削減する。
Movable Typeコンテストでアスキービジネス賞を貰ったので、
「最初からMovable Typeに決めてました」といいたいところですが、
CMSのツール選定にあたり、実は以下の4つで結構迷いました。
・XOOPS
・Movable Type
・OpenPNE
・MediaWikiなどのWiki
・Movable Type
・OpenPNE
・MediaWikiなどのWiki
それぞれコンセプトは全然違うんですが、
やり様によっては、如何様にもなりそうな予感です。
しかも、それぞれが魅力的。
時間があれば、いろいろ遊んでみたいところでしたが、
ここは我慢我慢。
・OpenPNE
→非招待制にして記事をいろんな人に書いてもらう。
落選理由:
サーバーのリソースを食いすぎます。
SNSは魅力的ですが、
ユーザーがだれもいないSNSは寒い。
Mixiのコミュでいいじゃん。
→非招待制にして記事をいろんな人に書いてもらう。
落選理由:
サーバーのリソースを食いすぎます。
SNSは魅力的ですが、
ユーザーがだれもいないSNSは寒い。
Mixiのコミュでいいじゃん。
・MediaWikiなどのWiki
→ウィキペディアの高校サッカーバージョン
それだけに特化したウィキペディアってどうよ。
落選理由:
ユーザーがWikiで編集するのって意外と敷居たかくね?
(↑リリースして分かったけど、98%がIE使用
ちなみにこのブログはFF使用率が50%超えてます。)
ウィキペディアでいいじゃん。
ウィキペディアのファイルを持ってきて、
アチラのDBを更新してもらうようにしよ。
gooみたいに丸ごともってこられるほどディスクはないだろう・・
→ウィキペディアの高校サッカーバージョン
それだけに特化したウィキペディアってどうよ。
落選理由:
ユーザーがWikiで編集するのって意外と敷居たかくね?
(↑リリースして分かったけど、98%がIE使用
ちなみにこのブログはFF使用率が50%超えてます。)
ウィキペディアでいいじゃん。
ウィキペディアのファイルを持ってきて、
アチラのDBを更新してもらうようにしよ。
gooみたいに丸ごともってこられるほどディスクはないだろう・・
・XOOPS Cube
→実は、最後の最後まで、MTにするかXoopsにするか迷いました。
落選理由:
SEOのことはよく分かりませんが、
動的なページよりも静的コンテンツの方が、
「Serchエンジンとの相性がよい」みたいなことが
書いてありました。
それを読んでXoopsを落としました。
(そうかもねぇ)
あと、MTと比べてXoopsは資料が少ない。
→実は、最後の最後まで、MTにするかXoopsにするか迷いました。
落選理由:
SEOのことはよく分かりませんが、
動的なページよりも静的コンテンツの方が、
「Serchエンジンとの相性がよい」みたいなことが
書いてありました。
それを読んでXoopsを落としました。
(そうかもねぇ)
あと、MTと比べてXoopsは資料が少ない。
というわけで、MTにしました。
なんかネガティブな理由っぽく聞こえますが、
開発資料が多いっていうのが決定的でした。
・方針2
自動化できるものは極力自動化する。
いろいろ自動化していきましたが、
コンテンツ作成の自動化を試みました。
このエントリでちょっと紹介します。
仕組みの概要は、
ウィキペディアからWEBデータを引っ張ってきて、
MT用に加工し、HTMLファイルを生成させる。
バッチにしたのは、「静的ファイル」にこだわったから・・(>_<)
(いまとなっては、SEO的にこれが正しかったのか分かりません。)
図にするとこんな感じ。
バッチはshellとPerlで書いて、
cronからキックさせてます。
まずは、こんな感じでLWP::UserAgentを使って、WEBデータを取得。
(引数は"ターゲットのURL")
#!/usr/bin/perl
use LWP::UserAgent;
#ターゲットURL
$target_url = shift @ARGV;
my $ua = LWP::UserAgent->new;
$ua->timeout(60);
$ua->agent('Mozilla');
my $req = HTTP::Request->new(GET => $target_url);
$req->referer($target_url);
my $res = $ua->request($req);
if ($res->is_success) {
print $res->content;
}
else {
print $res->status_line . "\n";
exit 1;
}
use LWP::UserAgent;
#ターゲットURL
$target_url = shift @ARGV;
my $ua = LWP::UserAgent->new;
$ua->timeout(60);
$ua->agent('Mozilla');
my $req = HTTP::Request->new(GET => $target_url);
$req->referer($target_url);
my $res = $ua->request($req);
if ($res->is_success) {
print $res->content;
}
else {
print $res->status_line . "\n";
exit 1;
}
これをシェルからキックして、標準出力でファイルに一度格納します。
わざわざ中間ファイルを作ってるのは、前日の同履歴ファイルとの差分を見るため。
差分(ウィキペディアの変更)があればMTを更新して、
なければ次のURLを指定して、中間ファイルを作成。
差分があった場合は、正規表現を用いて、
中間ファイルをMTに投稿するために内容を整形。
整形後、ファイルをMTのエントリへポスト。
ポストはこんな感じ。
(引数は、"ポストするファイル名" "MTのエントリーID" "投稿先のxmlrpc.cgi")
#!/usr/bin/perl
use strict;
use encoding "utf-8";
use Encode;
use File::Spec;
use XML::LibXML;
use XMLRPC::Lite;
# ポストするファイル名
$POST_FILE = shift @ARGV;
# MTのエントリーID
$EntryId = shift @ARGV;
#投稿先のxmlrpc.cgi (http://www.mt.co.jp/mt-cgi/xmlrpc.cgiとか)
$BlogAPI = shift @ARGV;
# ユーザーとパスワード
my $UserId = "user_name_dayo";
my $Passwd = "password_dayo";
my $TextMore = decode("utf-8", `cat $POST_FILE`);
# ポストの実行
post_blog($TextMore);
sub post_blog {
my($TextMore) = @_;
# item構造体を作成
my $item = create_item($TextMore);
my @args = ($EntryId, $UserId, $Passwd, $item, 1);
# XMLRPCでポスト
my $result = XMLRPC::Lite
->proxy($BlogAPI)
->call("metaWeblog.editPost", @args)
->result;
warn "Post successful: Entry ID is $EntryId\n";
}
sub create_item {
my($TextMore) = @_;
# mt_text_moreに格納する。
my $item;
$item->{mt_text_more} = encode("utf-8", $TextMore);
return $item;
}
use strict;
use encoding "utf-8";
use Encode;
use File::Spec;
use XML::LibXML;
use XMLRPC::Lite;
# ポストするファイル名
$POST_FILE = shift @ARGV;
# MTのエントリーID
$EntryId = shift @ARGV;
#投稿先のxmlrpc.cgi (http://www.mt.co.jp/mt-cgi/xmlrpc.cgiとか)
$BlogAPI = shift @ARGV;
# ユーザーとパスワード
my $UserId = "user_name_dayo";
my $Passwd = "password_dayo";
my $TextMore = decode("utf-8", `cat $POST_FILE`);
# ポストの実行
post_blog($TextMore);
sub post_blog {
my($TextMore) = @_;
# item構造体を作成
my $item = create_item($TextMore);
my @args = ($EntryId, $UserId, $Passwd, $item, 1);
# XMLRPCでポスト
my $result = XMLRPC::Lite
->proxy($BlogAPI)
->call("metaWeblog.editPost", @args)
->result;
warn "Post successful: Entry ID is $EntryId\n";
}
sub create_item {
my($TextMore) = @_;
# mt_text_moreに格納する。
my $item;
$item->{mt_text_more} = encode("utf-8", $TextMore);
return $item;
}
ちょっとやっかいだった所は、
文字コードかな。
これをエントリーの数の分だけ
ループでグルグル回してます。
この仕組みを作ることにより、
「フリー百科事典 日本語版ウィキペディアの出島サイトとして、日本語版ウィキペディアの発展に少しでも貢献したい」 っていう目標が実現できます。
コンテンツの追記・修正は本家ウィキペディアへ導いていくスキームです。
・方針3
なるべくフリーのソフトウェアを使用する。
LAMP構成ではないですが、似たようなもんです。
LがFreeBSDです。
あと、
こんなんとか
こんなんとか
使いましたが、
限界を感じ、
結局、FlashとPhotoshopは購入しました。
・方針4
格安でも信用度が比較的高いレンタルサーバー屋を使う。
GreeとMixiが「さくらインターネット」を使ってるとの噂。
その話を聞いて、「さくらインターネット」にしました。
その後、はてなも「さくらインターネット」を使い始め、
「やはり、オレの判断は間違っていなかった」と
一人、にやり。
・方針5
工数のわりに効果の低い機能は切り落とす。
これ書き始めると、とまらなくなるので、今日はやめておきます。
また、いずれ。
■リリース後
リリース後、
予想通り、最初の2~3週間は誰も来ず。
んが、ある日を境に急激なアクセス数!
CGIのアクセスカウンターが壊れたと思いました。
原因はヤフカテ。
ヤフカテ登録された後は急激にアクセス数が伸び、一気にブレイク。
その後、共用機ではリソース不足で、
Apacheが対応できなくなり、
数度のダウンを期し、TKO。
(僕がタオルを投げました。)
しょうがないので、専用機を発注して、
専用サーバーへお引越し。
おそるべし、ヤフカテパワー!
そんなこんなで、現在に至っております。
とりあえず、今は、 今後の展開をどうしていくのか、
ゆっくり考え中。
また、なにかあれば、こちらのブログでも発表しますね。
いやぁ、思ったより長文になってしまいました。
最後までお読みいただき、どうもありがとうございました。
長文ついでに最後の最後に・・・
「突然コラム」SEOについて一言:
日本語でいうと「検索エンジン最適化」ですか・・?
正直、あまり好きではないですねぇ。
結局、検索エンジンのアルゴリズムなんてブラックボックスだし、
日々、研究・進化してるわけでしょ。
そんなのイタチごっこぢゃん。
意味な~し!
大体、まともで素敵なサイトを上位に表示できなくて、
SEOテクニックが駆使されたサイトが検索結果上位に
表示されるなんて、
それは、検索エンジン技術者の怠慢だよ~!
小手先のSEOテクニックで上位表示させることに
躍起になっているサイト管理者諸氏。
今すぐ、その胡散臭いSEOコンサルとの契約破棄!
日本語でいうと「検索エンジン最適化」ですか・・?
正直、あまり好きではないですねぇ。
結局、検索エンジンのアルゴリズムなんてブラックボックスだし、
日々、研究・進化してるわけでしょ。
そんなのイタチごっこぢゃん。
意味な~し!
大体、まともで素敵なサイトを上位に表示できなくて、
SEOテクニックが駆使されたサイトが検索結果上位に
表示されるなんて、
それは、検索エンジン技術者の怠慢だよ~!
小手先のSEOテクニックで上位表示させることに
躍起になっているサイト管理者諸氏。
今すぐ、その胡散臭いSEOコンサルとの契約破棄!
hayasakit談


