2013-07-01(月) | -- (permalink)

シェーダーでは、よくこんなコードを見かける。

const mediump vec3 Perception = vec3(0.299, 0.587, 0.114);

void main(void)
{
    mediump vec3 color = texture2D(Sampler, TextureCoord).xyz;
    mediump float luminance = dot(Perception, color);
    gl_FragColor = (luminance > Threshold) ? vec4(color, 1) : vec4(0);
}

輝度がThresholdを上回れば、テクスチャの色を使い、そうでなければ黒にするということは分かる。それにしても、luminanceを取得するときにテクスチャの色と内積をとっているPerceptionとはなんだろうか。謎めいた値がハードコードされている。

どうも人間の光受容体の特性を考慮するための値らしい。

Photoreceptor cell

人間の目は青にはあまり反応せず、緑には強く反応する。そのままRGBを平均した値を輝度に使ってしまうと、青が明るすぎ ...


2013-06-17(月) | -- (permalink)

私はよほど気心の知れた人とでないと、芸術の話をしたくない。
ましてや、親しくもない人からそういう話を聞かされるのは耐え難い。

芸術の価値というのは受容者にとって全く異なってくる。ある人にとって価値のあるものが他の人にとっても価値があるとは限らない。だから「自分が良いと思っているものを他人も良いと思うだろう」と考えることは大変浅はかである。すぐに宗教や政治の話をする人が愚かであるのと同じ理由で、すぐに芸術の話をする人間は愚かなわけである。

私のことを芸術嫌いと考える人もいるかも知れないが、こんな私も大学では美学を専攻し、ほとんど毎日ピアノを演奏するような生活を送った。だが、こうした「批判」と「実践」の毎日は、結果として自己矛盾を産むばかりであった。

どうして、作者不在の中で作品の価値について述べることができるのだ。

ある作品が、ある作品より重要だと言うことができるのだろうか。

一度も演者、作り手になったことない大学教授が、「彼らが最も価値を認めていない作品」に対してさえ語る権利があるのだろうか。

こんなことを考えるうちに、「芸術の価値」に関して自ら語ることはほとんど辞めてしまった。できないと考えたのだ。根拠のあるものが全てだと考えて、職業にはプログラマを選んだ。芸術についてとやかく口をはさみたがる人から見ると、私は「芸術への関心が薄い人」という風に見えるかもしれない。

確かに、自分にとって価値のあるものが、他人にとっても価値あるものである「可能性は高い」。その可能性を考慮した上で行われる、芸術について語る活動というのは意味があるだろう。しかし、「物事そのものを宣伝する行為」というのは中々に難しい。どうしても「その物事を知っている自分を宣伝する行為 ...


2013-06-13(木) | -- (permalink)

現在動画編集アプリを作っている。
動画にエフェクトとかBGMとかなんやらの設定をしていくわけだが、

画面上部にプレビュー画面を持ち、その下に編集用のOutletがいくつか存在するような見た目のViewControllerがNavigationControllerでいくつか続いていくというような作りだ。

ここで奇妙な問題が発生した。
MPMoviePlayerControllerを使用して、動画を再生しようとしたところ

Error Domain=AVFoundationErrorDomain Code=-11839 "Cannot Decode"

こんなエラーがでた。デコードできない?動画の形式が悪いのだろうか?

だが、試しにそのViewControllerだけにして実行してみたところ問題なく再生できた。
ということは、特定のコンテキストにおいてのみデコードが失敗するわけだ。

先日の記事にもある通り、いざ実装を始めると全く予期しないところで躓くことが多々ある。

特にこういうロジックの問題でない箇所は原因の特定が難しく、心が折れそうになる。

とにかくググるしかないので、上記のログをそのまま検索バーに貼り付けた。
すると同じ様な現象で困っている人を発見することが出来た。

http://stackoverflow.com/questions/8608570/avplayeritem-fails-with-avstatusfailed-and-error-code-cannot-decode

There is a limit on the number of concurrent video players that AVFoundation will allow ...


2013-06-10(月) | -- (permalink)

何かに対して、バカだとかアホだとか言うと、「お前はどうなんだ」という議論に持ち込まれることがある。だからはじめに言っておくが、

私もバカ・アホの部類である。

だが、「バカ・アホでもいい」と思うほどはバカ・アホではないし、ましてや、「バカ・アホが世界を制する」みたいな仰天思想の持ち主のようなバカ・アホでもない。

筒井康隆の『アホの壁』の冒頭にこんな文がある。

むろんアホの壁を乗り越えて彼方へ行かぬ限りは成り立たない仕事もある。言うまでもなく芸術という仕事である。芸術的狂気というものは一旦良識から離れてアホの側に身を置かねばならない。それが単なるアホと異なるのは、壁の存在、壁の所在、壁の位置、壁の高さ、壁を乗り越える方法などを熟知していることだ。そのためには冷静な正気を保ちながら壁を認識しなければならない。これができていない芸術は、常識に囚われたつまらないものにならざるを得ないだろう。
\<筒井康隆(2010)『アホの壁』新潮社 p7>

あれほど無茶苦茶なスラップスティックを書ける作家の芸術感がこのようなものであるということは、とても印象的だ(『アホの壁』は、この常識さゆえに、筒井康隆特有の痛快さにはかけるので物足りないのだが)。

私は、個性というのはとても大事だと思っている。過去の財産にアクセスしやすい時代に過去の再生産を行なっても大した価値にはならないからだ。それに、今までに無かったものの見方・考え方や歴史観を生むような個性が、現代日本を覆う民族的な不安を乗り越えるためには必要不可欠だとも思う ...


2013-06-07(金) | -- (permalink)

プログラマとして働いていると、特に非プログラマの人から

「hogehogeをfugafugaするようなことって(プログラムで)できるんですか?」

という類の質問をされることが良くある。当然そういうことを聞かれたら

「できると思いますよ。」

と答えるしかない。まともな思考な人が考えるような要求、つまり「iPhoneの画面をダブルタップすると、口やかましい上司を遠隔地へと転送できる」とか「母親をカメラで撮影すると、実家への仕送りを強要しなくなる」とか、そういうのではない要求、というものはたいていの場合、理論上実現可能だからだ。

コンピュータサイエンスに明るいわけではないが、「チューリング完全」という言葉ぐらいなら知っている。コンピュータの世界における「やればできる」に相当する概念といったところか。

つまり、「できますか」という問に「やればできる」と答えていて、さらに、「やればできる」のことを「できる」という言葉で表してしまっているわけだ。

物質世界にくらべて、「やればできる」のが当たり前のソフトウェアの世界だからこそ、その当たり前の答えを使ってしまうと厄介なことが起きる。まず、

「Aさんがhogehogeをfugafugaできるらしいから、やってもらおう。」

という風に自分が頼まれてしまう。そして、自分自身も判断力が鈍っていると

「まぁ、やればできるはずだからやってみるか。」

と安易に引き受けてしまうわけである。プログラムの世界以外なら ...


2013-06-02(日) | -- (permalink)

Objective-Cで文字列定数の宣言をする方法について考えてみた。
最も手っ取り早いのは当然マクロだろう。

#define CONST_STR @"Const Str"

だが、当然二重定義の問題があるので好ましいとは言えない。
より好ましいのは以下の方法だろう。

static NSString * const kConstStr = @"Const Str";

constの位置に注意。
文字列に対するポインタにconstを指定している。

(ちなみにObective-Cではメンバ変数のプレフィックは「_」が完全に推奨されている一方で、定数にこうしたハンガリアン記法を使うかどうか迷いどころだが、たいがいのフレームワークでは定数はこの形で書かれているし、実際しっくりくる。)

さてこの定数を外部に公開したいとする。
ここでこんな風にやってしまうと間違いだ。

static NSString * const kConstStr = @"Const Str";

http://stackoverflow.com/a/7642561
ここにstaticに関する分かりやすい説明がある。

static in Objective-C means a different thing than static in a C++ class ...


2013-05-21(火) | -- (permalink)

特別飾らず、 特別奇抜でもなく、 それでも見ているだけで、格好いい、と思えるアーティストがいる。

たとえば、Caetano Velosoや、

Peter Gabrielや

David Bowieなんかがそうだ。

視覚的にも、聴覚的にも無駄が少なく、 どのようにすれば、「どう見えるか」「どう聴こえるか」分かっている。 そんなベテランミュージシャンだからこそ、なせる技であろう。

だが、シンプルにすれば格好良く見えるだろうか。 当たり前だが、そうではない。 素人のシンプルさなど、つまらないものでしかないし、 無数の「俺でもできる」の一言で片付けられてしまう。

たとえば、音楽などは、いい加減な曲でも、ボーカルを重ねたり、

ストリングスを入れたり、コーラスをかけたりすると、なんとなくよく聞こえる。 自分で音楽を作ってみたことがある人は実感があるだろう。 こんな風に、簡素な駄作よりは、手の込んだ駄作のほうがまだマシだ。

つまり、「探しても見つからない」と「探せばなにかあるかもしれない」の違いである。

では、「探しものがそこにある」状態を生み出すにはなにをすればよいか。 ゴミの山に浸かるしかない。

そこで色々なムダに出会い ...


2013-05-17(金) | -- (permalink)

文章表現に関する、興味深い記事を発見した。

「自分の書く文章は価値がない」を抜け出すライティング・マラソンという方法←自己検閲を振り切って書きなぐるために

書くことは、ほとんど必ず落胆を伴う(仕様だと思っていいくらいだ)。

文章を書く上でかならず障壁となるであろう「自己検閲の壁」をいかにして乗り越えるか、という内容である。まさに今ブログを書いている私にとって、こうした

「書くことによって、書くようになる論」

というのは、当然実感がある。

そもそも、あらゆる作業で、行動が動機を先んじることは珍しくない。

こうした「作業興奮」をものにできるかどうかで、何かを成し遂げれるかどうかが決まる、といっても過言ではないだろう。

ところで、この記事で何よりも興味深いのが〈「作文のつまずき」の現れ方〉という図だ。

作文のつまずき

(出典:『国語科授業の常識を疑う〈3〉作文 (市毛勝雄模擬授業の記録と分析)』p.60)

この図から導き出される結論の中で、最も妥当であるものは、ここで紹介している記事のような、

「自分の文章が無価値に感じる、というつまずきを克服することで、平明達意の文章を書こう。」

というものであろう。だが、同時に私は、この図から別の重大な点を読み取った。それは ...


2013-04-24(水) | -- (permalink)

試しに「ブログ始めました」をGoogleで検索してみたところ、
約 220,000,000 件の検索結果がヒットした。

無数のブログには、無数の「ブログを書く理由」があるだろうが、
私の場合、その理由は「自分自身のプロフィールを作成すること」にある。

このブログを見て、私がどんな人か、どんな思想を持っているか知ってほしい。
言ってしまえば「自己顕示欲」にほかならない。

ところで、最近の成功哲学では、以下のようなものがもてはやされている。

私はこれらの考えに異議をとなえたい。

考えずに行動して成功したとしても、必ず、その「考えなしの部分」の尻拭いをした人がいる。

熟慮せずに行動し、したり顔をしても、どこかでその配慮の無さに傷ついている人がいる。

自由権が保証されている現代では、批判を受けると事あるごとに

「言論の自由だ」

とか

「表現の自由だ」

と反論する人がいるが、これらの権利は比較的新しいものであって、

それほど当たり前だと考えていいものではないし、これらの権利があるからと言って
自分の行動がもたらす結果を考慮しないのは、あまりに無責任だ。

行動力が悪だといいたいわけではない。
行動力はエンジンであって ...


« Page 4 / 4