Page Index
日付 題名 記事の要約
2004.7.1 新しい舞台 新レンタルサーバー運用開始
2004.7.4 瞬間二次元変換機 デジカメラ購入記
2004.7.5 デジカメ vs 携帯 本職とおまけの撮り比べ
2004.7.6 携帯付デジカメラの真の価値 携帯+デジカメであることの利点
2004.7.10 不測のP505iS 後継機登場
2004.7.12 スクリプト世代交代 旧スクリプトの絶滅

新しい舞台

2004.7.1.Thu

 本日から新レンタルサーバーでの運営を開始。ZEROからlolipopへ引っ越す時は Transient Edition への移行と同時で用意に手間取ったので半年も無駄にしちゃったけど、今回は半月のスピード移転。
 なにせ、今の俺はあの時の俺ではない。(そりゃそうだ)

Redirect permanent / http://cts.creasus.net/

 テキストファイルに上の1行を書いてファイル名を .htaccess にして、一番上のディレクトリにアップロードするだけでOK。http://cts.velvet.jp/xxx/zzz.html に来た客を、そのまま http://cts.creasus.net/xxx/zzz.html へ転送する魔法。(正確に言うと転送ではなく、「このページはこちらですよ」という案内を返して、ブラウザがそれに従うだけ)
 パスもそのまま維持されるので、これひとつですべてをカバーできるのが強い。

 …が、これでは客が転送されたことに気がつかない。lolipopは今年限りで契約が切れるので、それでは困る。
 というわけで第2案。

ErrorDocument 403 /index.html
ErrorDocument 404 /index.html

 この2行を先と同じようにアップロード。どのディレクトリだろうがどのファイルだろうが、必ずルートの index.html が表示されるので、ここに移転した旨の案内を書いておけばOKだ。パスもそのままだから、JavaScript の location.href を加工して移転先のリンクを出力してやれば完璧。

 どちらを選んでも、案内に従えばここに戻ってくる。ZEROの時は .htaccess が使えなかったので、ひとつひとつのページに案内HTMLを作らないといけなかった。(これが「プロバイダのおまけスペース」と「レンタルサーバー」の違いである)

 ついでに、当サイトにたくさんある隠しページにサブドメインを与え、「サイト」として独立させた。直リンクでしか入れないし、向こうからもsiteCTSには入れない。今まではURLを削られると抵抗できなかったので。

 また、メールアドレスも変更。最初で最後の変更。自宅メールサーバーも考えたけど、あまりメリットがないのでレンタルサーバーの機能を使用。メールアドレスは好きな名前でたくさん作れるので、用途別にたくさん作った。これでウィルスやスパムがどこでアドレスを拾ったか、すぐ特定できる。

 以上から導き出される結論は、サーバーが変わったところで、肝心のsiteCTSはなにも変わってないということである。

隠しサイトは検索エンジンにガシガシ捕まってるので、siteCTSの10倍以上のアクセスがあったりするが、まぁ気にしないことにする。
JavaScript の調べごとをするとよく引っかかるから、見つけたらよろしく。


 デジカメラを買った。EPSONのL-300。スキャナもEPSON。プリンタもEPSON。そんなにEPSONが好きなのかい?

[ L-300の外箱と値札 ]
手頃な中古がたまたまEPSONだっただけ。
ちなみにどっちかっつぅとパナ信者である。

 サイトにもたびたび載せてる写真は、去年くらいまでは弟にデジカメラを借りて撮ってたけど、今は返しちゃったので携帯のカメラ(P505iS)を使ってる。オートフォーカス付き128万画素(1280×960)と携帯にしちゃ上々の性能を持ってるし、写りも(サイト用に縮小して使う分には)悪くない。
 ただし、写りが悪くないと言っても、条件がひとつある。

 「外で撮る分には」

 携帯カメラ最大の弱点であり、つまりフラッシュのことであり、すなわち夜の室内では使いものにならぬ。最近はフラッシュのついた携帯も出てるようだが、俺のについてなきゃ意味がない。

追記:2004.7.10
まさか自分の携帯の後継機にフラッシュがつくとは思いもよりませんでしたわ…。

 そこで、室内撮り専用のデジカメラが欲しいと思ってたわけだ。いや、本命はAyuでもブレないカリスマ画質のLumixなわけなんだけど、奴は高いのだよ。そんなブッ高いのを買うほどカメラを活用してるかっつと、そのような事実はないのだ。しかし三脚も持ってない素人ちゃんとしては、手ぶれ補正機能がどうしても欲しいのだ。フラッシュなしスローシャッターが手持ちで撮れるなんて夢みたいじゃないか。

 Web用に限定されたデジカメラとなれば、条件をぐっと低く抑えられる。もちろん中古で余裕オッケーだ。(ていうか新品買うくらいなら無理してでもAyuを雇う)

100万画素(1280×960)以上
Web用といっても、サイズは1280×960が最低ラインだ。(なぜなら雪子は22インチCRTの1280×1024なのでちょうどいいからだ)
SDメモリーカード
どうせ大容量メモリーカードが欲しくなるんだから、Lumixでも使えるやつを選ぶべきである。メモリーカードの中では一番普及しそうだし。携帯もMiniSDで(一方通行の)互換性もある。
単3電池式
弟に借りてた頃に充電式ニッケル水素電池セットを買ってしまった。結構高かったゆえに、有効に使いたい所存。
2001年以降の型
無用なトラブルを避けるため、せめて対応OS欄にXPが載ってるくらいには新しいのがよろしい。

 選別ポイントはこの4点のみ。室内用なので光学ズームも液晶も不要。予算は15000円以内…ていうか、それだけ用意すれば100万画素は余裕でクリアできるだろうって思っての設定だったんだけど、200万画素も余裕でクリアしてしまった。まさか300万画素級の機種がここまで落ちてるとは…。ちとオーバースペックではあるが、足りないよりはいい。

 で、14700円で購入したL-300のスペック。

  • 324万画素(2048×1536・1600×1200・640×480)
  • 光学ズーム×3・デジタルズーム×2
  • SDメモリーカード16MB×2
  • 1.5インチTFT液晶
  • 内蔵メモリーはなし
  • 電池とカードスロット(底面)

 …他、プリンタへ直接印刷させたり写真にプリクラフレームをつけたり携帯を使ってEPSONのサイトに写真をアップロードできたり本体にイルミネーションがついててピカピカしたり、どうでもいい機能が満載。なんかEPSONってこういう無駄なことにやたら金かけるよな。(PIMとかExifはまぁわかるけど)

 …で、困ったのが撮影解像度。1280×960 がない。1024×768 もない。800×600 さえない。1600×1200 の下がいきなり 640×480 というのはあんまりだと思うのだが。

 …で、不思議なのがメモリーカード。値札のスペック表には「16MB×1」って書いてあったのだが、同梱品1枚と装着済み1枚で2枚入ってた。なぜ? っつーか、16MBが2枚あっても役に立たぬのだが。結局256MBを別で買うだろうし。

 カメラの使い方はわかりやすくてよろしい。デジカメラに触ったことがあれば、マニュアル不要。液晶は1.5インチと小っちゃいけど、ついてるだけマシとする。
 起動時間は4秒ほど。撮影間隔は最高解像度で4秒ほど。速くはないけど、弟に借りてたデジカメラはもっと遅かったので、我慢の範疇だ。ちなみに携帯のP505iSは起動2秒、間隔は最短9秒(画像保存確認を除くと6秒)ほど。

 ドライバは、今どきの常識であるマスストレージクラスに対応してるので、PCへのデータ移動も簡単。使いものにならんくせに常駐したがる胸糞悪い付属アプリを使う必要はない。(これ大事)
 …が、転送モードがUSB1.1ゆえに遅く、どうせならメモリーカードをぶっこぬいてUSB2.0対応のカードリーダーで移した方がいい。せっかくの高速転送を誇るSDカードがもったいない。(16MBの転送で実測5倍くらい違ったので、256MBだとどれくらいの差になるのだろう)

 せっかくデジカメラが2機になったということで、今度撮影比較でもしてみようか。

[ SD16MBとMiniSD128MB ]
つか、何度見ても物理的に間違ってるような気がする。


デジカメ vs 携帯

2004.7.5.Mon

 せっかくデジカメラが2機になったということで、L-300とP505iSで撮影比較なんぞしてみた。勝負はすでに決まっているけど気にするな。こういうもんは専用のページを作るべきかもしれんが、それも気にするな。
 基本的なスペックは以下の通り。

L-300 P505iS
職業 本職デジタルカメラ 電話付きデジタルカメラ
メーカー エプソン パナソニック
画素数 324万 128万
最大解像度 2048×1536 1280×960
ズーム 光学×3 デジタル×2
記録媒体 SD MiniSD
液晶 1.5インチTFT 2.4インチTFT(QVGA)

 まず最初は昼間の風景写真。カメラにとって一番簡単な撮影。青空を多く入れるとカメラの差が出るらしいので、それっぽい構図を選んでみた。(ちなみに俺はカメラに関してド素人なのでご了承)

 撮り方が悪かったのかこれが実力なのか、L-300は素人でもわかるくらいノイズが乗ってザラザラしてる。対してP505iSは「携帯ならこんなもんでしょ」といったとこだろうか。どちらも、俺の用途には充分な実力であるわけなんだけど。(綺麗に撮りたいならAyuを雇え)

 続いては夜間の室内撮影。照明は蛍光灯のみ。これもやはり、カメラの差が出るシチュエーション。

 ぶひゃひゃひゃ。これが「本物カメラ」と「おまけカメラ」の差なのだよチミィ。この差があるからわざわざ買ったのだよ。フラッシュ万歳だね。
 …というのもずるいので、今度は同じシチュエーションで、フラッシュなし。手ぶれしないように台の上に乗せてセルフタイマーで撮影。

 どちらも感度を上げるので、モニタが飛ぶのは仕方ない。P505iSも、これくらいなら Photoshop でレタッチすれば(Webで使う分には)なんとかなる。思ってたほどの差は出なかった。
 …が、これ以上暗くなると一気に「おもちゃカメラ」の弱点が出る。

 P505iSの弱点は、ちょっと暗くなるとすぐに縦縞のノイズが走るところだ。フォトライトを使えばある程度軽減されるものの、所詮は懐中電灯である。ナイトモードにして感度を上げればかなり改善されるものの、綺麗とはとても言いがたい(しかもCPU負荷が高いので動作がかなりもたつく)。両方使うと、今度は飛ぶ(さらにもたつく)。
 結局、暗い場所ではどうあがいても無駄ということ。

 そして、それをあざ笑うL-300。さすが、本職は違う。

 …が、携帯だって負けてばかりではない。

 携帯の単焦点レンズは接写がお得意。5cmまで近づいてもバチッとフォーカス。

 L-300は11cmが限界で、5cmではどうやっても無理だった。(まぁ10cm以内の接写なんてそう使うものではないけど)

 …と、まぁやっぱL-300の圧勝であるわけだが、最高解像度の写真を見てもらえばわかるように、L-300もあまり出来の良いデジカメラではない。1段階落として1600×1200で撮るのがベストのようだ。
 とはいえ、Webでは縮小するからこんなレベルで充分だし、Lumixまでのつなぎとしては充分な仕事をしてくれることだろう。本日以降の記事は写真がガツンと増えること間違いなし。

 明日に続く。


 昨日からの続き。

 こうして見ると、携帯デジカメがいかにおもちゃであるかがよくわかる。いくら画素数を増やしたところで、光量がちょっと不足しただけですぐノイズ出まくるのではダメだ。よく「これはもはやデジカメだ」とか称されるが、それにはまだまだ及ばない。

 でも、携帯デジカメは「いつも持ち歩いてる物にカメラが付いてる」にこそ真の価値があるわけで、すなわち「綺麗に撮れること」より「いつでもどこでも撮れること」の方が重要なんである。これは本職デジカメがいくら薄く軽くなったところで、そう簡単には覆せない絶対的なアドバンテージだ。(携帯電話を携帯しない人は別だが)

 まぁそんなわかりきったことを置いても、P505iSには「起動時間の速さ」という長所もある。

[ 変形チャート / 63KB ] 液晶を起こす → 180度横回転 → 液晶を閉じる(液晶が表側を向く) → 即カメラ起動。その間、わずか2秒。(起動時間も含む)
このレスポンスのおかげで、「いつでもどこでもすぐに撮れるカメラ」として使える。
シャッター間隔も、最高画質で6秒前後と(携帯にしては)速い。

 また、画像が横長で記録されるのも、PCで管理する身としてはありがたい。(通常スタイルで撮ると横に寝てしまうが)

 ただ、レンズが液晶側でなく本体側なので、撮影するには被写体へあからさまに向けねばならず、「メールやってるふりして盗撮」がやりにくい。悪用…というわけではないけど、面白い人がいるとすぐ撮りたがる俺にはちょっとデメリット。

 そんなP505iSが一番役に立つのは、やはり仕事の時。現場の中で本職デジカメなんか持ってられないが、携帯は嫌でも持ってないといけない。
 作業の記録、自分が手がけた現場の履歴、はたまた単なるネタ撮り、ディジタルの利点を活かして撮りまくりである。現場だけで月100枚ペースだ。

写メールかなんかで初めて携帯にデジカメが装備された時、このような事態を予想できた奴っていたのだろうか?


不測のP505iS

2004.7.10.Sat

[ P505iS / 41KB ]  愛用のメール機能付き携帯カメラ、P505iS。ぐるぐる回る「Flexスタイル」で話題になった機種。こういうギミックが大好きな俺は、もうすっかり惚れこんじゃって2月にTU-KAと絶縁した次第である。進化を棄てたキャリアなぞに用はない。
 でも基本的には受け専なので通話料は毎月100円未満、iModeも活用せず、無料通話分を2ヵ月繰り越してくれてもなんの意味もない。使ってるのはメールとカメラだけで、"携帯電話" として見れば「お前にゃTU-KAがお似合いだよ」と言われてしまうヘッポコぶりだ。(俺が欲しいのは「電話が付いてるデジカメ」である)

 で、4日に携帯のカメラがどうとかフラッシュがどうとか書いたけど、予測外の事態が発生してしまった。P506iCの新発売である。
 ていうか、506シリーズが出るどころか、よもや直系の後継機だとは! P900iがFlexスタイルを採用しなかったから油断してた。

 このP506iC、Flexスタイルはそのままに使い勝手を大きく向上、カメラも200万画素級にグレードアップ、さらにはフラッシュを装備。オートフォーカスはなくなったものの、そもそも携帯はパンフォーカスでもあまり支障がない。ていうかなんていうかフラッシュ…。
 ついでにFeliCaにも対応しちゃって、もう物欲ゲージ満タンな俺。

 ぅぁー。

 でもP505iSを買ってまだ半年も経ってないので、機種変更はまだまだ先。来年くらいになってもまだ売ってるようであれば、(Flexスタイルな新機種が出てない限り)必ずや買わせていただきます。

 唯一の難を言えば、背面の小液晶がなくなったことだろうか。コスト的なものか構造的なものか、時間を知るのに携帯をいちいち開けるのは面倒くさい。背面液晶にカラーは不要って思ってる俺としては、P505iSの白黒液晶は気に入ってたのだけどなぁ。(Nみたいに喋ってくれるのが一番よろしい)


 4.5に引き続き、初期の頃から今まで頑張ってきた主役的関数、strSearch()wri()getLud() が退役。
 どれもごくごく簡単な関数であり、最小単位まで分割された汎用関数であり、Public Editionの頃はすべてのページから呼ばれるほどの主役関数だったけど、本日めでたく退役、スクリプトファイルから消去された。感慨深いなぁ。(俺限定で)
 今までありがにょう。

strSearch()

 新型の登場で退役。JavaScriptを初めて間もない頃の誕生だから、都合3年くらいの活躍。

//line の中に find があれば真を返す
function strSearch(line, find) {
  return line.indexOf(find) != -1;
}

//新型
String.prototype.exist = function (s) {
  return this.indexOf(s) != -1;
}

 新型は String オブジェクトに exist() メソッドを実装させることで、

var str = "string";
if (strSearch(str, "STR")) //strSearch() での方法
if (str.exist("STR")) //String.exist() での方法

 というエレガントな構文が使える。
 ついでに、姉妹品に existLower()equalLower()regExist() も作ってみた。

//"STRING".existLower("str") -> return true
String.prototype.existLower = function (s) {
  return this.toLowerCase().indexOf(s) != -1;
}

//"StRiNg".equalLower("string") -> return true;
String.prototype.equalLower = function (s) {
  return this.toLowerCase() == s;
}

//"string".regExist("[\\d]") -> return false
String.prototype.regExist = function (s, f) {
  var r = new RegExp(this, f);
  return r.test(s);
}

wri()

 いちいち document.write() と書くのが面倒くさくて生まれた、初めてのモジュール化関数。これも新型の登場で退役。

//渡された文字を出力するだけ
function wri(s) {
  document.write(s);
}

//新型
String.prototype.write = function () {
  document.write(this);
}

 今まで wri("文字列"); としていたのを、"文字列".write(); で出力できる。ちょこっとエレガントっぽい。
 ただ、もはや document.write() 自体が前世代の遺物なので、使われることはほとんどないはず。

getLud()

 ページの最終更新日を "2004年7月12日" のように整形して返す関数。Transient EditionになってからJavaScriptでの出力をやめたので不要に。

//ページの最終更新日を整形して返す
function getLud(t, y) {
  var d = new Date(document.lastModified);
  if (!y) {
    if (d.getFullYear) {
      y = d.getFullYear();
      if (y < 1900)
        y += 1900;
      else if (y < 2004 && y >= 1904)
        y += 100;
      if (t) y += "年";
      else y += ".";
    }
  }
  if (t) return (y ? y : "") + (d.getMonth() +1) + "月" + d.getDate() + "日";
  else return (y ? y : "") + (d.getMonth() +1) + "." + d.getDate();
}

 これら3関数の退役により、Public Edition 時代のスクリプトはすべて姿を消したことになり、次世代ベビーである BrwsNavsEnvsYukinaSakuraSuzunaNazuna へとバトンタッチすることになる。

BrwsNavsEnvsYukinaSakuraSuzunaNazuna は、各自の役割ごとに武装(メソッド)を与えられたクラスライブラリであり、次のsiteCTSを担うコアスクリプト。いくつかはこのTransient Editionでも試験運用されているが、メソッドのほとんどはValid Edition用なので実装されていない。