67
アプリ開発者の日記: iOS 向け開発とは

Macworld在籍中、数多くのiOSアプリのレビューとテストを行ってきました。iOS開発者が直面する課題についてもレポートしてきました。しかし、開発者であり、Macworld にも頻繁に寄稿している Marco Tabini 氏と共に、初めてのiOSアプリを開発したのはつい最近のことです。この経験を通して、iOS開発プロセスに関する洞察を得ることができました。おそらく他の方法では決して知ることのなかった洞察です。そして、私たちのお気に入りのアプリの開発者たちが日々どのようなことを経験しているのか、より深く理解することができました。

マルコと私が作ったアプリは「Let's Sing」というiPhoneゲームで、App Storeから無料版と広告なし版(5ドル)がダウンロードできます。アプリ開発の舞台裏を少しだけご紹介します。

それはとても難しい

誰にもそう言わせないでください。iOS アプリの構築は、さまざまな理由から大変な作業です。

Let's Sing で開催中のゲームの一覧。

もしかしたら、ひどいアプリに出会ったことがあるかもしれません。もしかしたら、そのひどいアプリで経験したひどい体験を、聞く耳を持つ人すべてに時間をかけて語ったことがあるかもしれません。(まあ、それも私の仕事内容の一つですけどね。)でも、どんなにひどいアプリでも、開発にかけた時間と情熱の結晶だということを、断言します。

テスト、テスト:あらゆるプログラミングには課題がつきものです。しかし、iOSプログラミングでは、さらに複雑な要素が加わります。大きな課題の一つは、開発中のアプリのテストです。開発中のアプリは、Mac上でスタンドアロンアプリケーションとして動作する仮想のiPhoneまたはiPadであるiOSシミュレータで実行できます。しかし、開発者なら誰でも言うように、シミュレータは本物の代わりにはなりません。実際のiOSデバイスでもアプリをテストする必要があります。

それ自体が課題です。AppleはiOS開発者に対し、アプリのテストを100台のデバイスに制限しています。多いように思えるかもしれませんが、実際には、複数のiOSデバイスやモデル、そして異なるバージョンのiOS上で、多くの人にアプリをテストしてもらいたいと考えていることを忘れないでください。そうすることで、早期にバグやインターフェースの問題を修正し、機能を確定させることができます。さらに、App Storeの潜在的な顧客を反映させるため、テスターに​​は幅広い経験レベルの人々が必要です。

しかし、iPhone 自体は使いやすいものの、iOS テスターに​​なるのは簡単ではありません。Marco と私が Let's Sing の初期ベータ版のテストに使用した TestFlight などのサービスは、プロセスの簡素化を目的としています。このプロセスでは、iPhone の UDID を把握していること、アプリのコピーとともにプロビジョニング ファイルを手動でインストールしていることが求められます。しかし、TestFlight が存在すること自体が驚きです。Apple は開発者とテスターの双方にとってテスト プロセスをはるかに簡素化できるはずですし、そうすべきです。私たちは、アプリを適切にテストできるように設定するためのサポートに何時間も費やしました。ベータ版の期間中、TestFlight の使い方に問題があったため、テスターを失った人もいました。これは、私たちとボランティア テスターの両方にとってフラストレーションの溜まる作業でした。

強力な機能:Let's Singを本物のiPhoneアプリのように感じられるようにするために、Appleが提供する特定の機能を活用する必要がありました。例えば、プレイヤーの順番を知らせたり、ゲームプレイを強化するためにアプリ内で追加機能を購入できるようにしたりします。

Let's Singは、あなたの番が来たらプッシュ通知で知らせてくれます。今はちゃんと機能しているのですが、プッシュ通知の設定が無駄に複雑でした。

順番が来たらお知らせするために、プッシュ通知を使います。Appleのプッシュ通知サービスの仕組みを詳しく説明するわけではありませんが、とにかく複雑です。

通知には、Appleがあなたのアプリが本当に通知を受け取るべきアプリであることを検証するために、固有の証明書を作成する必要があります。このプロセスだけでも、キーチェーンアクセス、Appleの開発者向けウェブサイト、そしてあなた自身のサーバーにアクセスする必要があります。プッシュ通知をテストする際には、Appleが運営するテストサーバーに通知を送信する必要がありますが、アプリが実際に公開された後は、別の証明書を持つ別のサーバーを使用する必要があります。つまり、App Storeからアプリを入手するまでは、実際の公開アプリでプッシュ通知が機能するかどうかを実際に確認することはできません。

アプリを複数のバージョン(私たちの場合、無料版と有料版)で運用する場合、複数のプッシュ通知証明書を設定し、それぞれ個別に処理する必要があります。これは非常に手間がかかります。

アプリ内課金のテストの複雑さにさらに驚きました。Appleは収益の30%を得られるので、そのプロセスを簡素化するためにあらゆる努力をするだろうと思っていました。しかし実際には、アプリ内課金のテストには様々な課題が伴います。

プッシュ通知と同様に、アプリ内購入プロセスにはApple側でテストサーバーと本番サーバーが別々に必要です。それ自体は理にかなっています。しかしAppleは、アプリ内購入をテストするために、メインのApp Storeアカウントからサインアウトし、別のアカウントを作成することを要求しています。驚くべきことに、これらのテストアカウントの作成と管理は、決して容易ではありません。そしてもちろん、まともな開発者であれば、アプリがリリースされた後も購入が機能するかどうかをテストしたいはずです。その前に、実際のApp Storeアカウントに切り替えることを忘れないでください。

Let's Singでは、コインを使ってヒントを購入できます。ヒントを使うと、曲の推測が簡単になります。コインはゲーム内で獲得できますが、アプリ内課金でさらに購入することもできます。

期待:App Store向けのアプリを開発する上で最も難しいのは、おそらく、誰もが優れたアプリに慣れすぎていることでしょう。確かに、質の低いアプリもいくつか見たことはありますが、Appleは自社ソフトウェア(GarageBandなど)で高い基準を設けており、多くのサードパーティ開発者も独自の優れたアプリを提供しています。

それは不満ではありません。しかし、課題ではあります。マルコと私は、アプリの動作をどのように期待するかを整理し平均的なユーザーがその期待に応えてくれるかどうかを判断するのに苦労しました。デザイナーと協力して、ボタンがタップしやすいようにし、タップできない要素がユーザーに無駄なタップ操作をさせないようにしました。

どのソフトウェアプラットフォームでも、最高のものに挑戦するのは容易ではありません。しかし、iOSには独自の課題があります。標準規格はあるものの、アプリはすべてをカスタム実装でき、メニューバーやカーソル、そしてMacなど、新規ユーザーに何が起こっているのか理解してもらうための開発者向けのツールは一切ありません。

iOS が優れている点の 1 つは、画面をあらゆる種類のインターフェースにできる点ですが、見た目が美しく (そしてユニークで)、新しいユーザーがすぐに理解できる、指で操作するカスタム インターフェースを設計するには、かなりの労力が必要です。

その後

いよいよアプリをリリースします。まずはApp Storeに審査のために提出します。私たちの場合、これは6日間のプロセスで、完了するまで何が起こっているのか全く分かりませんでした。

火曜日に「Let's Sing」をリリースしました。ゲームのバックエンドは新規ユーザーの急増に対応できるよう万全を期していましたが、いくつか問題が発生しました。プッシュ通知が一時的に機能しなくなり、Amazonでホストされているサーバーが数回クラッシュしました。

アプリで悪い体験をした顧客が否定的なレビューを残すのは当然です。開発者がそれに返信できないのは残念です。

最終的に、私たちはできる限りのことをしました。問題の修正とサーバーの円滑な稼働維持に全力を尽くしました。もちろん、ゲームをダウンロードしたり、15分間画面にエラーが表示されるだけの状態で試用したお客様にとっては、「Let's Sing」はひどいアプリです。当然のことながら、そのようなひどい体験をした数名のユーザーがApp Storeに同様にひどいレビューを残し、他のユーザーにこのゲームを購入しないよう勧めました。これはゲーム業界の常套手段です。

App Store開発者の皆さんには、入社前からApp Storeでの苦労を痛感していました。しかし、実際に体験したことで、彼らの苦境への共感はより深まりました。アプリにエラーが多いと厳しいレビューを投稿するお客様に返信したり、問題解決のお手伝いをしたりすることはできません。不満を抱いたレビューはただそこに留まり、他のお客様の意欲を削ぐことにもなりかねません。

アプリが広く使用されるようになると、初期テストでは発見できなかった問題が明らかになることもあります。「Let's Sing」では、こうしたエラーを修正するためのバグ修正アップデートをすでにApp Storeに提出済みです。開発者は稀に、Appleに「優先審査」を申請することができます。これは、緊急の修正をより迅速にストアに反映させることを目的としています。しかし、この優先審査にも数日かかります。その間、私たちは同じバグ報告を何度も受け、ユーザーに修正が間もなくリリースされることを伝えようと努めています。

価値がある

これほど多くの障害や困難があったにもかかわらず、マルコと私はもう一度やりますか?もちろんです。「Let's Sing」の制作は大変でした。特に、私たち二人ともフルタイムの仕事を抱えていたのでなおさらです。しかし、制作過程には深刻な困難もありましたが、制作のプロセスは楽しかったです。

Appleが開発プロセスの一部を簡素化してくれなかったことに、私たちはよく驚きを隠せない、と話していました。また、App Storeのアプリ数が着実に100万本に近づいていることにも驚きを隠せない、とよく言っていました。これは多くの開発者が多大な努力を払っていることであり、驚くべきことです。

でも、一番嬉しいのは、自分たちが自分のゲームをプレイするのが好きだということです。そして嬉しいことに、そう思っているのは私たちだけではないようです。iPhoneでゲームを指差して、自分が開発に関わったと分かるのは最高です。そして、自分のゲームが世界中の見知らぬ人々を楽しませていると思うと、さらに嬉しいです。

そして、何よりも嬉しいニュースは、少なくとも理論上は、マルコと私が一緒に構築する次のアプリが、少なくとも少し簡単になるはずだということです。

[アプリを開発していないときは、Lex Friedman は Macworld のスタッフライターとして働いています。 ]