Hatena::ブログ(Diary)

hedgehog’s blog このページをアンテナに追加 RSSフィード

2009-12-31 Philipsヘッドフォンマラソン Vol. 5 SHL9560 このエントリーを含むブックマーク このエントリーのブックマークコメント

f:id:iDrop:20091231170653j:image

今年もいよいよ大晦日です。そして全5回に渡ってレビューさせて頂くという、Philipsさんのヘッドフォンマラソンも今回が最後となりました。トリを飾るのはSHL9560というヘッドバンドタイプのモデルです。では早速レビューです。

今回のヘッドフォンはアウトドアでスタイリッシュに、かつ快適に音楽を楽しみたい人たちへ訴求するプロダクトとなっているようです。まず目を引くのが、ポリマー加工されたウレタン部。内側には発色の良いイエローがあしらわれており、音楽を聴かずにヘッドフォンを首にかけて街中を移動する際に目立って良いのではないでしょうか?バンド部分は強度かつ軽量なプラスチックでできており、ここには稼働部は含まれておりません。内部のウレタン部が自動的に頭にフィットするように設計されてるので、サイズの調整の必要がありません。

また内側が同様のイエローでカラーリングされたヘッドパッド部にも特徴があり、これはユーザの耳をまるごとすっぽりと包み込むようなデザインとなっており、ヘッドフォンを長時間装着した場合に悩まされる、締め付け感からくる疲労を解消するようになっています。ただ、快適さとのトレードオフなのか、全体的に音が少し奥にあるような印象を受けたのは、この設計が関係しているような気もしました。

サウンドの方は、高音域は概ね良好。中音域は目立つものの、ちょっと無理矢理前に持ってきたような、不自然な印象を受けました。アウトドアでの使用を第一に考えられた設計だからでしょうか。とにかくボーカルはよく聞こえます。そして低音域はこれまでレビューしてきたPhilipsさんのプロダクトに比べれば、締まりはあるものの、比較的抑えられた感じでしょうか?

ヘッドバンドタイプはインイヤー型に比べ、タッチノイズが格段になく、このSHL9560のような軽量で装着感が快適なモデルは、街を颯爽と移動する際には便利に使えると思います。それにやはりこのプロダクトはデザインが秀逸ですね。個人的にはかわいらしい女のコが、街でこれを首掛けしてるのを見かけたら、萌えると思いますw。

例によって、購入した製品に満足しなかった場合、全額キャッシュバックするという、Phillipsの原音力体感キャンペーンが実施されておりますので、レビューで気になったモデルがあった方は、試してみてはいかがでしょうか?

2009-12-20 Philipsヘッドフォンマラソン Vol. 4 SHH9756 このエントリーを含むブックマーク このエントリーのブックマークコメント

f:id:iDrop:20091220204620j:image

フィリップスのヘッドフォンマラソン第4回目。今回はiPhone用コントローラが付いたSHH9756。現在Amazonで8000円近い値段で販売されています。いままでのヘッドフォンよりもかなり値がはるプロダクトですね。

では、さっそくレビュー。

今回は最初に残念だったところから。それはなんと言っても、このヘッドフォンのコントローラがiPhone 3Gで使用した場合、ボリュームの調整ができないのです。そもそも付属のQuick Start Guideに記載されている機種が、iPod nano 第4世代、iPod classic、iPod touch 第2世代、そしてiPhone 3GS。iPhone 3Gでも曲の再生/停止、次の曲/前の曲選択はできるのですが、ボリューム調整はできませんでした。さらにボイスコントロールも3GSのみということです。

iPhoneで音楽を聴いていて、もっとも使用するのは、おそらくボリューム調整だと思います。それだけにこれは痛い。まぁ、3GSユーザには関係ない話ですが。

コントローラの機能については、さらに音楽再生中に電話がかかってきた場合、コントローラの1クリックで電話に切り替えることができるそうです。これは便利ですね。

さて、付属コントローラばかりに注目しがちですが、このヘッドフォンで素晴らしいと思ったのが、ハウジング部に搭載されたシリコン素材のジェルスリーブ。グミを想像してもらえれば近いかな。これがとてもいい具合に耳にフィットし、かつ圧迫感もないのです。

あまり激しい動きをしなくても、ちょっとした動作でヘッドフォンがズレてしまうことって結構あると思うのですが、このジェルスリーブはそれを払拭する、素晴らしいアイディアだと思います。

肝心の音の方は、低音から高音にかけて、どれも安定して聴けます。とくに中音域が聴きやすいように思えました。いままでのヘッドフォンよりも値段が高額なぶん、サウンドもベターな印象を受けました。

ということで、コスト的には少々お高いですが、iPhoneコントローラと、ジェルスリーブが付属していることを加味すれば、充分検討の余地があるプロダクトだと思われます。特にiPhone 3GSユーザには、お勧めです。

購入した製品に満足しなかった場合、全額キャッシュバックするという、Phillipsの原音力体感キャンペーンはまだ実施中ですので、気になった方は試してみてはいかがでしょうか?

2009-12-17 LoaderオブジェクトでaddChild()はダメ

[]マスクをするときの注意

今日のハマりどころはマスクです。AS2.0ではMovieClip.setMask()でしたが、AS3.0ではDisplayObjectクラスのmaskプロパティに置き換えられています。このように「AS2のあのプロパティ、メソッドは、AS3ではどこ行ったんだ?」と疑問に思うことがありますが、そんなときは【ActionScript 2.0からの移行】というページがドキュメントの付録に用意されているので、参照してみるのもいいかと思います。

さて、このDisplayObject.maskプロパティには同じようにDisplayObjectを代入することができます。MyMask、MyObjというDisplayObjectのサブクラスがある場合、以下のようにするとmyObjインスタンスをmyMaskインスタンスでマスクすることができます。

var myMask:MyMask = new MyMask();
var myObj:MyObj = new Obj();
myObj.mask = myMask;
addChild(myObj);

ですが、ここで注意。上記のような書き方だと、仮にmyObjの親のDispalyObjectContainerが移動するなどした場合、親オブジェクトの移動と同時にMyObjは移動するのですが、ディスプレーツリーに登録されていないmyMaskは移動しないので、結果としてマスク位置がずれてしまいます。これを防ぐためには、myMaskも親オブジェクトのディスプレーツリーにきちんとaddChild()して登録しておく必要があります。

addChild()しても、maskプロパティに格納されたDisplayObject自体は表示されませんので、myMask.visible = falseとかする必要もありません。

var myMask:MyMask = new MyMask();
addChild(myMask);  //myMaskもディスプレーツリーに登録
var myObj:MyObj = new Obj();
myObj.mask = myMask;
addChild(myObj);

今回のマスクにしてもそうなのですが、ハマりどころもドキュメントを読めば大抵のことはきちんと書かれているのですが、ハマらない限りじっくりとドキュメントを精査することはないから、まぁこうやって学んでいくしかないのかなと。

[]LoaderオブジェクトでaddChild()はダメ

AS3.0をやってみると、予想通り分からないことばかりで、blogネタに困らない今日この頃。こうやってハマった経験を晒すことくらいしか、Flash業界に貢献できないのが悲しいところです。

今日のハマりどころはLoaderオブジェクトです。これは外部のswfや画像ファイルを動的に読み込むためのクラスですね。このクラスはDisplayObjectContainerのサブクラス(つまり子オブジェクトを持てる)で、load()メソッドで読み込まれた外部データは、ロードが完了すると自動的に、Loaderクラスの子オブジェクトとなり、Loader.contentプロパティから参照することもできるようになります。

さて、問題はaddChild()。Loaderオブジェクトの中に、子オブジェクトとしてTextFieldを追加する以下のようなコードをコンパイルすると、「LoaderクラスはaddChildを実装していません」というような趣旨のアラートが表示されてしまいます。DidpalyObjectContainerのサブクラスなのに、addChild()を実装していない?なぜ?

package {
  
  import flash.display.Loader;
  import flash.text.TextField;
	
  public class MyLoader extends Loader {
    public function MyLoader() {
      var textfield:TextField = new TextField();
      textfield.text = "Text";
      addChild(textfield);
    }
  }

}

それもそのはず。ドキュメントにも書いてありましたが、LoaderオブジェクトはaddChild()、addChildAt()、removeChild()、removeChildAt()、および setChildIndex() といったメソッドを(使用できないように?)オーバーライドしているとのことなのです。そして、子オブジェクトとして持てるのは、load()で読み込むオブジェクト1つだけだったのです。

僕から言わせれば、コイツはせっかく親から譲り受けた才能を台無しにしてしまうような親不孝息子にしか見えないのですが、まぁ僕も他人様のことをとやかく言えるほどの人格者ではありませんので、そういう奴なんだと理解してやろうと思います。

さぁ、次はどんな罠にハマるのかなw。