2017年11月16日木曜日

ARKitをどう見る?

先日のリリースで追加したStandlandのAR機能。
それを複数の人に紹介する機会があって、そこで新たに感じる所があったので今の気持ちを書いてみる。

3Dモデルは現実世界に置いた方が感動する?

StandlandのARは、ゲットしたキャラクターがARで配置できて写真や動画が撮れる...というとーっても単純なモノ。

役に立つようなものじゃないけど...と、若干ビビリながら入れた機能なんだけど、実際見てもらうと、かわいい!と素直な反応が返ってきて、なんだか新鮮だった。

キャラクターって、アプリ内にいるものと、ARで現実世界の中にいるものは、正直同じモデルなのに、ARの時の方が反応が良いのが面白い。
3Dの世界をより実感してもらうには、現実世界の方が直感的に感じやすいのかもしれない。


ARにどう繋がるか結びつかない

Standlandはこんな感じの健康系アプリなんですーと説明を進めると、それがARとどう繋がるのかが結びつかなくて、頭の中が「???」となってしまう。
ですよね、わかりますw

StandlandのARは「スクショを画像として保存する」ぐらいの手軽なオプションの一つに「ARで表示する」があるようなもの。
これって、以前では考えられないことで、便利な時代になったもんだと思う。


手軽になったからこそ

平面認識やカメラトラッキングなどをイチから作るにはとっても大変なので、ARKitが無かったらARに手をだそうとも思ってなかった。
コストに見合うような、収益が期待できるアプリを作るのは難しいから。

だが、StandlandのARは、そこの部分には課金の要素は全くない。
言い換えると、それぐらい手軽に追加できたということ。

iOSはデバイス種類が固定できること、ARKitはデバイス間の差も吸収してくれる(はず)という安心感も大きい。

もしARKitが無い状態で、同じような機能を追加しようと思ったとしても...
ポケモンGOのように、カメラ画像の前にキャラクターの静止画を置く ので十分OKそうだから、ARライブラリを探すことさえもしないと思う。

ARKitがある今は、静止画を置くよりもARKit使った方がコストは少なくなるパターンもあるよな と思える。
複数のアイテムを配置するのであれば、ARの方が断然レイアウトしやすい などのメリットもあるので。

いろんなアプリで使われるようになり、「あれがARなの? 自然に使っていたわ」 という未来がくるのだろう。たぶん。


今はまだ...将来に期待

とはいえ、またまだ自然に使っていた...というモノは作りにくい。
平面しか認識できないとか、深度が考慮されないとか、カメラ表示を一度やめるとトラッキングの続きができなくなるとか.... いろいろ制限もあるので、こんなことがしたい!と思っても、すぐに壁にぶち当たる。

ARKitを使ったアプリがリリースされて暫く経つが、想像を超えるような新たな使い方を示したアプリがあまり出なかったのは、その制限が大きいと思う。
WWDCやフォーラムを見ていても、デベロッパーのARKitへの関心度は高かったと感じるので、断念もしくは保留とした人も多かったと思う。

ARはハード側の機能に大きく依存するので、ハードとソフトの両方を提供しているAppleは他のベンダーに比べて進化の速度は早いはず!と期待してしまう。

と、同時に、Appleは、今後どんな機能を追加していくとよいのかを模索中で、ユーザーやデベロッパーの感想を聞きたい と思っているように感じる。
世論が盛り上がってくれて、Appleがこれからも研究、開発を進めていく決断をぜひして欲しいな。


iPhoneという制限の中で


便利なARは?と考えた時、iPhoneのカメラの中 という制限が一番大きくのしかかる。
多くの人がデバイスを持っているという部分では最適ではあるのだけども...。
メガネや、プロジェクターだったら.... なぁ....と、いろんな夢が膨らむ。
これは、発想力が乏しいから出ている言い訳の自覚もありまして、iPhoneのカメラだからこそ、有意義な用途もあるハズなんですよね。

今のARKitでは機能が足りてないけど、
製品のマニュアルをARで提供するってのもよさそう。
目が不自由な人のために盲導犬代わりになるとかもよさそう。

そういう身近で便利になるものを、大金を払わなくても使えるようになる時代がくるといいな!


• • •

2017年11月6日月曜日

iPhone Xを手に入れた

11月3日に無事にiPhone Xを手に入れました。

iPhoneケース

Amazonでポチったのですが、失敗しましたw
サイドボタンがとっても押しにくい。


ボタン部分の穴アキの、位置、大きさ、向きって大事ですね。
画面方向に穴が抜けているものでないとちょっとツライ。
店舗にいって真面目に選んできます....


ディスプレイ

画面に表示されているというより、そこに紙が乗っているかのよう。
黒色の発色も良い。
ディスプレイ部分と、端末本体部分の差が分からないくらいの黒色になる。
シルバーの端末でも前面の端末色を黒にしているのは、黒自慢の為だろうかw

ただ、角度によって色味が変わるのは少し気になる。
OLED ディスプレイを見る角度を変えると、色味や色合いが若干変化するのに気付くかもしれません。これは、OLED の特性で、問題ではありません。長期的に使っているうちに、見え方に若干の変化が見られる場合もあります。これもまた予想されることで、「残像」や「焼き付き」など、画面に新しい画像が表示された後も前の画像がかすかに残って映るといった現象も、起きるようになる場合があります。極端な例になると、高コントラストの同じ画像が長い時間表示され続けることもあります。Super Retina ディスプレイの開発にあたっては、こうした OLED の「焼き付き」現象の低減という点でも、業界最高を目指しました。
とあるので、そういうものらしい。
有機ELでも焼き付きってあるんですね。
ずっと表示しておくようなアプリを作る場合は、アニメーションで動きをつけるなどするのが無難なのかも。
Apple Watchは常時表示はほぼないから、気にしなくてもよかったのか。

iPhoneX本体が熱くなる という話を聞いたが私はまだ感じてはいない。
バッテリーの減りは思ったより早いような? 

「有機EL」をはじめて知ってみたのは、スロットのネオプラネットXXで搭載されたEL VISION
リールの前に薄いディスプレイを配置してサブ演出を表示するというもので、はじめて回した時には感動した。
透明な所に表示できて、こんなに薄い!
当時、スロット店内のガラスに、透明のディスプレイが貼り付けられているのをみて、自宅のテレビがコレになるのは、もう近い未来か! と思った。

それが、15年前。

思ったより普及が遅い感があるが、その主な理由はコストと寿命の短さの問題だったらしいが、リーマンショックが無かったら、もう少し早かったかもしれないなー。
最近は開発も進み、有機ELのテレビの発売も活発化しているよう。
需要が増えてコストが下がっていくのを期待。

スワイプ

画面端からスワイプして前画面に戻れるエッジスワイプがありますが、同じ動作を画面下のSafeAreaの部分で行うと、前に使っていたアプリに切り替えることができる。
これ、なにげによく使いそうに思った。

カメラアプリで写真を撮影した後、写真アプリでみてからカメラに戻る
パスワードアプリでコピーして元アプリに戻る

などの場合。
ホームボタンがないので、その切替でないと、ちょっと面倒。

なので、アプリ開発者の目線からみると、
その部分にTouch Downですぐに何か処理をしてしまうようなものを入れないと良さげと思った。
ちなみに、SafeArea部分もTouchやTapのイベントは普通に反応します。


カメラ

ポートレートモードが使える端末ははじめて。なので普通にポートレートモードが楽しかった。
背景がぼやけてくれるだけで、かっこよく見えちゃう不思議。
ペットが生きていた時に使いたかったな...!

遊び道具を手に入れたので、Depth APIで遊んでみたい。


• • •

2017年10月26日木曜日

Swift と Objective-C どっち選ぶ?

なぜ多くの開発者が今なお Swift よりも Objective-C を好むのか の記事を読んだ。

私は、言語にあまりこだわりがある方ではなく、使えればなんでもいいやタイプ。
そんな私でさえ、「あー、そうよなー」 と共感してしまった所があった。

WWDCのセッションでは、ほぼSwiftで書かかれているなど、Swift押しなのかなーと思う反面、Swift発表から結構経った今でもなお、上にのっかっているライブラリの位置から抜ききれていないのが悶々とする。

Swiftは、コードの文字量が減るし、GenericsやEnum, Extensionなどのおかげでスッキリと見やすいコードを書きやすい。
見やすいコードは凄く大事。複数の人数で開発していたらさらに。
多少のコンパイル速度や、実行速度を落としてでも、見やすいコードの方が優先順位は高いと思う。(便利なフレームワークを使うとか もその一例デスヨネ)

でも、一人でコードを書いている&修正している場合、ぶっちゃけ動けばOKなのだから、見やすいコード の優先度を下げても問題ない訳で。
受託案件であれば、Swiftバージョンの互換性問題を考えると、委託者の立場からするとObjective−Cで作ってくれた方が有り難いかもしれないし。

「これからのiOSアプリはSwiftで書くべし」 と人に言われたことがあるけど、私はそこまで断定して言えないなぁ。

そうはいいつつ、Flaskのアプリは3年前からSwiftです。Swift発表の直後から使い始めたので、長い方と思う。受託じゃないからできる技ですねw

速度に関しては、そこまでシビアなモノを作っていないし、デバイス性能が上がればカバーできることも多いので、そのためにObjective-Cを選択することは無いのだけど...

アプリにSwiftライブラリを含める必要がある

のが、一番ツライ。

ここでいうSwiftライブラリとは、libswiftCore.dylib など のような、これがないとそもそもSwiftが動かない必須のやつです。
Swiftのバージョンが上がるとどんどんサイズも大きくなっていく代物。

XCodeでビルドした際に作成される ○○.app の中を見ると、このSwiftライブラリ類の合計は、
  • iPhoneアプリでは35MB
  • Apple Watchアプリでは12MB
ぐらい占める。

が、これで驚く無かれ(?)
App Storeに向けたビルドとして出力すると、
  • iPhoneアプリでは100MB
  • Apple Watchアプリでは36MB
ぐらいに膨れ上がる。

Apple Watchアプリは50MBのサイズ制限があるのに、半分以上持っていかれるとか、ほんと切実すぎる。
(最近、制限が75MBにアップされたかも?)

これらのサイズは、どうやらコード内のスペースとかも含まれているサイズらしく、実際に配布される時は少なくなるようなのですが、iTCへアップロード時のWatchアプリのLimitのチェックはこれを使っている様子。


どっちの言語でも書くのは問題ないけど、後にObjective-C ←→ Swift に移行するのは、やりたくない。
とすると、これから作成するアプリであっても、ボリュームがありそうなWatch appはObjective-Cで書くのがいいか? と考えてしまう。

今後、Swiftライブラリをアプリに含めなくても良くなる (= Objective-Cと同等レベルの言語として格上げされる) 予定があるのか? ないのか? をホント、知りたい。
公表してくれると嬉しいが、オトナの事情もあるだろうし難しいんだろうな....。


• • •

2017年10月16日月曜日

iPhoneX対応

Flaskのアプリ達をiPhoneXの対応を着々と進めています。

iPhoneX向けレイアウトの条件


iPhoneX向けのレイアウトになる条件は、

  • XCode9(iOS11)でビルドしたアプリ
  • LaunchScreenがiPhoneXの対象になっている

ことらしい。
なので、XCode8(iOS10)でビルドしたアプリは、多分SafeArea部分が黒く塗りつぶされる...ハズ。
試せないので想像と期待ですが。

LaunchScreenは、Storyboardと画像Assetのどちらかを使うかを選べます。
Storyboardを使っていた場合は、対象になります。
画像Assetの場合は、iPhoneX用の画像を用意したら対象になります。


対応時に引っかかった所


Insets

画面の縦や横のサイズが変わってもピッタリとレイアウトされるようにコードからコンポーネントのサイズを変更したりしていた所の修正がいくつか必要だった。
手抜きでUIScreen.main.boundsの端末サイズから計算してたとことか、bottomLayoutGuideの量を考慮し忘れとかなど。

Insetsについては、Qiitaに記事を書いてみました。
iOS11のInsetsとLayout
誰かの助けになれば幸いデス。

Status Bar

Status Barを表示していなかったアプリも、iPhoneXだと表示したくなる。
だって、その領域が絶対にあるんですもの...!

なので、Status Bar有りに変えたアプリがいくつかあります。
ただ、やっぱり、iPhone8だと無しにしたい...というものもあって、切り分けたものもあります。
綺麗に切り分ける方法はないっぽいので、SafeArea.topがコレ以上だったら...というハードコーディングした。気持ち悪いけども、まぁしょうがないかなと。


画面下部にピッタリ置いたボタン


手が届きやすいので、画面下部にボタンをよく配置していたのですが、iPhoneXだと下にスペースができちゃうので、イマイチになってしまう。


この場合、ボタンの形状から考え直さないとなんともならなくて、左右にスペース開けて浮いた感じにしてみたり、角丸にしてみたり...とデザインの変更も。

そもそもの話として、iPhoneXは縦長なので画面下部が押しにくそうなのが悩ましい。
ぷにコンみたいなのが正解なのか。もう、ボタン無しUIへと時代は変わっていくのか...?!


Pushアニメーション時のズレ

NavigationBarが不透明だったり、Under Top Barのチェックをしていない時、UITableViewがズレてしまうという、よく話されている問題。
https://stackoverflow.com/questions/45573829/
バグであって、修正されると信じたいなぁ。このために回避のコードを入れたくない。

もう一つ、Pushアニメーション時に、TabBarが上に動いてしまうという問題がiPhoneXのみであって、これはBug Reportを書いた。

Push時のアニメーション関連は、まだ不安定な感じ。




iPhoneX対応は、制約を正しいGuideにコツコツとつなぎ直していく単純作業かと思いきや、デザイン合わないからどうしよう.... という悩みがでてくる。
iPhoneXはマイノリティだから とは思うものの、iPhoneXをメイン端末として使いたい私としては、えこひいき的に考えてしまう(笑)


あとは無事に実機をゲットできればよいのですがーー。




• • •

2017年10月2日月曜日

UIActivityViewControllerには罠がある

UIActivityViewController は画像やテキスト、URLなどを他アプリへ渡す仕組み。
Twitter, FacebookなどのSNSにシェアしてもらうときに使える。

実装はとても簡単。シェアしたいものを配列にして渡す。

let image:UIImage = ...
let shareItems:[Any] = [image,  "Hi!"]
let controller = UIActivityViewController(activityItems: shareItems, applicationActivities: nil)
present(controller, animated: true, completion: nil)

これで、以下のようなシートが表示される。


手軽なのでよく使っているのだが、罠がある。

1. 画像をシェアするときには、Usage Descriptionが必要


「Save Image」ボタンで、写真appに画像を保存できるのだが、その際にPhoto LibraryのUsage Descriptionが無いとクラッシュします。
写真appにアクセスしていないアプリだと見落としがちなので注意。

iOS10までは、Privacy - Photo Library Usage Description で読み込み/保存の両方ができましたが、iOS11からは書き込み時にはPrivacy - Photo Library Additions Usage Descriptionが必要です

Usage Descriptionは、Extension側で管理してよ と強く思います...!
「Save Image」はデフォルトで入っているものですが、3rd party appでもそうなのかどうかは試してないので不明。
どんなExtensionが使われるかはユーザ依存なので、アプリ本体側としては全部テストはできないから妥協が必要だが、ユーザー目線からみるとアプリのバグと見えるのでツライところ。

2. シェアアイテムが全て使われるとはかぎらない

アプリ本体側は、Image, Text, URLなど、シェアしたいアイテム を渡すが、それをどう使われるかはExtension次第。

たとえば、Facebookの場合、ImageとTextの両方を渡すと、Imageのみになる。
(現在の v143.0ではそうなるが、少し前のバージョンだとImageも認識されなかった)

FacebookはそもそもアプリからデフォルトのTextを入れてはダメというポリシーがあるようなので、Textは渡せない(渡さない)と考えたほうが吉。
ちなみに、Hashtag (ex. #Standland) はいけるようだ。

3. Extensionのアプリバージョンによって挙動がかわる

まぁ当たり前ではあるのですが、そういうものです。
言い換えると、実装したタイミングでは動いていたのに、今みたら動いていない...ということがあるということ。

iOS11のリリース直後はTwitterで画像のシェアができなくなった。
すぐTwitterのアプリをアップデートしてくれたので今はiOS11でできるようになったが、iOS10だと画像シェアできないようだ。 (Twitter v7.8)


4. iOS10のTwitter, Facebookはアプリ有無によって挙動がかわる

iOS10以前には、iPhone本体でTwitter, Facebookのアカウント管理機能があった(SocialFramework)。
そのため、アプリをインストールしていなくてもActivityViewControllerには表示され、シェアが可能。(これはiOS11で消滅)
つまり、iOS10で動作確認する際は、アプリインストール有無で挙動が変わるということを知っておくのが大事。



いろいろ気をつける注意するべき点はあるものの、UIActivityViewController + Extensionの仕組みはとてもいいものだと思う。

これがなければ、アプリに「他アプリへの連携機能」を付けてもらうしか無い。
マイナーアプリの場合は、連携機能を期待するのも難しいであろうし。

その代わり、使う方(本体アプリ)も、使われる方(Extension)も、正しい理解と実装をして、新しいOSにも対応し続けていかないといけない。

もし私が受託開発を請け負っている身だったら、あまり理解してもらえないようなお客さんの場合は、使うのはためらうかも...。



• • •

2017年9月17日日曜日

iOS 11 の AR

iOS 11のリリース日が19日に決まりました。

Flaskでは Standland, FitPort, Zones の3つのアプリがiOS 11の新機能を使ったアップデートします!
iOS 11 対応のアプリで、注目されるのはやっぱりAR?
...で、Standlandに試しに入れてみたのですが、実装してみて感じたことを書いてみる。


ARをどう使う?

どんな機能としてARを利用すると楽しいのか? が難しい!
なかなか心が決まらず、悶々としていましたが、最終的にはゆるーい簡単なものになりました。
家具を配置するとかの実用的なものはまだしも、ゲーム的なものはホント、誰得?ARである必要ある? と思うようなものしか想像できなくて。
ARKitとしてのトラッキングや平面認識の機能も、外の光の強さやテクスチャなどの環境に依存するので認識が遅かったり、できなかったり、おかしくなったりします。
(iPhone Xだとかなり良くなるのかもしれないですが...!)

な時間をかけて没入するよう機能は難しそうで、動きも不安定な所に課金要素を入れるのも苦しいし...ということで、お試しな位置づけで、あまり開発コストをかけないようにした。


影をつけたい

ARKitをつかってモノを配置する ということ自体はとても簡単に実装できます。
分からなくて困ったのは、影を作る方法。


まるで、そこに現実にあるかのように見せるには、影はとても大事。
staticな画像を底面に置くのもアリだけど、せっかくならキャラクターが動いたらそれに沿って影も動いてほしい...!
SceneKitの場合、影を作るにはSpotLightかDirectionalLightを当てる必要があるのだけど、床にも影を作る場合には、さらにShadowModeをdeferredにする必要がある。

本当は、キャラクター本体には影を付けず、床のみに影を付けたかったのですが、CategoryBitMaskを設定してもうまくいかず断念。deferredだからかな?

環境の光の強さと色はEstimateされた値が取得できるので、Lightに設定できる。つまり、太陽光の下と電球の下とでは色を変えたり、部屋が暗くなると一緒に暗くしたりできる。
環境の光の向きも取得できるのかと思っていたが、見当たらなかったのが残念。


ARのライフサイクル

初期化処理

ARのSessionを開始すると、初期化処理から始まり、これに数秒はかかる。
周りの環境のオブジェクトを認識してトラッキングできるようにするようなもので、カメラをある程度動かさないと処理が終わらないし、といって、動かしすぎてもよくない。
これをどーやってユーザに伝えるとわかりやすいか?が難しい。

平面検出

初期化処理が終わると、平面の検出が始まる。この検出処理もARKitがやってくれるので、検出できた平面情報を受け取ればOK。
平面が検出できていない or  平面ではない所 でもObjectは配置可能ではあるが、カメラを動かした時に追随してくれない可能性が高い。

平面の検出は、されやすい表面とされにくい表面がある。
暗い所や、表面が反射している素材、真っ白な素材もされにくい。
Apple Eventのデモでやっていたような、真四角の木の机はされやすい...と思う。

平面がなかなか検出されないってことは多くて、ユーザにとってイライラする所。
ポケモンGOはAR対応するって発表されていたけど、平面の検出させるのか?させないのか? がとても気になる。

セッションの中断

ARのセッション中は、カメラでトラッキングし続ける必要がある。
他のアプリに切り替えたり、画面の上に不透明なModal画面を表示したりして中断されると、それまでトラッキング対象だった情報の途中情報がなくなるので、引き続き処理をしていくのが難しくなる。
Apple のサンプルコードでも中断されたらSessionをやり直しするようになっている。

そのため、AR画面中にModal画面を表示したい時には、透明部分なしのModal画面であっても、overCurrentContext で表示するようにした。
例えば、ReplayKitを使って動画の撮影できる機能を入れているのですが、その動画プレビュー画面を表示する時とか。

UI

ARの画面では、操作ボタン類を配置せず、タップジェスチャーを使って直接配置したモノを移動したり、ズームしたり、回転させたりする感じがいい。
そういう意味で、UI構成の考え方は従来とはちょっと違う目線が必要だとも思った。

モノを配置するためのインジケーター
や、検出された平面の表示があるとユーザが操作し易いが、それを表示/非表示するタイミングも悩ましい所。



どんなARアプリが登場してくるのかが楽しみ!
実際にリリースするものを作成すると、他アプリを見る目が養われるのも実装した利点かもしれない。

• • •

2017年7月23日日曜日

knowを読んだ


野崎 まどのknowを読んだ。
2013年に発売とのことで、4年前の本です。

内容紹介を引用すると...
超情報化対策として、人造の脳葉〈電子葉〉の移植が義務化された2081年の日本・京都。
情報庁で働く官僚の御野・連レルは、
情報素子のコードのなかに恩師であり現在は行方不明の研究者、
道終・常イチが残した暗号を発見する。
その“啓示"に誘われた先で待っていたのは、ひとりの少女だった。
道終の真意もわからぬまま、御野は「すべてを知る」ため彼女と行動をともにする。
それは、世界が変わる4日間の始まりだった――
SFモノ。
時代背景が興味深かったので、ご紹介。

建物などの人工物には「情報素子」が組み込まれた「情報材」が使用され、モニタリングした周囲の情報が蓄積されていく。
そうして発生した幾何級数的に増加する有意、無意を問わない莫大な情報は、人類の脳で扱うのは限界になり、情報過多による病が蔓延。

世の中にあふれる情報量が増えていくのはその通りと思う。
だが、情報が多すぎるために人々が情報圧迫症みたいな病気に...はならない気がする。
人間の脳は賢いので、多すぎる情報はCUTするし、サボろうともする。
どちらかというと、検索すれば分かるから と、記憶や想像をしなくなり、脳を使わない病が蔓延しそうだ。


そこで、脳に直結した「電子葉」というデバイスを体内に組み込むことが義務化されることになる。
電子葉は、情報が必要になるとネットワーク経由で取得し選別された結果を、目の前に表示する。情報の取得だけでなく、個人情報を含む提供も強制的に行われる。
つまり、現在のように”個人情報は送信しない”という選択肢はなく、全て送信される。

私は個人情報も渡して便利な生活を送りたい派なので、そんな未来だったら素敵と思う。
ただし、安心できるシステム、管理先である前提。

knowでは、一人の天才がこのシステムを構築したという設定。
その教え子が、14年間そのコードを眺め続けた結果、バグはなく、ほんの数個だけ「こんな書き方、らしくないけど?」 というものが見つかったレベルで、しかもそれはわざと仕込まれた暗号だったという 凄さ。
なんとも羨ましい。そんな天才が現実にいて欲しいものだ。


取得可能な情報量、個人情報の保護量は、「階級」によって決まる。
レベルは0〜6まであり、通常はレベル2で、社会貢献度などにより上がっていく。
生活保護を受けている(税金を払っていない)人はレベル0 で、ほとんどの情報が得られないし、守られない。
レベル5以上は政府関係者のみに与えられる特権階級。

現在の日本で階級があるとすれば、どれだけお金をもっているか? だと思うが、それとは別に、情報の取得・保護量に差があるというのも面白い。
今の価値観では現実的ではないが、結構、今よりよい世界になるのかも?とも思ってしまう。

しかし、実はシステムを構築した天才は、「オープンソース」が理想像。
つまり全ての人がレベル0。全ての情報が開示され、取得できる社会。

安心・安全と便利 は、多くの場合、反対のベクトルを向いている。
「よいバランスで」 という結論となる話だが、思わず自分はどんな未来がイイと思うのだろう?と考えてしまった。

個人情報は保護されるべき という先入観を持ってしまっているが、
実名が必要なFacebookを使っているのはなぜ?
名刺って、強制的に個人情報をばら撒けと会社が指示をしてるようなもの? 代償に給料をもらっているから許せるの?
...とか。

SF作家さんは、現時点で垣間見える未来像を元に、想像する未来を、物語として文章にできるほど具体的にイメージしていくのが凄い。
だがら読み手は、たしかにそうなりそう!とか、これは違うと思う!とか、こうなって欲しい・欲しくない!とか思える。

knowの本筋のストーリーは、好き嫌いが分かれそうな感じ。
多分、これからはIoTだ!と叫ばれている時代に書かれたんだろうと思いますが、機械学習だ!と叫ばれている今、書かかれたらまた違うストーリーになったのかも?




• • •

2017年7月21日金曜日

iOS11の正式リリースはいつ?

iOS11対応 まっさかりの夏をお過ごしでしょうか?

新機能をいち早くアプリに取り込んで、「どやっ」ができるのもFlaskのような小さな会社&アプリのメリットなので、Day1 (iOSリリース日当日) のアプリアップデートを目指している。

だが、Betaはいくつまで進むのか、GMはいつリリースされるのかを予測しながら開発していくのは毎年ながら、ワクワクとキリキリする。

毎年、WWDCにてBeta1がリリースされ、9月に正式版がリリースされる。
それまでの期間は約100日。

過去のiOSリリース日は以下(現地時間)


Beta 1GM正式版
iOS 66月11日(月)9月12日(水)9月19日(水)
iOS 76月10日(月)9月10日(火)9月18日(水)
iOS 86月2日(月)9月9日(火)9月17日(水)
iOS 96月8日(月)9月9日(水)9月16日(水)
iOS 106月13日(月)9月7日(水)9月13日(火)
iOS 116月5日(月)


例年通りだとすると、iOS11は 9月6日にGMがでて、9月13日に正式版リリースってところだろうか。

現時点で最新のバージョンは、7月10日にリリースされた iOS Beta 3。
前回のiOS10ではBeta 8までいったが、基本的には Beta 5 が目安と思う。
基本的にはBeta 5 が最後のBetaだが、バグがあるようだったらBeta 6, Beta 7 .... と進んでいくイメージ感。
(※あくまで個人の感想)

つまり、iOS11 Beta 期間も折り返し地点を超えた感じ。

多分、例年通り、Beta 4 が7月下旬、Beta 5 が8月上旬 にリリースと思う。

Betaでは、想定通り動かない所が、仕様なのか?バグなのか?使い方が悪いのか? で苦労することが多い。
特に、Beta 1, 2 ではそういう箇所が多いのであまりハマらない方がいい。
だけど、Beta 4 を超えたら焦り始めないといけない時期になる。

焦り始める時期がもうそろそろくる.....

• • •

2017年7月19日水曜日

CubeがUSのAppStoreに載った

Cube をリリースして6日が経った今日、USのApp Storeの New apps we love に載っていた...!


左から2番目のいい位置にいる!
日本のApp Storeにfeaturedされるのももちろん嬉しいのだが、USのStoreというのはまた格別に嬉しい。

Standlandで、USのApp Storeにバナーが載ったことがある。
その時はいち早くSceneKitのApple Watchアプリを作ったから載ったのだが、そういう「何か」がないとなかなか載るのは難しい。

バナーではなく、この New apps we love の場合は単純にアプリの良し悪しで選んでいるように思える。前触れもなく突然載るのでびっくりするが、単純に嬉しい。

日本発のアプリの小さなアプリが世界に広まるには、USのApp Storeの人にどれだけ認知され、好きになってもらうかが一番の早道と思う。

ZonesがUSのAppleのプレスリリースの記事の中で名前を出してもらえたことがあるのだが、これはかなり嬉しかった。
頭の片隅にでも覚えててもらえてたのかと思うと、なんだが、奇跡だ。

もし、StandlandやZonesで、Flaskのことを知っていたから、Cubeにも目を向けてもらったのであれば嬉しいのだが、それは期待し過ぎかw

iOS11のリリースと同時に、App Storeが一新される。
GameとAppが別タブにきれいに別れる。
そして、Today タブが追加され、毎日アプリの紹介などの記事が掲載&更新されるらしい。

私達のような小さなアプリ開発者としては、とてもうれしい更新だ。
Todayにアプリの紹介をしてもらえるのを、今から夢見ている。



• • •

2017年7月12日水曜日

生理アプリ Cube をリリースしました


生理の記録と予測ができる、Cube(キューブ) をリリースしました。
生理周期を管理できる、ちょっとかわいいアプリです。ぜひ試してみてください!


コンセプト

女性なら、生理周期を把握して次回はいつか? を最低限知っておきたい。
日付の計算は面倒なのでアプリにお任せしたい所ですが、既にたくさんの生理アプリはあるものの、コレというのが見つけられずにいました。

理由は、
複雑で使い方が分からない とか
妊活/避妊目的が強すぎる とか
デザインが気に入らない とか。

私はめんどくさがりなので、生理開始日だけを記録していきたい。
経血量など、他の情報は記録しない。というかしたくない。続かないから。
なのに経血量の記録用に赤い血のアイコンがどーんと出てきたりすると、よりブルーになってしまう。

  • 「生理」というより、「周期」を管理したいだけ。
  • 周りに人がいる環境で使っても、恥ずかしくないものが欲しい。
  • 月に1度は必ず使うのだから、気持ちよく使えて、癒されるものが欲しい。

...という思いから作成したのが、この Cube。

妊娠 or 避妊 目的のアプリが溢れていますが、Cubeは周期の管理がメインのアプリ。
生理っぽい表示や表現をあえて無くしたのも特徴である、一風変わったアプリです。

たくさんの女性がいるのだから、目的に合わせたアプリを選べたらいいよね!と思うし、同じものを求めている人も多いはず。
そんな女性たちが、このアプリに巡り合ってくれたら嬉しいです。


ぷちカワCubeたち



アプリを立ち上げると、Cubeたちがモゴモゴ動いて数字の形に並び、あと何日か?を教えてくれます。
トップ画面はいろいろ情報を置きたくなる所なんですが、「やっぱり、かわいいのは正義よね!」といいつつ、バッサリ要素を切ってこの形になりました。

13個のテーマがあり、ネコやウサギなどのAniCubeたちがいます。
アプリアイコンもテーマに合わせて変える事ができます。
(先日Postした記事のアプリアイコン変更ネタはこのCubeでした)

リマインダーの通知も、Cubeの画像付き


通知にこの画像は無駄? いやいや....かわいいのは正義ですから!


生理の予測


メインの機能である、生理周期の予測については機能がしっかり豊富です!

  • 予測に使う生理期間や周期は、平均値 と 任意指定 から選べる
  • 特定の記録を、予測の平均値計算対象外にすることができる (薬で遅らせた時などに便利)
  • 年単位のカレンダーで、今後の生理予定をざっと見れる
  • 月単位のカレンダーで、iPhoneのカレンダー予定と一緒に生理予定を見れる

こういう痒いところに手がとどく機能って、機能豊富っぽいアプリでもなかったりしますよね...


安心のAppleヘルスケア

記録したデータはApple ヘルスケア(HealthKit)に保存しています。
外部サーバーにデータは一切保存していません。アカウント作成やログインなどもありません。
Apple ヘルスケアに生理日の情報を既に登録している場合は、まとめてインポートもできます。

いちユーザとしては、これがとても魅力的だったりします。
Apple ヘルスケアに登録しておけば、他のアプリからでも記録情報が参照できる。
iCloudで保存してくれるので、小さな会社にデータ預けるよりはよっぽど安心。
他のアプリへのデータ移動も(対応しているアプリならば)できる。


....ということで、
新たにFlaskアプリの仲間入りをしたCube、よろしくおねがいします!

Price: Free (アプリ内課金有り)
Compatibility: Requires iOS 10.3 or later. Compatible with iPhone and iPod touch.


• • •

2017年7月11日火曜日

iOS10.3のアプリアイコンの変更で気をつけること


Appleのカレンダーアプリは、今日の曜日と日付がアプリアイコンになる。
これはサードパーティのアプリでは不可能で、なんとも羨ましいと常々思っていた。

iOS10.3でその制限が少し緩和されて、サードパーティアプリでもアップデートなしでアプリアイコンが変更できるようになった。

該当のメソッドは、UIApplicationの setAlternateIconName
let iconName = "sampleicon"
UIApplication.shared.setAlternateIconName(iconName) { (error) in
if let e = error {
print(e)
}
}
view raw AlternateIcon hosted with ❤ by GitHub
アイコン名を引数に渡す。UIImageのオブジェクトでは渡せない。
つまり、サーバーからダウンロードした画像や、アプリ内で作成した画像を設定することはできない。
Staticな画像をアプリに入れ、Info.plistに設定した名前を渡す必要がある。


Info.plistに設定が必要なのは少々面倒だが、アプリアイコンもレビューの審査対象になっていることを考えると、しょうがないのかもしれない。
とはいえ、できることが増えたのは嬉しい限り。

アプリアイコンを変更すること自体はすぐにできたのだが、混乱したのは変更時に表示されるダイアログ。


このダイアログは、setAlternateIconName で変更すると強制的に表示されるもので、削除することはできない。

「アプリアイコンが変更されたことをユーザに知らせるべきだろう」というAppleのポリシーは理解できるので、表示自体は問題ではないのだけれど、実は、このダイアログが表示されないパターンがある。

ダイアログが表示される/表示されない の差が何かは実はよくわからなかった。
このコードを呼ぶときに表示されている画面の種類に依存するような....?

ただ、iOS10では表示されないコードを、iOS11 beta2で試すと表示されたことから、表示されないということ自体がバグなのであろう と思う。

私がsetAlternateIconNameを最初に試した時、ダイアログが表示されないパターンだったためこのダイアログの存在を暫く気づかなかった。
気づいていない場合、とても危険なことをしてしまう可能性がある。
たとえば、setAlternateIconNameをアプリ起動時の度にを呼ぶ とか、一定時間たったら自動的に呼ぶとか。

ダイアログが表示される以上、
勝手に裏でアプリアイコンを変更する という仕様はNGで、
ユーザが画面上で「アイコンを変える」という操作をした時のみ変わる
ように仕様を考えないといけない...ということ。

罠には気をつけてお使いください!


• • •

2017年6月18日日曜日

サンノゼ事情


WWDC 2017に参加するためサンノゼに行ってきた。
来年もサンノゼで開催される予感がするので、サンノゼ情報を残しておく。


気候


サンノゼはサンフランシスコより南にあり、気候も温暖で治安も良く、町並みも南国の雰囲気が漂う。
日本のように湿度はないので暑くはないが、日差しはかなり強い。


似合うのであれば、サングラスを持っていくと良さげ。
日傘をさせれば随分楽なのだが、その文化がないのが残念。車社会だからか?

6月上旬に行ったのだが、朝晩は14度と寒いぐらいだが、日中は25度と暑かったりと、一日の中でも寒暖差がある。体感は、どれだけ日差しの下にいるかどうか?で変わるのだが。
私は、薄手のパーカーを2枚重ね着して暑くなったら一枚脱ぐ 感じで過ごした。
半袖にならなかった理由は、日差しよけという理由も大きい。
少々肌寒くても大丈夫な人は、ずっと半袖でもよいくらいの気候ではあった。

サンフランシスコに比べ、サンノゼの方が人々はとても優しかった。
どの国に行っても、都会より田舎の方が人が優しいもんだな。


サンノゼ国際空港


最寄りの国際空港はノーマン Y. ミネータ・サンノゼ国際空港 (SJC)。
車であれば、15分程度。公共交通機関を使えば40分でダウンタウンまでいける。
ただ、直行便はANAの1本しかないので早めにチケットを取る必要がある。

入国審査は2時間待ちだった。
小さ目の空港なので、複数の飛行機が着陸した場合は大混雑するが、とくに焦る様子もなく淡々と入国審査が行われる。
指紋の採取をセルフで行う端末は使われず、全て窓口で行っていたのも時間がかかった原因だと思うが、端末自体はあったように見えた...謎。

出国ロビーには飲食店や小さなお土産屋さんなどあるので、安心していい。
快適電源スペースも有る。



施設内で喫煙はもちろんできない。
ターミナルAのチェックインカウンターの建物を出て右に少し歩くとスモーキングスペースがあった。取り壊されず来年もあって欲しいものだ。
タバコを吸いながら撮影した景色はこんな感じのところ。




サンフランシスコ空港の場合は、たしか1番チェックインカウンター側の出口から出た所、屋根の下で吸えたが、サンノゼは完全な屋外。
撮影時はすごく稀な雨のタイミングだったが、日差しの下でなくて助かった。


交通事情

SJCからダウンタウンまで公共交通機関を使う場合。
  1. VTAバス(無料)で、空港からMetro/Airportへ
  2. VTAライトレール($2)で、Metro/Airportからコンベンション・センターへ
VTAライトレールは路面電車。駅は無人で検札なし。一律で$2。
道の真中にドーンと駅がある。



券売機があるので購入してから乗る。
Clipperカードの場合も駅にある端末にピッとかざして支払っておく。
降りたい駅でボタンを押してStop Requestする、バス方式。
ボタンは、細長すぎて一見ボタンに見えないので注意w
ちなみにバスは紐を引っ張ってStop Requestする。
バスは、サンフランシスコに比べて綺麗で乗りやすかった。

ダウンタウンはバスが多くあり、結構どこでもいける。
が、車社会の街であり、日差しも強いので、30分くらいの徒歩でも侮らず何かに乗るのをおすすめ。
元気な人は、レンタサイクルもよいかもしれない。


喫煙事情

カルフォルニア州では建物内は完全禁煙。
建物の出入り口ら25フィート(7.6m)離れなければいけないというルールがあるが、日本のように喫煙スペースは用意されていない。
なので、日本人的には携帯灰皿は必須。

今回宿泊したホテルの入り口には灰皿があったのでとても助かった。
こんなきれいな所でゆっくり吸えるなんてかなりラッキー。


上記の写真のような灰皿をよく見かけるのだけど、火をもみ消す所がない。たまに、灰皿の中で、火が消えないタバコがモクモクしてたりする。
不便と思わないのだろうか....謎。

サンフランシスコでもそうだったけど、吸っていると「タバコを売ってくれ」と声をかけてくる人がかなり多い。日本でそう声かけられたら絶対断るし...いつも迷う。みんなどうしてるんだろうな。


食べ物事情

到着すると、まずお水をガロンでいつも買っています。ペットボトルでちまちま買うよりお買い得。ウォーターボトルを持参すれば外出時にも対応できる。
今年は、Safesay というスーパーマーケットに行ってお水を調達してきた。
パンとかヨーグルトとかビールとか....心の支えを何か買っておきたい人には良さげなお店と思う。

夜9時を過ぎると、気軽に飲食できるお店がことごとく閉まっていくので注意。
WWDCイベント後に別のイベントに行ったりすると、帰る時間帯には食べ物難民になってしまうのだ。

今回、宿泊しているホテルで24時間軽食を注文できるサービスがあったので、それで生き延びた。いや、マジで。

W Santa Clara St. にも飲食店が多い様子。
次回には、San Pedro Square Market にも行ってみたい。


電波事情

モバイルWiFiは使わず、ソフトバンクのアメリカ放題 と ホテル提供のWiFiで過ごした。
観光などせず、コンベンションセンター周りで過ごしていた限りでは、Sprintは特に問題なく使えていたように思う。
そういや、SJCではフリーWiFiがなかったのは残念だった。



• • •

2017年6月2日金曜日

WWDC 2017の期待

WWDC 2017がとうとう来週から始まります。今年も行ってきますよ!
どんな発表が今年はあるでしょう?? 楽しみです。

新型 iPad Pro, Macbook や、Siriスピーカーなどのハード面の噂が色々。
が、私的にはヘルスケア系とApple Watchがとても気になります。

Siri スピーカー

Siriスピーカーが新しいハードとして発表されたら、盛り上がるかもー
もしかしたらApple TV に Siriスピーカー付くという方向も有るか?

んが! Google HomeやAmazon Echoと同じような物だったら、そこまで物欲沸かないのですよね。とはいえ、どんな機能があれば欲しくなるのかも思い当たらないのが苦しい所だけど。

Google IO 2017ではAI押し感が半端なかったですが、Apple はSiriスピーカーでAI的な要素を見せるのか、否か。

iPhone8のワイヤレス充電

くるかな? Qiのような置くタイプじゃなくて、部屋にいるだけで充電できるとかだと、凄く嬉しいなー。

Apple Watchで血糖値が測れる?

血糖値が測れるApple Watchバンドが、本当に出てきたら嬉しい!
バンドでなぜ測れるのかが、意味が分からないですが、汗とかですね? 測れたら画期的だなー!

Apple WatchのWatch Face

Watch Faceの作成がサードパーティでもできるようになって欲しい!
バッテリーの消費も随分改善されたので、Google Wearみたいな常時点灯モードも、そろそろ来てもおかしくない??

ヘルスケアのマルチデバイス対応

ヘルスケア(Healthkit)のデータは、iPhoneを母艦としてApple Watchと1週間分(?)同期しています。iPadやApple TVでは使えません。
Apple Watchでワークアウト中などでは細かな単位で測定できるようになったので、データ量がどんどん増えていくんですよねー。
このままの方針だと破綻しちゃうんじゃないか...と。
カレンダーのように、同期する期間を設定できて、マルチデバイスで同期できるようにして欲しい!

ヘルスケアデータの母艦をiCloudにしたら、イレギュラーな値を検知したら自動的に家族に通知がいくとか、病院に連絡いくとか できるんじゃないかな!

睡眠トラッカー

Appleは先日、睡眠追跡のBedditを買収したので、睡眠トラッカーとしての進展があって欲しい気もするけど、WWDCのタイミングで期待するのは時期早々か。

ヘルスケアのロック中アクセスの許可

iPhoneのロック中は、ヘルスケアの情報が取得できません。
そのため、Todayウィジェットには表示できないし、1,000歩歩いたタイミングで通知するようなこともできない。
個人的な情報なのでそうしているポリシーは理解できるのだけど、歩数ならいいんじゃん?とかも思う。
「歩数はロック中のアクセスを許可する」 とユーザが指定できるような機能を追加してほしいー!
そうすれば、Standlandで要望の多い通知機能も実装できるのにーーー。

通知をもう少し賢く

iPhone をActiveしたまま放置中に通知が届いたので、気づかなかった というのが多い。
ActiveであったとしてもiPhoneを見てるとは限らないし、通知を見るどころじゃないよ今は!って時もある。
Apple Watchを持っている私としては、
Apple Watch装着中は常にWatchに通知が届く。iPhoneではポップアップ表示は無しで通知センターを見れば並んでいる という使い方ができると嬉しいんだけどなー。




• • •

2017年4月7日金曜日

疲れた時にオススメな少女漫画2選

お仕事について一喜一憂する毎日で、たまーに心が荒んだりするわけですが、そんな時には気分転換に漫画を読んでいたりします。
そこで今回は、お仕事で疲れた人にオススメする2つの漫画を紹介です。
※ どちらも未完だし、がっつり恋愛系ではないのはご了承を。


QQスイーバー / クイーンズクオリティ


 

悪意=虫を駆除する掃除屋さんのお話。
掃除屋さんには特別な必殺技があるわけでもなく、地道に自分を強くする鍛錬...実際にお部屋のお掃除を愚直に繰り返す... という設定がイイ。

「強い自分になりたい」 といつも思うわけだけど、一朝一夕で手には入らない。自分はその努力を続けているのか? と改めさせてくれる。
恋愛は少なめなので男性の方も楽しめると思うけど、悪意の定義や対抗方法などに共感しやすいのはやっぱり女性なのかも?

悪意は伝染する

  • 感染るかどうかは自分の状態に依存する。風邪に似ている。
  • 人は誰でも少なからず悪意を持っていて、他人の悪意に呼応して増幅してしまうことがある。
  • 悪意と思っていなくても、悪意として伝わる事がある。


悪意に感染しないために

  • 身だしなみや生活をリズムを整える(=自分を整える)こと。
  • お掃除などで「きれいになって嬉しい」と思うような、いい状態を積み重ねて糧とすること。
  • 自分の中の悪意を認め、毒出しておくこと。


悪意に対抗する

  • 心に留めるほどでも無いちっぽけなもの と突き放すこと。
  • 手紙を捨てるようにさっと忘れること。


こんな、ちょっと心に残るようなモノが散りばめられてます。



私は悪意を向けられることにとても恐怖を覚えるタイプ。
できるだけ、そういうものには近寄らないようにしていて、いつのまにかに悪意に気づかないフリをすることを身に着けてたように思います。
気づかないフリしていると、本当に自分でも気づかなくなっていくんですよね。
そして、ちょっと気づくと、どっぷり心を持っていかれて、何も手がつかなくなったりする。
自分の中にいつのまにか溜まっているものを、認識して、対抗して、整理していくのも大事だな。なんぞと思った次第。



コレットは死ぬことにした




薬師のコレットは忙しさのあまりに現実逃避したくなり、偶然、冥界にたどり着く。
冥界にいるハデス様達とのふれあいの中で、見落としていたもの、諦めたものの存在に気づいていく という物語。

この漫画のいい所は、みんな誇りをもって働いていること。悪い人がいないこと。
自分に重ね合わせやすいし、ホッコリします。

コレットは、村にいる唯一の薬師。助けを求めてくる人に対応して寝る間もない毎日。
弟子はいるけどまだ頼りない。自分が頑張らなければと仕事も気持ちも抱え込んでいる。
ハデス様は、冥王であることを誇りに思うが故に、人に弱みを見せない、頼らない、犠牲にしてしまった事 がある。
家来のガイコツ達は、凄く優秀だけどハデス様に嫌われたくないからこその間違いをしてしまったり...。



お仕事で忙殺した日々を送るのは、正直、快感です。アドレナリンが上がるというか。
だけど、その中で感謝の言葉を忘れていたり、自分や他人を労ることを忘れてしまったりしがち。
忙しいからと犠牲にして良い事なんて実はほとんどなくて、そういうことを考えるのが面倒になっているだけのことが多かったりする。

私はよくこの状態になりがちで、仕事で忙殺される快感をヤメれそうにはないのですが...それは自分にとって楽な道を進んでるだけなんですよね。
多忙に流されるのは楽ではあるけども、モチベーションが上がるわけでもない。
たまには...新しい事してみるとか...初心を振り返るとか...セミナーに参加してみるとか...自分に投資してみるとか...自分にご褒美あげるとか....すべきですよね。気合いるけどw



以上、オススメ2選でした!


• • •

2017年2月8日水曜日

Trackpadを使ったシミュレータ操作の悩み

Trackpad一筋。マウスを使わなくなってもう数年経ちます。
Cafeでの作業もしやすいし!

...が、悩みが一つ。

Trackpadの設定で、「Force Click and haptic feedback」をONにすると、XCodeのiPhoneシミュレータでスクロールするのがとっても難しくなる。

ぐいっとスクロールすると、Force Clickと判断されるのか、スクロールが動作しなくなる。
そうなると、Padから指を離してもスクロールできなくなる。
シミュレータ上で画面を切り替えると、復活するが、気を抜くとすぐに動作しなくなる。

Force Click and haptic feedbackをOffにすると解決はする。

...が、

Force Clickを使いたい場面もある。
iPhoneシミュレータで、3Dタッチとか。
Apple Watchのシミュレータでは、Watch Faceのカスタマイズする時とか。

Apple WatchのシミュレータにはPressとDeepPressの切替できる機能はあるものの、いちいち切り替えするのがとっても面倒。

両方とも解決するよい方法/設定はないものか?
みんなはどうしているのだろう?





• • •

2017年1月29日日曜日

Watch Connectivityがうまく動作してくれなかった話

iPhone と Apple Watch のデータ送受信で使う、WatchConnectivity
その中の通信方法である、updateApplicationContext(_:) がうまく動かなくてしばらくハマった。

sendMessage(_:replyHandler:errorHandler:) は正常に動作するので、activate() のし忘れということも無い状況。
処理を行うタイミングを色々変えてもダメ。

いろいろ探ってみてわかった原因は...

送信内容が、前回送ったものと同じの時、送信されない

ということ。
(sendMessageは、同じ内容でも送信される)

状況をもっと正確に言うと、
アプリをインストール後、1回目の送受信はうまくいく。
だが、2回目以降で、送信内容が同じの場合、送受信が全くされない。
違う内容を送信すると、送受信できる。

「前回と同じ内容なんだがから、送受信しなくてもいいんじゃない?」 という発想の仕様なのだろうか。
だが、Apple Watchのアプリを再インストールした時など、送信先の状況が変わっている可能性だってあるのに...!

以前(watchOS2? XCode7?)は、同じデータ内容でも送受信できてた気がするのだが、気のせいだろうか...?


• • •

2017年1月23日月曜日

watchOS3.0 Complicationの更新方法

Apple WatchのWatch Faceに表示できる、Complication(コンプリケーション)。
ここでとても大事になってくるのが、どれくらいの頻度で更新できるのか? です。
これらは、watchOS3になって更新方法がガラっと変わりました。

watchOS 2.0


更新回数制限は明記されていません。
実際に試してみると1時間に2回まで。3回以上だと制限を超える感じ。

watchOS 3.0

watchOS 2.0のgetNextRequestedUpdateDate(handler:) は廃止され、以下の仕組みに変わりました。


iPhone のコードから更新する場合


iPhoneから更新する場合は、1日に50回まで利用可能です。
残り回数も取得できるので計画的な利用ができるようになりました。
transfer... をCallすると、そこそこ速いタイミングで更新されます。


Apple Watchのコードから更新する場合

Apple Watch上のアプリをBackgroundでも動作させるには、Workout向けアプリなど、種類が限られています。
Backgroundで動作できないアプリの場合は、時間を指定してアプリを起こす必要があります。


更新回数制限については、明記されていません。

ドキュメントを引用すると、

Background app refresh tasks are budgeted. In general, the system performs approximately one task per hour for each app in the dock (including the most recently used app). This budget is shared among all apps on the dock. The system performs multiple tasks an hour for each app with a complication on the active watch face. This budget is shared among all complications on the watch face. After you exhaust the budget, the system delays your requests until more time becomes available.

Background app Refresh タスクは予算化されています。
一般的に、システムはドック内の各アプリ(最近使用したアプリを含む)ごとに、1時間あたり約1つのタスクを実行します。
この予算はドックのすべてのアプリで共有されます。
システムは、Activeなコンプリケーションがある各アプリに対して、1時間に複数のタスクを実行します。
この予算はWatchFace上のすべてのコンプリケーションで共有されます。
予算が全て使い果たされた後、システムはより多くの時間が利用可能になるまで、更新要求を遅らせます。


1分後にBackground refreshを指定したところ、
5分後だったり、30分後だったり、1時間後だったり...と結構バラバラになりました。
だいたい10分程度ほどで更新ができているようにも見えますが、あまり多くの更新はやっぱりやめたほうがよさそうな。

...が、「予算を使い果たしたので今日はもう更新されない」というものではなく、1時間に1回は更新し続けられるのでまだ使える場面が増えたようにも思います。


通知から更新する場合

PKPushTypeComplication (iOS 9.0+)  を使って更新もできるようです。
(試せていませんが...)



• • •

2017年1月17日火曜日

プチアプリ第一弾: Smoking Logリリースしました

今年の目標の一つ、たくさんアプリを作ること。
その第一弾として、Smoking Log - 喫煙記録 をリリースしました!



これは、減煙するためのアプリ。
前回喫煙してからどれくらいの時間が経ったのか?をみつつ、続けて吸いすぎないように気をつける事ができるようになります。
Apple Watchアプリももちろんあるっ

登録は、+ ボタンを押すとカウントアップするだけ。(過去の入力はできない)
...というとーってもシンプル機能。
機能を多く欲しい方には向いてません。ごめんなさい。

このアプリは、Flask LLPではなく、個人アカウントからリリースしています。

こういうプチアプリは、気軽に個人アカウントでリリースして、これは伸びそう...となれば、機能や、洗練度を上げてFlaskにお引っ越しという方向もありかなー?とも目論見中。

この手の減煙アプリはすでにApp Storeに存在するのですが、使い勝手、デザイン、Apple Watchアプリの有無などを見ていくとコレ!と思うものがなくて作成に至った次第。
続けて記録していく系のアプリは、気に入ったものでないと続けられない...デスヨネ。

減煙のために作成したアプリですが、タバコっぽいモチーフはアプリアイコンぐらい。
なので、日ごとにカウントする とか ストップウォッチ とか別の用途に使えるかもです。
アプリ本体は無料なので、よければどーぞ!


• • •

2017年1月9日月曜日

2016年ふりかえり

明けました2017年!
2016年を振り返りつつ、今年を考えてみる。

Appleの課金系動き

iAd の終了

2016年6月末、iAdが終了した。
iAdとはiOS用の広告プラットフォームで、開発者はiAdを組み込んで広告を表示することにより収入を得ることができなくなった。

Search Ads 登場

Search Ads がUSストアに登場。
Search Ads は、App Storeの検索時にそのキーワードに沿った広告を出せる機能。
この仕組は、アプリ内広告よりはタップされる可能性はたしかに高いと想像できる。

自動継続課金のハードルが下がる

自動継続課金が、メディア系以外でも使えるようになった。
また、2年目からの利益は70%から80%に変更された。

放置アプリをApp Storeから掃除開始

AppStoreに放置されていて最新のレビューガイドラインに沿っていないアプリは削除されることになった。


これらの目的はいろいろあると思うが、AppleがApp Store上のアプリ品質を上げたいという意図があるのは確かと思う。
そして、アプリ内広告だけでは、継続的にアップデートできるような収入を得ることは難しいと判断したとも捉えられる。

アプリの売上だけで開発を続けていきたい私としては、考える事が多いところ。

Apple Watch

2016年秋にwatch OS3が登場。Glanceがなくなるという衝撃事件が発生。
Glance系のバグレポートをいくつか出していたが、ずっと未対応のままだったのはそういうことか。
代わりにDockが追加されたが、Life Cycleがなかなか難しい事になった。

ともあれ、iOSアプリを作成すると、Apple Watchアプリも対応したくなる。
これは、私がApple Watchを持っているからというのが大きいからだろう。
それと同時に、Todayウィジェット欲が消えていった。
Todayウィジェットで表示したかった機能は、Apple Watchアプリで欲しい機能とほぼ同じことが多いからだ。
この感覚は、Watchを持っていない人とズレてしまうので気をつけなければいけない。

Apple Watch Series 2 の発売後、Watchユーザーは増えたような気がする。
だが、もう少し増えてほしかったとも思う。
スマートウォッチの分野の広がりはこれぐらいが限度なのだろうか。

2017年に向けて

Apple Watchアプリは、もうしばらくは取り組んでいくと思う。
Apple TVアプリは、なにかtvOSにテコ入れがあるまでは、多分手をつけない。
iPhoneアプリは、ちゃんと作る(!?) Flaskアプリの他に、個人アカウントであまり時間をかけずに作成したミニアプリを追加していきたい。
macOSのアプリにも手をつけてみたい。
健康に気をつけたい。

今年もよろしくおねがいします!


• • •