Island Life

2011/12/17

範囲の指定

Schemeでは「ここからここまで」という範囲を指定するのに、 始点(始点自身は含まれる)と終点(終点自身は含まれない)のhalf-open intervalを 使うことが多い。SRFI:13(string library)やSRFI:43(vector library) などの代表的なSRFIがそうだし、Gaucheもそれに合わせてる。これを [始点,終点) と書くことにしよう。

この他に代表的な流儀としては、始点と終点をともに含まれるとするclosed interval、 それから始点と長さがある。それぞれ [始点,終点], {始点,長さ} としよう。

SchemeではSRFI:1のiotaが例外的に{始点,長さ}を取る。但し引数順としては長さの方が先で、始点は省略可能、省略時0という形。3番目の引数としてステップを取ることもできる。

Pythonのarray slicingは[始点,終点)、オプショナルでステップ(ストライド)。

Common Lispのloopマクロは、[始点,終点][始点,終点)のどちらも使える。前者はfrom〜toとかfrom〜downto、後者はfrom〜belowとfrom〜above。

Rubyはどれも使える。配列でx[a,b]とやれば{始点,長さ}, さらにrangeオペレータが2種類あって[始点,終点][始点,終点)に対応。

この3方式は容易に相互変換可能なので、どれを採用するかは好みの問題、一貫性があればいいや、と今までは思っていた。

ところが、とあるAPIを考えていて、2つのパラメータで範囲指定させ、かつ昇順と降順の区別も出来たらいいな、と考えてたら、この3方式に表現力の違いがあることに気づいた。正確には、インデックスのround trip (-1, -2 など負のインデックスで、終端からの距離を数える場合。例えばpythonでa[0:-1]とやれば最後の要素を除いた配列が得られる、など) を使おうとした場合、だけれど。

  • {始点,長さ} は「長さが負の場合に降順とする」というルールを入れればすぐ対応できる。インデックスのround tripも特に問題ない。但し、「最後から3番目の要素を起点に最初の要素までを降順で」のように取りたい時に、範囲の長さを陽に与える必要がある (昇順なら、「長さ省略時が最後の要素まで」としておけるのに)。対称でないのはちょっと気持ちわるい。
  • [始点,終点] では 始点>終点 の時に降順とすることをすぐに思いつくが、round tripがあると単純な大小比較ができない。始点と終点をそれぞれmodulo(範囲の大きさ)した後で大小比較すれば何とかなる。若干、直感的でない場合は出てくる。
  • [始点,終点) が困りもの。ある値から逆順に先頭までを入れたい時には、「ゼロより一つ前」を終点として指定する必要がある。これを-1にしてしまうと、「終端からひとつ手前」を指定するのと区別がつかない。言い換えれば、この方式では「一番最後の要素+1」と「一番最初の要素-1」を別々に表現する必要があって、その分表記にバリエーションが必要になるということだ。end省略時に「最後の要素+1を指す」とする場合は多いが、「省略された」というのは1種類の情報でしかないので、降順を表現するのに別の情報が必要になる。

Luaみたいにインデックスを1からスタートすることにすれば0を「最初の要素のひとつ前」とすることが出来る。この点では1-ベースのインデクシングに利点があるとも言えるなあ。

Tag: Programming

2011/12/15

ピアノレッスン27回目

  • 基礎: スケールとアルペジオ、依然としてM=144。苦手だった調もわずかづつスムーズになってきているような気がする。
  • 今回からドビュッシーのベルガマスク組曲を始めた。昔チャレンジしたんだけど、ドビュッシーって音符を追うだけじゃ全く曲にならなくて、どうしたらいいのかわからなくて断念してたのだ。なので再挑戦。まずはプレリュード。ちゃんと見てくとなかなか難しい。
  • あとカプースチンのOp40-2も弾いた。カプースチンについてはちょっと思いついて新しい練習法を試してるんだけど、まだその方法ではゆっくりとしか弾けないので、普通に弾くと前の癖が出てきてところどころ崩壊。でも多分新しい練習の効果は出てきてる。

Tag: Piano

2011/12/15

Meisner intensive 3回目の6

先週渡されたスクリプトを使って、シーン。

台詞はマイズナー流 (一切の感情を載せずに覚える) で入れておいて、 これまでにやったRepetition, Independent activity, Emotional preparationを実際のシーンで応用する、という仕上げの回。

先週、independent activityが初めてうまくいったので、これで真髄をつかんだかも、なんて思っていたのだけれど、いざシーンになってみると難しい。相手をよく聴いて、反応する、ただそれだけなんだけど、そのただそれだけが難しい。シーンの間はちゃんとやってるつもりでも、振り返ると自分のことしか気にしていない。

でも、「どういう状態が『うまく行ってる』状態なのか、その時になぜそれがうまく行っているのか」って点に関してはかなり理解が進んだと思う。練習の機会を多く取って、その状態を目指せば、徐々にできるようになるんじゃないかな。どうやって練習の機会を多く取るか、考えないとならない。

★ ★ ★

今回のマイズナークラスにはティーンの男の子が一人参加してた。中学生くらいかな? 反応が素直で、色々フィルタかけちゃう大人より上手い。あれを見習わないとならない。

時々、芝居にどっぷりだった学生の頃に、もっと体系的に演技の訓練を受けていたらどうだったかなと思うこともある。でもこの歳だからこういう理解ができる、っていうのは確かにあって、きっと10代や20そこそこでは同じようには理解できなかったろうな、とも思う。まあその時は別の理解に至ってたかもしれない。それはわからない。わからなくてもたまたま勢いで出来てしまうこともあって、特にあの頃は変に頭で理解するよりも勢いの方が大切かもしれないし。

Tag: 芝居

2011/12/12

Content ID Match

YouTubeに上げた演奏動画のいくつかが "Matched Third Party Content" とマークされてる (Cf. テンペスト )。他人が著作権を持つコンテンツとマッチしてるよってことだ。多分音声などから特徴量を抽出してマッチをかけてるんだろう。

特に不都合はないのだけれど(統計情報が第三者に見えないとかマネタイズできないとかその程度)、気になるので試しにdisputeしてみた。

テンペストの動画で当初表示されてたマッチング:

Entity: Music Publishing Rights Collecting Society Content   Type: Musical Composition
Entity: Music Publishing Rights Collecting Society Content   Type: Musical Composition
Entity: Music Publishing Rights Collecting Society Content   Type: Musical Composition

3つ出ているのは楽章毎にシグネチャを登録してるからかな。 ショパンのエチュード Op25 No1-5では同じEntityから4つマッチしていて、 同じくショパンの エチュード Op25 No10-12では2つマッチしてる。それぞれ5曲中4曲、3曲中2曲がマッチしたのだと思われる。

Disputeのプロセスは、特に長々と理由を説明する必要はなく、"my content is misidentified" みたいな項目にチェックして署名がわりに名前と誓約をタイプするだけ。とりあえずテンペストについてやってみた。

すると翌日には "Music Publishing Rights Collecting Society" からのマッチングは消えたんだけど、

Your dispute is still awaiting a response from these content owners:

    Entity: SME Content    Type: Sound Recording

As a result, your video is blocked in these locations:

    Germany

という表示に変わって、ドイツでブロックされてしまった。

動画を見ると、

    Artist: Murray Perahia

    Buy: Buy "Sonata No. 17 for Piano in D Minor, Op. 31, No. 2 ("Tempest"): II. Adagio" on: AmazonMP3, iTunes

なんていうリンクが再生回数の下に出てくるので、SMEが登録してるこのピアニストのサウンドトラックにマッチしたということだろう。第2楽章だけだが、マレイ・ペライアの演奏に似ていると判断されたというのは喜ぶべきことなのかもしれない。でもドイツにいる友人に見てもらえないのはちょいと困る。

とはいえこの段階ではこちらからアクションを取れないようなので、SMEの担当者がチェックして「なんだ素人の演奏動画じゃん」とフラグを下ろしてくれるのを待つしかない。

で、さっき管理画面を見てみたら "Matched Third Party Content" が外れていた。ブロックされてから実質3日くらいかな。SME側でどのくらいこういう対応が発生するのか知らないが、人間が介在するとしたらわりと速い対応かなと思う。

まったくの推測だけど、最初の "Music Publishing Rights Collecting Society Content" ってのはかなりユルいマッチングでとりあえず予防的にフラグたてといて、disputeがあったら機械的にそれを降ろすかわりにより厳密なマッチングをかけるのかな。 最初のマッチが "Type: Musical Composition" になってるから、音ではなく単に曲名やタグでマッチかけたのかなとも思ったが、ショパンやベートーベンの著作権はとっくに切れてるからマッチかけるまでもないしなあ。

Tag: Piano

2011/12/11

利己/利他

行動の源2』のコメントで「利他的行動についてはどうなるの?」という話題が出たのだけれど、 「好奇心」や「表現欲」にドライブされる行動が利己的であるとは限らない。 結果として利己的になるものも利他的になるものもあるだろうけれど、 いずれにせよそういうのは外野が評するものであって、 行動してる本人にとってはあまり関係ないんじゃないかと思う。

強烈な好奇心や表現欲のもとでは、そもそも自己というものが小さくなってゆくんじゃないか。「自分が」表現したい、というより、「これから作られる作品」が自分を使ってその作品を作らせる。God's instrumentという表現があるが、いわば自分がミューズのinstrumentになるというか。

Paul Grahamの『Taste for Makers』にこんな文がある。

模倣に対する態度はしばしば一巡する。初心者は知らず知らずのうちに模倣する。そのうち、彼は意識的に独自性を出そうとする。最後に、独自性よりも正しくあることがより重要だと気づく。

二番目の段階では「自分/他者」にとらわれているが、第三段階まで行くともう自分とか他人とかあまり関係なくなる。「守破離」の「離」も似たような話だと思う。

以前似たようなことを書いた(エゴと創造)が、自分がどうの、他人がどうの、ってことにとらわれるのはノイズになって、行動の足を引っ張ることになる。利己心や利他心はきっかけにはなり得るけど、それによって「あるべき世界/表現すべき対象」が定まってからは、それを実現したいという欲求がドライビングフォースになる。んじゃないかな?

利己的な動機でスタートしても出来たものが多くの人を豊かにした、っていうことはあるし、利他的な動機でスタートしたのにみんな不幸になってしまった、っていうこともある。「利己/利他」を最終目的として何かを始めたり、 他人の行動を評価する時に「利己/利他」の軸を持ち込むのは、ちょっと危うい。

関連エントリ:

Tag: ものつくり

More entries ...