最新のTidBITS記事を読んだり聴いたりできるフリーウェアのTidBITS Newsアプリは、iOSのほぼ全歴史を縮図のように表しています。そして、その歴史は実に壮大です。犬の年齢が7年だとしたら、iOSのような急速に変化するターゲットに対応しようと努力してきた開発者の年齢は、20年にも感じられます。このアプリが公開されてから太陽暦で3年ちょっとしか経っていませんが、このアプリを最新の状態に保ち続けるために、私はもう一生を費やしてきたような気がします。
世界史小史— この比喩をさらに広げて、開発者の年月は2億年に相当すると言えるかもしれません。そうであれば、TidBITS News のリリースされた6つのバージョンを地層に例え、激動の歴史を辿ることもできるでしょう。私たちがTidBITS News と共に生きてきた(そして何とか生き延びてきた)出来事のいくつかを、ここでご紹介します。
- TidBITS News バージョン 1.0 がリリースされたのは 2009 年 12 月で、当時最新デバイスは iPhone 3GS と第三世代 iPod touch でした。私はその数か月前に後者の 1 台を手に入れ、Apple の真新しい iOS 3.1 を搭載していました。そして、速度、メモリ、画面サイズといった面で、限られたリソースで何とかやりくりしているその能力に魅了されました。TidBITS News を書いたのは、小さなウィンドウとタッチ可能なインターフェースという、この奇妙な新しい世界でプログラミングを習得するためでもありました。
構造的には、TidBITS News は単純なマスター・ディテール画面のペアだった。マスター表示では TidBITS 記事の一覧がタイトルと要約とともに表示され、その一つをタップすると記事全体が入ったディテール表示が現れる。それでも、舞台裏ではなかなか巧妙なネットワーキングが行われていた。記事は RSS フィードからダウンロードされ、オープンソースのライブラリを使って解析され、ディテール表示ではその記事のオンラインポッドキャストがあればそれを聞けるようになっていた。マスター表示には非常に革新的な機能が一つあった。タイトルと要約、そしてそれらを含む表の行の高さを行ごとに変えることができたのだ。当時、そんなことができるアプリは他に知らなかったし、
こんなに巧妙なことをどうやって実現したのかを私は誇りに思っていた。それ以来、私はそのやり方の説明を公開し、それはかなり広く使われるインターフェース形式になった。 - 2010 年 4 月、Apple は iPad をリリースした。幸いなことに、iPhone サイズのアプリは引き続き iPad 上で、一種のエミュレーションモードで、iPhone の画面サイズ (あるいはかなり醜い倍のサイズ) で動作した。だから、TidBITS News アプリには別個の iPad 版は必要ない、と私は感じ、何もせずに済ませようとした。しかし残念ながら、そのエミュレーションは正確ではなかった。iPad は iOS 3.2 で動作したが、iPhone は iOS 3.1 のままだった。このデバイス間の不一致を Apple が解決するのに途方もなく長い時間を要したのだ。二つのシステムでは同一の機能の実装方法に違いがあり、同一のコードに対する応答にも違いがあった。(最もひどいのは、iOS 3.1 で影を描いた場合、同じコードを使っても iOS
3.2 では影が逆さまに表示されてしまうことだった。ああ、Apple だ。)このシステム動作の違いは TidBITS News にも影響を及ぼしました。iOS 3.2 は、マスタービューのタイトル、要約、表の行のサイズを動的に変更するという私の大切な手法を壊してしまいました。私は慌ててこの問題を解決しなければなりませんでした。ニュージャージー州プリンストンにある両親の家の台所に座り、仮想ハンマーで叩きながら、なんとか両方のシステムと両方の種類のデバイスで動作するコードを思いついたときのことを今でも覚えています。この修正を組み込んだ TidBITS News バージョン 1.1 は、2010 年 6 月に投稿されました。
-
その頃までに、Apple はもう一つの革命、iPhone 4 の準備を整えていた。これは二つの大きな変化をもたらした。まず、画面の解像度が二倍になった。これによって TidBITS News のテキストは素晴らしく見えるようになったが、残念ながらグラフィックスは見苦しくなった。二番目は、そしてもっと広範囲にわたる変化として、iOS 4 とマルチタスキングが導入された。これは、私が当時説明したように (「Fast App Switching とは何か?」、2010 年 6 月 23 日)、ユーザーがホーム画面や他のアプリに切り替えた際にアプリが終了するのではなく一時停止されるが、一時停止されたアプリはその後予告なしに終了する可能性があるということを意味していた。2010 年 8 月、私たちは TidBITS News のバージョン 1.2 をリリースし、マルチタスキングと
二倍解像度のグラフィックスを組み込んだ (App Store をめぐる少々厄介な騒動もあった。「TidBITS News アプリのバージョンに関する混乱を説明する」、2010 年 8 月 21 日参照)。 -
iOS 4.0 は新しい iPhone 4 だけでなく、一部の旧型の iPhone や iPod touch モデルでも動作しましたが、iPad では動作しませんでした。iPad はまだ iOS 3.2 のままで、マルチタスクやその他の iOS 4 の新機能がありませんでした。TidBITS News は、App Store がその形式での配布を拒否したにもかかわらず、iPhone と iPad のどちらでも動作するように設計されており、どのシステムで動作しているかを検出して対応するためにさまざまな困難を経る、非常に乱雑なコードが大量に含まれていました。私はこの状況にうんざりしました (これ以上に気楽な言い方はないでしょう)。そして、Apple が開発者に仮想の中指を与えることに固執する限り、同じ仮想の中指を Apple に返そうと決心しました。テントの中のアキレスのように、私は
自分の条件が満たされるまでは出陣して戦うことを拒否するつもりでした。Apple はまずデバイス間でシステムを統合しなければなりません。 2010年11月、劇的な失敗を経て、AppleはついにiOS 4.2.1をリリースしました。これはiPadだけでなく、それ以前にiOS 4.0を搭載していたすべてのデバイスでも動作するようになりました。そして今、アキレス腱が張り裂ける思いでした。私はTidBITSを「ユニバーサル」アプリへと進化させました。つまり、iPhoneサイズの画面で読み込まれるインターフェースとiPadで読み込まれるインターフェースの2つを持つアプリへと進化させたのです。TidBITS News のバージョン 1.3 は 2010 年 12 月にリリースされた。まだかなり複雑なコードが残っていたが、これは別の複雑なコードだった。異なるシステムに対して異なる動作をするのではなく、異なるデバイスに対して異なる動作をするようになったのだ。これはシステムの機能が異なるからではなく、インターフェースのアーキテクチャが異なるからである。iPhone では、Master ビューがナビゲーションインターフェースの最初のビューで、Detail ビューがそれに代わるナビゲーションインターフェースの 2 番目のビューだった。iPad では、分割ビューの左側と右側のビューとして、両方が同時に表示された (横長の向き。縦長の向きでは、Master ビューは煩わしい「ポップオーバー」だった。iOS
4 では分割ビューがこのように実装されていたため)。iPad は縦長なので、より長い表の行を収容でき、画面のスペースも狭くなかったので、記事をより大きな画像とより広い余白で表示できた。 -
バージョン 1.3 のリリース直後、珍しいメモリバグが発生しました。いくつか試してみた結果、結局それは私のバグではなく、あの非常にうっとうしいポップオーバーに関係していることが判明し、そのバグを回避するためにできる限りのことをしたと判断しました。また、ある読者からの提案を受けて、新しいオーディオ管理ポリシーも組み込みました。つまり、TidBITS News が前面に表示された時にユーザーがバックグラウンドミュージックを再生していた場合、その音楽を聴きながら読み続けることは許可する一方で、その後ユーザーが私たちのポッドキャストを聞きたいと要求した場合には、バックグラウンドミュージックを一時停止するというものです。TidBITS News のバージョン 1.4 は 2011 年 2 月にリリースされました (「TidBITS News アプリ 1.4 でバックグラウンド
オーディオが可能」、2011 年 2 月 18 日)。
そして、TidBITS News に関する限り、事態はほぼ 2 年間にわたってそのままだった。しかしながら、Apple の世界では物事はいつものペースで進み続けた。iOS 5 (2011 年 10 月)、そして特に iOS 5.1 (2012 年 3 月) は、私が TidBITS News に取り入れたいと思った革新をもたらした (2011 年 10 月 17 日の記事“iOS 5 は開発者、そしてあなたにどう影響するか”参照) が、実際には何も壊れていなかったので、新しいバージョンを書く本当の言い訳はなかった。第三世代 iPad (2012 年 3 月) は Retina ディスプレイを搭載し、私たちのテキストの見栄えがさらに良くなった。私たちは既に (アプリのアイコン自体は除いて) 二倍の解像度のグラフィックスを使っていたので、慌てる必要はなかった。その後、iOS 6 (2012 年 9 月) は
さらに魅力的な革新をもたらし (2012 年 9 月 25 日の記事“iOS 6 は開発者、そしてあなたにどう影響するか”参照)、私が待ち望んでいた言い訳も手に入れた。高さの異なる表の行にテキストを描画するために私が使っていた技法が、ほんの少し崩れてしまったのだ。そしてもちろん、アプリは新型 iPhone 5 の縦長の画面ではレターボックス表示になった。2 つのシステムで動作させるためのあの難題を二度と乗り越えるつもりは毛頭なかったので、TidBITS News を純粋な iOS 6 アプリとして完全に一から書き直そうと決心した。“iOS 4.2 および iOS 5 対応の TidBITS News アプリを今すぐ入手” (2012 年 12 月 10 日) でしかるべき警告を出した上で、私たちは
2013 年 1 月に TidBITS News 1.5 をリリースした。
見た目— TidBITS News 1.5 の新機能は、iOS 5、iOS 5.1、そして iOS 6 の新機能を非常によく表しています。その一部は表面的にも非常に明白に現れています。例えば、iOS 5.1 が動作する iPod touch 上の TidBITS News 1.4 のマスタービュー(記事のタイトルと要約のリスト)(左)と、iOS 6 が動作する iPhone 上の TidBITS News 1.5 の同じインターフェース(右)を並べて比較してみましょう。
まず、画面の一番上、TidBITS ロゴの上を見てください。そこには、現在時刻やバッテリーの状態などが表示されています。これは実際には私のアプリではなく、システムのステータスバーです。しかし、それでも変更点があります。iPhone 上の iOS 6 (iPad ではそうではありません) は、ステータスバーを不可解な方法で自動的に着色することにこだわっています。開発者たちはこれを好みません。着色アルゴリズムが文書化されていないためです (もちろん、それが何であるか、そしてステータスバーをだまして別の
色に着色させる方法は解明されていますが)。また、ステータスバーを黒にしたい場合を除き、これをオフにすることはできません。悲しいことに、iOS 5 以前の古き良きグレーのグラデーションステータスバーは絶対に手に入りません。これは単に懐かしい思い出です。
今度はもう少し下の TidBITS ロゴに目を向けてください。ここで変わったのはロゴではなく、その背後にあるものです。iOS 4 で TidBITS 1.4 が書かれた当時は、このような標準的なインターフェース要素 (ナビゲーションバー) はどのアプリでもほぼ同じでした。ステータスバーのように、グレーのグラデーションにしたり、黒のグラデーションにしたりできました。iOS 5 以降、Apple は多くのインターフェース要素をカスタマイズする公式の方法を提供するようになり、iOS 6 ではさらに進んでいます。そのため、このナビゲーションバーには以前は不可能だった背景画像が付けられるようになりました。そのグラデーションのアートワークは TidBITS ホームページから取得されます。ああ、そしてナビゲーションバーのすぐ下 (ナビゲーションバーのすぐ下、
2 番目のスクリーンショットでは「リネン」の背景に隠れてほとんど見えません) に、iOS 6 のもう 1 つの新機能があります。ナビゲーションバーは、オプションでその下にあるものに小さな影を落とすことができるようになりました。
ナビゲーションバーの右側に、バージョン1.4には「更新」ボタンがありますが、バージョン1.5にはありません。これは、iOS 6が表用の新しい組み込み更新コントロールを提供しているためです。Twitterアプリから生まれたこのアイデアは、引っ張って更新するというものです。表を下にスクロールして「更新」シンボルが表示されたら、そのまま押し続けると「更新」シンボルがアニメーションし始めます。これを利用すると、AppleのメールアプリのiOS 6版のような標準アプリで一般的になったインターフェースを少し取り入れ、更新ボタンが画面上で乱雑にならないようにしています。
iOS 6 の Refresh コントロールにはアクティビティインジケータと、テキストを表示できるラベルの両方があります。私はこれを利用して、フィードからのデータを最後に更新した日時の表示方法を変更しました。TidBITS News 1.4 では、その情報は常に表示されるラベルに表示されていたため、目が散って画面のスペースを占領していました。バージョン 1.5 では、これは Refresh コントロールの一部となり、通常はテーブル上部のロゴの下に隠れています。スクリーンショットで見えるのは、フィードデータがリフレッシュされた直後にこれを表示させたためです。したがって、1.5 のインターフェースはずっとすっきりしています。リフレッシュボタンも、Updated ラベルもなく、美しい背景に TidBITS のロゴと記事のリストがあるだけです。
ストーリーの一覧自体のフォーマットはバージョン 1.5 では明らかに若干異なっています。要約には別のフォントを選択し、セルの行を若干高くしているので要約全体が表示される可能性が高くなっています (iPad では常に要約全体が表示されます)。しかし、本当に重要な変更は裏側にあります。バージョン 1.4 以前では、タイトルと要約はそれぞれ単一のフォントとスタイルの 2 つの別々のラベルでした。前述のように、それらの高さを調整して動的に配置するには多大な工夫が必要でした。しかし、iOS 6 ではそれがすべて変わり、本物のスタイル付きテキストが第一級オブジェクトとして導入されました。そのため、見出しと要約は1 つの
2 段落のフォーマットされた文字列となり、はるかに簡単かつ正確に直接描画され、レイアウトされるようになりました。
詳細表示(個別の記事)は、並べて比較してもそれほど劇的に興味深いものではありません。ここでも、TidBITS News 1.5 は、以前は利用できなかった標準インターフェース要素をカスタマイズできる機能の恩恵を受けています。ここでは、ナビゲーションバーのボタンが新しい背景のグラデーションにマッチした美しい色合いになっています。(このスクリーンショットでは、ナビゲーションバーの影もよりはっきりと確認できます。)
次に、ユーザーがポッドキャストを聴く方法について考えてみましょう。並べて比較すると、このビューがバージョン 1.5 で完全に変わったことがわかります。しかし、これは iOS 6 の何らかの革新によるものではなく、インターフェイスを完全に作り直したためです。バージョン 1.4 以前では、左側のビューはインターネットリソース (ムービーまたはサウンド) を再生する単一の組み込みビューでした。これを最初にバージョン 1.0 で使用したのは、初めて TidBITS News を書いたときに、
わずか数行のコードでオンラインポッドキャストを再生してインターフェイスを表示できることを発見してほっとしたからです。しかし、その後、バージョン 1.3 と 1.4 を書いているときに、このインターフェイスのいくつかの二次的な側面がサウンドに関する操作を制限していることに気付きました。そこで、バージョン 1.5 でインターフェイスを変更しました。この変更によって、現在再生中のポッドキャストのタイトルを表示できるようになりましたが、それが変更の本当の理由ではありません。本当の理由は、ポッドキャストの再生中にユーザーがアプリから切り替えたときに何が起こるかに関係しています。
以前は、ユーザーが TidBITS News を開いたまま画面をロックしている場合にのみ、バックグラウンドでサウンドを再生し続けることができました。今では、このインターフェースの変更のおかげで、アプリのサウンドポリシーをずっと細かく制御できるようになり、ユーザーが TidBITS News を完全に終了した場合でもサウンドを再生し続けることができるようになりました。さらに、ユーザーはロック画面自体からでも、アプリ切り替えインターフェース (右にスワイプするとサウンドコントロールが表示されます) からでも、再生を一時停止したり再開したりできます。iOS
5 で導入された機能のおかげで、ユーザーはこれら 2 つの場所で、現在再生中のポッドキャストのタイトルを見ることもできます。
TidBITS News 1.5 におけるもう一つの明らかな表面的変更は、iPad 上での記事一覧の表示方法だ。以前、前に述べたように、デバイスを縦向きに持った時に一覧はポップオーバーで呼び出さなければならなかった。しかし iOS 5.0 で Apple は新しいインターフェースを導入した。特に
Mail アプリで顕著で、メッセージ一覧が左からスライドして表示されるようになった。私は直ちにそのインターフェースのリバースエンジニアリングに三日を費やし、その実現方法の説明まで公開したが、わざわざそうする必要はなかった。iOS 5.1 で Apple はそれと同じインターフェースを開発者が直接利用できるようにしたのだ。コードを一切必要としない。基本的に、古いポップオーバーベースのインターフェースが魔法のように新しいスライド式インターフェースに変わるのだ。TidBITS News 1.5 は iOS 5.1 より後のシステムバージョンでコンパイルされているので、自動的にそのインターフェースを獲得する。
裏側— TidBITS News 1.5 には、さらに 2 つの重要な変更点が隠されています。これらはインターフェースには現れず、Apple が開発者向けに提供する構成要素の変更に関係しています。ただし、そのうちの 1 つはアプリの動作をわずかに変更します。後ほど説明します。
TidBITS News はiOS 5 で導入されたストーリーボードを使用するようになりました。ストーリーボードとは、アプリのインターフェースのほとんどまたはすべてを描いた絵を一つのファイルに収めたものです。以前は、多数の「画面」を持つアプリは、それぞれの画面のインターフェースをコードで構築するか、インターフェースを「nib」ファイルからロードするかのいずれかを行う必要がありました。典型的なアプリは、非常に多くの nib ファイルを持つことができました。ストーリーボードは、実質的にそれらすべての nib ファイルを一つのファイルにまとめる方法です。iOS 5 でのストーリーボードの実装は少々粗雑だと感じましたが、iOS 6 でストーリーボードが本当に便利になるような改良がいくつか加えられたので、私は TidBITS News 1.5 にそれを採用しました。
TidBITS News には 2 つのストーリーボードが含まれており、それぞれが 1 つのデバイスバージョン (iPhone または iPod touch、または iPad) のインターフェイス全体を表現しています。アプリを起動すると、現在のデバイスに適したストーリーボードが自動的に読み込まれます。さらに、ストーリーボード自体が、iPhone 上で Master ビューから Detail ビューに移動したり、ポッドキャストプレーヤービューを呼び出したり閉じたりするといった、画面間の標準的な遷移を実装しています。その結果、膨大な量のコードが削除できました。インターフェイスをコードで描画する必要がなくなりました。さらに重要なこととして、iPhone で動作しているときにはある動作をし、
iPad で動作しているときには別の動作をするような、見苦しい条件付きコードでアプリを埋め尽くす必要がなくなりました。それでもまだいくつかの条件付きコードは残っていますが、これは主に、両方のデバイスで共有されているインターフェイスの設定におけるわずかな違いに関係しています。例えば、前に述べたように、iPhone では Master テーブル行に高さ制限がありますが、iPad では制限がありません (記事の要約がどれだけ長くても、全体が表示されるようになりました)。しかし、コードははるかに整理され、シンプルになり、理解しやすく、保守しやすくなりました。
もう 1 つの大きな内部変更は、起動間で状態が維持される方法に関するものです。これは、iOS 4 でマルチタスクが爆発的に普及して以来、悩ましい問題であり、多くのアプリ (Apple 自身の iBooks を含む) が未だに解決していません。この問題は、アプリが 2 つの異なる方法で起動する可能性があるために発生します。アプリが一時停止された場合 (ユーザーがホーム画面または別のアプリに切り替えた場合)、アプリは即座に現在の状態で凍結乾燥されます。ユーザーがアプリに戻ると、アプリは解凍され、以前行っていた操作とまったく同じ状態になります。しかし、一時停止中にアプリが終了した場合(デバイスがリソースを解放する必要があった場合)、アプリは
最初から起動します。この違いは、ユーザーにとって煩わしく、わかりにくいものです。特に、ユーザーの観点からは、2 つの状況に違いがないためです。アプリを明示的に終了することはなく、何が実行され、何が実行されていないかを確認する簡単な方法はありません。アプリスイッチャーインターフェースでも、実行中のアプリと終了したアプリが区別されません。
この問題を解決するのは、開発者にとって決して容易なことではありません。マルチタスクの時代以前から、TidBITS News はコールドスタート時に何が起きるべきかという問題に取り組んできました。つまり、あなた (ユーザー) が個別の記事を読んでいる場合、TidBITS News はその事実を記憶し、再起動時にその記事へ移動するようにしていたのです。しかし、マルチタスクによってこの問題はかえって困難になりました。というのも、アプリが前面に出てくる方法が二通りあり、それを区別する必要があったからです。アプリが単に一時停止から復帰するだけの場合は何もしませんが、アプリが最初から起動する場合は、以前に閲覧していた記事があれば、その記事へ移動しようとします。私は、これを
理にかなっていて保守可能な方法で実装するのは非常に難しいと感じました ― たった 2 つのメインビューしかないアプリの話なのに!
iOS 6 で、Apple は状態保存と復元のための新しい組み込みメカニズムを導入しました。私は TidBITS News 1.5 を一から書き直す際に、このメカニズムを積極的に採用しました。その結果、TidBITS News が一時停止状態から再開する場合と、バックグラウンドで終了している場合に TidBITS News を起動する場合の違いはほとんど分からないほどになりました。どちらの場合でも、中断したところから再開され、以前と同じ位置までスクロールされた記事のマスターリスト、または以前と同じ選択内容、あるいは個々の記事の詳細ビューが、同様に以前と同じ位置までスクロールされて表示されます。
残念ながら、Appleの組み込み状態保存・復元メカニズムに重大なバグがあることが判明しました。そのバグはあまりにも深刻で、たとえ高級ウィンネベーゴを時速70マイルで目を閉じて突っ込んでも、車内でマティーニを飲んでいるApple幹部の髪の毛一本も傷つけられることはありません。保存された状態は、デバイスを再起動すると消えてしまいます。
このバグの発見で、私は深刻なジレンマに陥りました。この素晴らしいはずの新機能を使うために TidBITS News を書き直したのに、以前よりも挙動がおかしくなっているのです! TidBITS News 1.4 以前では、状態復元の処理がぎこちなく単純なものでした。つまり、一時停止中にユーザーが記事を読んでいる場合は、その事実を記事の識別子とスクロール位置とともに保存し、その後最初から起動したときにそれを復元しようとしていたのです。確かにぎこちなく単純なやり方ではありましたが、それでも常にうまくいきました。今になって、私は間違った方向に進んでしまったことに気づきました。新しく組み込まれた状態保存と復元の機能は、ときどきしか機能しなかったのです。私はどうすればいいのでしょうか?
私の決断は、Appleの人々がこのバグの存在を明らかに認識していたこと、そして最終的には修正されるだろうという期待感に影響されました。私の選択肢を考えてみましょう。
- 組み込みの保存と復元の仕組みを完全に廃止し、以前使っていた不格好な手法に完全に戻ることもできました。しかし、コードが醜く、ほとんど理解不能だったので、そうしたくはありませんでした。
-
2つのアプローチを実装することもできました。1つは、組み込みの保存と復元メカニズムが動作している場合はそれを使用するというものです。しかし、アプリを最初から起動し、保存と復元メカニズムが動作していないことが明らかな場合は、元の不格好なアプローチに戻るというものです。しかし、この方法には2つの問題がありました。まず、私の醜い古いコードがそのまま残ってしまうことになり、それは望ましくありませんでした。さらに重要なのは、Appleが突然バグを修正したらどうなるかということです。デバイスの再起動後でも組み込みの保存と復元メカニズムが正常に動作し始め、私の醜い古いコードが何らかの形でそれと競合する状況が想像できます。
-
内蔵の保存と復元のメカニズムだけを使うことができ、いつか Apple がこのバグを修正してくれることを期待しています。
私は3番目の選択肢を選びました。そして、当然ながら、AppleはiOS 6.1のバグをまだ修正していません。
ですから、現時点では、デバイスを再起動した場合 (あるいは、アプリスイッチャーインターフェースの「jiggly mode」を使うなど、他の非標準的な方法で TidBITS News を手動で終了させるような愚かなことをした場合)、すべての状態が失われます。アプリは、まるで一度も起動したことがなかったかのように、最初から起動します。したがって、保存されたフィードはなく、その時点でインターネット接続がない場合は、空のインターフェースとエラー警告が表示されます。もちろん、インターネット接続がある場合(ほとんどの人はほとんどの場合そうだと思いますが)、深刻な問題は発生しません。TidBITS News は、記事のリストを更新するように指示したのと同じように、フィードの新しいコピーをダウンロードします。
結果は完璧ではありませんが、このような状況は非常にまれなので、ほとんどの人は悪影響を受けないはずです。ユーザーがデバイスをそれほど頻繁に再起動するとは思いませんし、仮に再起動するとしても、すべてが台無しになり、起動したアプリが最初からやり直しになることに驚かないでしょう。実際、それがデバイスを再起動する目的の一つでしょう。同様に、アプリスイッチャーでアプリを手動で終了する人は通常いませんし、もしそうしてしまったら、その結果は自分の責任になります。次回アプリが最初から起動しても文句を言うことはできません (正直に言うと、文句を言ってもいいと思っている読者からすでにメールを受け取っています)。そして、
再起動時にインターネットに接続していれば、結果は悲惨なものにはならないことを覚えておいてください。
一方、サスペンド中にシステム自体がアプリを強制終了した場合は、保存と復元のメカニズムが見事に機能します。TidBITS News を再起動すると、バックグラウンドで終了したのか、単にサスペンドされただけなのか、ほとんど区別がつかなくなるはずです。保存されたフィードと、それを表示していたときのインターフェースはそのまま保持されます。