過去の日記

2005-11-02 JPEG≠ファイルフォーマットの名前, ヘルプは読まれないのだろうか [長年日記]

最近ヘルプが無視されてる? [hatena]

検索用のロボット(ヤフー・グーグル)が循環してくる周期を教えてください。一昨日初めてグーグルロボットが自分のサイトに来てから昨日今日ときてないようです。
http://www.hatena.ne.jp/1130930919

Yahoo!やgoogleのトップページからヘルプを辿ることもできない?


SonicStage コンピレーション

の組み合わせで検索して来る人、たまにいるのだけど、"ヘルプを見る"ということを知らない人なのだなぁ、と思ったりする。


ヘルプより先に検索エンジンやはてなを頼るっていう傾向があるのかしらん?


追加:2005/11/12

「窓の手」というソフトの詳しい使い方がわかるサイト教えてください。
http://www.hatena.ne.jp/1131799821


追加:2005/12/12

ヤフーオークションで出品者の希望落札価格より低い値段を設定しても(その時点で最高入札額であっても)落札できないのでしょうか?初めてのオークションなので、詳細教えてほしいです。
http://www.hatena.ne.jp/1134343950

あまつさえ、1.の回答でニセ回答をもらっているし……。

TRPG アブソーバー,不可逆な損失 [etc]

人間は適応力が高いので、これらアブソーバーをあっという間に理解し、ゲームシステムの中に組み込んで把握してしまう。つまりアブソーバーまで含めて行為の成功率や安全範囲、リスクを判断するようになる。そうして、けっきょく元の水準と変わらない状態にいることに気づく。つまり、アブソーバーに意味がなくなってしまう。

指輪世界の第二日記 - TRPGのアブソーバーと消せない記録

なるほど。確かに、賢しいプレイヤーであればそうなってしまうだろう。


続く文に、

おそらくアブソーバーは不可逆な損失、蓄積する倫理的負債として設計されるのがよい。

指輪世界の第二日記 - TRPGのアブソーバーと消せない記録

とある。
戦国霊異伝では違うアプローチをした。アブソーバーのシステムでの名前は「天佑」。すなわち「天の佑け」である。

  1. 天佑の残りポイントはシナリオごとに設定され、パーティで共有する。
  2. 天佑の残りポイントは次のシナリオに持ち越すことはできない。
  3. 天佑の残りポイントはプレイヤーには明かされない。
  4. 天佑による事態回避・状態点の補正はその対象となるPCのプレイヤー以外のプレイヤーからのコールが必要である。
  5. シナリオ終了後に残った天佑のポイントがそのまま得られる経験値になる。

というもの。
最後の1つは「不可逆な損失」としての設計である。
他の点は「不可逆な損失」でも「蓄積する倫理的負債」でもないと思う。

JPEGはファイルフォーマットの名前ではない [hatena][tech]

すぐに回答がでてくるかと思っていたが、なかなかでてこない。
なのでちょっと自分で調べてみると……、これがなかなか難問である。
おかげでこの質問、意外に言及したいことが多くなった。

PHPで、指定した画像の解像度を取得する方法はないのでしょうか?
 ※縦横のピクセル数ではなく、解像度です。
  300dpiなどの解像度です。
http://www.hatena.ne.jp/1130721466


さて、まずは回答のフォローというか経緯から。
JPEGやPNGにはメタデータを入れられるはずだけど、GIFってどうだっけ? とか思いながら探してみるが、実際、解答がなかなか見つからない。
運良くJPEG関連のファイルフォーマット(後述するがこの表現の仕方に注意)に関してのライブラリを発見。
早速解凍してみると、Example.phpがあるので、apache上に展開して呼び出し。パラメータを付けなさい、と言われるので同じフォルダに入っていたtest.jpgを指定してみる。
おー、解像度情報発見。
Dreamweaverでチェックしながらその情報を出しているメソッドを探す。
でたどりついたのが回答のソース。
単位のフラグが存在して、解像度情報はdpiだったりdpc(dot per centi meter)だったりするらしい。面倒。
PNGのライブラリも見つかるかと思ったが、これがなかなか……。


さっき簡単に「JPEG関連のファイルフォーマット」と書いた。
回答でも「俗に言うところのjpeg画像ファイル」なんて持って回った言い方をした。
要するに、

"JPEG"という言葉はファイルフォーマットを指す名前ではない

と強調したかった。
JPEGという言葉は、「静止画像データの圧縮方式」の名前なんである。ついでに言うとJPEG圧縮方式について検討していたグループの名前でもある。グループ名がそのまま圧縮手法の名前に転換されたわけだ。
じゃあ、普段JPEG画像と読んでいるあのファイルフォーマットの名前はというと、JFIFという。
特に区別する必要がなければ、JFIFフォーマットのファイルのことをJPEG画像と呼んで差し支えはない。そして、あえて区別する必要がある場面というのはそう多くはない。


なんで今回の回答ではあえて区別したかというと、該当の部分を含むソースのファイル名がJFIF.phpだったから。それならJFIFという言葉を出しておいた方がいいだろうと思った。
これが「あえて区別する必要がある場面」の1つ。つまり画像フォーマットを扱うライブラリの中では、区別しておいた方がいいだろう、ということ。
実際このライブラリでは、JFIF.phpやEXIF.phpが画像フォーマットの名前と対応していて、その形式のファイルからメタデータを取り出すためのメソッドを備えている。


EXIFファイルフォーマットで画像情報についてJPEG圧縮方式を採用した場合、そのファイルはそのままJFIFファイルとしても取り扱えるはずだ。EXIFファイルは無圧縮方式で画像を格納したり、TIFFファイル準拠のファイルであったりもする。つまりEXIFはメタデータのセットについての取り決めで、厳密には画像ファイルフォーマットと言っていいのか疑問ではある。


閑話休題。もう一つ、あえて区別する必要がある場面とすればTIFFフォーマットのファイルについて語っている時だ。TIFFフォーマットは、データ/メタデータの格納の仕方についての取り決めなので、LZW圧縮*1のTIFFファイルだとか、G3圧縮*22値画像のTIFFファイルだとか、TOWNS形式のTIFFファイル*3だとかが存在する。
ここまで書くと見当がつくかもしれないが、JPEG圧縮方式のTIFFファイルというのが存在する。ここでいうJPEGは明らかに圧縮方式の名前であって、JFIFファイルフォーマットを指してはいない。
この2点ぐらいしか、JPEG圧縮方式≠JFIFファイルフォーマットであること意識する場面は思いつかない*4


次。メタデータとしての解像度を必要としているのは何故だろう? という疑問がある。
多分、画像ファイルを整理するWebアプリを作っている(もしくはソースが入手できるアプリケーションに手を加えようとしている)のだろうな、と想像した。
でもなんで解像度が必要なの? と思う人は多いだろう。プログラマに近い人――つまり、PHPに詳しくて一見この質問に簡単に答えられそうな人――ほど、疑問が出ると思う。
昔、画像の大きさを表現するのに、他人と話が合わなくて困ったことがある。使用する言語のスキーマが異なるのだ。私はSEかつプログラマな人間なので、画像の大きさをピクセル×ピクセルで表現する。相手は、DTPに関連している人間で、画像の大きさをdpi(つまり解像度だ)と物理的な長さの組み合わせで表現をするのだ。
例えば900×900ピクセルの画像がある。これを300×300ピクセルという大きさにリサイズする時の話。前の文は私の言語スキーマで書いた。
相手の言語スキーマで言うとどうなるか?

300dpiで3×3インチの画像データを、大きさそのままで100dpiまで解像度を粗くする。

となる。(実際はインチという単位を使っていたかどうか、記憶が定かではない。ここでは判りやすい様に書いた。)
本当に、最初のうちは、相手が何を言っているのが全然理解できなくて困ったのだ。結局JFIFファイルフォーマットにメタデータとして解像度情報を埋め込めることを突き止めて、それでようやく話を合わせることができた。
お互いに、同じ「拡張子がjpgの画像」の話をしているのに、あまりにも話がかみ合わなくて困った、というのも今となっては軽い笑い話。

*1 GIFファイルのサブマリンパテントで有名になった悪名高い圧縮方式

*2 FAXに使われる2値画像、つまりモノクロ画像の圧縮方式

*3 懐かしい、と思った人もいるはず

*4 どうも、JPEGでは曖昧だった色情報についての取り決めをJFIFで明確に定義した、というのもあるらしい。未確認。