プログラミング

エンジョイSwiftUIプログラミングその1(Apple Technical Support No.1)

ピアノ補助ペダルシステムbFaaaPの開発のためにSwiftを勉強しました。そして、その副産物として「スマホde特許管理」を開発し現在販売しています。当初どうなるかなと思っていたのですが、発売3ヶ月を過ぎて、思った以上に継続購入してくださる方が出てきていて嬉しい誤算です。特許事務所で数百万かかる特許管理のソフトに加えて自分の関連案件だけを月額350円で自身のiPhoneやiPadでiCloudプライベートデータベースを使用して管理できるという優れものです。自身のAppleアカウントが破られない限りデータは外部に流出しませんので、セキュリティーも高いです。自身のスマホですぐに興味のある案件をチェックできますので、利便性に大変優れています。最初の1ヶ月は無料なので、アプリ自体がどんなものか、特許や特許翻訳に関連のない方もアプリ開発の参考に試してみてください。

SwiftUI登場

2019年6月にAppleがSwiftUIを発表し、今後、SwiftはSwiftUIへと移行することが表明されました。そこで、bFaaaPメンバーの大瀧さんと二人でSwiftUIを勉強してアプリ開発することにしました。

大瀧さんはいろいろとSwift関連の勉強会やイベントにも参加されていて、SwiftUIについての情報も収集して教えてくれます。

私はアメリカで教育を受けたので、アメリカ人が新たな革命的な概念が出ると、既存の概念や既製物を簡単に捨て去って新たなものに挑戦移行するという行動をとるのには尊敬の念があります。

日本は戦後何もないところからスタートした場合は一生懸命頑張って新たな製品や概念を作ってきましたが、一旦既得権利や地位を確立するとそれを守ろうと行動することはアメリカと対照的だなといつも思います。日本人は頑張って獲得した知識や地位を捨て去って、新たに全く0から挑戦することはあまり選択しないような印象があります。CDなんかも外国の友人と話すと外国では「ダウンロード」「ネット配信」が普通になっているようで、AppleもCD Playerは外付けで出していましたが、今後も続くかどうかは疑問ですね?

SwiftUIでアプリ開発しているといろいろ疑問点が出てきます。その情報を得ようとしてGoogle検索しても日本語で有用サイトがヒットして解決策が得られるかというと現状ほぼないですね。日本のiOSプログラマーやプログラミング会社が既得知識や地位はさておき、新たにSwiftUIへの移行をアメリカの進行速度でしないとまた、日本のiOS開発レベルが置いてけぼりになるような危惧もあります。したがって、現状SwiftUIの情報を無料で得ようとする場合、英語でGoogle検索して英語の情報を得るしかないのが現状です。また、そのようなネット情報も実際自身の直面している問題に役立つかどうかは分かりません。

そこで、私がSwiftUIプログラミングの問題点の解決に利用している「Apple Technical Support」の利用の仕方をこのブログシリーズの最初に紹介しようと思います。

現在開発中のSwiftUIプログラムの紹介

現在私が開発しているプログラムは3つあります。それを簡単に紹介します。今後、このブログシリーズで有用だなと思う情報を載せる際にどのことを言っているのかがわかるようになると思うからです。

1.ヘルパーKの早業3分クッキング

ヘルパーKアプリでは、WordpressベースのこのbFaaaPブログシリーズをアプリ化しました。人気ブロブをiOSアプリで選択閲覧することができます。また、「ヘルパーKにおまかせ」ビューでは、ヘルパーKと日本語、英語、ドイツ語の3ヶ国語でお喋りしながらお好みのメニューをヘルパーKが選んでくれます。このアプリは日本の方を対象にするというよりは、日本のヘルパーメニューを英語とドイツ語で全世界に紹介することが目的です。自身のブログを日本の方に紹介するだけではなく、英語とドイツ語で全世界にiOSアプリを通して宣伝し、広く愛されるようなブログを作成したいと考える方にお役にたてるかもしれませんね。現在、審査前の最終段階でtestflightというアプリの前段階チェックを日本と外国に住むモニターさん(友人)にお願いしています。その後、審査に出しますので、新年早々に販売開始できると良いなあと思っています。

2.bFaaaP Pager自動楽譜めくり装置

bFaaaP®️(商標登録済み)は、頭部動作の信号を利用して(全世界に国際公開済み、日本国特許出願審査中)ピアノペダルを自由に操作することを可能としたピアノ補助ペダルシステムです。

bFaaaPは主に足に障害を持つ方や小さい子供を対象にしていますが、bFaaaPにさらに機能を付加することを検討しbFaaaP6を現在開発中です。その付加機能とは、「楽譜の自動譜めくり機能」です。現在、頭部動作の垂直方向のモーションをペダル操作に使用していますが、頭部動作の水平方向のモーションを譜めくりに利用することにしました。つまり、ピアノ演奏者は従来手で楽譜をめくっていましたが、手を全く使わずにbFaaaPのレスポンス速度の利点を保持したまま楽譜も自動でめくることができるように設計しています。楽譜は自身や先生が指示を書き込んでくれた楽譜をPDFとして写真などから取り込んで、iPadで表示します。そして、その書き込みのある楽譜を手を使わずにbFaaaPの水平方向シグナルでコントロールします。この機能をbFaaaP Pagerと名付けました。このbFaaaP Pagerは本来のペダル装置とは切り離して販売も目指しています。bFaaaP Pagerはピアノだけでなくあらゆる楽器演奏者が対象です。個人演奏会での補助者も要らなくなるでしょうし、オーケストラでの譜面立てにbFaaaP Pagerを使用するとオーケストラでの楽譜めくりも可能となります。

bFaaaP Pagerのハード部分(眼鏡装着型モーションセンサー(意匠登録済み)とArduinoプログラミング)は、成澤さんが主に担当していて、現在基本プログラミングは出来上がっています。私と大瀧さんはiOSプログラミングを担当し、SwiftUIで開発中です。現在、PDFを表示し譜めくりする部分のプログラミングはできました。

3.「スマホde特許管理」SwiftUIバージョン

「スマホde特許管理」はSwiftUIバージョンとして生まれ変わる予定です。まだ予定段階ですが、SwiftUIの利点を利用して、iOSデバイス(iPhone, iPad)だけでなくmacOSでも利用可能にしようと計画しています。つまり、iMacやMacBookでもiOSデバイスと統合してiCloud中のデータを共有して一体的特許期日管理を実現する予定です!こうご期待!

Apple Technical Support利用方法

まず、このサービスを利用するためには、Apple Developerプログラム(年間約12,000円)に登録しなければなりません。しかし、本格的にiOSプログラミングをしたければ登録することをお勧めします。これにより、本日紹介するcode level support(Apple Technical support)やtestflightが利用できるようになります。指示に従いアカウント等を作成します。以後は、Developerプログラムに登録済みとして話を進めます。

まずは、Apple Developerサイトにアクセスして順に画面の指示に従い(アカウント入力等)、下の図の番号の順に操作(TSIチケットを持っていれば3〜5の操作は必要ない。また、最初に登録した際は2回分のTSIが自動的に付いている)をしてcode-level support をリクエストします。

価格は2019年12月時点では、2回で(¥11,800)、5回で(¥29,800)です。一回あたり約6,000円ですね。高いとみるかどうかは私は時間の問題だと考えています。この問題の解決に何時間かかるのかを自分の時給とかけてみると良いと思います。それと、個人で事業をしている方はもちろん経費として申告できますので、領収書をAppleのこのサイトからリクエストするとよいですよ。

次に実際のリクエストの操作を下の図を参照しながら説明します。

なんでもそうですが、実例を使って説明するのが役立つという考えを私は持っています。そこで、実際のリクエストの例を説明することで概略は省略します。今回は複雑なケースではなく、比較的簡単に問題が解決した場合を紹介します。

このケースで実際に送ったスクリーンショットです。ちなみに、スクリーンショットを撮る方法ですが、多分ご存知だと思いますが、「command + shift + 4」です。

問題は、タブバーで選択したイメージ(女の子のイメージ)がaccent color(強調した色、今回は金色になるはず)を選択しても変わらないというものでした。不思議なのは、他のタブのイメージはそのタイトルと共に色が変わるが、何故か「女の子イメージ」だけが動作しませんでした。

Googleで検索しても類似の問題はなく、自分でいろいろコードをいじりましたが、解決できなかったので、Supportに質問しました。

前記Developerの図の6でRequest Technical Supportをクリックした続きです。

1.では登録したアカウント(個人のもの、または、会社のもの)が選択できるので選択します(その際いくつTSIが残っているかも表示されます)。

2.では、でのデバイスの質問かを入力します。今回の場合は「iOS」です。

3.質問のタイトルを入力します(Technical Supportは英語でしか対応していませんので英語で入力する必要があります)。

では、ここで、英語が苦手な方がどのようにすればよいかということについての一つのソリューションを提示します。実際、大瀧さんはそれほど英語ができるわけではなく、英語の文章は読めても作文ができないとおっしゃっています(謙遜かもしれません)。大瀧さんの Apple Technical Supportをお手伝いした際、私が提案したのはGoogle翻訳の活用です。

例えば、今回は「カスタムTabBarイメージにアクセントカラーを設定するやり方」ですよね。Google翻訳の訳文は以下のようなものです。

私が実際に入力したのは「How to set the accent color of custom TabBar image」です。以下同様なやり方で英語の文章を入れたり、email の作文をすれば良いと思います。

4.Descriptionでは、問題の説明をします。以下のように入力しました。

 I used a custom TabBar image. Although other system images can be changed to an accent color when tapped, this custom TabBar image didn’t. Please instruct me how to set the accent on the image. I will attach my project file and a screen shot to explain. Thank you very much. 

5. Configurationは自身の開発環境を入力します。

iMacPro, MacOS 10.15.1, Xcode 11.2 

6.Steps to Reproduceでは、どのようにすれば症状が出るかを示します。英語では、このような場合は、命令形で書くと分かりやすいです。Google翻訳の結果が通常文の場合は命令形(動詞原形でStartするとだいたいはよい)で記載するとよいですよ。先ほどの問題説明のScreenshotに赤ボックスと数字を記載することで説明することにしています。この図の作成は私はPowerPointを利用しています(私は翻訳業務にWindowsでしか動かないソフト(TradosStudio)を使用する場合があるので、MacOSにParallelsを導入してWindowsを走らせその上でMicrosoftOffice365や翻訳関連業務ソフトを実行しています)。もちろんKeynoteでも作成可能だと思います。

A. 1.Go to the TabbedHome.swift

B. Check the code at 2.

C. Tap the TabBar item at 3.

D. The girl’s image did not change to an accent color. 

7.以上の情報を入力後に7の「Submit Request」ボタンを押します。

そうするとApple Developer Technical Support (DTS)からすぐに自動メールがきます。(この中で先ほどの入力を確認できます。)

次に、このメールに返信して、プロジェクトファイル(Zipにしたもの)と先ほどのScreenshotを添付します。

この際の英文は以下のような決まり文句でよいでしょう。アメリカの習慣で自分のことはファーストネームの方が親近感があるので私は「Tomo」を使用してやりとりしています。また、文の最初に「Follow-up番号」を入れる決まりになっています。

Follow-up: 723608293
Dear Sir.
Please find attached the project file and a screenshot.
Thank you very much for your assistance.
Tomo

そうすると、しばらくすると(通常1週間弱)回答がAppleからあります。今回のケースでは以下のようなものでした。

Follow-up: 723608293

Hello,

Thank you for your inquiry to Apple Worldwide Developer Technical Support.

I am responding to let you know that I have received your request for technical assistance.

I ran your project on various versions of Xcode in isolating down the problem.

Xcode 11.1 running iPhone iOS 13.1.3 (and simulator) – problem shows up.

Xcode 11.1 running iPad iOS 13.1 and 13.2 (and simulators) – problem shows up

Xcode 11.0 running iPhone iOS 13.1.3 (changed deployment target to iOS 13.0) – problem shows up

Xcode 11.2 running iPhone iOS 13.1.3  – problem shows up

So it does not appear to be a problem with a particlar Xcode version or the SDK you are linking with.

So I tested my project with your template image “omakase” that is non-Swift-UI-based:

Xcode 11.1 running iPhone iOS 13.1.3 – OK

Xcode 11.0 running iPhone iOS 13.1.3 – OK

Xcode 11.2 running iPhone iOS 13.1.3 – OK

So with my project and your template image it appears to be OK.

This is a bug with Swift-UI-based projects.

Please file a bug report to: https://feedbackassistant.apple.com/welcome

Best regards,

つまり、要約すると、いろいろな実行環境でテストしてくれて、今回の問題がSwiftUIのシステムバグであることを教えてくれました。つまり、開発者レベルで解決できる問題ではなかったわけです。そこで、指示があるようにアップルのバグ報告サイトにこのバグを報告しました。これで、バージョンアップしたXcodeでbuildすれば直っているということが期待できます。

このようなサポートを受けた後は、必ずお礼のメールをいたします。お礼をするのは日本だけでなくアメリカでも当然のことですよ。ちなみ「AAAA-san」の「さん(san)」は結構世界で通用するような感じですね。インターナショナルな仕事をされている外国の方で日本について少し知識がある方は「san」でもOKな印象を持っています。

Follow-up: 723608293

 

Dear AAAA-san

 

I reported the bug to the corresponding web site.

Someone should take care of this problem

 

Anyway, thank you very much for your time and assistance.

 

Tomo

関連記事一覧

コメント

この記事へのコメントはありません。