iPhoneやiPadを専用端末として使うには？

[1日目の記事](https://qiita.com/YusukeIwaki/items/ec6e63dc37bd52c5f6e1)では、Androidを専用端末として使うには、Android Management APIのKIOSKを使うのがお手軽ですよ、というお話を書きました。ではiOSではどうすればよいのでしょうか？

![貼り付けた画像_2023_12_17_14_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74571/f255b224-2785-09cb-2272-617f4f1bba2c.png)

世の中を見渡してみると、イオンのスーパーのレジゴー端末はAndroidですが、最後の決済完了を受けてるのはiPadですね。小規模なお店だと、レジ端末でiPadやiPodを使ってるのを見ることも増えてきましたね。ああいうiOSデバイスはどのようにして作っているのでしょうか？

## 「シングルアプリモード」という機能がある

https://support.apple.com/ja-jp/guide/apple-configurator-mac/cadbf9c172/mac

どうやら「シングルアプリモード」という用語さえ知っていれば実は誰でも情報探せるし、簡単にできるようです。

Apple Configuratorという、MDM業界の人には御用達(?)のApple製のソフトウェアがあるのですが、それを使うと簡単にできます。

https://apps.apple.com/jp/app/apple-configurator/id1037126344

## Apple Configuratorでシングルアプリモードにしてみる

[Apple公式サイトの手順](https://support.apple.com/ja-jp/guide/apple-configurator-mac/cadbf9c172/mac
)どおりです。

iOSデバイスをパソコンに繋いでから、Apple Configuratorを起動します。
![貼り付けた画像_2023_12_17_14_16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74571/acba9149-1d1b-0370-8a58-1e6f745b65e4.png)

アクションのメニューから「シングルアプリモードを開始...」

![貼り付けた画像_2023_12_17_14_17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74571/393e1533-df83-09a7-18a0-997b4f43de19.png)

iOSデバイスが「監視対象」じゃない場合にはここで、「監視対象」に入れなさいよって出てきます。
いろいろありますが、ようするに、**初期化**されます。

考えてみれば当たり前ですが、友達のデバイスを借りてApple Configuratorで気軽に専用端末にできちゃたまらんわけです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74571/c22cf5e4-ba12-5b01-d04f-9c091688a640.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74571/132456cf-bb07-3576-9a96-16a4ca6ee8ba.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74571/9135a003-84a2-1355-1975-ac6912d6b5a3.png)

これで「準備」するとデバイスが**初期化**されます。

「こんにちは」が出てきて、Apple Configuratorの方を見てみると、アプリ選択画面になっています。ただ、選択肢にはiPhoneのシステムアプリしかありません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74571/39f5c19e-9268-fcb5-4b4f-0663fba86523.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74571/b877b084-265e-7772-804f-2599d2c144a1.png)

アラームや電卓、ボイスレコーダであればこれでもいいですが、そんな低機能な専用端末が欲しい人はまずいないでしょう。

じゃあどうすればよいかというと、デバイス側でApp Storeで専用端末で使用するアプリをインストールしてから、「シングルアプリモードを開始...」するだけ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74571/0f66c40c-3b46-1b1e-ca16-8211be03af4a.png)

これで「アプリを選択」すると、専用端末になります。

ホームボタンを押しても指定されたアプリが起動しますし、ロック画面もなく、これだけが起動します。

![kiosk4.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74571/78c7d059-b912-ac10-6604-5b5604499b28.gif)


もとに戻すには、「シングルアプリモードを停止」すると、いつものiPhoneに戻ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74571/d4e699fe-4060-5a6f-70d0-a3ff3234545a.png)

## MDMを使ってシングルアプリモードにする

https://support.apple.com/ja-jp/guide/deployment/dep80a981/1/web/1.0

小売店のレジにとか、古い端末をお遊び用途で専用端末にしたい場合にはApple Configuratorで１台１台デバイスをセットアップすればよいですが、たとえば冒頭で書いたようなレジゴーの店舗端末などは、おそらく全国のスーパーに設置されているでしょうから、100台を超えるデバイスをセットアップしなくてはなりません。

監視対象にいれるだけでも面倒です。こういうときは、ADE（Automated Device Enrollment）というオプションを利用してデバイスを購入すると、購入時点から監視対象で特定のMDMサービスに紐づいた状態にすることができます。ADEでググったら出てきた大塚商会さんのサイトが親切に解説されてたので、そのまま紹介させてもらいますw

https://www.otsuka-shokai.co.jp/products/apple/ade/

あとは、デバイスをシングルアプリモードにするだけですが、

https://developer.apple.com/documentation/devicemanagement/applock

Apple ConfiguratorではAppLockペイロードを構成する機能がないので、気合いでXMLを書いて構成プロファイルを作るか、素直にMDMサービスの機能を使ってAppLockペイロードを構成したプロファイルを作成するか、しましょう。

ちなみに、先のリファレンスを見ると、メモ専用端末にするための構成プロファイルの例が載っているので、気合いで書いてもそんなに難しくはないです。

```xml
<?xml version=”1.0” encoding=”UTF-8”?>
<!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>
<plist version=”1.0”>
<dict>
    <key>PayloadContent</key>
    <array>
        <dict>
            <key>App</key>
            <dict>
                <key>Identifier</key>
                <string>ここに固定したいアプリのBundleIDを書く</string>
            </dict>
            <key>PayloadIdentifier</key>
            <string>com.example.myapplockpayload</string>
            <key>PayloadType</key>
            <string>com.apple.app.lock</string>
            <key>PayloadUUID</key>
            <string>dc0c6fdd-aae0-4fd0-a19c-861ba28f4c55</string>
            <key>PayloadVersion</key>
            <integer>1</integer>
        </dict>
    </array>
    <key>PayloadDisplayName</key>
    <string>Single App Mode</string>
    <key>PayloadIdentifier</key>
    <string>com.example.myprofile</string>
    <key>PayloadType</key>
    <string>Configuration</string>
    <key>PayloadUUID</key>
    <string>736f867e-3972-4889-aa68-7ce5be12eff6</string>
    <key>PayloadVersion</key>
    <integer>1</integer>
</dict>
</plist>
```

あとは、これをデバイスそれぞれにインストール/アンインストールすることで、専用端末の導入/解除ができます。

ちなみに...、これは完全に蛇足情報ですが、Apple Configuratorで「シングルアプリモードを開始...」したときにも、実は内部的にプロファイルが生成されてインストールされています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74571/7697926e-e1fe-ed4f-6945-d7375b311476.png)

↑これを削除するとシングルアプリモードが外れます。

MDMで専用端末にする場合の注意点としては、**ネットワーク的に途絶えた状態になってしまうと、完全に文鎮化に近い状態となってしまう**ことです。SIM運用をするか、確実にWiFiがつながる状況で専用端末を運用するようにしましょう。


## まとめ

知っている人は普通に知っているような内容でしたが、iOSを専用端末にするための「シングルアプリモード」について軽く説明してみました。

たとえば古いiPhoneを子供のおもちゃにするような用途であればApple Configuratorで簡単にできるので、みなさん手元に買い替え時の古いiPhoneがあったら試してみてはいかがでしょうか。