2005-08-05

最近のインスタント証明写真

正式にはなんと呼ぶのか分からない、数百円と数分で証明写真ができあがるアレのことなんだけど。今朝早くに近所のコンビニで撮影する機会があったので、そのレポート。

最近のやつはモニタでどんな感じで写るのかがあらかじめ確認できるうえに、撮影機会が2回あって、両方の結果をメモリに蓄えて、あとで選択できるようになっているのね。おまけにどの辺りが顔なのかも自動で認識したうえで事後に確認までできるので、椅子の高さを調整するとか、座高の高い人も妙に縮こまったりしなくても自動的にベストの構図で写真が撮れる。ことになっている。

しかし実際にはレンズに正対しないと歪み1が出るので、高さも水平位置もきっちりレンズを見ながらポジショニングする方がよい。少しでもきれいに写りたい人はモニタではなくレンズを睨みながら自分でポジションを調整しよう。2

仕上がりもきれいだなぁ。これはあれか。レンズの性能が上がったのではなく、デジカメの技術の応用で、小さいレンズでの近距離自動撮影での画質があがってるってことか。AF とか AE とかフラッシュとかシャープネスをはじめとする補正とか。5年前の写真とは比べものにならないくらいにきれいだ。

ただこの機械、惜しいかなインターフェイスが練れていない。「よろしければ OK ボタンを…」というアナウンスの前から OK ボタンが点滅しているので押してみたが、何度押しても無視される。何かと思ったらアナウンスの音声が終了しないとボタンの入力を受け付けないことになっているようだ。

だったらアナウンスが終了するまでボタンは点滅させるんじゃねえ。基本だろ、そんなこと。

※ プリクラと同じなのでは、という指摘をいただいた。なるほどねー! プリクラなんか撮らないから知らなかったよ。すげーな、プリクラ。

  1. 歪みと言うと大げさかな? パースがつく、程度の表現にとどめておこう。 

  2. しかしポジションは調整できても早朝のうさぎのような赤い目はどうにもならないのでしたorz 

erb とローカル変数とインスタンス変数

erb を使う。

あるところに値をぽこっと埋め込みたいとする。このとき、erb ファイル上では

varローカル変数
@varインスタンス変数

どちらの書き方がよいか?

ローカル変数を書いただけの場合、これはローカル変数の参照と解釈されるが、これが未定義の場合は同名のメソッド呼び出しが行われ、メソッドも定義されていない場合は NameError となる。つまり、erb ファイル上に書かれた変数については必ず何らかの値をセットしなければいけない。

インスタンス変数で置いておけば未定義の場合は nil が返るのでこの辺りを気にする必要はなくなるが、インスタンス変数ってことはインスタンス内の名前空間を消費してしまう。変数名のバッティングや予期せぬ変数の内容を取り出しちゃったりなんて問題が起きるかも。

いずれにせよちゃんと erb ファイル上で利用している変数に合わせて適切に値をセットしろってことにつきるわけだけど…。いわゆるテンプレートシステムに慣れていると、この作りはいささかびっくりする。1まぁ、グローバル変数バリバリの素の PHP でテンプレートのようなものを作ったような状態、と思えばいいのかな。

[8/13 追記] 結局今回はローカル変数のハッシュを置くことにした。erb ファイル上でもハッシュの記法で書かなきゃならないのが多少うざいけど、簡単にエラーになっちゃわないし、インスタンス変数の名前を消費しちゃうよりマシかなぁという判断。本当は erb のコンパイルのエラーを通常の undefined なんちゃらかんちゃらのエラーとは別な形で拾えれば全部単純なローカル変数の形で書けた方が作業の分担も楽にできるんだけど、そこまで余力がなかった…。

  1. 明示的に値をセットするプロセスが存在しないし。 

About

例によって個人のなんちゃらです