楽天市場の課金額は一般的な企業のIT投資額よりちょい低いくらいだと思う

はてなブックマークでこの記事↓が結構人気らしい。

楽天店舗、減少惨状…課金増に悲鳴、続々退店 (zakzak 2006/6)
第一印象としては、ホリエモンがドジ踏んで村上ファンドが巻きぞえくらって日銀総裁が叩かれ「儲けることは悪である」というちょっとおかしな世の雰囲気にあわせて書かれた記事という感じ。

なお、先に断っておくが筆者は楽天の肩を持ちたいわけではなくあくまでこれは客観的な雑感である。

記事によると楽天市場での売り上げの4%がシステム利用料として徴収されるそうだ。楽天市場のシステム利用料は実際はもうちょっと複雑なのだがその説明は省くが、だいたいそういう額だとして。では、売上の4%という金額は世の中のほかの世界から見てどの程度のものなのだろう?

今回の調査では、企業のIT予算額が売上高に占める比率も調査された(有効回答は354件)。こ2001年の調査開始以来2003年までの3年間は 1.3%、1.5%、1.9%と上昇し、2004年に初めて2.1%と2%台に達した。2005年度は、この勢いがさらに加速し、前年比0.7ポイント増の2.8%となった。

 企業の売上高別で見ると、IT予算比率の高さは売上規模と反比例する傾向にあり、5000億円以上の企業の平均は最低の1.3%、10億円未満の企業が最高の5.2%となっている。
IT投資動向調査2006--低成長にとどまったがIT投資比率は2.8%へ、ITR調べ(ZDNet Japan 2005/12)
ということで、楽天市場の店のほとんどが年間売り上げ10億に満たないだろうと考えると、楽天市場をやめて自前のシステムでやったとしても、その予算は売上高の4%とか5%とかとにかく似たような金額がかかってしまうのである。店が小規模になればなるほど反比例でシステム予算比率が大きくなってしまう。

「買い物カゴ機能だけならそのへんのレンタルCGIで安くできるじゃん」といった声も聞かれるが、そんな機能だけで商売できるほどネットショップは甘くない。アクセス解析やらメルマガやら受注処理やら在庫管理やらいろいろな機能が必要だ。自前で構築したりできあいのシステムを組み合わせたりしてもかなりの手間と金がかかることは間違いない。 また、zakzakの記事ではシステム利用料だけでなくバナーやら懸賞やらといった広告にも費用がかかるという嘆きが書かれていたが、楽天を辞めて自前のシステムでやったとしても同じ商売である限り広告予算が必要なくなるはずは無い。

店主が従業員に給料を渡すときに「2割は貯金しろよ」というと「それは難しいですね」と従業員が答えるが、「この8割で生活してごらん」というと「やってみます」と答えるという寸劇をどっかのテレビCMでやっていた。それと同じだ。言い方次第、見方次第。少なくとも、近視眼的なものの見方をして損をするのは自分なのである。

see also:
社長!気は確かですか?そんなやり方でIT導入を行えば絶対に失敗しますよ!(2004/11)
顧客リストは誰のものか(2006/8)
楽天vs店舗 外部リンク禁止を巡って裁判沙汰が進行中(2005/8)
ショッピングモールが外部リンクを嫌う理由(2005/8)
サラ金の利用者とショッピングモールの出店者の共通項(2006/1)
ショッピングモールというビジネスモデルの寿命はそろそろ尽きる論について雑感(2006/4)
集客機能つきのASP=楽天市場=の「楽天税」は高いか安いか (2006/9)

「フルブラウザを標準搭載に」──孫社長

孫社長は携帯電話によるオープンなインターネットアクセスの普及を目標に掲げているが、株主は「使い勝手のいいブラウザがキーになるのでは」と指摘した。
 これに対し孫社長は「まったくその通りで、携帯でインターネットをサクサク利用するにはブラウザがキーだ」と認め、「ブラウザはパートナーと共同開発を進め、今後いいものが出てくる。将来はフルブラウザを標準装備にする」と述べた。
ITmedia News:「フルブラウザを標準搭載に」──孫社長(2006/6)
うん、やっぱりそこだよなあ。

see also:
ケータイのブラウザの進化が先か?Web屋の尽力が先か? (2006/4)

データベース上の位置情報を効率的に検索する方法(PostgreSQL編)

結論はPostgreSQLの幾何データ機能を有効に使おうということである(MySQLでも同様の機能はあるけど)。 とにかくあいかわらず地理情報データとGoogleMaps APIの組み合わせが アツイようなので、その基本的な要件となるであろう、 データベース上の位置情報を効率的に検索する方法を紹介したい。

たとえばおいしいケーキ屋さんの位置情報がデータベース上にあるとしよう。 お店の名前とその緯度経度の情報が数百件あるとする。 GoogleMapsなどである範囲の地図を表示したとして、 お店の位置を地図上にマーキングさせたい場合には、 その地図の範囲の情報をキーにしてデータベース上の緯度経度を検索する必要がある。

普通に考えうるSELECT文は次のとおり。なお、x1,y1は地図の左上の位置、 x2y2は地図の右下の位置とする。

select 店名,緯度,経度 from shop
where 緯度<=y1 and 緯度>=y2 and 経度<=x2 and 経度>=x1
ひとまずこれで要件は満たせるだろう。 だが、ひとたび
  • ある1点から半径rの円内に該当するデータを検索したい
  • さらにその検索結果を、中心点からの距離でソートしたい
といったことになると、とたんに難しくなる。 しかし、PostgreSQLにもう5年以上前から実装されている 幾何データ型、幾何関数、幾何演算子を使えば、SELECT一発でできることだ。

まずは実験環境を用意する。PostgreSQL8.1.4をインストールし、 2次元座標データ型を持つテーブルを作成。こんな感じ。

create table geodata (id int4, geo point);
pointという聞きなれないデータ型が指定されていることにご注目。 VARCHAR型とかDATE型といった一般的な型しかないOracleなどと違って、 PostgreSQLはこういう多彩なデータ型を利用することができる。

実際にデータを入れる場合はこんな感じになる。

insert into geodata (id, geo) values (1, point(3,4))
x座標で3、y座標で4というデータがはいる。 point()は通常の数値を幾何型に変換する関数。

テストのために、アトランダムな座標を持つデータを10万件ほどつっこんでおく。

testdb=> select * from geodata;
  id   |     geo
-------+--------------
     0 | (726,3654)
     1 | (3804,8386)
     2 | (3644,2121)
     3 | (3079,1080)
(以下省略。全10万レコード)
ちなみにx,y座標を明確に取り出したい場合には
testdb=> select geo[0] as x, geo[1] as y from geodata;
   x   |   y
-------+-------
   726 |  3654
  3804 |  8386
といった感じで可能。

手始めに、ある矩形(長方形のこと)の範囲内にあるレコードを検索してみる。

testdb=> select * from geodata where geo @ box(point(100,100),point(200,200));
  id   |    geo
-------+-----------
 41282 | (198,151)
 44787 | (105,103)
 91065 | (179,104)
 96581 | (125,100)
 97615 | (112,142)
(5 rows)
成功。@は「含む、または境界上」という演算子。 boxは二つのpointを対角とした長方形を示す。

次に、ある円の範囲内にあるレコードを検索してみる。

testdb=> select * from geodata where geo @ circle(point(300,300),40);
  id   |    geo
-------+-----------
  5501 | (289,336)
 20403 | (270,306)
 43715 | (319,265)
 74237 | (274,293)
 84113 | (326,327)
(5 rows)
circle(point(300,300),40) がミソ。これはx=300,y=300の座標を中心とする半径40の円を表す。

さらに、上の例で、中心からの距離で結果をソートしてみる。

testdb=> select * from geodata where geo @ circle(point(300,300),40) order by geo <-> point(300,300);
  id   |    geo
-------+-----------
 74237 | (274,293)
 20403 | (270,306)
 84113 | (326,327)
  5501 | (289,336)
 43715 | (319,265)
(5 rows)
疑り深い人は↓
testdb=> select id, geo, geo <-> point(300,300) as dist from geodata 
where geo @ circle(point(300,300),40) order by geo <-> point(300,300);
  id   |    geo    |       dist
-------+-----------+------------------
 74237 | (274,293) | 26.9258240356725
 20403 | (270,306) | 30.5941170815567
 84113 | (326,327) | 37.4833296279826
  5501 | (289,336) | 37.6430604494374
 43715 | (319,265) | 39.8246155034798
(5 rows)

さて気になるのは性能だ。インデックスは効くのだろうか?

testdb=> create index testindex on geodata (geo);
ERROR:  data type point has no default operator class for access method "btree"
HINT:  You must specify an operator class for the index or define a default operator class for the data type.
おっと。インデックスを張れない! インデックスの種類の問題かと思ったが
testdb=> create index testindex on geodata using gist (geo);
ERROR:  data type point has no default operator class for access method "gist"
HINT:  You must specify an operator class for the index or define a default operator class for the data type.
testdb=> create index testindex on geodata using rtree (geo);
ERROR:  data type point has no default operator class for access method "rtree"
HINT:  You must specify an operator class for the index or define a default operator class for the data type.
デフォルトのbtreeはもちろんgistもrtreeもだめ。 こいつは困ったなんでだろう?

実は、現在のPostgreSQLでは、インデックスを張ることができるのは box型(長方形)、circle型(円)、polygon型(多角形)の3種類だけ。 point型にはインデックスを張れない。 マニュアルのここの下のほうにあるSELECTを投げて調べてみたが、 幾何データ型と思われるものは上の3つの演算子についてしか見当たらない。 つまり、「boxをboxでインデックス検索」「円を円でインデックス検索」 「多角形を多角形でインデックス検索」ということはできても、 「円で点をインデックス検索」といったことができないのだ。 なんでそんなことになっているのかは知らないがとにかくそうなっている。 もちろん将来のバージョンで改善されることを期待したいところだ。 DBにおけるインデックスの内部構造とC言語に自信のある人はpoint型用のgist演算子クラスの実装にチャレンジしてみてはいかがだろう。

しかし、現在のPostgreSQLであってもちょっとした方法で解決できる。 PostgreSQLには関数インデックスという便利なインデックスの張り方がある。 値に対してそのままインデックス化するのではなく、 何らかの一定の関数を通した結果をインデックスしておくというものだ。 この機能と、「点は、半径ゼロの円である」「点は、4点全てが同じ長方形である」 といった幾何学的トリックを組み合わせればいい。

testdb=> create index testindex on geodata using gist(circle(geo,0));
CREATE INDEX
testdb=>
これでgeo列(point型)に対してそれを半径ゼロのcircleとする関数をかませて circle型とし、それに対してインデックスが張れたことになる。 検索する場合には次のようにする。
testdb=> select * from geodata where circle(geo,0) @ circle(point(300,300),40);
  id   |    geo
-------+-----------
  5501 | (289,336)
 20403 | (270,306)
 43715 | (319,265)
 74237 | (274,293)
 84113 | (326,327)
(5 rows)
OK。さっきと結果は同じ。

では、インデックスを張ったことでどの程度の効果が出たのだろうか。 先ほどのインデックスを一旦dropして、explainで速度を量ってみる。

testdb=> drop index testindex;
DROP INDEX
testdb=> explain analyze select * from geodata where circle(geo,0) @ circle(point(300,300),40);
                                                QUERY PLAN
----------------------------------------------------------------------------------------------------------
 Seq Scan on geodata  (cost=0.00..2137.00 rows=100 width=20) (actual time=21.102..381.205 rows=5 loops=1)
   Filter: (circle(geo, 0::double precision) @ '<(300,300),40>'::circle)
 Total runtime: 404.447 ms
(3 rows)
当然ながらSeq Scan(全走査)されている。インデックスを張った状態で同じSELECTをするとどうなるか。
testdb=> create index testindex on geodata using gist(circle(geo,0));
CREATE INDEX
testdb=> explain analyze select * from geodata where circle(geo,0) @ circle(point(300,300),40);
                                                     QUERY PLAN
--------------------------------------------------------------------------------------------------------------------
 Bitmap Heap Scan on geodata  (cost=2.35..268.61 rows=100 width=20) (actual time=0.720..0.781 rows=5 loops=1)
   Filter: (circle(geo, 0::double precision) @ '<(300,300),40>'::circle)
   ->  Bitmap Index Scan on testindex  (cost=0.00..2.35 rows=100 width=0) (actual time=0.654..0.654 rows=5 loops=1)
         Index Cond: (circle(geo, 0::double precision) @ '<(300,300),40>'::circle)
 Total runtime: 0.978 ms
(5 rows)
インデックススキャンが走るようになった。実行時間も、404ミリ秒から0.9ミリ秒へ。 実に400倍のスピードアップである。

このように、PostgreSQLの幾何データ機能は有効に使えるものだ。 詳しくはマニュアルを。

see also:
Google Maps とIEの「開けません。 操作は中断されました」(2006.4)
Google Maps APIと文字コード(2005.9)
地図情報と郵便番号(2005.6)

こうしてみんな学んでゆく(その2) 電通のケース

何度でも言おう。Webサイトというものは、それを作った組織/人間の情報リテラシーの熟度を見事に映し出す鏡だ。 そして新しい世の流れに対応しきれない旧来型の組織が失笑を買ってしまう例がまたひとつ。

リンクについて
当社サイトへのリンクは、原則お断りいたします。特に以下のリンクは固くお断りいたします。
(途中省略)
●サイトの管理・運営者が不明、またはハンドルネーム等により運営されているサイト、あるいは代理運営されているサイトなどからのリンク
以上、このサイトのご利用にあたって | dentsu onlineより抜粋。 リンクをしたら電話をくれとうたっていた最高裁判所のサイトのケースにどこか似ている。今後、このページの内容がどのように変化してゆくのか見守っていたい。忘れると思うけど。

see also:
電通、「ハンドルネーム等により運営されているサイト」からのリンクを固くお断り(スラッシュドット ジャパン 2006/6)

Alt + PrintScreen でアクティブなウィンドウだけキャプチャできます

Alt + PrintScreenでアクティブなウィンドウの画像がクリップボードに入るなんて知らんかった・・・。

@IT:Windows TIPS -- TIPS:アクティブウィンドウだけをキャプチャする方法
なんか巷ではWebサイトのページをキャプチャする仕組みが流行りらしいけど、 個人的にほしかったのはこの程度の機能。 あれこれとキャプチャソフトを探しては「こんな高機能でなくてもいいんだけどな」とか思っていたのがあほらしい。

ブログの月毎アーカイブは古い順に並べたほうが良いと思う

ブログに限らないが、記事を新しい順に上から並べているサイトがほとんどだ。 それ自体はおかしなことではないと思う。

だが、トップページとも個別エントリページとも違う、時間軸毎=多くは月毎=のアーカイブ(過去記事)ページでは、 日付の古い順に上から並べるべきではないだろうか。 アーカイブのページを見る人って、そのサイト/ブログをじっくり眺めたい、という人だと思う。 そういう人には、古いものから順に見せたほうが話の前後関係がわかりやすくていいはずだ。

ということでこのブログでは月毎のアーカイブページは古い記事が上に来るように並べています。 Movable Typeなら日付アーカイブのテンプレートで
<MTEntries>
となっているところを
<MTEntries sort_order="ascend">
にするだけ。

syslogとswatchからsyslog-ng乗り換えについて雑多メモ

この前書いた「syslogは実は重い→syslog-ngやdaemontoolsのmultilogにしてみるとか」が結構人気らしい。 実はあの記事には少々おかしいというか不足というか誤解を招く部分もあるので、それを補うべく、 っていうかつまり調子に乗ってsyslog-ngへの移行について、雑多なメモを書いてみる。

なお、誠に申し訳ないが、巷のハウツーものの記事のように細かいことはここでは書いてない。期待してた方には申し訳ないが、ダウンロードはどこからだとかコンパイルの仕方とか設定ファイルの例とかをご期待の方は適宜ググって他をあたっていただきたく。

読み進める前に

次のような場合にはsyslogのままでいいと思う。
  • 大した量のログを吐くわけでもないマシン
  • ログの種類や監視レベルに細かな制御を必要としないマシン
  • つまりそもそも大して重要でないマシン
次のような場合にはsyslogからsyslog-ngへの移行を考えてみてはどうだろう。
  • かなりの量のログが吐かれるので、ディスクI/Oを細かく制御できるsyslog-ngにすることで少しでも性能をあげたい場合
  • ログ監視のためにswatchを別にインストールしたり設定したりするのが面倒な場合。ログのローテートのときにswatchの再起動になぜだか失敗して??な場合。
  • 複数のログファイルを監視するためにswatchを何本も立ち上げることに疑問を感じている場合(ただでさえperlの常駐プロセスなんて重そうなのに・・・)
  • 別のマシンのログをリモートで集めてるマシン(syslogdは通信にUDPを使うゆえにログを取りこぼす可能性があるという致命的弱点がある)
そういえば、syslog-ngはNo Goodじゃないです。New Generationです。どうでもいいけど。

syslogdとsyslog-ngの性能比較について

筆者はまともな性能比較やってない(おい)。ログを記録する、という性格上、ディスクI/Oまわりの性能がキーポイントになるわけだが、syslog-ngで sync(20) とか設定するのと、 syslogdで -/var/log/hogelog のようにハイフンをつけてfsyncを抑制するのとでどっちが性能が良いのかは正確なところよく知らない。 ただ、syslog-ngのほうが、sync()で設定する数値を変えることでディスク書き込み頻度を細かく制御できるという点で、syslogよりも柔軟性が高いといえるのではないだろうか。 なおsync()て何という話は後述。

改めて、syslog-ngだとなにがいいのか?

  • ログ出力だけでなく、監視機能がある。つまりswatchのような機能が同梱されている。
  • ディスク書き込みの頻度を細かく制御できる。sync()オプション。詳しくは後述。
  • リモートでログとっても取りこぼしが少ない(らしい)。UDPじゃなくTCPだから。(ただし本記事ではリモートログの話はありません。筆者はリモートログ使わない環境で試してるもんで。)
  • ログファイル名にYYYYMMみたいな日付マクロが使える=ということはログローテーションは勝手に行われる!=logrotateコマンドをcronで起動して云々という必要がない。

sync()オプションについて

sync()オプションは、どのくらいのログをバッファとして溜め込んでおくか?である。 巷の設定例では sync(0) にしている例が見られるが、これだとバッファせずに1行ずつ常にディスクに書き込みにいくので、当然ディスクI/O性能が悪化する。例えばsync(100)にすると、ログが100行たまったらはじめてそれをディスクに書き込みに行くので、I/O頻度が減る=性能向上。 ただし、tailコマンドなどでログファイルを見ているとき、「いつまでたってもログに出ないんですけど」「ある程度バッファしてるんだからそりゃそうだろ」という罠にご注意。swatchも結局はtailコマンドないしはperlのFile::Tailでログファイルの末尾を直接監視しているのだから同じ罠が待っている。

監視機能について

filter設定でたとえば
facility(hogehoge...) and priority(hogehoge...) and match("正規表現")
のようにする。 destinationで出力先を "file(ファイル名)" ではなく "program(プログラム名)" にすればよい。 ちなみに、マッチしたログをメールで送りたい場合には、単純に/bin/mailコマンドにでもパイプで送り込めばいいのかなと思ったらうまくいかなかった。シェルを書く必要があるらしい。ちなみにこんな感じ。
#!/bin/sh
while read line
do
  echo $line | /bin/mail -s "Message on syslog-ng" hogehoge@example.com;
done

ログローテーションについて

たいてはlogrotateコマンドコマンドが週イチとかで動いていると思うが、当然そのときはログデーモンを再起動させる必要がある。通常はsyslogdにSIGHUPコマンドが送り込まれるようになっているが、それをsyslog-ngの再起動に置き換えるだけ。

syslog-ngに勝手にログローテーションさせることで、logrotateの定期起動自体を不要にすることもできる。 destination設定で

file("/var/log/$YEAR$MONTH_messages")
とかすれば月イチでログローテーションするのと同じことになる(古いログの圧縮はされないけど)。 設定で使えるマクロについてはこちら

ただし、ログファイルについてはlogwatchコマンドなどが定期起動して監視している場合があるため、 ログファイル名を変えてしまうとそっちのほうも変更する必要が出てきてしまうので注意。

(このエントリは未完。修正、追記される場合がありあり)

なぜやめたんだろう?(noscriptタグでSEO?)

4月の末頃に 次にGoogleの逆鱗に触れそうな手口(いや単に見つけただけだけど) という記事を書いたのだが、 該当のサイトにおいて該当の記述が削除されている。

有料メールマガジンとRSSフィードのジレンマな関係

気がついたら、インターネットウォッチ自前でのRSS配信を始めているではないか。 驚くようなことかあ?と言われるだろうが、ちょっと理由がある。

インターネットウォッチは有料のメールマガジンである。平日は毎日発行で、購読料は1ヶ月あたりにすると300円くらい。創刊は1996年であり、この世界では超のつく老舗である。ちなみに、メールマガジンに挟み込む「76字x5行」というテキスト広告のフォーマットの基本形を最初に確立したのがこのメールマガジンと言われている。

1996年といえば、まだほとんどのネットユーザーが従量課金されるダイヤルアップ環境を使っており、回線接続-メール取り込み-回線切断-メールをゆっくり読む、というフローを取らざるを得なかった時代だ。携帯メールすらない。電子メールという媒体が非常に重宝されていた時期だからこそ、有料のメールマガジンという新たなビジネスが生まれた。

しかし、次第に高速、常時接続当たり前の時代に移るにつれ、テキストのメールよりも表現力豊かなWebサイトを時間や料金を気にすることなく眺めるというスタイルが当たり前になり、さらにブログの普及とRSSリーダーの登場にトドメを刺される形で、多くの有料メールマガジンが姿を消していった。

Internet Watchを発行するインプレス社は、ケータイwatch、ブロードバンドwatch、PCwatchなどのサイトも運営しており、比較的早い時期からRSSの配信をしていたのだが、インターネットウォッチだけは、そのWebサイトではRSSの配信はしていなかった。インターネットウォッチが有料のメールマガジンをベースとしているがゆえのジレンマだったのだろう。RSS配信はメールマガジンの存在価値を薄めてしまいかねない。

しかし時代の流れに逆らえなかったのか、先述のようにとうとうRSS配信をはじめた。ただし見出しとURLだけだ。description(概要)が無い。メールマガジンを有料で読んでいただいている読者へのせめてもの配慮ということだろう。

ちなみに筆者はというと、インターネットウォッチの購読契約をとうとう打ち切ってしまった。「購読契約を自動更新しようとしたらクレジットカードが有効期限切れでしたので云々」という通知が来ていたのだが、あえてほったらかした。RSSリーダーやソーシャルブックマークサイトが集めてくれる種々の情報でもう十分だったからだ。 もちろん、インターネットウォッチのRSSも、つい先ほど、RSSリーダーに入れた。

2000万人=最後の2行が言いたかっただけちゃうんかと思った人の数

総務省がインタネットユーザー2000万人に向けて「セキュリティ対策してね」というメールを発信するという。 「それってスパムじゃねえの」とかなんとか賛否両論あったのだが、 結局のところ、 竹中大臣がしゃべってる動画を置いてあるサイトに誘導するだけの内容で落ち着いたらしい。

メールが届く前に筆者は上のサイトでその動画をみてしまったわけだが、はっきり言って具体性にかけているというか即効性なさすぎというか、どうだかなあ、な内容だった。 たとえば、「Windows 98やMEはこの7月であらゆるサポートが停止されてマイクロソフトはもちろんウイルス対策ソフトベンダーもサポートしてくれなくなるのだからこの際とっととPCごと買いかえろや!」ぐらい言えと。 いや、そりゃさ、こまかーい話をするのは大臣のお役目じゃないってのはわかるけどさ。

で、本日、筆者のもとに実際届いたメール(抜粋)↓

     総務省竹中大臣から情報セキュリティ対策のお願い

 竹中平蔵総務大臣から皆様への情報セキュリティ対策のお願いと具体的対策
を動画で紹介いたします。大切な情報を守るため、今一度、情報セキュリティ
対策を見直してください。
 詳細はこちら→http://...(上記の総務省のページとほぼ同じ内容のページのURL)

 6月9日はロック(鍵)の日でもあります。
 あなたも今すぐ「パソコンをロック、ウィルスをブロック!」

                                 以上
6月9日にこだわった理由はそこですかそうですか。(脱力)

see also: 6月9日は「ロック(カギ)の日」、PCのセキュリティ対策もしっかりと(internet watch 2006.6)







という記事をブログに書いて発信している筆者はある意味で総務省の作戦にまんまと引っかかっているのだとすれば見事である。

tiananmen(天安門)でGoogleイメージ検索

なかなか面白い比較があった。

http://images.google.com/images?q=tiananmen&hl=zh-CN
(ついでなので画像も残しておこう)

http://images.google.cn/images?q=tiananmen&hl=zh-CN
(ついでなので画像も残しておこう)

see also:
GIGAZINE - Google.cnで検閲される単語リスト(2006/6)
ITmedia News:中国が検閲強化、Google.comへのアクセス不能に(ITMedia 2006/6)
米Google、中国政府による検閲の受け入れを公表(Internet Watch 2006/1)

金を取るために金がかかる - 収益とその回収コストのジレンマ

自宅で使っているPCのウィルスチェッカーが「そろそろ契約更新ですよ」というメッセージを出してきた。もう1年たったか。この業界で仕事をしている以上、ウィルス対策ソフトの年間数千円程度のライセンス料をケチるつもりはまったく無いのだが、こんなニュースが飛び込んできてちょっと考えてしまった。

ソースネクストは5月29日、年間更新料を無料にするセキュリティ対策ソフト「ウイルスセキュリティZERO」を発表した。3,970円でソフトを購入すれば、Windows Vistaの公式サポート終了時まではPCやOSを買い換えても利用できるというものだ。
 セキュリティ対策ソフトの場合、ユーザーは毎年数千円の更新料を支払うことで、定義ファイルのアップデートなどのサービスを継続して受けられるというのが常識だった。こうした「常識をくつがえす」と語る松田憲幸社長に、ソースネクストが打ち出す「年間更新料0円」のセキュリティソフト戦略を伺った。
年間更新料ゼロのセキュリティ対策ソフトの勝算(Internet Watch 2006/6)
「ウイルスセキュリティ」の場合は、ライセンスの登録や更新時の問い合わせがユーザーサポートの半分を占めています。ライセンス更新は1年に1回なので、登録した情報がわからなくなったというような問い合わせも多くあります。理論上の単純計算では、ライセンス更新が不要になれば、こうしたライセンス更新に関わる問い合わせはなくなり、ユーザーサポートのコストが半減することになるのです。
なるほど。

思えば、「金を取るために金がかかるジレンマ」という図式はどこにでもある。 NHKの受信料は受信料を集金する人を雇うコストに半分近くが消えるという。 首都高速の700円では料金所のおじさんを雇うコストでどれくらい消えるのだろう。料金所それ自体の建設維持コスト、料金所の部分だけ車線数を増やすための土地買収費用、時速150kmで通過しても読み取れるという明らかに考えたやつがバカなオーバースペックなETCの機材費用。。。 Yahooオークションの本人確認費=現在はYahooプレミアム会員費と呼ばれている=は、導入当初はユーザーは「儲け主義」だのなんだのでブーイングを浴びせたが、Yahoo側としては月額270円ごときでは決済事務コストでほとんどが消えるわけで、ちっとも儲からなかったはずだ。(現在は別途システム利用料を取っているので利益となっているはずだが)

単価が高い商品の場合には、その決済コストは相対的に低い。 問題は小額決済したい場合であり、そこがビジネスチャンスだからこそ携帯電話会社やカード会社などは大掛かりな仕掛けでやろうとしている。おサイフケータイとかエディとかそういうやつだ。 大掛かりでない仕掛けではたとえばはてなポイントで投げ銭なんてのもそのひとつだ。 ただ、ソースネクストのように「金取らなくていいや」という究極の戦法もありうる。考え方一つだ。

みんなで渡れば怖くない - au by KDDI メールアドレスにRFC違反を故意に許すの巻

昨日のアクセス数が普段の倍くらいあったのでなんだろうと思ったら、主なリンク元はここだった。

スラッシュドット ジャパン | auのEメールアドレスが相互接続性を保障できないルールに変更?(2006/6)
コトの発端はKDDIのこのページ
200606-aumail-rfc.png

なんていうかもう脱力である。

  • DoCoMoの場合=iモードの開発過程で開発者がそういうRFCを知らなかったため、つまり過失の疑いあり。(参照:RFCを読まなかった携帯キャリアの罪)
  • au by KDDIの場合=上の画像のとおり、明らかに故意。ナンバーポータビリティを意識した経営判断とはいえ技術屋さんに意見は求めなかったor意見を無視したor KDDIの技術者は未だにメール関連のRFCについて無知である(それでも電気通信事業者としてメシ食ってる人ですか?)、のいずれかである疑いが濃厚。いくらナンバーポータビリティ実施が近づいてるからって、DocomoのユーザーがKDDIに乗り換えたとしてもメールアドレスは@docomo.ne.jpのままなんてことは不可能なんだろうから、メールアドレスのローカルパート(@の左側)仕様だけ合わせて改悪してもメリットよりデメリットのほうがよほど大きい。(このコメント参照
技術的な話から政治経済的な話まで、種々の意見はスラッシュドットの上記記事を参照されたい。 個人的には
調査の過程で数千のアドレスを見ましたが、いわゆる顔文字アドレス(例えば「(-_-;)@docomo」みたいな)や先にあげたダブルドットなど、システム屋としてはクラクラするようなアドレスが大量にありました。(こちらより引用)
というコメントに激しく同情。

また、「そんな迷惑メール対策自体が迷惑だ!」という下記の意見にも激しく同意。

長いメールアドレスが迷惑メール対策に有効と宣伝するのは「嘘をついている」言われても仕方ないと思います。
yohgaki's blog - RFC原理主義者ではないですが... 迷惑な迷惑メール対策に反対! (ohgaki.net 2006/6)
ちなみに大垣氏というのはphp言語やPostgreSQLの世界で有名なあの大垣氏である。 最近では【PostgreSQLウォッチ】第27回 SQLインジェクション脆弱性を修正,日本語ユーザーに大きな影響:ITproという記事にお名前が載っていた。

ところで、ボーダフォン改めソフトバンクモバイルとなる予定の某社ではどうなっているのだろうか。

200606-vodafone-rfc.png
なるほど。ボーダフォンの技術者は技術屋としての仕事をしているというかモラルがあるらしい。

ところで、こういうことを書いているといわゆるRFC原理主義者だとかなんだとかレッテルを貼りたがる人が少なくないらしい。読む側の勝手なのでどうでもいいっちゃどうでもいいのだが、少なくともバカみたいにうるさく言ってるわけではない。相当古くに書かれたRFCは時代にそぐわなくなっているケースもあるだろう。第一、筆者はRFCをすみからすみまで完全に読んだことも完全に理解しきったこともないし(おい 笑)。

さてしかし、Yahooを中心としてインターネットの世界で生きるソフトバンクグループは、KDDIにならうようなことをするのだろうか?いやさすがにしないだろう。しないでね。(笑)。既に書いたけど、んなことやってもメリットよりデメリットのほうが大きい。メールアドレスのローカルパート部分(@の左側)の仕様を各社が合わせたところで、ドメイン部分まで「ポータビリティ」にすることなんてないんでしょうから。(このコメント参照

See also: