[Xcode] watchOS専用アプリの設定トラブル

[Mac M2 Pro 12CPU, Sonoma 14.3.1, Xcode 15.2]

初めてwatchOS専用アプリを作製しています。

プロジェクトの設定、Archiveのアップロード、App Store Connectでのアプリ登録で深みにハマりました。

24/04/05追記
後で読み返すとプロジェクト設定の解決方法が分からないので結論を先に書いておきます。Watch-only Appとしてプロジェクトを作成した際にファイルのないiOSターゲットが作成されていれば成功、なければ失敗です。間違っても削除しないように。Archive作成時にApple DeveloperサイトのIdentifiersにアプリを登録、Profilesでプロファイルを作成し、Xcodeで登録する必要があります。Xcodeから自動的にIdentifierが登録されている場合はXCが先頭に付いているので編集しましょう。

1.プロジェクト設定
Watch-only Appとしてプロジェクトを作成します。下図のようにターゲットとして空のiOSアプリが表示されます。ビルド時に意味不明なエラーになり、iOSアプリを削除してみると正常になりました。これが間違いの始まりでした。

意味不明なエラー(再現性なし)

iOSアプリには独自のBundle Identifierが必要です。デバッグ版ではサイニング管理は自動で問題ないですが、TestFlightにリリース版をアップロードする際は固有のProvisioning Profileを作成してインポートします。App Store Connectでのアプリ登録にはiOSアプリのBundle Identifierを使用します。

watchOS専用アプリであっても、登録しない方のBundle Identifierの末尾に”.watchkitapp”は必須です。メインのアプリだから要らないだろうと勝手に判断していました。

2.Archiveのアップロード
空のiOSアプリがないまま、watchOSアプリとwatchOS拡張だけで開発を進めたためにArchiveがアプリとしてではなくターゲットとして作成されてしまいました。当然アップロードはできません。

不備があろうが最後まで開発できてしまうというのが非常に厄介です。空のiOSアプリが必要という警告が必要かと思います。

3.App Store Connectでのアプリ登録
空のiOSアプリは後から追加できません。不備な状態からファイルありのiOSアプリを追加するとArchiveが作成されてアップロードできますが、バンドルしているはずのwatchOSアプリが含まれていないので意味なしでした。

とにかくシミュレータの動きも怪しく、実機の方が確実です。最近、開発用にiPhone SE(第2世代)の中古を購入しました。Apple Watchも2台持ち(中古Series 8と開発用SE初代)です。

visionOSアプリの挙動をVision Proで確認できないのが何とももどかしい。 気軽に買えないのがつらいところです。今のところ購入予算は15万円です。廉価版整備品だとしても再来年あたりになるでしょうか。

XcodeやApp Store Connectのダメなところが一気に押し寄せてきて、かなり疲れました。開発者は少なからず鬱積した感情を抱えていることでしょう。

Apple Vision Proのアクセサリ Developer Strap 24/2/5

Apple Visionシリーズは来年以降販売予定の廉価版を購入するつもりです。

本体20万円以下なら買おうかと思っていましたが、アクセサリもかなり高価というのが判り、本体15万円以下に購入判断基準を下げざるを得なくなりました。

同時購入予定のアクセサリは以下の2商品です。

1.Developer Strap(開発者向け商品) $299:開発アプリのインストールに必要
2.Travel Case $199:持ち運び用ケース

合計498ドルは1ドル150円換算で74700円になります。

廉価版といえ本体15万円以下になるとは考えにくく、整備済製品が出回るであろう再来年以降の購入になりそうです。

24/2/5追記
WiFi接続でもMacから開発アプリをインストールできるようです。Developer Strapは買わず、購入判断基準を20万円に戻します。

[Xcode] Data Modelの完全削除方法

[Mac M2 Pro 12CPU, macOS Ventura 13.5.2, Xcode 14.3]

XcodeプロジェクトのCore DataにあるData Modelを完全削除する方法がようやく分かったためメモしておきます。

Core Data自体をXcode右メニューから削除して再作成しても上手くいかないので、下記の方法をおすすめします。

1.xcodeprojファイル内にあるpbxprojファイルをエディタで開く。

2.削除したいData Model名で検索する。今回は”NotePad”。

3.該当箇所を削除する。今回は2行削除した。

CEA4CC2F2A4A5661006739EA /* NotePad.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = NotePad.xcdatamodel; sourceTree = "<group>"; };

CEA4CC2F2A4A5661006739EA /* NotePad.xcdatamodel */

4.Core Dataの本体であるxcdatamodeldディレクトリの中にある対象xcdatamodelファイルを削除する(今回はNotePad.xcdatamodel)。

5.プロジェクトを開き、対象Data Modelが消えていることを確認する。

pbxprojファイル内を掃除しない限り、xcdatamodelファイルを削除してもData ModelはXcodeナビゲーターエリアから消えません。

Xcode内の操作でData Modelを削除できないというのは、XcodeがIDEとして完成度が低いことを物語っています。

このような使い勝手の悪さを改善していかないと今後もAppleアプリ開発は盛り上がらないでしょう。

VSCodeを使ってData Model関連箇所を削除

App StoreのKindle for Macに異常発生

[Mac M2 Pro 12CPU, macOS Ventura 13.3.1]

新しいMacにデータ移行してKindleを起動するとライブラリにある本の表紙が一部無地になってしまう不具合が発生しました。

削除してApp Storeから再インストールしても同じです。

結局、Amazonからダウンロードして解決しました。前にも同じようなトラブルに巻き込まれたような気がします。

公式アプリであるApp Storeがダメで、公証済みアプリとはいえ外部サイトからはOKという状態になっています。

Apple Care+の購入ルール 2023年8月

Apple Care+のアカウント残高による購入は機器購入時のみ可能。

機器購入30日以内にApple Care+を購入する場合
1.Appleサイトでの購入はクレジットカード決済のみ
2.Apple Storeでの購入は機器を持ち込んだ上でAppleギフトカードでの決済可能。
ただしカード番号未使用に限る。アカウント残高にすると使用不可。
Appleセールなどで受け取ったAppleギフトカードはおそらく不可。

上記内容が正確とは限らないのでAppleサポートへ要確認。

[LTspice] 04 Mac版の操作方法 その2 GND,コマンド,部品記号,色設定

[MacOS Ventura 13.3.1, LTspice for MacOS 17.1.4]

1. GND
Draft – Net Name

2. コマンド
Draft – SPICE directive

0-15分まで,0から50ms間隔で測定

3.抵抗(長方形表示)
Draft – Component – EuropeanResistor

4.電解コンデンサ
Draft – Component – PolarizedCapacitor

5.色設定
Control Panel – Waveforms – Configure Colors

[Parsec] 外出先からPC電源ON 米粒マイコン ATtiny10

[MacOS Ventura 13.3.1, Windows11]

外出先からPC電源をONにする方法としてはIoTデバイスを使うのが便利です。

物理的にスイッチを押してくれるデバイスがまず思い浮かぶところですが、毎回確実にスイッチを押してくれるのか心もとない面があります。また自分で押す時には邪魔になります。

そこで今回はスマートプラグを使ってマザーボードの電源スイッチをショートさせる方法にしました。

余り物前提のArduinoを使う方法がネット情報にありましたが、かなりのオーバースペックになるので長さ3mmの米粒マイコン(ATtiny10)を使いました。これでもフラッシュメモリの使用率はたったの7%(74/1024Bytes)です。

主な部品(秋月電子で購入):
ATtiny10実装モジュール(DIP化) 150円 [マイコン単体は50円]
5V小型リレースイッチ 80円
USBコネクタ Type-B 50円

Arduinoは画期的で使い勝手の良い商品ですが、マイコンを使うと低コスト、小型化が可能になります。是非とも挑戦していただきたいものです。

ちなみにArduinoはUno正規品1個、互換品3個、ATmega328P(ブートローダ書込済)3個を持っていて余りまくっているものの、さすがに今回の用途では使う気になりませんでした。

電源ON/OFFユニット

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
	DDRB |= 0b00000001; //PB0を出力に設定

	PORTB |= 0b00000001; //PB0をON
	_delay_ms(500/8); //500ms待機(8分周のためコードで調整)
	PORTB &= ~0b00000001; //PB0をOFF

}
ATtiny10は5Vで書き込みをする(3Vではエラーになる)
PasSを使って部品配置図作成(Windows版のみ)

参考サイト

[Parsec] 外出先のMacからログイン待機WindowsPCを操作 Shared

[MacOS Ventura 13.3.1, Windows11]

外出先のMacからログイン待機WindowsPC操作を試みました。

使用した回線:povo データ使い放題(330円/1日)

接続先のWindowsPCはスタートアップにParsecのショートカットを入れておきます。Parsecはログインを保持した状態にしておきます。

外出先のMacをテザリング接続しParsecを起動すると、電源ONになっているWindows11PCを認識できるので接続してログインします。

一連の操作はデータ量的に動画を視聴しているのと同じ状況ですから、たまに速度制限がかかることがありますが、多少の遅延が生じる程度でさほど影響はありませんでした。ゲームは厳しいでしょうね。

電気代を気にしない方は外出時にWindowsPCの電源をONにしておけば良いのですが、やはり外出先から電源ONできるようにする方が経済的でしょう。

リモート電源ONの方法については次回以降検証します。