AAAなブログ

あなたの求めているものは、ここにはない!

iOS 15 の SharePlay, さっそくドロップ。

今秋公開される予定だった SharePlay 機能だが、やっぱりサービス開始できなくなったようだ。

 

developer.apple.com

 

やっぱり。

そうなるでのはないかと危惧していた。

 

hatesatekite.hatenablog.com

 

 

iOS 14 の新機能のはずだった「4カメラ同時録画」と同じ轍を踏むのかな?Appleは 「今秋の後半」に公開する予定と言ってるけどどうなるかはわからない。

AV関連機能はデバイスのスペックのみならず、スペックの状態の影響を受けるので実現は難しい。気温の高い地域ではCPUの動作も制限されるし、安定して動作しないサービスを大々的に開始するのもまずいでしょうし。

 

まあ、ぶっちゃけ SharePlayなんてサービスは使う人いないと思うけどね。

映画は一人で見させてくれ。

 

public private(set) var の使いどころ

Swifyな皆さんこんにちは。private(set) var はよく使いますよね?

 

外部からreadOnlyにしたい時に便利です。例えばこんな感じ。

 

private(set) var data: Data

// クラス内からは set/get が可能, クラス外からは get のみ可能

 

 

CocoaPods にライブラリを公開する

最近 Podsに自作のライブラリをオープンソースで公開してるのですが、その場合プロパティは internal ではアクセスできず public にする必要があります。あれ、private(set) じゃダメじゃん。で、どうするんだっけ?調べてみました。

 

public private(set)

これでいけました。基本 public アクセスだけど、setはprivateですよって意味ですね。ちなみに private(set) public でも同じ。基本的なことかも知れませんが今まで知りませんでした。private(set) は internal private(set) の省略形と考えると理解できました。まああまり外部ライブラリとか作ることなかったので・・・1行で書けて便利なのでこれから積極的に使っていきます。

 

 

Swift 5.5 の async/await は革命的かも知れない

 

Xcode 13 beta に Swift 5.5 が同梱されており、async/await が利用できるようになっている。

WWDC21 のビデオをいくつか見てみた。

これによってパフォーマンスが劇的に改善するとか、そういう類のものではなさそうだ。しかし、調べるにつれて「これは凄そうだぞ」と感じるようになってきた。何かに似ている。

そうだアレだ。

 

 

ARC に似ている

Automatic Reference Counter という黒船が Xcodeにやってきた時のことを覚えているか?allocation / release が常識だった時代に、メモリ管理を全て忘れさせてくれたあいつだ

 

 

async/await はスレッド競合を過去のものに

今後の非同期プログラミングはasync/await一択になっていくだろう。我々が今まで学んできたスレッドの概念はすべてラップされて意識的に行うものではなくなっていくのだろう。そしてもっと重要な課題にフォーカスする環境が整ってきたと言えるのかも知れない。

ちなみに、描画関係はUIスレッドでというあたりはメインアクターという仕組みが用意されている。

 

 

 

いいことなのか、悪いことなのか?

こうして時代は進み、プログラミングはどんどん簡単になっていく。しかしコードの本質を理解していないプログラマは増えていく傾向に見えることもある。メモリ管理やスレッド管理はシステムにお任せ。少しくらいメモリリークしても最近のデバイスはメモリたっぷり積んでるから大丈夫。解析ツール?なにそれおいしいの?

我々にできることは、自らの実力を遺憾無く発揮して最高のものを作り続けるだけだ、と改めて感じた次第である。

 

 

 

 

モンテレーで3Dモデルを生成したい!Native session create failed: CPGReturn(rawValue: -11)

macOS 12 beta (Monterey)を入れた。

写真から3Dモデルを生成する機能を試したかったのが理由です。

やってみたのですが・・・

 

エラー発生

Error creating session: cantCreateSession("Native session create failed: CPGReturn(rawValue: -11)")

 

 

原因

Developer Forums の情報によると、単純に私のmacのスペックが低すぎるとのことです。残念。

ちなみに MacBook Pro でメモリ16GB 課金して積んでます。

ところが! VRAM必須要件が 4GB とのことで。私のMacには 1.5GBしか積んでませんでした。

さすがに3Dモデルを作るにはGPUたっぷり動かすんですね。

新しい Mac 買うしかないな・・・

 

 

iOS 15 beta の SharePlay を動かしてみた

 

SharePlayは iOS 15 の目玉機能のひとつと言っていいでしょう。

FaceTimeでグループ会話中に、みんなで映画を楽しむことができます。

映画はタイミングが同期されており、メンバーのうち誰かが停止したり飛ばしたりすると、他のメンバーにも再生位置が反映されます。

会話を楽しみながらワイワイ見るのに適したサービスです。

 

 

やってみた

WWDC21公式ビデオに一通り目を通してから、SharePlayを動かしてみた。

iOS 15 をインストールした実機を2台用意。

さらに Apple ID を二つ用意する必要がある。

Group Activities framework を通して実装する。ビルドして実機に焼く。

 

 

いきなり動かない

FaceTimeで通話はできるのに全く同期しない。

しばらく悩んだが・・・よくよく考えたら片方のApple IDが中国大陸発行のものだった。

日本発行の Apple IDに変えたら動いた。

 

 

動いた

ビデオが同期されることは確認できた。

ただグループセッションを貼るまでのフローが分かりにくく、一般ユーザに使いこなせるかどうかは疑問に思う。一度同期してしまえば変なことしなければ使える。

メンバーを招待して、参加した後も招待ボタンが表示されっぱなしだったり、色々いけてない感じ。

基本的に参加者全員が同期するのだが、例えばアラームが鳴った時などはデフォルトでその人だけ同期が外れる仕様になっており、複雑さが増している。

 

さらに動作が不安定すぎる。発熱が酷くホッカイロ状態になってバッテリーの減りが早い。

 

批判の矛先は・・・

ユーザが批判する矛先はAppleではなくデベロッパに向かうのは想像に難くない。 

「SharePlayができない 星1」 

「SharePlay中に1人だけ同期できなくなった 星1」

「発熱してバッテリーがすぐなくなる 星1」

・・・それAppleの仕様です、みたいな。

 

 

 

デベロッパは対応すべきか 

動画配信サービスを運営してるデベロッパはやりたいでしょうね。

優良会員が「有料」会員を運んでくる仕組みですからね。

ただし、FaceTime経由ってのがポイントだと思います。ぶっちゃけFaceTime利用してる人ってほとんどいないので。 

開発費かけてがんばって作っても、誰も使用しなかった・・・なんてことになるかもね。

 

 

動作は安定するのだろうか

まだbeta 1 なのでなんとも言えないが、今のところ低スペックのデバイスでは厳しい。

 試しに4人でFaceTime中に、3人がビデオを見る実験をしてみたが、誰もSharePlayの使い方を理解してないので大変だし、低スペック機だと顔が映らなくなったりする。そしてホカホカになる。

デベロッパAppleの実験のモルモットとして利用されることになる。 今回の目玉機能なのでドロップになることは考えにくいが、絶対ないとも言えない。昨年の「4カメラ同時録画機能」がこっそりドロップになった例もあるし。

 

 

本音を言っていいですか?

俺は映画は一人で見たいです。

 

 

 

 

 

App Store に配信中のアプリのプライマリ言語を変更する

やりたいこと

既に配信中のAppがあるのだが、これのApp Store上でのプライマリ言語を変更したい。

日本でしか配信するつもりがなかったけど、やっぱり全世界に配信したくなったパターン。

 

アプリの言語とは

言語といっても次の3種類の区分があるので混同しないようにまず整理してみる。

1. Appバイナリの言語 - アプリ実行時に表示可能な言語。iOSの設定からユーザが選択できる。

2. App Store プロダクトコンテンツの言語 - App Store上で表示される説明ページ。

3. 配信する国と地域 - 法律や税金の差異があるため、配信エリアを限定できる。

 

1は公式情報があるし、ググれば情報も多い。

3は App Store Connect で簡単に変更できる。

ということで、本記事のターゲットは 2 です。

Okay?

 

 

プライマリ言語を変更したい理由

App Storeのプロダクトページを多くの言語で作成するのは大変。

説明文だけならまだしも、スクリーンショットとか作ってられない。

できれば英語と日本語だけで済ませたい。

 

その場合、日本語ユーザには日本語の説明を表示し、日本語ユーザ以外(英語、中国語、ドイツ語)の方には英語の説明を表示したい。

これがプライマリ言語を英語に変更したい理由。

 

 

現状

 - App Storeに配信中のアプリがある。

 - 諸事情により App Storeプロダクトページのプライマリ言語が日本語になっていた。

 

 

まずはやってみた

App Store Connect で英語のプロダクトページを作成。

で、プライマリ言語を日本語から英語に変更する。

 

ん、できない!グレーアウトしていて変更ができない

 

 

公式をよく読んでみた

  • すでに旧バージョンに言語が追加されている必要があります。
  • 新しい言語は、App Review で承認される必要があります。言語が承認されていない場合は、ローカライズ済みメタデータを使用したバージョンが承認されるように提出します。その後のアップデートで、プライマリ言語として選択します。

 

どういうこと?

読んでもあまりピンとこない。

旧バージョンというのはAppバイナリのことを言ってるんだと思う。

でも旧バージョンのバイナリはリリース済みなので今さら言語を追加する手段がない。

 

 

試してみた

App Store Connect > App Store 情報 > 価格および配信状況 > 最終互換バージョンの設定で、(App Store メタデータに対象言語が追加されていない)古いバイナリの選択を外してみる。

これにより、ユーザはこれらのバイナリをダウンロードできなくなる。

これでプライマリ言語を変更可能になりました!

f:id:hatesatekite:20210512104007p:plain

 

まとめ

- プライマリ言語は最初から英語にしておけ。

- どうしても後から変えたい場合、過去のバイナリを無効にしろ。

 

 

さあ、大麻吸って寝ます。

 

 

Apple税の減額が適用されたっぽい

 

App Store Connect でレポートを見た感じ、私のApple売り上げに対する手数料が減額されていることが確認できました。

 

 

 

12月3日 App Store Small Business Programへ登録

developer.apple.com

 

私は、その日のうちに申し込みました。

 

12月23日 Appleから Welcomeメールが届く

メールによると、2021年1月1日までに手数料の減額が行われる、とあります。

 

 

レポートを確認すると

Appleのレポートでは「売上」と「収益」の両方を確認できます。

つまり、手数料がどれだけかかったかは両方の数値を比較すればわかります。

私の場合、12月22日までは 30% だった手数料が、12月23日から15%になったように見えます。

「見えます」というのは、きっちりと計算が合わないためです。

 

このレポートは確定値ではないため、一時的な集計ミスの可能性もあります。

まあ、開始日が1週間早まったところでそんなに金額に違いはないのですが、弱小デベロッパには死活問題だったりします。

1月末の振り込み日が今から楽しみです。

 

 

こちらの記事を参考にしました。

iphone-mania.jp