2007年6月29日金曜日

CGIで日本語を正しく扱う方法

CGIで日本語を正しく扱うのは意外と難しい。
最近のPerl5.8ではプログラム自体の文字コードが多言語化された。それに伴い、日本語を扱うCGIでは文字コードなどを指定するプログラムを追加する必要があるため、若干複雑になる。
日本語の処理をきっちり説明した解説書も少ない。
そこで、CGIで日本語パラメータの受け渡しを行う例を示しておく。

#!c:/xampp/perl/bin/perl -w
use strict; # 安全のための制限を課す
use warnings; # 警告を出す(same as -w)
use utf8; # UTF-8で書いている
use CGI; # CGIである。
binmode STDOUT,":utf8"; # 標準出力はUTF8
my $encoding = 'utf8'; # HTMLの文字コード
my $lang = 'ja'; # 言語は日本語
my $q = CGI->new();
unless ($q->param) {
response(<<HTML);
<form method="post" action="hello-form.cgi">
あだ名 <input type="text" name="nickname" />
<input type="submit" />
</form>
HTML
exit 0;
}
my $nickname = $q->param('nickname'); # native bytes
utf8::decode($nickname); # utf8
response("こんにちは、$nickname");
exit 0;

sub response {
my ($body) = @_;
print $q->header(-type=>'text/html',-charset=>$encoding);
print $q->start_html(-title=>'Hello Perl',
-lang=>$lang,-encoding=>$encoding);
print $body;
print $q->end_html();
}

CGIの進化(2)

初期のCGIではページごとにCGIを開発していた。小規模アプリケーションではそれでもよいが、大規模アプリケーションでは通用しない。ファイルが多くなり、維持管理が困難となる。そこで複数のCGIを1つにまとめる技法が必要となった。
パラメータで判断する方法もあるが、その方法ではいつもフォームを使わなければならない。そこで、一般的にはPATH_INFOを用いることが多い。
PATH_INFOとはURLのCGI以下のパスである。例えば、foo.cgi/barというURLがあると/barがPATH_INFOである。このbarと同じ名前の関数を呼び出せば(1つのアプリケーションの)複数のプログラムを1つのCGIに同居させることができる。この技法はCGI::Applicationでも使われている。
以下に例を示す。

#!c:/xampp/perl/bin/perl -w
##!!
use strict; # 安全のための制限を課す
use warnings; # 警告を出す(same as -w)
use utf8; # UTF-8で書いている
use CGI; # CGIである。
binmode STDOUT,":utf8"; # 標準出力はUTF8
my $encoding = 'utf8'; # HTMLの文字コード
my $lang = 'ja'; # 言語は日本語

my $q = CGI->new();
dispatch();
exit 0;

# foo.cgi/bar.doなら関数barを呼び出す
sub dispatch {
my $path_info = $q->path_info();
my $action = "do_index"; # 省略時のアクション
if ($path_info =~ /\/([^\/\.]*)\.do/) { # .doはアクションを区別する拡張子
$action = "do_$1"; # アクションは接頭語do_から始まる
}
eval {
no strict 'refs'; # ここだけ参照の制限を緩める
&{$action}(); # 関数を呼び出す
};
do_nothing($action) if $@; # 関数がない場合
}

sub do_nothing {
my ($action) = @_;
response("no such an action $action");
}

sub do_index {
my $url = $q->url();
response(<<HTML);
<p><a href="$url/english.do">English</a></p>
<p><a href="$url/japanese.do">Japanese</a></p>
HTML
}

sub do_english {
response("Hello");
}

sub do_japanese {
response("こんにちは");
}

sub response {
my ($body) = @_;
print $q->header(-type=>'text/html',-charset=>$encoding);
print $q->start_html(-title=>'Hello Perl',-lang=>$lang,-encoding=>$encoding);
print $body;
print $q->end_html();
}

CGIの進化(1)

CGIは進化してきた。
最初のCGIはHTTP応答をそのまま表す以下のようなものだった。

print "Content-Type: text/html\n\n";
print "<html><body>Hello</body></html>";

ちなみに、これはPerlというプログラミング言語で書かれたプログラムである。PerlはCGIの定番言語である。
やがて、cgi-lib.plやCGI.pmなどのライブラリが充実してきた。cgi-lib.plはPerl4、CGI.pmはPerl5用のライブラリである。以下はCGI.pmを用いた例である。

use CGI;
$q = new CGI;
print $q->header();
print $q->start_html();
print "Hello";
print $q->end_html();

意味不明な部分がそれなりにわかりやすくまとまっていることがわかる。
最近のPerl5.8ではプログラム自体の文字コードが多言語化された。それに伴い、日本語を扱うCGIでは文字コードなどを指定するプログラムを追加する必要があるため、若干複雑になる。

CGIのすすめ

CGIはWebサーバに代わりHTTP応答文を生成する外部プログラムである。CGIによって動的なページを作成できるようになってきた。
CGIは古い技術だ。最新技術だけに興味のある人には見向きもされないが、きちんと動くものづくりが要求される現場の技術者にはありがたい。そもそも古いということは枯れている、すなわちバグが少ないことを意味する。これがなにより重要だ。
また、CGIはその他の技術の母体でもある。CGIを飛び越してJavaから学び始めた若い人もぜひ一度腰を据えて学ぶことをおすすめする。CGIは簡単なのでWebの原理を知るのに適している。
また、実際問題としてサーバでプログラムを動かすときGIしか選択肢がないこともある。CGIに必要なハードルは低い。
CGIを試すにはWebサーバが必要だ。非公開でよければ自分のPCにXAMPPをインストールするとよい。CGIはPerlという言語で作ることが多い。PerlはXAMPPのアドインとして同じサイトで配布されている。

McFLURRYに新しい味を

McFLURRYはマクドナルドのチョコ菓子入りソフトクリームだ。現在、オレオとキットカット味の2種類がある。正直ほとんど違いがないように思う。
それはともおきMcFLURRYはどんなチョコ菓子とも組み合わせることができるということだ。そこで、いくつか組み合わせを考えてみた。一押しはチョコフレークだ。次はチョコポッキーだ。ポッキーは歯ごたえがありすぎるかもしれない。

QB Houseの掃除機が気持ちいい

QB Houseは床屋業界に革命を起こした企業だ。
洗髪をしない代わりに千円ポッキリで散髪できる。
床屋に価格破壊を起こした。
ここで話題にしたいのはQB Houseのビジネスモデルではない。掃除機で切った髪を吸い取るということだ。しかも頭の。
これは水を使わないという切羽詰まった状況におかれないと出てこない発想だろう。一般的なイメージとしては掃除機=ごみ=きたないものと連想される。それで頭を洗うのだから抵抗がないはずがない。料金の安さがなければ受け入れられなかったかもしれない。それでもビジネスを成功させたのはりっぱである。
慣れてみると、これが頭のマッサージのようで気持ちいい。この副作用を何かのビジネスに結び付けられないものだろうか?
頭は大切な器官だ。強い刺激は禁物だ。とすれば、機械より水や風が適している。水は扱いが難しい。とすれば風だ。吹くより吸う方がよい。なぜなら、毛を吸い込むことで頭皮に刺激を与えることもできるからだ。こう考えると本当に合理的なマッサージかもしれない。

蒸し暑い夏

今年の夏は蒸し暑い。
まだ、夏というには早く、しかも曇りの日が続くのでさほど熱くはないが、ほのかに温かく、しかも湿度が高い。
不快指数がかなり高いことを実感する。
からっとした熱さはむしろ歓迎する。
しかし、じめっとした曇りはいただけない。
湿気は頭をにぶらせ、やる気を失わせる。
連日の疲れもあるのだろうが、気力の衰えを感じる。
年かな?

2007年6月27日水曜日

FFFTPからFileZillaへ

最近FTPクライアントをFFFTPからFileZillaへ変えた。
大容量ファイルを転送する機会が増え、FFFTPで何度も失敗した転送がFileZillaではスムーズに転送できるからだ。
プログラムサイズは12倍ぐらい(FFFTPは1MB、FileZillaは12MB)違うが、それだけの価値はある。
インターフェースは慣れるまで違和感があるかも知れない。
しかし、もはやFileZillaでなければ作業できないようになってきた。
ちなみに、FileZillaにはUSBで持ち運べるPortable版もある。

ソーラーカーの使い方

日本テレビの鉄腕DASHでソーラーカーが日本一周を成し遂げようとしている。
これを見てソーラーカーに興味を持った人も多いだろう。
私もソーラーカーなどまだ夢の技術だと思っていた。
しかし、実際よく走る。
もちろん、テレビには走っているところしか映さないので裏にはそれなりの苦労があるのだろう。
まず、走り始める時間が昼近くであることから、夜遅くまで走っているにせよ、走行距離はさほど長くないことが分かる。
しかし、ソーラーカーを使おうという人なら、そのことは承知していて、近距離の通勤に使いたいと思うのではないだろうか?あるいは買い物でもよい。
もしそうなら、十分に使えるレベルにあることになる。
ソーラーカーは地球環境にやさしい夢の車だ。
それが今すぐ使えるなら使うべきではないだろうか?
そこで、ソーラーカーを2台使う方法を提案したい。
そもそも、何台あってもそれぞれが十分な走行距離がないので、近距離の通勤を目的とする。
1台乗るたび、翌日1日かけて充電し、その間は別の1台に乗る。
このように交互に乗り換えれば毎日ソーラーカーで通勤できる。
今まで、ソーラーカーをあきらめていた人は1台しか持たないことを前提にしていた。
ソーラーカーは高いので1台しか買えないと思っていた。しかし、DASHの例を見ると実際にはかなり安いのではないだろうか?
ソーラーカーをガソリン車の半分の値段で販売できれば、一気に普及できる可能性はある。
ガソリン車でもインドのメーカーは激安車を開発しているそうだが、日本の安全基準では受け入れがたい。しかし、その製造技術はソーラーカーにも転用できるだろう。
ソーラーカーの用途から軽自動車がよいだろう。軽自動車は1台約100万円であるから50万円くらいで販売したい。
中古の(しかも廃車寸前の)軽自動車を改造するものとして、車両価格は数万、後はモーター、ソーラーパネル、バッテリー、人件費だろう。
外国で組み立てれば人件費も安い。輸送距離を考慮すると中国が適切だろう。
バッテリーも普及品でよい。
中古車とモーター、ソーラーパネルを輸出し、中国で組み立てればかなり安く販売できるのではないだろうか?
最後に駐車場は大きな問題だ。2台(ガソリン車も持つなら3台)駐車するスペースはなかなか確保できない。少なくとも駐車場の契約料が倍になる。

計算機科学を学ぶゲーム(ドミノで作る論理回路)

論理回路は物理デバイスに依存しない。
ここでは、ドミノで論理回路を作り、コンピュータが作れることを示す。
ただし、ドミノは1度しか倒れないので、1度しか計算できない。
また、ドミノは電子より非常に遅い。計算自体も遅くなる。
それにより、クロック周期も長くなる。
電圧は一瞬で変化する。しかし、ドミノ計算機では情報を伝えるドミノが到達するまで時間がかかる。
そのため、可能な限り非同期で動作するように設計する。
AND回路は以下のように作る。
ゴルフボールと厚紙、2本の針と糸を用意する。
厚紙をゴルフボールの幅に巻いて筒を作る。
筒に穴を空け、針を通し、ボールが通らないようにする。
この針はボールのストッパーとなる。
針に糸を結び、ドミノに糸を結び付ける。
ドミノが倒れると針が練るようにする。
筒を傾けてドミノの前に立てる。
上部にボールをおき、2本のストッパーで下を支える。
ドミノが2つのストッパーを両方とも抜けば、ボールが落ち、筒の前のドミノを倒す。
こうして回路は発火し、新たなドミノ倒しが始まる。
OR回路は1つのストッパーを用い、その糸を2つのドミノに結び付ける。
一方でもドミノが倒れればストッパーが抜ける。
NOT回路はドミノが来ないとスタートするように作る必要がある。
ここで問題は、非同期なので遅いのか来ないのか判断できないということだ。
そこで、一定時間待って来なければスタートするようにする。
経路の長さを調節してドミノをスタートさせておき、入力ドミノが先について道をふさぐようにする。
このようなドミノ素子を用いて簡単な計算をする。
例えば、1桁の2進数の足し算だ。
0,0 -> 0
0,1 -> 1
1,0 -> 1
1,1 -> 0
(x or y) and not (x and y)
さて作れるかな?

2007年6月26日火曜日

ブログの使い方

最近、ブログに投稿することが多くなった。
自分の中でブログの使い方を割り切ったからだ。
俗にブログはWeb日記とも言われる。
しかし、自分の日記をWebで公開するような趣味はない。
私がブログを使うのは、健忘録か、あるいは自分自身と対話するためだ。
私の記事はいずれも他人が読むことをあまり意識していない。
意識するといいたいことがいえなくなる。
もちろん公開記事から言えることと言えないことはあるが、それ以外にも他人に見られていると思うとついつい書けなくなることがある。
そうならないように内面的な対話を重視して記事を書いている。
自分のためのブログ。
自分のブログなのだから、それでいいのでは?

Windows Tips インストールされない更新

インストールされない更新を無視するにはカスタムアップデートでインストールされなかった更新のチェックをはずす。

Movable Typeのインストール

MT-3.33-jaをダウンロードする。
個人用ライセンスなら無料
展開してhtdocs/appsに置く。
mt-config.cgi-originalをmt-config.cgiにコピーする。
mt-config.cgiを編集する
CGIPath http://localhost/apps/
StaticWebPath http://localhost/apps/mt-static
 DataSource c:/mt/db
c:/mt/dbフォルダを作成する
ppmでモジュールをインストールする。
CGI, HTML::Template, Image::Size, File::Spec, CGI::Cookie,
DB_File, DBI, DBD::mysql, DBD::SQLite, DBD::SQLite2,
(ppmにDBD::Pg, Image::Magick, Crypt::DSAはない)
*.cgiの#!行を書き換える
/usr -> c:/perl
mt-check.cgiを実行する
http://localhost/apps/mt-check.cgiをアクセスする。
MTの設定
http://localhost/apps/index.htmlをアクセスし、ログインする。

VMwareのHDD容量を増やす

DriveImage XMLをインストールする(個人利用の場合無料)
(現在の仮想ディスクをHDD1.vmdkとする)
新しい仮想ディスクHDD2.vmdk(HDD1.vmdk以上の容量であること)を作成する
VMwareにHDD2.vmdkを追加する
サーバタスクを停止する。
Apache, Tomcat, Google, MySQL, PrrogreSQL, その他
[コントロールパネル]->[管理ツール]->[コンピュータの管理]
HDD2をC:と同じ種類・形式・パーティションでフォーマットする
DriveImage XMLでC:をDISK1#1(HDD2)にコピーする
[コントロールパネル]->[管理ツール]->[コンピュータの管理]
HDD2のドライブレターを削除する
HDD2をアクティブにする
VMwareを停止し、HDD2をHDD1と交換する
必要ならファイル名を変更してもよい
chkdsk /Fを実行する

PHP5をApache2.2/Windowsへインストールする

PHP5をhttp://jp.php.net/からWindows Binariesのzip packageダウンロードする
PHP5をc:\phpへ展開
PHP5のphp5apache2.dllは正しく動作しないため、php5apache2.dll-php5.1.x.zipが必要
http://www.apachelounge.com/download/からダウンロードし、展開する
php5apache2.dllをc:\phpへコピーする
httpd.exe.manifestをapache2/binへコピーする
Visual C++ 2005 Redistributable Packageをインストールする
  http://www.microsoft.com/downloads/details.aspx?familyid=32BC1BEE-A3F9-4C13-9C99-220B62A191EE&displaylang=enからダウンロードし、インストール
c:\phpをPATHに設定する
あるいはphp5ts.dllをc:\windowsにコピーする(推奨しない)
php.ini
php.ini-recommendedをphp.iniにコピー
memory_limit = 16M ; Moodle用
include_path = ".;c:\php\includes;c:\php\pear"
extension_dir = "./ext"
extension=php_mbstring.dll
extension=php_mcrypt.dll
extension=php_mysql.dll
extension=php_pgsql.dll ; Moodle用
extension=php_gd2.dll ; Moodle用
pearのインストール
c:\php\go-pear.batを実行する
pear.iniをc:\phpに作成するように指定する
pearライブラリのインストール
C:\php> pear upgrade-all
php.conf
LoadModule php5_module "c:/php/php5apache2.dll"
AddType application/x-httpd-php .php
PHPIniDir "c:/php"
httpd.confの設定
Include conf/extra/php.conf
動作確認
phpinfo.phpを用意

phpinfo.phpをアクセス

ホテルの情報システム

中国のホテルに止まったとき、情報サービスの必要性を痛感した。
中国では日本以上に英語は通じない。
ホテルから一歩出ると、何をするにも困ってしまう。
実はホテルの中でも全員英語を話せるわけではないので、少し困るときがある。
こんなときTV(を画面とするセットトップボックス,STB)で対話的にメニューを選ぶルームサービスに救われた。
日本に来た外国人も、中国に来た日本人同様に困っているにちがいない。
そこで、ホテルのTVを端末とした情報システムが必要と考える。
少なくとも日本語、英語、中国語、韓国語ぐらいはサポートし、リモコンだけで操作し、ルームサービスやチェックアウトなどができるようにする。
このようなサービスは英語の話せるスタッフの少ないビジネスホテルや民宿に役立つ。大幅に人件費を減らせるだろう。
拡張サービスとしてタクシー予約、観光ガイド、日用品販売、みやげ物販売などを行ってもよい。いずれも予約したものをチェックアウト時にフロントで受け取ればよい。有料インターネットアクセスやVODも可能だ。
このようなシステムを実現するには、ホテル内のイントラネットにサーバを設置するだけでよい。STBはWebブラウザでよい。つまり、ゲーム機で十分だ。例えばWiiでもよい。

VMware Serverの使い勝手

FreeBSDのサーバがとうとう死んだ。
そこでWindows Server 2003上にVMwareでFreeBSDを稼働させることにした。そもそも、これがむちゃだったのかもいれない。
VMwareには2つの無料版がある。PlayerとServerである。単純にOSがServerなのでVMwareもServerを使おうと考えた。
さっそく動かしたところ具合が悪い。応答が遅い。VMware Serverのしくみからしかたないのかとも考えたが、同Workstationに比べて遅すぎる。
また、数GB程度の大きなファイルをコピーしただけでネットワークが使えなくなる。ジャンボフレームが発生したあたりで調子が悪くなる。FreeBSDの問題かとも思ったが、実物のFreeBSDは特に問題なく動作しているところをみると、FreeBSDのせいではなさそうだ。しかも、リブートに1時間以上かかる。
そこでVMware Workstationに置き換えた。今度は軽快に動作する。しかし、時間が立つと徐々に応答が悪くなる。それでもServerほどではない。
話題の仮想化技術といってもこの程度なのだろうか?これでよくインフラを作る気になるものだ。もっとも公平のために今回使用したサーバは64ビットAMDでWindows
Server 2003を動かすという仮想化するにはやや変則的な環境であったことも付け加えておく。
それでも安全に動作するからこそ仮想化の意味があると思う。
VMware Serverはやや期待はずれだった。

SecondLifeの問題点

SecondLifeはリンデン社の運用する3D共有仮想世界である。
SecondLifeは今急速に普及しつつある。
ここで、SecondLifeの可能性と問題点を考える。
SecondLife以前にも3D共有仮想世界は存在したが、いずれも物珍しさでプレイされた後、ブームは急速に衰えていった。ここへきてMMORPGのブームがあり、プレイヤーのすそ野が広がってきた。もちろん、ハードの進歩も見逃せない。これらの理由と相まって、現実通貨と交換可能なゲーム内通貨を持つSecondLifeが注目されてきた。
SecondLifeがそれ以前の仮想世界と異なる点は仮想通貨を現実通貨に交換できることにある。ゲームの通貨を現実通貨に変えることは日本で違法性はないのだろうか?もし、合法ならパチンコやカジノも合法になるだろう。ギャンブルでなけれはよいのだろうか?SecondLifeの中でパチンコを営業したらどうなるのだろう。何の問題もなく換金できてしまう。カードも何も関係ない。日本の会社が行えば取り締まりも可能だが外国の会社なら取り締まる法律も適用できない。利用者を取り締まることはできるかも知れないが、匿名の仮想世界でどうやって本人を特定するのだろうか?プライバシーを守らなければリンデン社自身の命取りとなる。
ゆえに、SecondLifeはパチンコ天国となるだろう。パチンコのあくなき娯楽性の追及の前ではカジノなど稚戯に等しい。もっとも文化の違いで世界的に受け入れられるかは不明だ。その点、スロットなら万国共通なので確実だ。
パチンコ会社はSecondLifeに出店すべきだ。一般店舗にもSecondLife端末を設置すべきだ。
パチンコ産業は1兆円産業だという。1兆円は上限ではない。SecondLifeの通貨を管理するリンデン社はそのような規模の経済を本当に管理できるのだろうか?さらにヘッジファンドが通貨操作をしかけたらどうなるのだろう?リンデン社がグリーンスパンを雇うことになったらおもしろいな。

2007年6月24日日曜日

ティッシュボックスのビニール

ティッシュボックスをリサイクルするには、取り出し口のビニールをはがす必要がある。
これが面倒で困っていたら、こんな記事を見つけた。
ティッシュ箱補修」と題して記事の中では、ティッシュ箱のビニールがはがれたとき、取り出し口の四隅に切り込みをいれると取り出しやすくなるというアイデアを紹介していた。
この場合、ビニールがはがれた後の話だが、そのまま製品に取り入れると、ビニール部品を貼り付けるコストが抑えられるのではないだろうか?
ティッシュボックスのメーカーにはぜひ検討してもらいたい。
人のアイデアだけでは面白くないので自分でも考えてみる。
ティッシュボックスもビニールのついた通常用とビニールのない詰め替え用とに分けてはどうだろう?詰め替え用は上面を大きく開いて、通常用に横から差し込む。
2系列の製品を作るのは無駄かな?
いずれにしろ、ティッシュボックスのメーカーにはビニールをはがしやすくするか、ビニールなしの製品を作るかしてもらいたい。

eneloopのすすめ

eneloopは三洋電気の蓄電池である。
普通の、電池と違い充電して何度も(1000回)使える。いわゆる充電池と違い放置しておいても放電しない。
広告通りなら理想の電池だ。
わが家では徐々にすべての電池をeneloopにしようと考えている。一気にしないのは現在使用中の電池を無駄にしないため。eneloopは自然放電しないのであらかじめ買いだめできる
心配は電圧が若干低いこと。普通の電池が1.5Vなのに1.2Vしかない。これで問題がないか試しながら使うつもりだ。
仕事がらワイヤレスマイクを使う。そのワイヤレスマイクは充電式だ。電池交換の手間がかからない半面、前の利用者が充電しそこなうと使えなくなる。その点、電池式のマイクでeneloopを使えばとても便利そうだ。
デジカメも同様だ。ほとんどのデジカメはバッテリーを採用している。おかげで、クレードルに刺すなどしておかないといざというとき撮影できない。家ならよいが旅先で使いたいときクレードルを持参しなければならないのは困る。旅では少しでも荷物を減らしたいからだ。ぜひデジカメは電池に回帰してほしい。もっとも三洋自身もデジカメにリチウムイオン電池を使っているので、難しいかもしれない。ただし、三洋の製品は長時間の動画撮影を売りにしているので、そのせいだろう。基本的なデジカメならできないはずがない。しかし、三洋がしないことを他社がするはずもないので、もう少し製品ラインナップを見直してほしいものだ。
ちなみに、eneloopにはソーラー充電器があるので防災グッズとしても優れている。

Lady Greyが好き

長らくコーヒー党だったのだが、最近紅茶を飲む機会が増えてきた。Lady Greyを知ってしまったからだ。
昔は自分の中で最高の紅茶はアールグレイ(Earl Grey)だった。しかし、レディグレイはもっと鮮烈だ。もちろん、個人の好みの問題だが、わが家では全員レディグレイに1票を投じたことから決して私の味覚が例外とはいえない。
これは受け売りだが、レディグレイはアールグレイにオレンジピールなどを加えたもので、トワイニングのオリジナルブレンドらしい。どうりですっきりした味わいなわけだ。しかし、1社のオリジナルブレンドだとすると飲み比べができないのは残念だ。

PDA対決

長くZaurusを愛用してきた。機種はSL-C700である。決して最新機種ではない。しかし、この一台でスケジュール管理から原稿執筆までこなせるので、生産性が著しく向上した。Zaurus購入を契機に紙の手帳を止めたが、何の問題もなかった。よく使っていたのはメモ帳だ。これは他の人と異なる使い方かもしれない。普通はスケジュール管理を重視するのだろう。しかし、私にとってはスケジュール管理などおまけにすぎない。そもそもメモ帳に予定を記入すれば済むことだ。電子的にメモすることは紙と時間の無駄を省く点で重要だ。空き時間を活用するだけで、おどろくほど生産性が向上する。Zaurusを選んだ理由はそれが唯一のキーボードのPDAだったからだ。PDAでないPCではバッテリーが持たなかった。最近のモバイルPCでは十分な駆動時間の機種もあるが、当時はなかった。また、PCをポケットに入れることはできない。キーボードのないPDAでは入力が遅くなる。会議にメモなど不可能だ。Zaurusは画面がVGAなのもよかった。
ところが、最近このZaurusの調子が悪い。ACアダプタをつなげても充電しない。接触が悪いようだ。ACアダプタを変えても症状が変わらないので本体が故障しているようだ。そこで、Zaurusに代わるPDAを物色し始めた。
候補としW-ZERO、 Zaurus SL-C1000 、 HP iPAQを考えた。W-ZERO携帯なのでは候補から外した。通信料を払う気がしないからだ。順当ならSL-C1000だが、最近Zaurusの重さと大きさが気になっていたので躊躇している。ちなみに、SL-C1000とiPAQの重さと大きさは以下の通りである。
Zaurus SL-C1000 278g 124x87x25
HP iPAQ rx4540 127g 102x63.5x17.5
結局、しばらくiPAQを使ってみることにした。iPAQはポケットを膨らませることもなく、ずしりと重さを感じさせることもない。
iPAQにも問題点は多い。まず、キーボードがない。しかし、ペンも慣れると以外にスムーズに入力できる。今まで、ペンを毛嫌いしていたのは手書き文字入力のせいらしい。普通に仮想キーボードを使う分にはそれほど違和感がない。
また、画面が320x240しかない。Webページをみるとレイアウトがくずれる。見えないよりまし、といった程度だ。
まだまだ、Zaurusの後継は見つからない。

掃除する家電

掃除機の話ではない。また、食器洗浄機でもない。
確かに掃除機も食器洗浄機も「掃除する家電」ではあるが、ここでは本来の機能の他に掃除する機能も付加された製品を指す。例えば、エアコンである。今のエアコンはフィルタを掃除してくれるので、ほこりが目詰まりして冷却能力が落ちることはない。ほとんどメンテナンスフリーである。こういう家電が増えてほしいという話をしたい。
世間では少子高齢化が社会問題となっている。労働力が不足するので家庭に主婦も貴重な労働力として考えられるようになった。しかし家事も重要な仕事である。主婦が専業主婦でなくなるなら、誰かがその分の家事を分担しなければならない。夫が無職なら当然、夫が家事をすべきだ。家事の中でも面倒なのが掃除である。料理は得意だが掃除は苦手という人も多い。これを機械が分担してくれれば大変助かる。
それゆえ、これから「掃除する家電」が増えるだろう。既に存在する掃除機能付き製品にはトイレもある。トイレ掃除も人が嫌がる仕事だ。清掃機能付きトイレは今後の標準となるだろう。ここで重要なのはメンテナンスフリーということだ。
一方で掃除機は実はメンテナンスフリーとはほど遠い製品が多い。紙パックが普及したのはいつ頃のことだったか定かでないが、手を汚さずにごみを交換できるという発想だったのだろうが、紙パックは決してきれいなものではない。しかも、交換は面倒になった。ダイソンが受けるのは吸引力だけが理由ではない。紙パックを必要としない点も大きい。
掃除機能をつけてほしい製品はまだある。洗濯機の洗濯槽にはカビが繁殖する。これはぜひ掃除してほしい。
ガスコンロ、オーブン、グリル、トースターなども掃除が大変だ。コンロはIHなら掃除も簡単だろう。しかし、オーブン、グリルは魚肉の油がなかなか落ちない。当然、これらの機器は大きく食器洗浄機に入らない。思うに台所で一番大きな容器はシンクなので、シンクに清掃機能を持たせることはできないものか。大きな道具も分解できるように設計しておけば十分丸洗いできる
また、冷蔵庫も裏や下に誇りがたまる。内部も汚れる。冷蔵庫は、エアコン同様、熱を逃がせないとエネルギー効率が低下する。掃除機能を組み込むべき理由がある。
最後に風呂も掃除してほしい。浴槽はもちろん、浴室自体を清掃し、カビの繁殖を抑えてくれたらうれしい。

2007年6月23日土曜日

木材家具

森がCO2を吸収するのは木が成長するからである。
よく屋上緑地化というが屋上に芝生を植えたところでCO2の蓄積には不十分だ。
草と木ではCO2の蓄積量がまったく違う。CO2蓄積量はほぼ体積に比例する。草と木では大きさがまったく違うので、CO2蓄積量に大きな差が出る。ようするに葉ではなく木がCO2を蓄えるのだ。森の木が増えなければ森のCO2貯蔵量も変わらない。しかし、今の日本でこれ以上どこに森を作れるだろう。1つは河川敷が有望ではないだろうか?ただし、森が育つまで川に流されなければの話だ。
森が増えないなら、木を蓄える必要がある。木はCO2の貯蔵タンクである。木を燃やすとCO2は再び放出される。本来は木造建築の建材として使うのがよいのだが、最近の木造建築では木材の比率が低下しているように思われる。
そこで注目したいのは家具だ。芸術品なら家より長く使われる。末代まで使える家具を作り、できるだけ永くCO2を封じ込めるのがよい。そのためには表面だけ木目にした合板パネルではなく中まで詰まった本物の木を使うべきだ。しかも、アンティークとしても通用する工芸品が望ましい。

サーバファームはロシアへ

地球温暖化を防ぐためにエネルギーを節約する必要がある。
多くのサーバを集めた施設をサーバファームという。サーバは多くの熱を発する。サーバファームではサーバを冷却するため空調設備を必要とする。
一番よいのは冷却する必要のないサーバを開発することだが、それができない場合、せめて空調分のエネルギーでも節約したい。
そこでサーバファームを高緯度の地域に設立することを考える。熱帯地域に作るよりずっと合理的だ。低緯度でも季節により南半球と北半球で分担する方法も考えられるが稼働率が課題だ。
候補地として緯度だけなら南極だが、いかんせんインフラがない。現時点では、カナダや北欧諸国が有望だ。
しかし、長期的にはロシアがもっとも有望だろう。ロシアには広大な土地がある。また、資源国であるから電力が不足することはない。ただし、ロシアは送電網、通信網などのインフラをもっと整備する必要がある。
インフラ整備が冷たいサーバの開発より早ければロシアのビジネスチャンスは大きい。

2007年6月22日金曜日

iPodの問題点

iPodは携帯プレイヤーの中で一人勝ちの状態だ。
しかし、死角がないわけではない。
ここでは、iPodの問題点を考えてみる。
(1) iTunesで曲を管理するのでPCが必要になる。PCなしで使える製品があればiPodに勝るかもしれない。しかし、これからの時代にPCが使えない人が増えるかといえば、逆に減るだけだろう。
(2) iPodにはいくつものシリーズがあるが、個人的にはnano以外のシリーズは不要だと思う。少なくとも曲を聴くだけならいらない。余分なシリーズにコストを払う分、価格が高めになる。nanoに経営資源を集中させれば、もっと収益を高めることができるだろう。nanoにiPhoneのI/Fを取り入れ、ダイヤルをなくせばもっと小さくできる。
(3) HDD iPodにはストレージとしての付加価値がある。しかし、FATなので2GB以上のデータを分割しなければならない。iPod自身にツールを組み込んで自動的に分割・結合できたらよい。さもなければiTunesにそのような機能が欲しい。同期するとき、iPodに送信時分割し、受信時結合する。分割されたファイルの構造はXMLファイルなどで表し、iPodがそのファイルを参照するとき元のファイルのように扱う。一種の仮想ファイルシステムか?
(4) iTunesのデータを新しいPCに移行するツールが欲しい。HDD iPod自身に保存して移行できればよい。
(5) iPodでは文字を入力できない。メモをとったり、予定を記入したりする機能があるとよい。そのためにはIM(Input Method)が必要になる。枠組みを定義し、公開すれば、すぐにでもiPod版ATOKが開発されるのではないだろうか?
(6) iPodは独自のUSBインターフェースでPCと接続する。いわゆるiPodコネクタだ。なぜ、最初から普通のUSBケーブルで接続できるようにしなかったのだろう。さらにいえば、ケーブルなしで直接接続できたほうがよい。SDメモリで受け渡すのでもよいのだが。
(7) iPodにはマニュアルらしきものが全くない。本体にマニュアルを入れるべきだ。
(8) 腕時計型iPodはでないのか?円形ならダイヤルのデザインも容易だ。コネクタの問題さえクリアできれば作れそうだが。なぜ、iPodをわざわざ腕時計にするかといえば、下手な時計より機能が多いからだ。携帯を時計代わりにするより使えるのではないだろうか?
(9) iPodに限らず腕時計にもストップウォッチがある。ストップウォッチに3回時間を指定してアラームを鳴らす機能を入れられないだろうか?可能ならプレゼンの時間測定に使える。
(10) iPodにインタプリタを導入したらどうだろうか?これには様々な用途がある。iPodのCPUは変わる可能性がある。だからCPUに依存するプログラムは作成しないほうがよい。HDD iPodに保存できるファイルの上限には2GBの制約がある(FATの制限)。ファイルを2GBに分割・復元するツールをインタプリタで動かせば大きなファイルも保存できる。
(11) ビデオiPodとはいえ、ビデオを見るには小さすぎる画面だ。むしろ、デジカメの方がビデオを見るに適している。意外とデジカメがポストiPodなのか?デジカメには撮影や録音もできる機種がある。十分iPodをしのぐ機能だ。そういえばD-Snapはデジカメ?出身の携帯プレイヤーだったかな?
少し細かい内容になってしまった。ということは、それほど問題が少ないということ。よくできた製品だ。

計算機科学を学ぶゲーム(片手でいくつまで数えられるか?)

計算機科学を学ぶゲームを思いつくままに紹介しよう。ここでいうゲームには、コンピュータを使わない遊びも含まれる。

最初の話題は「片手でいくつまで数えられるか?」である。
5本の指を1本ずつ折りながら数える方法では、5つまでしか数えることができない。
1本の指は2つの関節があるので、関節で区切られた節を親指で抑えることで、12まで数えることが
できる。親指以外の4本でそれぞれ3つまで数えられるので12になる。
しかし、2進数を使うともっと多くの数を数えることができる。
指が折られていれば1、そうでなければ0を表すことにする。
5本指は5ビットになるので、0~31まで数えられる。
実際には特定の指(例えば薬指)だけ折るのは練習が必要かも知れない。
慣れないうちは親指で補助して4本だけ使ってもよい。
それでも15まで数えることができる。
以下に0~15までを0,1で示す。このパターンで指を曲げればよい。
0:0000
1:0001
2:0010
3:0011
4:0100
5:0101
6:0110
7:0111
8:1000
9:1001
10:1010
11:1011
12:1100
13:1101
14:1110
15:1111
この方法は何かにつけ、たくさんのものを数えなければならないとき便利なので、日常生活でも十分利用できる。

XAMPPのすすめ

XAMPPはApache,MySQL,PHPを1つにまとめたオールインワンパッケージである。Windowsをサーバにするとき便利なソフトだ。Apacheなどは標準できつめのセキュリティに設定されている。そのため使える状態に仕上げるのは手間である。XAMPPでは最初からすべての機能が使える。もし、サーバを公開するなら、初期設定でゆるめに設定されたセキュリティをユーザが制限する必要がある。それもまた手間なので、実際にはWAMPアプリを動かす練習用に使われる。
最新版ではメールやFTPサーバまで含むようになった。登録確認メールを送信したり、コンテンツの転送までできるようになった。ここまでくると個別にサーバをインストールするより、XAMPPをインストールした方が早い。
XAMPPにはアドオンがあり、PerlやTomcatを組み込める。PerlはActivePerlでPPMも使える。Tomcatを使うには別途JDK1.5が必要だ。
せっかくなら、AXISアドオン、Globusアドオンも用意してくれないものだろうか?XAMPPをインストールすればグリッドになるというのは魅力的なアイデアだと思うのだが。

持続可能社会と検索指向計算

石油が枯渇するといわれて久しい。地球温暖化を防ぐために石油を節約しなければならない。
リサイクル(recycle)はだめだ。節約(reduce)が必要だ。コンピュータに携わる人間の一人として計算の節約を考える。
世間では計算といえば数学だと思っている人が多いだろう。私は計算は物理だと思っている。
私の計算は頭の中の計算ではなく現実世界の計算である。計算機はエネルギーを使って計算する。だから物理なのだ。エネルギーを節約するには計算そのものを節約する必要がある。
現在の計算機科学ではよしあしを性能で評価することが多い。それは、車でいえばレーシングカーの評価基準である。考えてみれば、おかしなものだ。車を選ぶときエンジンの性能を気にする人がどれだけいるだろう。その意味では今だ計算機は発展途上の製品なのだ。
性能すなわち計算時間を基準にするとどんなにエネルギーを使っても速く計算した方がよいことになる。そこで評価基準を変えよう。性能/エネルギーにする。すると速く計算することよりエネルギーを小さくすることが重要になる。例えば、2台で2倍の性能を得ても2倍のエネルギーを使うのでは意味がない。これは事実上並列処理の終焉を意味する。現在の計算機科学では並列処理は高性能化の決め手である。並列処理を封じられると高性能化が困難になる。
新たな評価基準の下ではパラダイムシフトが必要になる。そこで検索指向計算を提唱する。
無駄なエネルギーは無駄な計算から生じる。そこで、ある計算を既に実行し、結果が存在するなら、その結果を共有し、無駄な計算を省く。このとき計算結果は検索で求める。これを検索指向計算と呼ぶことにする。
検索指向計算では、エネルギー最小化と高速化を両立できる。

iPodはnanoがよい。

携帯音楽プレーヤーとしてはiPodがNo.1である。
人気な理由もうなずける。
しかし、iPodはiTunesが動作するPCがなければ成立しない商品である。
iPodを使用している人が多いということは、それ以上にPCの利用者が多いということだ。
通常のiPodはHDD内蔵で保存できる曲数も圧倒的に多い。
しかし、あまりに多いと選択するのも大変だ。
また、iPodは基本的にPCのHDDと同期する仕組みなので、PCを変更するとコンテンツの移行がとんでもなく手間である。
結局、PCとは別にiTuneサーバが欲しくなる。
iPodからPCへと同期してくれればいいのだが、おそらく方法はあるのだろうが、マニュアルには書いてない。
ちなみにiPodにはマニュアルらしきものは全くと言って良いほどない。
実にそっけないマニュアルだ。
最初はダイヤルの回し方さえわからず、試行錯誤した。
今でこそ簡単と思えるが初めてのI/Fでありながら、マニュアルに説明がないのだ。
最初に、あのI/Fに接した人は絶対ファミコンコントローラのようにボタンを押したと思う。
しかし、押しても回らない。
そもそもダイアル自身は回らず、タッチを検出するだけなのだ。
懇話休題、nanoに話を戻そう。
iPod nanoはHDDの代わりにフラッシュメモリを用いた小型iPodである。
容量は1/10以下になるがそれでも十分な容量がある。
HDD版iPodより軽く、小さい。
もっと小さいiPodにはshuffleがある。
shuffleは使ったことがないが、買いたいとは思えない。
shuffleには液晶がない。
液晶がないということは曲を選択できないということだ。
だから、shuffleはランダムに曲を変える(シャッフルする)。
こんなものはいらない。
やはり、iPodはnanoがよい。

詰め替え用ポンプ式容器

シャンプーなどの環境に配慮した製品ではポンプと詰め替え用がそれぞれ販売されている。
ポンプが高いので詰め替え用品を自然と購入することで無駄なゴミを省くことができる。
そのような中で詰め替え用品をそのままポンプにする事ができるアイデア商品がある。
要は、ポンプを詰め替えの袋に直接差し込み、袋ごと容器に入れてしまうのだ。
袋から容器に入れ替える手間も省ける優れ物だ。
しかし、値段が高いのが問題だ。
値段が高くても長く使えるなら十分価値がある。
しかし、実際には使用するにつれ、液だれしたり、カビがはえたりする。
つまり、いずれ不潔になって廃棄する。
それを避けることができれば寿命を延長できる。
そこで、詰め替え用ポンプ式容器全体を消毒できる容器をセットにして販売してはどうだろう。
洗浄剤も市販のものを使う。
これは哺乳瓶の消毒に似ている。
長く使うには劣化を抑える素材を使う必要がある。
少し重くなるがガラスはどうだろうか?
ガラスなら洗浄する必要もないだろう。ポンプ機構だけを洗浄すればよい。
ポンプは手にもって使う訳ではない。置いたまま片手で押すことが多い。だから重い方が使いやすい。
はて、このアイデアは果たしてものになるだろうか?