読者です 読者をやめる 読者になる 読者になる

面白きことは良きことなり

拙く未熟なiOSエンジニアの備忘録と戯言

MacApp購入予定リスト(WWDCに備えて)

※一部絶対割引されないものも混じっている。

AppleScriptをSwiftで記述できるアプリ

Scriptarian - Scripting Studio for macOS

Git管理アプリ

www.git-tower.com

Diffアプリ

www.kaleidoscopeapp.com

鉄板のDesignerアプリ

Sketch - Professional Digital Design for Mac

デザインからコードを生成するアプリ

www.paintcodeapp.com

iOSシミュレーター管理アプリ

simpholders.com

アニメーションのプロトタイプ作成アプリ

kiteapp.co

プラグインで万能なテキストエディタ

www.sublimetext.com

各言語のIDE

www.jetbrains.com

RAYZ Plusを購入したので開封と少し触っての使用感

当初の発売日から2ヶ月経ってやっと発売

RAYZ PlusというiPhone向けのLightningイヤホンが当初の3月末発売から2ヶ月経った今日 に一般発売された。 av.watch.impress.co.jp

海外では、3月末に発売されていたが、国内は諸事情により1ヶ月延期となり・・・ 1ヶ月後の4月末には唐突に、auのStoreでのみ1ヶ月間先行販売とすると発表され・・・ 結局一般発売は5月22日だった。

記事を見たその日のうちにヨドバシで購入。

お値段¥17,000前後

価格は、¥17,000前後と言われていたのに¥19,310、そこに1,931ポイント付く。 実質¥17,379・・・ま、まぁ¥17,000前後かな?!

色々発売までに不満はあれど・・・

発売までに紆余曲折あり、正直ONKYOとかPioneerに対するヘイト値は、かなり上昇した。 ONKYO好きだったから余計に今回のgdgdした発売までの流れは許せない。

そんな不満はあるものの、音質重視のLightningケーブルタイプのイヤホンで、ネックとなっていた音楽聴きながらの充電が可能なLightningケーブルのイヤホンが出たのだから欲しくもなる。

過去にradiusのLightningイヤホン買っていて、充電に困っていたからなおさらね。
aryzae.hatenablog.com

さらに、ノイズキャンセリング機能つきらしく、そこも興味を引いた。

RAYZ Plus(ブロンズ)を開梱したらこんな感じ

正面

f:id:aryzae:20170523003939p:plain

開封1

f:id:aryzae:20170523003747p:plain

開封2

f:id:aryzae:20170523003853p:plain

イヤーピース 3種類 × 3サイズ

上からスポンジ、ゴム幅広め、ゴム幅狭め
左からS、M、L f:id:aryzae:20170523003956p:plain

充電用Lightning口の側面

f:id:aryzae:20170523003814p:plain

充電用Lightning口の正面

f:id:aryzae:20170523003835p:plain

充電用Lightning口にLightningケーブル挿した図 (ださい)

f:id:aryzae:20170523003920p:plain

専用アプリでキャリブレーションやsmartボタンのカスタマイズ

RAYZ専用のアプリがあるので、それを使用してキャリブレーションやsmartボタンのカスタマイズが可能

Rayz by Pioneer

Rayz by Pioneer

  • Appcessori Corporation
  • ライフスタイル
  • 無料

RAYZシリーズを挿していないとメニューすら出ない

f:id:aryzae:20170523004640p:plain

メニューはシンプル

f:id:aryzae:20170523004644p:plain

smartボタンはクリック、ダブルクリック、プレス(長押し)を割り当てれるみたい

f:id:aryzae:20170523004649p:plain

少し触って見た感想

音楽再生アプリ

まず、radiusのLightningイヤホン購入時に一緒に買った、音楽再生アプリ"NePLAYER"が無駄にならなかったことがありがたい。

NePLAYERは、radiusのLightningイヤホンを挿している時に使える再生周りの設定があるのだけど、RAYZ Plusを挿した場合でも同様に使えることがわかった。

NePLAYER自体よくできていて、ハイレゾ再生にも対応してるため、音楽再生アプリを変えずに済んだことはかなり大きい。

音質

音質自体は好みあるし、多くのイヤホンを持って色々聞き分けできるわけでもないので、素人なりの感想になるが、細かい音も聞こえやすく、割と上品な感じがする。
後述するノイズキャンセリング機能が影響してることも大きいだろうが、伊達に音響メーカーが作ったわけではない良質な音がなっている。

radiusのLightningイヤホンより、聴きやすく耳障りの良い音がすると思った。

ノイズキャンセル

おまけ程度の機能と鷹をくくっていた。
まだ全然試せていないし、ノイズキャンセル機能持ち自体初めてなので、効いているのかがよくわからない。

とりあえず、PCスピーカーからTVとかを垂れ流しつつノイズキャンセルを試したところ、TV側のボリュームを夜に苦情がくるレベルまであげないことには、ほぼ音楽しか耳には聞こえなかった。(音楽自体はiPhoneのボリュームを2や3で試聴していた。)

この変に関しては、もう少し日常(満員電車や市街地)で使ってから追記しようかと思っている。

まとめ

まだ使い始めで、性能を掴みきれていないが、radiusの¥15,000前後のLightningケーブルを買うなら、数千円足してRAYZ Plusを買った方が断然良いとだけ断言できる。 音質が上で、ノイズキャンセル付いてて、音楽聴きながら充電できる素晴らしいイヤホンだと思う。

ぶっちゃけ、Lightningイヤホンの中で最高かつ最強かもしれない。
(値段も最高かもしれない。)

次期iPhoneがLightningではなく、USB Type-Cという噂もあり、もしかすると次のiPhoneで使えない可能性も微々たる可能性はあるが、その時はその時。
(USB Type-Cのコネクタ口はLightningより厚いので、Type-Cを採用するとiPhoneを厚くしなければいけなくなる。今まで薄型化していた意味がなくなるので、Type-Cの採用はないと思っている。)

RAYZ Plusを是非買うといいと思う!

UIColorの比較で単純に==や!=してはいけない話(Swift3コード追記)

UIColorの比較の注意点

UIColor同士を比較する際、==!=で比較することは可能。 しかし、安易にこの比較を行なった場合、意図しない挙動になることもある。

その例が下記となる f:id:aryzae:20170520162714p:plain

UIColorの作成時、white値を指定して作成することもできれば、rgba値を指定して作成することもできる。 この作成の仕方で、同じ色でも比較時にfalseが返る。

Objective-Cの時、UIColor.whiteUIColor(white: 1, alpha: 1) で作成したインスタンスは同じアドレスを挿していた。そのため、== の比較でも同じオブジェクトを指していたのでtrueになるのは当然だった。

Swift3で同じ様にアドレスを確認すると、別のアドレスを指しているのが画像からわかる。つまり別オブジェクトでも同一とのものと判定されていることがわかる。

同じ色でもfalseが返る理由

では、なぜ同じ色なのに比較するとfalseが返るか。 それはdumpで見るとわかる。

f:id:aryzae:20170520165104p:plain

このように同じ色でも、インスタンスの生成の仕方で継承しているクラスが異なっているためである。

生成方法に左右されない比較方法

生成方法が異なっていても、楽に比較するため==で比較できるようにメソッドを 書くのが良さそう。

// Swift3
func ==(lhs: UIColor, rhs: UIColor) -> Bool {
    var lhsRed: CGFloat = 0.0
    var lhsGreen: CGFloat = 0.0
    var lhsBlue: CGFloat = 0.0
    var lhsAlpha: CGFloat = 0.0
    lhs.getRed(&lhsRed, green: &lhsGreen, blue: &lhsBlue, alpha: &lhsAlpha)

    var rhsRed: CGFloat = 0.0
    var rhsGreen: CGFloat = 0.0
    var rhsBlue: CGFloat = 0.0
    var rhsAlpha: CGFloat = 0.0
    rhs.getRed(&rhsRed, green: &rhsGreen, blue: &rhsBlue, alpha: &rhsAlpha)

    return lhsRed == rhsRed && lhsGreen == rhsGreen && lhsBlue == rhsBlue && lhsAlpha == rhsAlpha
}

参考: UIColor の比較時の注意点 - Qiita

これで==で比較できるようになった。

f:id:aryzae:20170520170915p:plain


別案として、規約で縛る代わり==!=を許可するのも手だと思う。

具体的に言うと、下記を守れば==!=で比較しても正しく判定できる

  • UIColor生成時、rgbaを指定して作成する
  • UIColorが持つredColorやwhiteColorは使用しない

読みたいまたは購入予定本

モバイルアプリ開発エキスパート養成読本 (Software Design plus)

モバイルアプリ開発エキスパート養成読本 (Software Design plus)

Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)

Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)

詳解Swift 第3版

詳解Swift 第3版

Rxswift: Reactive Programming with Swift

Rxswift: Reactive Programming with Swift

軽量・高速モバイルデータベースRealm入門

軽量・高速モバイルデータベースRealm入門

すごいHaskellたのしく学ぼう!

すごいHaskellたのしく学ぼう!

プログラミングの基礎 (Computer Science Library)

プログラミングの基礎 (Computer Science Library)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

UIデザイナーのための Sketch入門&実践ガイド

UIデザイナーのための Sketch入門&実践ガイド

Kotlinスタートブック

Kotlinスタートブック

Xcodeでファイル配置を変更した際に出るWarningの対処方法

Missing file (〜 is missing from working copy)

  • gitで該当ファイルをコミットする

Dependency Analysis Warning

  • XcodeのUtilities(右カラム)>File inspectorのTarget Membershipからチェックを外す

or

  • ProjectのTargets>Build Phases>Copy Bundle Resourcesから該当ファイルを消す