koboriakira.com

来月6月10日、w-inds.のニューシングル「In Love With The Music」が発売されます。 友人がカラオケで歌っていた「LOVE IS THE GREATEST THING」で気になって、「HYBRID DREAM」あたりからドハマりした自分ですが、まさかこんなに熱心に追うことになるとは思ってもみませんでした。

そして、そんな感情を今まで以上に高ぶらせてくれるのが、今作「In Love With The Music」です。

「In Love With The Music」の感想

2種類の「音楽的な進化」

とにもかくにも、まず一聴していただければ「デビュー15年目に突入し、ますます音楽的な進化を見せつけるw-inds.」というオフィシャルのコメントが誤りでないことは自明かと思います。「2015年の音楽・ベスト10」に入るのは確実でしょう。

そして個人的には、彼らのいう「音楽的な進化」というのが2種類あるように思えました。

『Timeless』からの進化

ひとつは、前作『Timeless』からの進化です。とくに「Make You Mine」や「Good Time」あたりの、いわゆる「レトロモダン」路線を引き継いでいます。これ、w-inds.ファンの人で私みたいな性格なら絶対に押さえておきたいところですが、

世界のトレンドを取り入れながらも、いつまでも色褪せないという思いをタイトルに込めた”Timeless”(Timeless=時代を超越した、永遠)。そして
エレクトロダンスミュージックへの傾倒から2年を経て たどり着いた大人の心地良さの溢れるレトロモダンなアルバムが完成しました。
w-inds.tv|w-inds. 10th ALBUM「Timeless」収録曲&ジャケ写公開!
|INFORMATION

というコメントがオフィシャルで出ています。「『Another World』や『MOVE LIKE THIS』とはまた一味違いまっせ」ってことですね。その結果、ハウスやエレクトロのような楽曲からヒップホップ・R&B;への揺り戻しが起こり、「Make You Mine」はライムスター宇多丸というベテランラッパーが2014年のナンバーワン楽曲に上げることにもなりました。 宇多丸が選ぶ 2014年J-POP NO.1楽曲 w-inds.『Make you mine』

ここらへんの驚き・感動は、拙ブログ(?)をいくつか拾い読みしていただければ、少しご理解いただけるかもしれません。意外とたくさん書いています。「僕なんてまだファンじゃないよ〜」とか猫被ってましたが、もうファンかもしれない。

w-inds. | コボリアキラの要約と反復

※ニクいのは、上記のような言い方は「エレクトロ期」の価値を下げてしまうことになりかねないのですが、「In Love With The Music」はエレクトロ期を歌詞で回収しているところです。誰かがツイッターで指摘していましたが(ご存知の方、教えていただけると嬉しいです)、ブリッジでは「Put Your Hands Up」、「FLY HIGH」、「New World」が引用されています。 (下の方です) > きっとバキバキに踊るであろう間奏の前の歌詞にput your hands upとかFLY HIGHとか新たな世界へとか入ってるのニクいー(´д`)

In Love With The Music_w-inds. http://t.co/NMHUjZBwq9

— 桂(けい) (@25kei25) 2015, 5月
16

「過去のw-inds.」からの進化

もうひとつは、エレクトロに傾向するより前の、過去のw-inds.からの進化です。「進化」というより 「アップデート」 と言ったほうが適切でしょうか。

たとえば「In Love With The Music」は、製作者の意図ではないと思いますがコボリが聴くかぎり、「Midnight Venus」や「song 4 U」の流れを汲んでいるように感じました。 これはコボリの勝手な見立てですが、

「レトロモダン」の萌芽はこの頃から、というよりデビュー時の「Forever Memories」から既にありました。 ですので、現在のw-inds.はこの15年の歴史をしっかりと踏まえた上で2015年という時代に合わせることができている、ものすごいユニットだと思っています。 以前日記に「今こそ過去曲のアップデートを 」と書いたことがありますが、そういう意味でTimelessツアーは本当に素晴らしかったですし(「Whose is that girl?」とかカッコ良すぎた)、「In Love With The Music」も新曲ながら物語を感じさせます。 ちなみにこのアップデートは、

Vo.の橘慶太の成長が無くして成立はしません。 ココらへんは素人なので勘弁ですが、緩急をつけた歌い方やリズムの取り方など、ボーカルの技術が格段に上がったことで、今回のような曲が出せていることは言うまでもありません。

※ダンスは本当にサッパリなのでアレですが、おそらくダンス・コーラスの緒方龍一、千葉涼平の2名も相当レベルアップしているんだと思います。今作だと、千葉涼平のラップパートの「音を上げて限界まで」の、すごいタメた最初の「お」が素晴らしいです。このテンポでこれだけタメをつくるのって結構難しいです。ぜひ試しに歌ってみてください。涼平くんより先に「お」って言ってしまうと思います。「お」のガマン比べですね(笑)。

期待されるカップリング曲と、ニューアルバム『Blue Blood』

という感じで、まだ発売前ですがザッと書いてみました。もう少し詳しく書きたいところもあるのですが、まだクリアな音源を聴けていないので、カップリング曲とともに楽しみに待つことにします(あと、「FANATSY」と同様、今回もリミックスやります!)

そして、7月はニューアルバム『Blue Blood』も発売になるということでして、こちらの内容も非常に気になります。「過去曲の再録」という_オッズ10万倍_ ぐらいの勝負に万札を放り投げつつ(笑)、レトロモダンをどこまで拡大していくかを期待したいと思います。

ちなみに、本当にちなみにですが、

「in love with 〜」という言葉遣いは、恋人との恋愛関係において使われるようです。今回みたいに比喩的な使い方は正しいんですかね(笑)。 I love youと I am in love with youのニュアンスの違い。 - 英語 |教えて!goo


※「つまらなくなるから、ネタバレは辞めてね」と最初に注意されたので、以下はネタバレを許容する人に向けて、ってことで一つよろしくお願いします。 > ―それにしても、監督たちの、下調べをしてこないっぷりが清々しいですよね。でも、その出たとこ勝負が映画全体の躍動感に繋がっていますね。

松尾:最後まで「ビズはさぁ~」って名前間違えてますから。でもよく知っている人が撮ったら「BiSはやっぱりすごい」で終わってしまったはずなんです。下調べなし、リスペクトのリの字も持たない人たちを彼女たちにブツけることに意義がありました。
[…]
松尾:渡辺君に限らず、『キャノンボール』シリーズって女性を相手にしているはずなのに、最終的には男の話になっちゃうんです。僕らはAV監督ですから男なんて撮りたくないんですが、このシリーズだけはどうしても男の話になってくる。今回も、BiSのドキュメンタリーなのに、BiSのことをほとんど紹介してませんからね。
AV監督VSアイドルの騙し合い 映画『BiSキャノンボール』の企み - 映画インタビュー :
CINRA.NET

というインタビュー記事を読み、「AVもBiSも、何もわからなくても観れるかな」と思って(BiSって、tengal6と一緒にラップしてなかったっけ?ぐらいの認識だったので、現状を知ってとても驚きました)、新宿テアトルで観てきました。

まあ、観たのは今日じゃなくてバレンタインなんですが、レビューを書いていたことを思い出しました。

映画の概要

本作は、昨年2014年に解散したBiSというアイドルグループの解散ライブ直前からその直後までを追ったドキュメンタリです。

ただひとつ特徴的なことは、メンバー6人を撮る 6人のカメラマンが全員「ハメ撮りを得意とするAV監督」である こと。映画のキャッチコピーの「アイドル vs AV監督」の文字通り、AV監督はアイドルをハメ撮りすることを目指して、密着取材を進めます。

という、概要だけでも賛否両論が出そうな内容ですが、実際の感想も様々。新宿テアトルのレイトショーの1週目興行収入の歴代1位を記録したように影響力が伺えます。

賛否両論【劇場版BiSキャノンボール】感想まとめ - Togetterまとめ

音楽のない映画、読み込めない<物語>

以降は、BiSのことも、この映画の前作にあたる『テレクラキャノンボール』のことも知らない、事前知識の無い人間から見た感想です。

まず、ものすごい単純に「解散ライブぐらい、最高の状態でやらせてあげなよ(苦笑)」という気持ち悪さ(怒り…かも)はエンディング後にもずっと残りました(今思い出しても同じ感覚です)。

映画に流れるBiSの音楽もあまり好きじゃなかったんですが、劇中で流れる曲のヒドさもあいまって、「 もしかして、音楽はどうでもいいのかな 」と。

※ちなみに、ここに並列することも失礼かとは思いますが、道重さゆみの卒業ライブがこの怒りを誘発したことは否めません。フクムラダッシュと同じぐらいのパフォーマンスを!

とは言わないけれど、いいパフォーマンスをしたい/見たいのは皆同じだと祈りたいところです。

もうひとつ、とくに感じたのは、この映画が<物語>を読み込むことを強く拒絶していたことです。つまり、この映画にカタルシスは訪れない。映画の中にいるのは、「一人のアイドルと、彼女を騙して良い画を撮ろうとする監督」であり、観客はそれをただ受け入れるだけでした。

多分「これは失敗についてのドキュメンタリーだ」とか言われてると思うんですが(監督が言ってました・笑)、まあそれもあまりポジティブには捉えられないですよね(笑)。

ヴェールに包まれた映画

というわけで、端的に「 つまらなかった 」ってことで終わってしまうんですが(苦笑)、それでもいくつか印象的なシーンが2つありました。

そのひとつは、「テンテンコ×ビーバップみのる」で、訳の分からない説得と相談を繰り返し、最終的にビーバップみのるは『プレイボーイ』に掲載されている彼女の写真の上に(自慰行為によって)顔射をするシーン。

そしてもうひとつは、「コショージメグミ×梁井一」で、ハメ撮りに失敗した悔しさから、撮影終了後に彼女の写真をサイドシートに貼り付けてドライブし、途中でナンパした素人女性にその写真をつけてハメ撮りをしたシーンです。こちらも最後は顔射でした。

この2つのシーンは、私には『ヴェールとファロス』を想起させるに十分すぎるものでした。 [amazonjs asin=“4434071858”locale=“JP” title=“ヴェール/ファロス―真理への欲望をめぐる物語”] 上の本は、コボリが大変お世話になった教授の著書です。

本書のポイントを簡潔にまとめると(すみません!!)、「真理があると想像=勘違いしているから、ヴェールを剥がし続ける=真理への探求を続けることになる。しかし、ヴェールを剥がしても中には何もない(orまた次のヴェールがある)ことに気づく」ことを説明しています。

もっと卑近に例えれば、「スカートをめくる前の興奮はものすごいが、実際にめくってパンティを観たときの興奮は大したことない。

われわれはスカートの外からしかパンティを見ることができないのだ 」という感じです(すみません!!!!!!!!!!)。

AV監督は、真理を追求する側として、アイドル(=偶像)にかかったヴェールを剥がそうとしました。しかし、剥がしたと思ったヴェールの中には、またヴェールがかかっていますし、そもそも中身など存在しません。

「わたしの精液は顔=《ファロス》には届かず、誌面や仮面=《ヴェール》に当たるしかない。」

誌面上/仮面上への射精は、このことをわかりやすく伝える映像だな、と感じました。


と、結論部を書けないまま忘れ去られていたテキストですが、とりあえず。


あらすじ

前回同様、下のサイトでゲーム作り。インベーダーゲームが完成した。 Javaでゲーム作りますが何か? -人工知能に関する断創録

引数にthisを使うことについて

今回のプログラミング作業の中で、ひとつ明確になったことがあった。それが「this」の使い方だ。

インスタンスを作成するとき、因数にthisを使うときがあった。たとえば、

Sample.java

class Sample {int x = 1;int y = 2;public static void main(String arg[]) {Hoge hoge = new Hoge( this );}}みたいなものだ。 このときのthisは、クラスSampleを指していて、より正確には「Sampleをインスタンス化したもの」らしい。

とりあえず、thisを因数として使うことで、“x”や”y”をインスタンスhogeでも使うことができる、と考えておけば良いように感じた。

コンストラクタのthisと勘違い(?)しないように

thisを使うので、まず思い出すのが、コンストラクタ内にあるthisだ。さきほどの例を引き継いだとすると、

Hoge.java

class Hoge {Sample sample;public Hoge(Sample sample) {super();this.sample = sample;}}というコードが書かれるはずだ。

ここで使われているthisは、さっきのthis(クラスSample)を表しているのではなく、クラスHogeを指している。つまり、上で定義した変数sampleに引数を代入している、ということだ。わかりやすいように色をつけて表そう。

Javaのとっつきにくい点として、上のような文章だと「Sampleとかsampleばかりで、何を言ってるのかサッパリ」みたいなところがある。でも、オブジェクトについて理解してくると、なるほど理にかなった言語なのかもしれない。

ただ、こういった記述をすることによる利点はまだよくわからない。普通に「Sample.x」とかでも良さそうなものだが…。もう少しコードを書くなかで理解できるのかな。


あらすじ

少しJavaのことが分かってきたので、下のサイトを参考にゲーム作りにも取り組んでみた。 Javaでゲーム作りますが何か? -人工知能に関する断創録

このサイトはかなりわかりやすく、とくにインスタンス化については一応の理解はできたような気がする。ブロック崩しは作れるようになった。

またその中で、一つ目の目標であった「キーパンチによって音が鳴る仕組み」をやっと作ることができた。いわゆる 簡易MPC だ。

最終的には、シーケンスみたいなのを組むことで、「Madeon’s Adventure Machine」みたいななアプリも作れるかもしれない。自作曲の宣伝にもなるし。

サンプルコード

SoundTest.java

import java.awt.Container;import javax.swing.JFrame;public class SoundTest extends JFrame {public SoundTest() {setTitle(“簡易MPC”);MainPanel panel = new MainPanel();Container contatePane = getContentPane();contatePane.add(panel);pack();}public static void main(String[] args) {SoundTest frame = new SoundTest();frame.setDefaultCloseOperation(EXIT_ON_CLOSE);frame.setVisible(true);}}#### MainPanel.java

import java.applet.Applet;import java.applet.AudioClip;import java.awt.Dimension;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import javax.swing.JPanel;public class MainPanel extends JPanel implements KeyListener {private static final int WIDTH = 240;private static final int HEIGHT = 240;//インスタンスの発生Sound kick = new Sound(“kick.wav”, true);Sound snare = new Sound(“snare.wav”, true);Sound hihat = new Sound(“hihat.wav”, true);public MainPanel() {setPreferredSize(new Dimension(WIDTH, HEIGHT));setSize(WIDTH, HEIGHT);this.setFocusable(true);addKeyListener(this);}@Override public void keyPressed(KeyEvent e) {int key = e.getKeyCode();switch (key) {case KeyEvent.VK_S:kick.play();break;case KeyEvent.VK_D:snare.play();break;case KeyEvent.VK_L:hihat.play();break;default:break;}}@Override public void keyTyped(KeyEvent e) {}@Override public void keyReleased(KeyEvent e) {int key = e.getKeyCode();switch (key) {case KeyEvent.VK_S:kick.stop();break;case KeyEvent.VK_D:snare.stop();break;case KeyEvent.VK_L:hihat.stop();break;default:break;}}}#### Sound.java

import java.applet.Applet;import java.applet.AudioClip;public class Sound {private String filename;private boolean attempt;private AudioClip audioClip;public Sound (String filename, boolean attempt) {this.filename = filename;this.attempt = attempt;audioClip = Applet.newAudioClip(getClass().getResource(filename));}public void play() {if (attempt) {audioClip.play();attempt = false;}}public void stop() {audioClip.stop();attempt = true;}}## 工夫したこと

「キーを押している間は音が鳴り、キーを話すと止まる」ようにすること。そして、「キーを押して音が鳴るのは1度(押していると、連続的にタイプしてると判断される?)」となるようにするのに苦労した。

自分の解答は、booleanをつくって処理するようにした。Soundクラスのplayメソッドとstopメソッドがそれ。


はじめに

ボタンを押したら、テキストが変わるプログラム。こちらからの操作に対して反応してくれる初めてのサンプル。

これを応用すれば、ボタンを押すと音が鳴ったりするプログラムが作れるわけか。ちょっと楽しくなってきた。

サンプルコード

import javax.swing.;import java.awt.;import java.awt.event.*;public class Sample extends JApplet {private JButton bt;private JLabel lb;public void init() {bt = new JButton(“購入”);lb = new JLabel(“いらっしゃいませ”);add(bt, BorderLayout.NORTH);add(lb, BorderLayout.SOUTH);bt.addActionListener(new SampleActionListener());}class SampleActionListener implements ActionListener {public void actionPerformed(ActionEvent e) {lb.setText(“ご購入ありがとうございます。”);}}}

分かったこと

  • イベント、ソース(イベントソース)、リスナ

[…]ユーザーの操作を、イベント(event)という概念で扱うことになっています。[…]
イベントの発生元となるコンポーネントは、イベントソース(event source)、またはソース(source)と呼ばれています。[…]
発生したイベントは、リスナ(listener)と呼ばれる部分で処理することになります。
(『やさしいJava活用編(第4版)』、ソフトバンククリエイティブ、2013年、40-41頁。)

  • ActionListenerインターフェイス

  • addActionListener()メソッドで、アクションリスナーを追加することができ、actionPerformed()メソッドで、アクションが発生したときの処理を始めることができる。addActionListener()メソッドは、ボタン以外でも使えるものがある。

  • リスナは、インターフェイスとメソッドの両方が無いといけないんだろうな。

疑問点

  • 「actionPerformed(ActionEvent e)」の「ActionEvent e」は、とりあえず書いておけばいいのかな。

あらすじ

Swingが楽しくて、『やさしいJava活用編(第4版)』を3分の1ほど進めることができた。やった。

ということで、メールフォームとかに必要な部品(ラジオボタンとか)が作れることはわかったのだが、肝心のコードの意味はわからないままだ。

クラスとかオブジェクトとかインスタンスとかコンストラクタとか

結局のところ、クラスとかオブジェクトとかインスタンスとかコンストラクタとかが分からないのだ。 ということで、dot installの「JAVA入門」を見てみる。すると、なんとなくイメージは掴めてきた。誤りがあることを承知で書けば、

  • クラス:設計図らしい。あるインスタンスたちが持つ特徴をまとめて書いておくようなものか。

  • インスタンス:クラスをもとに作られた個別具体的なもの。

  • オブジェクト:「インスタンス」の抽象化されたような言い方か?

  • コンストラクタ:上2つとは全く異なる種類の用語。単純にインスタンス化したときに呼ばれる初期処理のこと。

という感じだろうか。オブジェクトがかなりあやふやだ(苦笑)。

クラスだからといって「new Hoge();」しないものもある

という感じで理解したのだが、少し進めているうちに、次なる関門にぶつかった。 それは、APIを利用する際に思った。たとえばCalendarを使いたいとき、

public class Sample {public static void main(String arg[]) {Calendar cal = Calendar.getInstance();System.out.println(cal.get(Calendar.DATE));}}と書くのだが、Calendarクラスを利用するのだから、

Calendar cal = new Calendar();cal = Calendar.getInstance();のように、「インスタンス化しないといけないのでは?」と思ったのだ。調べてみると解答が出た。

abstractはクラス・メソッド宣言時に付与し、クラス・メソッドを抽象クラス(abstractクラス)・抽象メソッド(abstractメソッド)として宣言します。
抽象クラスはそのクラス自身のオブジェクトを生成することはできません。
通常抽象クラスは実装のないいくつかの抽象メソッドを持っています。抽象クラスをサブクラスで継承し、そのサブクラス内で抽象クラスで実装されていない抽象メソッドを実装(オーバーライド)しオブジェクトを生成する形をとります。
Javaの道:クラス(13.abstract)

ということで、Calendarは抽象クラスなのだ。つまり、Calendarを継承したサブクラスがあるということだろうか(それが何かわからない)。

ただ、このことは理解できても、実感としてはいまいちピンときていない。少し考えてみよう。

クラス型変数calは宣言されただけで、オブジェクトは作られていない。オブジェクトじゃないということは、つまり変数calは、私が値を入れたりして新しく作り出すものではない。

変数calは宣言されただけで、そこにはCalendarクラスのgetInstanceメソッドを使って作られた値が代入される。

わかりづらいが、これを一応の結論としておくかー。 みたいに進めていたら、dot installの講習は全て終わってしまった。うーん、この後が本当によくわからないんだよな…。

プログラムの順番がだんだん分かってきた

このノートを書きながら、だんだんと分かってきたことだが、処理の順番として、まずmainメソッドですぐあとに使うクラスやメソッドを宣言し、あとは数珠つなぎ的にクラスやメソッドが繋がっているのだろう。

そういったことが掴めてきたので、ためしにコードを書いてみた。今日から1週間の日付と曜日を表すコードだ。

Sample.java

import java.util.Calendar;public class Sample {public static void main(String arg[]) {SampleCalendar sc = new SampleCalendar();sc.testCalendar();}}#### SampleCalendar.java

import java.util.Calendar;public class SampleCalendar {public void testCalendar() {Calendar cal;cal = Calendar.getInstance();for (int i = 0; i < 7; i++) {dispCalendar(cal);addCalendar(cal);}}public static void dispCalendar(Calendar cal) {String[] day = {“日”, “月”, “火”, “水”, “木”, “金”, “土”};int date = cal.get(Calendar.DATE);int daynum = cal.get(Calendar.DAY_OF_WEEK);System.out.println(date + “日は” + day[daynum-1] + “曜日。”);}public static Calendar addCalendar(Calendar cal) {cal.add(Calendar.DAY_OF_WEEK, 1);return cal;}}なんか「それっぽい」コードになってきたぞ。ITを知らない人になら「エンジニアです」と名乗れるようなコードかもしれない(笑)。ブレークスルーなるか。