2006-07-30[n年前へ]
■恐怖!「心霊」を見つけ出すソフトウェア
またしても久々になってしまった「できるかな?」ですが、夏といえばやはり心霊話だよね?…というわけで、今回は恐怖!「心霊」を見つけ出すソフトウェア - 写真を調べてみれば、あなたの背後に霊がいる! -です。
「心霊」検出ソフトウェアはここに置いておきます。集合写真で、「一見人間に見えるけれど、実は心霊以下のヤツ」を見つけ出して遊んでみてもよいでしょうし、自分の周りに潜む霊の姿を眺めてみても面白いかもしれません。もちろん、実は自分がすでに心霊だった!ということもあるかもしれませんが…。
2006-08-13[n年前へ]
■眺めたWEBページ内容をすべて(本文つき)ショートカットとして保存するアプリ
『訪問したURLはすべてブックマーク』や 『「あとで読む」じゃなくて「あとで読んだところ全部から探す」をPlaggerでやる方法 』などに影響されて、自分が眺めたWEBページの内容・履歴を全取得してみることにしたのです。そのために、まずはアプリケーションを作ってみました( UrlTracking.20060813.lzh 507kB Windows用)。
このソフトウェア(UrlTracking.exe)は、Internet ExplorerやMozilla FirefoxやOperaや…といった各自のブラウザで読んでるページを調べ、WEBページ内容(およびショートカットのアイコン表示用サムネイル)を取得した上で、すべて(WEBページの本文が埋め込まれた)インターネットショートカットとして"histories"ディレクトリに保存していくアプリケーションです。ソフトの動作状況、例えば、WEBページ記録を一時的に中止したり、ソフトウェアを非表示にしたり…という設定は、タスクバーのアイコントレイの"UrlTrack"アイコンから変更することができます。WEBページの内容はSJISで変換してありますから、後でWindowsの検索機能やらGoogle Desktopやらの適当な手段で検索をかけてやれば、眺めたページの検索が簡単にできるはず、というわけです。 また、インターネットショートカットにはサムネイル画像も付けられているので、イメージ的な検索も(現時点では)人力検索で、直感的にできるかもしれません。
「ブックマーク」ボタンは、今眺めているページ内容の保存と、今眺めている「ブラウザ画面」を"bookmarks"にJPEG画像ファイルとして保存します。また、「ブラウザ画面をコピー/保存」は、アプリケーションがあるディレクトリに「ブラウザ画面」を保存するようにしてあります。一つ面白い特徴は、ブックマーク時に保存されるサムネイル画像が「(ページ中の)今眺めている場所」で、「URLで示されたページのトップ(もしくはアンカー部)のサムネイル画像」ではない、というところでしょうか。
2006-10-11[n年前へ]
■そもそも経済学の「目的」って何なんですか?
「そもそも経済学の「目的」って何なんですか?」を書きました。今回は『分数ができない大学生』などの著書を持ち、元日本経済学会会長でもある西村和雄京都大学経済研究所教授に「経済学の目的」「みんなの意見」「ソフトウェアの値段」ということについて聞いてみました。
「事実上“標準ソフト”により阻害されるようなものは、所詮"小さな技術進歩"に過ぎない」というフレーズが、ふと新鮮で面白かった瞬間です。
すべてについて優秀な人がいたとしても、その人のやれる仕事はひとつだけです。1番目の人ができないことを2番目の人が…と巡っていけば、1番“できない”人だってやることがあるわけです。広く勉強をしていればね。
「ひとつ」を選ぶことが選択というものであるなら、選択肢が増えるということは、「選べない選択肢」が増えていくということでもあるんだな、とふと感じました。
2007-04-14[n年前へ]
■Icosahedron Worlds
"Icosahedron Worlds" は、好きな画像ファイルから、のりしろなども付いた正二十面体の展開図を作成するWEBサービスです。あなたの手元にある画像ファイルを、ブラウザ画面からアップロードするだけで、自動的にサーバー内で画像変換が行われて、ブラウザ画面に正二十面体の展開図が表示されます。表示された正二十面体の展開図を印刷すれば、あなたの画像ファイルを実際の正二十面体として組み立てることもできます。
処理された展開図は、ブラウザ上では一見小さな画像に見えます。しかし、実際には非常に大きなサイズの画像ファイルです。画像上でマウスを右クリックでもすれば、展開図の画像ファイルをローカル・ディスクに保存することができます。ダウンロードした展開図を好きなサイズでプリンターから印刷すれば、好きな大きさの正二十面体を作り出すことができます。
たとえば、Texture Mapなどから、さまざまな画像ファイルをダウンロードして、地球や月や火星などの天体の地図をもとに小さな正二十面体を作ってみても面白いでしょう。あるいは、パノラマ写真から、水晶玉のように周囲の景色を中に封じ込めた不思議な正二十面体を作ることもできるでしょう。いろいろな使い方がきっとあります。"Icosahedron Worlds" は、好きな画像ファイルから正二十面体の展開図を作成し、20の顔を持つ小さな空間を作り出すWEBサービスです。
今のところ、サーバにアップロードした画像ファイルを削除する機能はありません。そのかわり、アップロード時に自動的に暗証番号が付加され、その暗証番号を指定しなければ、アップロードした画像にアクセすることはできないようになっています(たとえば、アップロード後に表示されるhttp://www.hirax.net/map/index/16?code=186604のcode=186604の部分がその暗証番号です)。もしも、アップロードして作成した画像や展開図に、後でアクセスしたい場合には、ブラウザ・アドレスバーに表示されているURIをメモするなどしておいて下さい。このhttp://www.hirax.net/map/index/16?code=186604というアドレスを他の人に知らせたならば、手元の写真を正二十面体の展開図にしたものを友達に見せることもできます。友達と一緒に撮影した写真などを「展開図」にして、見せてみるのも楽しいかもしれません。友達の顔をした正二十面体を作るのも面白いかもしれません。一枚の写真から、掌の上にのる小さな世界を作る、"Icosahedron Worlds" は、そんな風に1枚の2次元の画像から、いろいろな面を持つ3次元の空間を作り出すWEBサービスです。
2007-04-29[n年前へ]
■「無名関数」と「吾輩は猫である」
夏目漱石の「吾輩は猫である」は、雑誌「ホトトギス」に1905年1月に発表された。最初は、冒頭の章だけで完結する短い読み切り小説だった。
吾輩は猫である。名前はまだ無い。 …吾輩がこの家へ住み込んだ当時は、主人以外のものにははなはだ不人望であった。どこへ行っても跳ね付けられて相手にしてくれ手がなかった。いかに珍重されなかったかは、今日に至るまで名前さえつけてくれないのでもわかる。数学ソフトウェア Mathematica でプログラムのスケッチ(素描)を作りながら、「この「名前はまだ無い・名前をつけてくれない」という言葉が頭の中に浮かんだ。
「吾輩は猫である」を連想したのは、Mathematicaの「純関数」の勉強のための練習題材を書いていたときだ。Mathematica の入門・中級の講習会に参加すると、この純関数とやらが登場した途端に、講師が話す内容を見失ってしまうことが多い。講師の筋道が見えなくなってしまう理由は、純関数の必要性・存在価値といったものが今ひとつわからないままに、純関数がいきなり登場してくるからである。もちろん、「(数値でなく)関数を引数として与える」ということに慣れていない生徒が多いこともあって、いつも、純関数が登場した瞬間に、何かその場が失速したような感覚を受ける。
話の流れ・必然性がなくても、文法をただ暗記することができる人であれば、おそらく何の問題もないのだと思う。あるいは、他のプログラミング言語をよく知っていて、文法の必然性が自然と理解できる人たちであったなら、これもまた問題は起きないのだろうと思う。しかし、私も含めて、入門・中級の講習会に来ているような、そうでない多くの人たちの場合は、純関数が登場した途端に、話についていけなくなることが多いように感じるのである。
Mathematica における純関数 "Pure Function" というのは名前(シンボル)を持たない関数で、ほかの関数への引数などとして、関数の内容を書いた一瞬だけ使われるものだ。もう少し違う呼び方をしてしまえば、つまりそれは「無名関数」だ。「無名」というところが重要で、名前がないから、使ったら最後もう二度と呼ぶ・使うことはできない、ということである。つまりは、「使い捨ての関数」だ。この「関数を使い捨てる」というところで、どうしても引っかかってしまう。値を入力するのであれば、あまり考えることなどせずに、数字キーを2・3回押せばすむ。だから、値に名前(シンボル)と付けずに、使い捨てにすることには慣れている。けれど、関数を書く場合には、(ハッカーでない私たちは)頭も多少使わざるをえない。すると、せっかく考えて・苦労して書いたのだから、名前をつけて、あとで呼んでまた使うことができるようにしたい、などと思ってしまうのである。使い捨ての「無名」ということと、苦労をともなう「関数」ということを、なかなか重ね合わせることができないのである。
そこで、自分なりの「純関数の存在価値・意義」を作ることで、その存在意義を納得したくて、純関数を使った例題を作ってみた。実は、それが前回の Spectrum Color Conversion を動かしているベース部分、「離散化を必要としない連続的なスペクトル演算・表示を扱うためのパッケージ」である。これは、無名関数(純関数)を使うための例題である。このパッケージを使うと、スペクトルを描くのに、
plotSpector[ (128 red[#] + 255 blue[#])& ];というような命令でスペクトルを描くことができる。これは「強度128の赤色と強度255の青色を足したスペクトル」を描けという命令なのだが、この中の
(128 red[#] + 255 blue[#])&という部分が、「強度128の赤色と強度255の青色を足したスペクトル」を表す無名関数だ。あるいは、
rgb=fitSpector[(D65[#]-128 cyan[#])&,red,green,blue]というのは、「シアン色が128載せられた色」を、赤色と青色と緑色で近似しろという命令であるが、この (D65[#] - 128 cyan[#])& というのも、「シアン色が128載せられた色」という無名関数である。こういう書き方をしてみると、スペクトルを示す「関数」ではあるが、見方によっては、スペクトルという「値」のようにも見えると思う。値のように見えることで、スペクトルを示す無名関数を引数として他の関数(命令)に渡すことへのアレルギーを低減してみようとしたのである。そして、(128 red[#] + 255 blue[#])& というようにあまり考えることなく直感的に無名関数を書くことができるようにすることで、その関数を使い捨てることへの違和感を減らそうとしてみた。さらに、こういった内容であれば、下手な名前をつけてしまうよりも、式そのままの方が内容・意味がわかりやすい、ということを実感してみようとしたのである。たとえば、(128 red[#] + 255 blue[#])& であれば、この式自体が「強度128の赤色と強度255の青色を足したスペクトル」という風に話しかけてくるように感じられ、下手に名前をつけてしまうよりは内容が見えることがわかると思う。
こんな例題を作ることで、無名関数アレルギーが低減した、と言いたいところなのだけれど、関数を使い捨てることには、やはりまだ慣れることができそうにない。関数を引数として渡すことは自然に感じられるようになっても、無名関数に名前をつけて、再度その関数を呼んでみたい気持ちはなかなか止められそうにない。名前をつけるより、その関数の中身をそのまま書いた方がわかりやすいとわかっていても、単純な名前をつけてしまいたくなる欲望はなかなか止められそうにない。
その理由を考えてみると、やはり、苦労をともなう「関数」を使い捨ての「無名」にしてしまう、ということに一因がある。そして、もう一つ、名前をつけることで、単純化して安心してしまいたくなる、ということがあるように思う。ほんの何文字かの関数であっても、その内容を自分の頭で考えるよりは、なにがしかの単純な言葉で表現された関数名を聞いて納得したくなることがあるように思う。
「吾輩は猫である」の第一章の最後、つまり、当初の読み切り短編小説「吾輩は猫である」はこのように結ばれる。
吾輩は御馳走も食わないから別段 肥りもしないが、まずまず健康でびっこにもならずにその日その日を暮している。鼠は決して取らない。おさんは未だに嫌いである。名前はまだつけてくれないが、欲をいっても際限がないから生涯この教師の家で無名の猫で終るつもりだ。「吾輩は猫である」を思い浮かべながら、無名関数について考えたせいか、それ以来、無名関数が「吾輩は~」と話しかけてくるような気がするようになった。無名関数を書くと、どこかで世界を眺めながら、「我が輩は青色と緑色を足した色である。名前はまだない」「名前はまだつけてくれないが、欲をいっても際限がないから生涯ここで無名で終るつもりだ」と無名関数が呟いているさまが目に浮かぶようになった。存在意義はあるけれど、無名のままの関数、そんなものを思い浮かべながら作ったのがSpectrum Color Conversion である。