「諦めないで。」極小機能アプリをリリースできたので伝えたいこと

2021.12.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

今回は個人開発でとっても極小機能のアプリをリリースしたのでそれを通して感じたこと、伝えたいことを書きたいと思います。

勉強も兼ねてアプリを作ってみた

SwiftUI × Apple WatchHello,world的なノリで何か作ってみようと思い、視覚的に瞬時に左を判断できるアプリを作ってみることにしました。

どんなアプリ

Apple Watchで設定できる手首のロケーションに応じて、そのロケーションの値を漢字に変換して描画するというびっくりするくらいシンプルなアプリです。

実際に作ってみてTwitterに投稿すると自分の想定以上に反響をいただいたきました。

「これはもしや全世界待望しているかもしれない!?」

「だがしかし、とても極小機能アプリなのでApple Store申請のレビューを通過するのは厳しそう、、」

「でも、やるまで結果は分からない。」

あんな懸念やこんな懸念、自分の頭の中だけで格闘していると、

「諦めないで。」

僕の心の中の真矢みきさんが確かにそう言った気がした。

「そうだ!やってみた精神だ!」ということでCLPを体現すべく実際にリリースしてみることにしました!

リリース時のコード

現在はComplicationに対応している為、少しコード量は増えていますが、一番最初にAppleに申請した時はこのようなコードになっていました。

import SwiftUI
import WatchKit

struct ContentView: View {

    @Environment(\.scenePhase) private var scenePhase
    @State var currentWristLocationString = WKInterfaceDevice.current().wristLocationString

    var body: some View {

        Text(currentWristLocationString)
            .font(.system(size: 190))
            .bold()

            .onChange(of: scenePhase) { scenePhase in
                switch scenePhase {
                case .active: currentWristLocationString = WKInterfaceDevice.current().wristLocationString
                default:
                    break
                }
            }
    }
}

extension WKInterfaceDevice {

    var wristLocationString: String {
        switch self.wristLocation {
        case .left:
            return "左"
        case .right:
            return "右"
        @unknown default:
            fatalError()
        }
    }
}

@Environment(\.scenePhase) private var scenePhaseでシーンフェーズを監視しており、アプリがフォアグラウンドになった時にcurrentWristLocationStringの値をその時の手首のロケーションの値で更新しています。

たった、これだけの極小機能アプリです。笑

あとはリリースするだけですが、ここで頭に過るのはGuideline 4.2 - Design - Minimum Functionalityリジェクトですよね、、

Minimum Functionality

アプリを提出できる段階までは無事に持って来れました。しかし、Appleにアプリ審査を出したことがある方は薄々感じているかもしれませんが、ここで鬼門になるのがGuideline 4.2 - Design - Minimum Functionalityになります。

App Store Reviewガイドラインからの抜粋が以下になります。

4.2 最低限の機能性 Appを作成する際は、Webサイトを単に再パッケージしたようなものではなく、優れた機能、コンテンツ、UIを作成するようにしてください。特に便利でも、ユニークでも、「Appらしく」もない場合、そのAppをApp Storeで提供することはできません。Appが継続的に楽しめる何らかの価値、または十分な有用性を備えていない場合は、承認されない可能性があります。Appが単に曲または映画の場合は、iTunes Storeに提出してください。Appが単に書籍またはゲームの攻略本の場合は、Apple Books Storeに提出してください。

簡単にいうと、「中身の無いアプリ」という宣告を受け、具体的な改善案をいただけるわけではなくアプリレビュワーを満足させる機能を足さない限り、リジェクトされ続ける恐ろしいものになります。

自分がやった対策

このアプリをリリースするぞと決めた時に、一番この部分が鬼門になると分かっていました。

アプリ審査を出す際に添付ファイルをつけることができます。

App Reviewプロセスの遅延を防ぐために、特定のAppの書類、デモビデオ、その他の資料を添付することができます。

そこでラブレターを書いてレビュワーに想いを届けることにしました。人生で初めての英語でのラブレターです。

審査の行方

ラブレターの成果なのか?特に問題はなくアプリの審査通過し、無事にリリースされました?

左(右) - 左右を視覚的に判断する

Appleの審査は厳しいという意見もありますが、想いさえ伝えることが出来れば通じ合うこともできるんだと思いました。(レビュワーにもよると思いますが)

運が良かっただけでは説

アプリ審査はレビュワーによって結果が異なるのは有名な話ですが、初回リリース後、実は三回アップデートを行いましたが、その後も特にリジェクトされることなく審査通過しました。

もちろん、毎回リジェクトの恐怖と戦っていますが、、

コンプリケーション対応

現在はコンプリケーション対応を行なっているので文字盤上でもアプリの情報(左/右)がオシャレに確認できるようになっています。

おわりに

「やってもダメだろう」とやる前から決めつけて、行動に移していなかったら今回の結果になっていなかったと思います。

これからも「やってみた精神」で沢山チャレンジしていきたいと思います。

自分の作ったアプリが世にリリースされるのはとても嬉しいことなので、アプリの審査が億劫でなかなか開発する気になれない方の励みにこの記事がなれればと思います。

開発者にエール

最後にエールを送させていただきます。