[Swift] 新型「iPad Pro 2018」開発の進め


2019年になっちゃいましたが、遅らせながら投稿いたします。

前置き

Appleが新型のiPad Pro(2018)

(参考: Apple公式)

  • 11インチ
  • 12.9インチ

の2モデルを2018年11月7日に発売しました。

上記に伴って、Appleは11~12月にかけて企業向けにWorkshopを開催していた。
(一般参加はなく、Appleと直接やりとりのあるアプリ開発をしている企業周りが参加できた、っぽい)

これは良くある動作確認レクチャーのようなワークショップではなくエンジニア・デザイナー向けのもので、
その中で得られた知見を、共有できる範囲でここに記載できればと。
(ワークショップ自体はコンフィデンシャルな(守秘義務がある)ので内容を話せない)

機能・デザイン

新しいiPadが今までと明らかに違うのは以下の2つ

FaceID導入とホームボタンの廃止

内容

指紋認証はなくなりホームボタンもなくなった。代わりにFaceIDが導入された。
これは一見すると、大したものには見えないが、多少なり画面サイズが変わるので、アプリのデザインが変わることを忘れてはならない。

以下、SafeArea外の比較

アドバイス

Appleの人いわく、UI/UXとしても、ボタンがなくなったので360度回転に対応するアプリが望ましいとのこと。
→ボタンがあることで、端末の向きが上か下か判断できていたものがなくなったことにも起因している

Apple Pencilのダブルタップ機能

内容

今までのApple Pencilとの違いをあげると、描きやすいとか、充電が、、、、
云々あるが、エンジニア目線でフォーカスすると、やはりダブルタップ機能の存在が一番大きい。
簡単にいうと。これはペンをダブルタップすると、特定のアクション機能が使えることだ。

例 ダブルタップによるペンの切り替え

(参考: SinSpace)

設定画面には、ダブルタップした際のアクションが、デフォルトで4つ用意されている。
やはり、ペンという名前だけあって、ペンに特化した機能が用意されている。

この4つはアプリ上(swift上)でハンドリングすることができる

実装

公式リファレンス

実装は至って簡単。以下の2ステップを踏むだけ。

1.アクション(インタラクション)を入れたい画面に追加する

let pencilInteraction = UIPencilInteraction()
pencilInteraction.delegate = self // ※ 2で追加する
view.addInteraction(pencilInteraction)

2.ダブルタップ時の挙動を実装する(Delegate追加)


class xxxViewController: UIPencilInteractionDelegate {

    func pencilInteractionDidTap(_ interaction: UIPencilInteraction) {
        // 現状ApplePencilの設定が何かを判定する        
        switch UIPencilInteraction.preferredTapAction {
        case .switchEraser:
            // 現在使用中のツールと消しゴムの切り替え

        case .switchPrevious:
            // 現在使用中のツールと前回使用したツールの切り替え

        case .showColorPalette:
            // カラーパレットを表示

        case .ignore:
            // オフ

        }
    }
}

上記はあくまでも4つをハンドリングするための分岐である。
ダブルタップ時に無条件で特定のアクションを実装したい場合は、switchによる分岐は特にいらない。

アドバイス

Appleの人いわく、ペンでのカスタムアクションを新たに作成することは、ユーザーに新たにアクションを覚えてもらう必要があるので、推奨しているわけではないとのこと
ApplePenceilはあくまでもペンなので、ペンとして親和性のある使い方で機能を作った方が良いらしい

その他

AppleStoreでのフィーチャー

実際にリリースしているアプリで、上記のレイアウトや新規機能を実装している企業は、Appleからいつリリースなのかということをざっくり聞かれることがある。
SafeAreaへの対応や新しい機能実装は、AppleStoreでフィーチャーしてくれるのかもしれない

MacOSアプリとの互換性

今年の発表でもあったが、来年にはMacOSアプリをUIKit(iPhoneと同じ)で動かせるようになる予定。
→現在Apple公式アプリの一部はそうなっており、デザインはiPadよりのUIである。
 →今のうちにIPadでちゃんとつくっておけば、MacOSアプリとしてすぐにリリースできるかもよ?

あとがき

iPhoneでは積極的に開発しているが、iPadの開発をないがしろにしているアプリって多いかと。
実際、ユーザー数や開発から得られる利益とか考えると合理的ではないのは確かだが、、

MacOSアプリのことも考え、これを機に開発してみてはいかがでしょうか?