井原プロダクトのBLOG

Since 2013。個人でアプリ作っています。

正確なiPhoneのメトロノームアプリについて

ども。ちょっと開発に疲れたので、今日はメトロノームアプリのお話をさせて頂きます。

本日twitterを見ていたら「メトロノームはアプリで済まさず、ちゃんと買え!プロはみんな買ってるぞ」みたいなのがあって、ちょっとムッとしたので反論。確かにいい加減なのあるのは否定しませんが、ちゃんと選べば正確なのがあるんです。しかもSmart Metronomeは、各方面のプロの方もお使い頂いてます。
私は、Smart Metoronomeを開発するにあたって50個のメトロノームを評価したので、iPhoneメトロノームアプリに関しては日本でも5本の指に入るくらい詳しいと思っているのですが、今日は、その中でも代表的なの6つを選んで計測してみました。

<計測方法>

  • 120BPM
  • Beatが設定できるものは4/4拍子に設定


こんな感じ。

f:id:ihatomo:20161119134350p:plain
(クリックで拡大)

さて、拡大してみてみましょう。まずは3秒後のタイミング。1目盛りが1msです。

f:id:ihatomo:20161119134521p:plain
(クリックで拡大)

上ふたつが、正確で、その下2つは2msほど早いですが許容範囲でしょう。
もう一箇所、10秒後を拡大してみましょう。同じく1目盛りが1msです。

f:id:ihatomo:20161119134906p:plain
(クリックで拡大)
上の2つは正確ですね。その下2つは5msほど早いですが、これも許容範囲でしょう。Bのふたつがほとんど同じタイミングでずれているのがわかりますが、これはiPhoneのハードウェアの特性によるものと考えています。Aはそれを補正しています。

私は、メトロノームアプリを正確性だけで分類すると、このABCの3種類に分けられると考えます。

A:正確なもの
B:間隔は一定だけど時間計測にわずかな誤差があるもの
C:揺らぐもの

AとBは、実用上の差異はありませんので、デザインや、使い勝手などでお好きなものを使えば良いと思います。ただ困ったことに、殆んどのメトロノームアプリはCに属します。テンポ感覚は人それぞれかと思いますが、私は、1/100秒ずれると「あれっ?」って気づきます。なるべく正確なものを選んで、正しいテンポ感を身に着けたいですね。

尚、プログラムの内部的な話を少ししますと、恐らくAとBは基本的に同じ作りで、どちらもハードウェアに直接クリック音を渡しており、時間計測をソフトウェアで行っていないと思います。そしてAは、若干それを補正しているだけ。Bは補正なし。Cは、CPUでiPhone内のClockを見に行って、タイミングをとって音を鳴らしていると思われます。従ってCPUのタスク処理状況によって揺らぎが発生してしまいます。

というわけで、電子メトロノームを買うのも良いですが、アプリをバカにするのはやめて下さいね。
で、よかったらこれ使ってください。

Smart Metronome

Smart Metronome

  • Tomohiro Ihara
  • ミュージック
  • 無料

AWS SNSにPHPでendPointを追加できない

またもやはまりまくり。
iPhoneへのPUSH通知にAWSSNSを導入していて、endPointの登録にAWS SDK for PHPを使用したのですが、はまりましたので共有します。解決策はこちらを参考にしました。

AWS SDK用のPHPスクリプトは以下で良いはずなのですが、エラーになります。

<?php 
require 'aws.phar';
use Aws\Sns\SnsClient;
 
$sns = SnsClient::factory(array(
            'version' => 'latest',  //これ入れないとエラー吐く
            'key'    => 'アクセスキーを入れる', //アクセスキー
            'secret' => 'シークレットキーを入れる', //シークレットキー
            'region' => 'ap-northeast-1'//地域コード
            ));
 
//デバイス(iPhone等)からデバイストークンを受け取る
$token = $_POST['token'];
 
//Application ARN:Amazon SNS上のAPP ARNを指定
$iOS_AppArn = 'arn:aws:sns:ap-northeast-1:1234567890:app/APNS_SANDBOX/hogehoge';
 
$options = array(
            'PlatformApplicationArn' => $iOS_AppArn,
            'Token' => $token,
            'CustomUserData' => "Test" //User Data
);
 
//エンドポイントをAmazon SNSに登録
$sns->createPlatformEndpoint($options);

?>

実行結果:404 Not Found、アクセスできてない

PHP Fatal error:  Uncaught exception 'Aws\Exception\CredentialsException'
 with message 'Error retrieving credentials from the instance profile metadata
 server. (Client error: `GET http://xxx.xxx.xxx.xxx/latest/meta-data/iam/
security-credentials/` resulted in a `404 Not Found` response:

で、アクセスキーとか、シークレットキーを設定する部分を以下の様に変更。

$sns = SnsClient::factory(array(
            'version' => 'latest', //これ入れないとエラー吐く
            'credentials' => [
                'key'    => 'AccessKey',
                'secret=> 'secret '],
            'region' => 'ap-northeast-1'//地域コード
            ));

これで、無事登録。どうやらパラメータがcredentials配下に下がったみたい。やれやれ。

キーチェーンアクセスから.p12が書き出せない

こちらを参照させて頂きました。

ios - iOSでプッシュ通知の証明書を.p12形式でexportしようとしたら.p12形式が選択できない - スタック・オーバーフロー

Push通知を行うにあたって、AWSSNSでAPNSを使おうと思ったのですが、SNSに証明書を設定するのに.p12形式の証明書をアップするのに、キーチェーンアクセスから.p12形式のファイルが書き出せなくて困ってました。答えは、以下の項目を"すべての項目"ではなくて、”自分の証明書"にすると書き出せました。めでたしめでたし。

f:id:ihatomo:20161108171321p:plain

iOSのPush NotificationでAppの有効な“aps-environment”エンタイトルメント文字列が見つかりません"となる

久しぶりのエントリーです。
しばらくtumblrに書いていたのですが、こちらに戻ってきました。

初めてアプリにPush通知機能を搭載しようとしたのですが、はまりまくりましたのでシェアします。搭載自体は、こちらを参考にしました。少し記事が古いためところどころ読み替えが必要ですが、そんなに混乱はなく実施できると思います。

iOSでプッシュ通知を実装する方法の超詳細まとめ(前編) | Lancork

で、この通りやってもタイトルの通り以下のエラーが消えない。

error => (NSError)Error Domain=NSCocoaErrorDomain Code=3000 "Appの有効な“aps-environment”
エンタイトルメント文字列が見つかりません" UserInfo={NSLocalizedDescription=Appの有効な
“aps-environment”エンタイトルメント文字列が見つかりません}

Google先生に聞くと、大抵Push Notificationを有効にしてプロビジョニングプロファイルを作り直せ、というのが解答なのですが、それもやった。何度もやった、、、お手上げ。仕方ないので、StackOverflowとかに投稿しようかと思った矢先、こちらをみつけました。

f:id:ihatomo:20161106131541p:plain

もうアホかと、、。 アプリ本体のTargetのCapabilitiesがOFFになってるじゃありませんか。ここをONにしてクリア! やれやれ。

iOS9.2 Apple Musicの機能改善を調べてみた

iOS9.2がリリースされたので、早速アップデートしてみました。

今回気になる機能は、Apple Musicが改善されたという事。先日、クラシック、JazzファンのためのMusic Playerアプリ「MUSA Music Player」をリリースした筆者としては、気になるところ。どんだけー?!

発表によると、Apple Musicの機能改善は以下の通り。

  1. 曲をプレイリストに追加するときに、新しいプレイリストを作成できます。曲をプレイリストに追加するときに、最後に変更したプレイリストが先頭に表示されます
  2. iCloudダウンロードボタンをタップして、iCloudミュージックライブラリからアルバムやプレイリストをダウンロードできます
  3. "マイミュージック"と"プレイリスト"で、曲がダウンロードされているかどうかを示すダウンロードインジケータが各曲の横に表示されます
  4. Apple Musicカタログでクラシック音楽をブラウズするときに、作品、作曲者、演奏者が表示されます


ひとつひとつ見て行きましょう。ここでひとつお断りしておきたいのですが、iOS9.1のデバイスiPadしか無いので9.2と9.1の純粋な比較が、既にできないんですよね。その点ご了承ください (^ ^;;


1) 曲をプレイリストに追加するときに、新しいプレイリストを作成できます。曲をプレイリストに追加するときに、最後に変更したプレイリストが先頭に表示されます

ホントだ。 + 新規プレイリスト ができていますね。これでiPhone上で新規プレイリストを作成することができます。


実際にやってみた。簡単だぜ、、でも、、あれ、、、あれれ!?新規追加したプレイリストは、プレイリストの一番下に表示される。そこに新たに曲を追加してみる、でも先頭には表示されない、、。どういうこと????

納得いかない想いをひきずりつつ次行きましょう。



2. iCloudダウンロードボタンをタップして、iCloudミュージックライブラリからアルバムやプレイリストをダウンロードできます

なんのこっちゃ?!
まず、iCloudミュージックライブラリですが、これはApple Musicの機能で、音楽ファイルやプレイリストをインターネット上に保存し、iPadや別のiPhoneからも音楽を聞くことが出来る機能です。利用するには、Apple Musicの契約が必要です。



このiCloudミュージックライブラリをONにすることによって、デバイス上の音楽ファイルがiCloudに保存され、他のデバイスで再生することができるようになります。私の場合、何も曲を入れていないiPadにずらーっと曲が表示されるようになりました。すごい。

で、で、で、今まではiCloudミュージックライブラリ上のファイルは、ストリーミング再生しかできなかったのが、今回の更新でDLできるようになったということなのかな?いや、そんな事はない。そういえば、今までは「オフラインでも再生可能にする」というのをタップしてたっけ。

こちらがiOS9.2の画面。このアルバムは、子供のために購入したものの、私のiPhoneには入っていないものです。たしかにクラウドからDLボタンがありますね。


こちらが、iOS9.1のiPad。「オフラインで再生可能にする」、つまりiTunes StoreもしくはiCloud Music LibraryからのDLは、…の奥に隠れています。なるほどね。


でもこれって、OSのバージョンアップとして紹介するには、細かい話だなぁ、、。次行ってみましょう。


3. "マイミュージック"と"プレイリスト"で、曲がダウンロードされているかどうかを示すダウンロードインジケータが各曲の横に表示されます



そうそう、今までって、デバイス上の音楽を再生しているのか、iTunse Storeからネットストリーミングで再生しているのか、よくわからなかったんですよね。だから何?って言われるとまぁどうでも良い気もするけど、地下鉄なんかで駅に近づくと止まったりとか、、なのかなぁ。ともかく、それがはっきりとわかりやすくなりました。このアルバムは全てiPhone内に保存されているものですが、iPhoneマークにチェックが入っていますね。DLされていない曲には、このマークがありません。



4. Apple Musicカタログでクラシック音楽をブラウズするときに、作品、作曲者、演奏者が表示されます


最後に一番気になるクラシック関連のアプデ。これがまたよくわからない、、。試しに、Apple Musicでカラヤンを検索して「曲」を見てみますと。


作曲者出てませんが、、、。

気を取り直して、Symphonyで検索してみました。同じく「曲」の中身を見てみます。うーむ、なんのこっちゃ!?


というわけで、Apple Musicカタログでブラウズするときに、、、という意味を誤解しているのかもしれませんが、これでクラシック音楽のブラウズが快適かと言うとそうでもないなぁ。他にもいろいろ検索すると、曲のタイトルの頭に作曲家の名前が振られているものが多いことがわかりますが、これの事を言っているのかな。今後さらに整備されていく事を期待しましょう。


という事で、今回のiOSのアプデで、全体的にはApple Musicアプリは、iCloudミュージックライブラリとの親和性を上げてきたという印象ですが、クラシックのブラウズに関しては、よくわかりませんでした。今後さらなる改善を期待するところです。

というわけで、こちらからは以上です。

と言いたいところですが、以上のほとんどは、Apple Musicを月額980円で利用する人のためのものですね。今まで通り、CDをiPhoneに転送して楽しんでいた人にとっては、メイン画面下のタブにRadioなんて不要だし、このタブでライブラリーのカテゴリー表示を「アルバム」とか「曲」に切り替えたいところではありませんか?

というわけで、最後に紹介したいのは、今までiPodのような使い心地に、さらに検索機能を強化した Musa Music Playerです。タブでリスト表示を切り替えられて、しかも各リスト上で絞り込み検索がかけられます。例えば、ベートーヴェンカラヤンとか、Chopin => Walz => Argerichとか。今までのiPodに戻りたい〜!という方はぜひお試しください。


DLは、こちらから。無料です。

https://itunes.apple.com/jp/app/id1056067671?mt=8&ign-mpt=uo%3D4

簡単選曲の音楽アプリできました

https://itunes.apple.com/jp/app/musa-music-player/id1056067671?mt=8

Apple Musicの登場によって、iPhoneのミュージックプレーヤーは、大きく変わりました。メイン画面下のTABに表示されているのは、My Musicの他にはRadioとかConnectなどのオンライン系のサービスへのLinkとなり、自分のライブラリーの音楽を聴くのがメインの方にとっては、選曲のメニューが奥に引っ込んでしまい正直言って使いづらい。

という事で、かつてのiPodの様な操作性を備えたミュージックプレーヤー Musa Music Playerをリリースしました。

ぱっと見でわかると思いますが、ジャンル、演奏家、作曲家、アルバム、曲のカテゴリーで検索できます。更に特徴的なのは、各カテゴリーの検索がキープされるため、AND検索ができる事です。

なので、こんな検索もできます。

作曲家 = bach かつ

演奏家=Gould かつ

アルバム=Goldberg

とか、

演奏家 = Miles

アルバム = ‘Round About Midnight

など。

ですから、沢山のCDをiPhoneに入れていても大丈夫、簡単に目当ての曲を選曲することができます。


無料ですので、ぜひご利用ください。

やよいの青色申告オンライン

個人事業主のみなさん、確定申告頑張ってますか?

私は、Mac使いのため、表記のクラウドサービスを使っているのですが、時々数字が入らなくなって困っています。

例えば、固定資産の登録で、本年中の償却期間というところに4という数字が入らない、、、。いつも固まってしまうため、その都度ブラウザを閉じて再チャレンジしていたのですが、それでも入らない。

さんざん悩んだ末、Safariを閉じてChromeで入れたら、、、




入りました。ちゃんちゃん。