亡くさないbluetooth イヤホンを探さなければ。

前評判どおり、iPhone7からはイヤホンジャックがなくなるという。

特に外出先では、イヤホンはできる限り有線がよい。
ノートPCにスマホにwatchにタブレットにKindleにあれにこれに・・・ととにかく生活に必要なあれこれがバッテリーで動いており、バッテリ残量を気にSルのストレスが大きい。
イヤホンまでもがその仲間入りをしてストレスに加勢してくれるのか。

そうはいっていてもしょうがないのでワイヤレスのみちを探る。
Lightningの変換ケーブルは根元に力がかかってすぐ壊れそうだし。
壊れるのがケーブルの方ならまだ良いけれど本体のコネクタ部分が壊れたら泣きそうだ。

日頃、外での音楽はスティックタイプのウオークマンを使っている
nw-m500_b
NW-M505

音楽は長時間聴くのでスマホのバッテリを消費したくないのと、iPhoneより断然音がよいので。
1万円台の安いモデルだけれど、小さくてノイズキャンセラもまま働いてくれる。
本体をTシャツの首や袖に噛ませておけば一人での釣りのとき、厳しい場面も退屈しない。

そして、こいつはbluetoothのクライアントにもなってくれる。
iPhoneとペアリングすればbluetoothイヤホンとして使える便利な機種。
本体のストレージが16Gなのもカバーできる(iPhoneのバッテリー温存には反するけれど)。
一般のBTイヤホンより本体の体積がある分、バッテリーの持ちもよい。

iPhone純正のイヤホンがすぐに落として亡くしそう(私、耳が奇形なのだ・・・)だがこれならフィット感も存在感もあって安心感ある。

ただ、この系統の機種はディスコン(継続機種発売されず)。
そんなに需要がなかったのだろうか。
今使っているのはだいぶ使用感あるが、古い在庫を探すしか新しく購入する手立てがない。
NW500シリーズ、復活してくれないだろうか。

・そこそこ音がよくて
・大きすぎず小さすぎず
・亡くしづらい

BTイヤホンはどこだ。

Read More

360度映像(VR)アプリ「かどぱん」、リリースしました

春頃から課外活動でこそこそ作っていたVRアプリがリリースされました。

街かどで、しょくぱん少女に出会いたい。 <2.8次元VRアプリ>
「かどぱん」 2.8次元VRアプリ

「アニメにありがちな美少女との青春ドキドキハイライトシーンを擬似体験できる学園ものVRショートドラマ」

ということで、秋葉原のメイドカフェ「ぴなふぉあ」のメイドさんのみなツさんと曲がり角でぶつかれるアプリです。

kadopan_icon

Android版
https://play.google.com/store/apps/details?id=ws.totoro.android.kadopan

iOS版
https://itunes.apple.com/jp/app/id1146196718?mt=8

ヘッドホン(イヤホン)の利用は強めに推奨。
あとはハコスコなどがあればよりよいですが素手でも楽しめます。

今回、映像には私はノータッチでアプリ開発を担当。
開発はUnityで。
iOS版のコンパイル時にARC問題で悩む、という今時でないハマりポイントはありましたがそれ以外はだいたいクロスOS開発ができました。

技術的にもう少しいじってみて(2眼対応とかGearVR対応とか)、その後コンテンツ追加版(こちらは有料の予定)を出そうと思っています。
実はコンテンツはもう出来ているので開発いそがねば。

Read More

iOS9とCrystal  とwatchOS2

iOS9GMはそのままiOS9正規版になった様子。
アップデートの手間が省けた。
開発者としては今日の正式版こうかいまでの準備にいろいろ苦労しつつ、いろいろ間に合って安心。

広告ブロックのCrystalがだいぶ頭良くなってる。
改めて、運用に関わっているサイトを巡回パトロール。
ついでにライバルサイトも偵察。
きょうの料理のライバルcookpadのPC版サイトが激しいことになっていた。

crystal_cookpad

サイドバー全消し。
Crystalを切ると特集のリスト(これも広告だけれど)も自社広も正常に見える。
外部の代理店の広告だけが対象じゃないのか。
サイドバー全体を囲むdivのidがad_wrapperだったりadだったりするからかな?
crystalはHTMLタグの属性とかまで見ているのだろうか。
コーディングで手を抜くとこういうことになるのか。。

そしてしばらくブラウズをしていると、 ふれこみ通りとっても快適で捗る。
ページ上の広告が今までどれほどユーザの体験を阻害し迷惑を掛けてきたのかが、ユーザにもサイトオーナにもばっちり見せつけられてしまった。
ここまで違うと、広告に好意的な立場の人もcrystal入れるだろうなぁ。

ad-freeはPCにも広がり、配信側はCrystalとABPの提供会社にお金を積んでこっそりブラックリストから外してもらう、っていうことになっていくのだろうか。

watchOS2もGMがそのまま正規版に。
重いんですよね。。
watchOS2にして以降、腕を手前に傾けてから画面が表示されるまで1テンポ送れるようになってしまったのでこれが直ると良いなと思っていたんだけれど。
時計としてはそこ頑張って欲しい。
全体として使いものにならないと言うほど緩慢ではないのだけれども。

Read More

iOS9 / watchOS9間の通信 Watch Connectivityで小ハマり

既存アプリのiOS9,watchOS2対応をぼちぼちと。
swift1.2 -> swift2へのconvertもあるので細かくあれこれ時間がかかる。

watchOS2では、いままでのwatchKitではiOSアプリとwatchアプリの通信に使っていた
– openParentApplication:reply:
が無くなってしまったので新しいAPI Watch Connectivity で実装し直す

– openParentApplication:reply: ではwatch側からiOS側へconnectionを開くことしかできない(iOS側から通信を開始できない)が、WCSessionでは双方ともに可能。
おかげでだいぶコードがすっきりする。

準備

delegateの宣言

iOS側のWatch Connectivityを使うクラスの宣言を以下の様に(太字部分追加)

class ViewController: UIViewController, WCSessionDelegate

watch ExtensionのWatch Connectivityを使うクラスの宣言を以下の様に(太字部分追加)

class InterfaceController: WKInterfaceController, WCSessionDelegate

両方とも
import WatchConnectivity
を忘れないように。

データを受信するためにセッションを開始する

例えばiOS側のViewControllerで使う場合、viewDidLoadの最後あたりで、以下の様にしてセッションを開始する

if (WCSession.isSupported()) {
let session = WCSession.defaultSession()
session.delegate = self
session.activateSession()
}

watch Extension側でも同様に例えばWKInterfaceControllerで使う場合、willActivateの最後あたりに同じコード追加。

ハマったのはここ。
実装したかったのは片方向(iOS -> watch)の通信のみだったので受信側(watach)のみでこのコードを実装したが、iOS側からwatchを見つけられない(後述の WCSession.defaultSession().reachable がfalse になる)。
送信側にも通信が始まる前にこのコードが実行されるようにコードを追加する必要がある
openParentApplication:replyのイメージが強くて、勝手にサーバクライアントのようなモデルを想定してしまったのが失敗。

通信開始

WCSessionの通信にはすぐに通信が開始されるInteractive messagingと、機嫌が良いときに通信しておいてくれるBackground transfersがある。Interactive messagingの場合は、iOSからwatchに送信する場合はwatchOS上でアプリが起動している必要がある。

今回はInteractive messagingを例に。

送信側:

if WCSession.defaultSession().reachable { //通信可能かチェック
var message:[String: AnyObject] = ["message": "Message From Phone" ]
WCSession.defaultSession().sendMessage(message, replyHandler: { (replyMessage) -> Void in
//
}) { (error) -> Void in
print(error)
} 
}

受信側(delegateのメソッド実装):

func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) {
if let tmessage:String? = message["message"] as! String? {
print(tmessage)      
}
}

messageが[String: AnyObject]となっていることから分かるように、String以外も送信可能。
簡単に双方向通信ができる様になった。
MMWormhole要らなくなりそうだ。
(いままで(watchOS1で)動いていたMMWormholeのコードがwatchOS2のシミュレータでは動かなかった。コンパイルも通りエラーも出ないが、受信してくれず。)

Read More

ble + Wifi

WiFiを自動でONにしてバッテリーを節約するXperiaテク – 週刊アスキー

位置情報で、というのはなるほどと思う。

GoPro HERO4のようにbluetooth(ble)でアクセスポイント探して見つかったらWifiをONにする、というオープンなプロトコル(?)、普及しないかなー。

それだとアクセスポイントの登録も不要だし消費電力もだいぶ下げられるのでとっても便利。

Read More

Xcode7 betaでの”can’t open file”

iOS9対応のためにXcode7のベータ版で作業する日々。

cocoapodを使っているプロジェクトでビルドすると以下のエラーが。

error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/otool: can’t open file: /Users/(snip snip)/Build/Products/Debug-iphonesimulator/Familiar.app/FrameworksAlamofire.framework/Alamofire (No such file or directory)

Alamofireがswift2に対応してないのが原因かと思いgithubのブランチを設定し直して再度 pod installしてbuild.

Podfile

source ‘https://github.com/CocoaPods/Specs.git’
platform :ios, ‘8.0’
use_frameworks!

pod ‘Alamofire’, :git => ‘https://github.com/Alamofire/Alamofire.git’, :branch => ‘swift-2.0’

しかしエラーは消えず。

beta5になっても、現在最新のbeta6になっても直らないので諦めていたが、今日、理由が分かってエラーをとくことができた
原因は、プロジェクトのpathにスペースが入っていたこと。
親フォルダが”iOS Project”となっていたのでshellがライブラリを見つけられずにコケていた。
プロジェクトを移動したら直ったのでなんでだろうと思って調べた。

いまどきこんなバグ。。
早く直してくれい、Apple.

Read More

AppleWatchがすぐにiPhoneから切断されてしまう

iPhoneが無ければただのベルト、AppleWatch。

バッテリーが切れるまで使ったら、それ以降、結構頻繁にiPhoneとの接続が切れるようになってしまった。

applewatch_standalone

切れているときはこのアイコンがでてる。
Watchの画面上ではとても小さいから、最初、バッテリー残量警告だと思ったのだけれど。

一度接続が切れると再接続するのがなかなかやっかい。
iPhoneの近くにおいてしばらくそのままにしておいたりしたのだけれど赤いアイコンが消えない。
notificationも出て来ないしデータが同期される気配もない。

都度AppleWatchをリセットしたりいろいろやってみたが、ペアリングに失敗し続けたりして大変。

そして、やっと簡単な再接続方法を発見。
AppleWatchが近くにいる状態でiPhoneを一旦Airplaneモードにして、戻す。

applewatch_standalone2

これで確実に再接続できる様になった。
まぁ気付いてしまえば「ああそうか」なのだけれど。

Read More

AppleWatchのスタンド

AppleWatchを買ってから、自宅での置き場所が定まらなくて気持ち悪かったのでスタンド購入。
使いはじめて約10日。

まだ新しいジャンルなので選択肢が少ない。
いま普通に買えるのはこれくらい。

B00VSGVVNA Apple Watch スタンド, Spigen? [充電 クレードル ドック] アップル ウォッチ 38mm / 42mm 対応 アルミニウム製 スタンド S330【国内正規品】(2015) (S330 【SGP11555】)
SPIGEN SGP

by G-Tools

で、腕に付ける以外はいつもここに。

apple watch stand #Applewatch #stand #spigen
(Watchは38mmの小さい方)

iPhoneのアクセサリで有名なSpigen製。
そういえば私のケースもSpigenのだった。

充電ケーブルの磁力のおかげでWatchがうまい具合に張り付く。
コンパクトで安定性も良し。底にゴムの滑り止めがついているのですべらない。
デスクにおいた状態で見やすい角度。
ちょっと長めの泊まりの旅行の場合はもっていってもいいかな、くらいのサイズ。
全体的に、可も無く不可も無く。

ただ、4000円はちょっとお高いかな。
3000円くらいだと良いのだけれど。

Read More

EPUB STANDのページを作りました

昨年頭に作った電子マガジン出版プラットフォーム「EPUB STAND」の紹介ページを作りました
EPUB STANDは、電子書籍/電子マガジンの配布の問題を解決します。

EPUB STAND | bmblog

一言で言うと、「電子マガジンはなかなか継続して読んでもらうのが難しいので、新しい号がでたら登録ユーザにPush Notificationで通知してダウンロードからリーダーアプリで開くまでをワンクリックで行いましょう」というスマートフォンアプリです。

スマートフォンアプリであればバージョンアップの時にAppStoreにPush Notificationの赤い丸がついて知らせてくれるけれど、雑誌の次の号がでた、という情報は伝わってきません。
メルマガでの通知はユーザのメールボックスに埋もれてしまいなかなか開封につながらなくてロスが大きいという問題があります。
iOSには電子書籍更新管理のNews Standという機能がありますが、AppStore/iBookStoreを通さないで配布する電子書籍でも同じように使いたい、というのが趣旨です。


Android app on Google Play

夏からインプレスR&D社のフリー電子マガジンOnDeckに採用頂き、少しずつチューニングしてきました。
先週から山と渓谷社の週刊ヤマケイとインプレス社のWeeklyGANREFにも採用頂いて少しずつ拡がっていってます

OnDeck | インターネット時代のナレッジクリエーターを支援するデジタルマガジン「OnDeck」(オンデッキ)

週刊ヤマケイ

Weekly GANREF

うちの雑誌もEPUB STANDに乗りたい、という方を募集します。
企業でなくても個人でも使えます。

自社カタログや社内資料の配付に使いたいなどカスタマイズもできます。

shin@articulate.jp
までご連絡頂ければ。

Read More

iPhone6をバイクにマウント

iPhone6は無印(小さい方)にしました。
大きい方はパンツによってはケツポケットに入らないことと、dot by dotの表示ができないのが気になったので。

私にはこれで十分で、5sより横幅が増えたのでキーボードのミスタイプが減ったのが嬉しい。
通話の音質も上がった気がする。
私の声は電話で通じにくいと言われてるのだけれど、6にしてから聞き返されることがほとんどなくなった。

3GS(だったかな)のころからナビ代わりにもしているのでバイクの運転中・・じゃないや停車中に見えるようにマウントしている。
使っているのはやっぱり安心のRAMマウント。
RAM Motorcycle Mount

筐体が変わるごとに取り付ける部分の形が変わるので、そのアタッチメントだけ買い換え。
5までは専用のアタッチメントが発売されていたが、最近はAndroid含めて需要がいろいろなサイズに分散しているのか、バネで挟み込むタイプの汎用の物になった。

買ったのはこれ。

B00JU1TY98 RAM MOUNT X-グリップホルダー RAM-HOL-UN7BU
ラムマウント 2014-04-17

by G-Tools

これは単体では使えず、バイクに取り付けるパーツとジョイントが必要。

B00LVPWEUW RAM MOUNT ミラーベースB(ストレート) RAM-B-252UP
ラムマウント 2014-06-09

by G-Tools

B00CU9BQP2 RAM MOUNTS(ラムマウント) ショートアーム(約6cm) RAM-B-201U-A
RAM MOUNTS(ラムマウント)

by G-Tools

これらはアタッチメントを変えることでずっと使える。

話は戻って今回買ったアタッチメント。
RAM MOUNT X-GRIP on Motocycle

iPhone6挟むとこんな感じ
RAM MOUNT X-GRIP on Motocycle

今まではiPhoneのボディがかっちりはまるタイプだったのでケースは付けられなかったが、今回は薄いケースだったらつけたままマウントできるかもしれない。(未確認)

今回、電源ボタンが上から右側に移ったこともあり、取り付けるアームの位置を気をつけないとボタンが押され続けてしまい、いきなりシャットダウン画面になってしまうことも。
RAM MOUNT X-GRIP on Motocycle
RAM MOUNT X-GRIP on Motocycle
ここだけ気をつけポイント。

バイクに取り付けるとこんな感じ。
RAM MOUNT X-GRIP on Motocycle
RAM MOUNT X-GRIP on Motocycle

運転中の視点から見るとこんな感じ
RAM MOUNT X-GRIP on Motocycle

挟み込む形になるので堅牢性はどうかと思ったけれど、100km/hで走っても全く問題なかったので安心。
さすがRAMマウント。

代理店の人に聞いてみたところ、iPhoneを挟んでいる部分の黒いパーツが真夏の炎天下だと溶けてくる可能性があるらしい。その部分のパーツも別売りしているけれど、溶けたゴムでiPhoneがべっとりするのは避けたいのでちょっと気になる。

B00BTFIEJO 【RAMマウントシリーズ】 X-グリップホルダー用 ポストキャップ(4個入) RAP-UN-CAP-4U
RAM MOUNT

by G-Tools

ちなみにiPhone6 plus向けのマウントはこちら。

B00C7B2NV4 【RAMマウントシリーズ】 RAM X-グリップホルダー(スマホ用 Lサイズ・ファブレット) UN10B 「RAM-HOL-UN10BU」
RAM MOUNT

by G-Tools

少し大きい。

設置したいけれど何を買って良いか良くワカラン、と言う場合は代々木の個々のお店に行くと一式買って取り付けまでやってもらえる。私も最初取り付けるときは個々にお世話になった。
ハンディGPS専門店GPSストア » 正規輸入商品の品質と専門店のサービスを東京・代々木の店舗と通販で皆様へ

Read More