[上原ひろみ]Move Japan Tour 2012 東京公演。

Move Japan Tour 2012 東京公演 12/8,9 @東京国際フォーラム参戦してきました。

やっぱりひろみちゃんはすごいなって思わせてくれるライブでした。

もう何回もライブを見に行っていますが、毎回感動してしまうのは、やっぱりすごいなと思います。
正直言うと、ライブ中他の事を考えてしまったり、心地良さから眠くなったりすることもあります。でも、そんなことを忘れるくらい集中して聞き入る場面が突然やってきます。もうそこからは、あー終わらなければいいのになぁと思って聞いていました。
東京公演は大阪2日やって連続4日。メンバーのあれだけのエネルギーはどこから来るのでしょう。ひろみちゃんはライブ中こめかみの辺りが痛くなるってインタビューで言っていました。そんなちょっと辛そうな表情が見て取れたのですが、HPが僅かの時に発動する敵に一撃を与えるクリティカルスキルのようなものを放っていました。

Suite Escapismは楽しみにし過ぎて自分の心臓の音が聞こえてくるぐらいドキがムネムネしました。ちょっとサイモンのソロパートが少ない気がしました。ダンサンド・ノ・パライーゾのドラムパートは盛り上がりますしね。

1日目のソロ曲はHazeでした。少ししんみりしてしまう曲ですが、とても綺麗な曲です。2日目はPlaceToBe。なんとなく最後だから予想はつきました。お客さんも一切掛け声を掛けない、無音もまた音だなぁって感じさせる曲。

2日目のアンコールの最後にはひろみちゃんが尊敬する調律師の小沼さんが登場。車椅子に乗っているのはちょっと心配ですね。

最後の曲は11.49PM。11.49PMの最後のチャイムは「あ~終わっちゃうんだなぁ」って感じさせます。壮大なストーリーが終わった感じ。今回のツアーは改めてすごいなぁって思いました。正直言えばお客さんの拍手でリズムをとったりとか、「楽しい要素」がもっとあっても良かったと思います。今回、変拍子多すぎるので、難しいかもしれないけど。。。

次はいつでしょうか。次は夏かなぁ。長いなー。

余韻の楽しみ方。

今回のツアーはなかなか興味深いセットリストでした。僕はセットリストをネットから探してきて、セットリストと同じ曲のMP3ファイルを結合して1つのファイルにして、ライブを思い出しながらニヤニヤしています。

MP3の結合

1.DOSプロントを実行します。
2.MP3ファイルがあるディレクトリに移動します。

cd /d D:\Mp3

3.copyコマンドで結合します。

copy /b 01.mp3+02.mp3+03.mp3 newaudio.mp3

[C#]どのイベントが発生しているかを見てみる。

コントロールのイベントがどの様に発生しているか(発生順番)を調べたいなーって思って、いろいろ試したけど、うまくいかない。

単純にイベントに対して処理の追加は次のようにかける。

button1.Click += (s,e) => MessageBox.Show("Click");

このイベントへの処理の追加を自動でできないものか考えてみた。結果としてはうまくいかず。。。

以下試した方法。

リフレクションの機能を使う

クラスの型情報(Type)に対してGetEvents()ですべてのイベントを取得し、そのハンドラに対して処理を追加することができる。

            var t = target.GetType();

            var evs = t.GetEvents();

            foreach (var ev in evs)
            {
                Trace.WriteLine("ev=" + ev.Name);

                var evnt = t.GetEvent(ev.Name);

                Action<object, EventArgs> addHandlerDelegaete = (s, e) =>
                    {
                        Trace.WriteLine(s.ToString() + "," + e.ToString());
                    };

                Delegate d = Delegate.CreateDelegate(evnt.EventHandlerType, addHandlerDelegaete.GetMethodInfo());

                evnt.AddEventHandler(target, d);
            }

やりたいことは、発生したイベントの名前を表示すること。上記の処理をフォームに貼りつけたButtonコントロールに施し実行すると以下のようなログが出てくる。

System.Windows.Forms.Button, Text: button1,System.Windows.Forms.UICuesEventArgs
System.Windows.Forms.Button, Text: button1,System.Windows.Forms.InvalidateEventArgs
System.Windows.Forms.Button, Text: button1,System.EventArgs
System.Windows.Forms.Button, Text: button1,System.EventArgs
System.Windows.Forms.Button, Text: button1,System.EventArgs
System.Windows.Forms.Button, Text: button1,System.EventArgs
System.Windows.Forms.Button, Text: button1,System.Windows.Forms.InvalidateEventArgs
System.Windows.Forms.Button, Text: button1,System.EventArgs
System.Windows.Forms.Button, Text: button1,System.Windows.Forms.InvalidateEventArgs
System.Windows.Forms.Button, Text: button1,System.Windows.Forms.PaintEventArgs
System.Windows.Forms.Button, Text: button1,System.EventArgs
System.Windows.Forms.Button, Text: button1,System.Windows.Forms.InvalidateEventArgs
System.Windows.Forms.Button, Text: button1,System.Windows.Forms.PaintEventArgs

単純に画面に表示された時点だけでかなりのイベントが発生。だけど、肝心なイベント名が出ません。本当はaddHandlerDelegaeteを次のようにしたかった。

            foreach (var ev in evs)
            {
                Trace.WriteLine("ev=" + ev.Name);

                var evnt = t.GetEvent(ev.Name);

                Action<object, EventArgs> addHandlerDelegaete = (s, e) =>
                    {
                        Trace.WriteLine("eventName:" + ev.Name);
                    };

                Delegate d = Delegate.CreateDelegate(evnt.EventHandlerType, addHandlerDelegaete.GetMethodInfo());

                evnt.AddEventHandler(target, d);
            }

結果、実行時、Delegate.CreateDelegate()で例外発生。スコープ外の変数を参照したのだけれど、どうもこの方法がダメらしい。要はスコープ外の変数の参照は不可。次の例外が発生。

追加情報: ターゲット メソッドとデリゲート型との間に、シグネチャまたはセキュリティ透過性の互換性がないため、ターゲット メソッドにバインドできません。

ちーん