iOS 5 iCloud プログラミング

ニンテンドーDSi ウェア ‘プチコンmkII’ で、もう一つ取り組んでいるプログラムがあります。しかし、ちょっと一段落して iOS の iCloud について調べてみました。

最初に、新しくなった Xcode 4 の復習のため

Start Developing iOS Apps Today: Introduction
https://developer.apple.com/library/ios/#referencelibrary/GettingStarted/RoadMapiOS/Introduction/Introduction.html
Your Second iOS App: Storyboards: About Creating Your Second iOS App
https://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/SecondiOSAppTutorial/Introduction/Introduction.html
Your Third iOS App: iCloud: About Your Third iOS App
https://developer.apple.com/library/ios/#documentation/General/Conceptual/iCloud101/Introduction/Introduction.html

の3つの例題を試してみました。最終目的の iCloud プログラミングの理解に、3番目の Your Third iOS App が一番参考になります。iCloud は Simulator では動作しないので注意してください。

私自身、あくまでも趣味の範囲なので、iCloud の理解も UIDocument を基準にすることにしました。

iCloud に、どんなファイルが保存されているか調べるには OS X 上では

OS X (iCloud)
~/Library/Mobile Docunents

の上記フォルダで確認することができます。このフォルダの中身を変更すると問題が起こる確率が高いので、やめたほうがいいと思います。

また、iPhoneiPadiPod touch 上の

設定.app
iCloud  > ストレージとバックアップ > ストレージを管理 > 書類およびデータ

から、アプリを選択すると iCloud 内のファイルが表示されます。

右上に ‘編集’ ボタンがあるので iCloud 内のファイルを削除する時は、こちらを使うと良いと思います。

後、OS X、iOS 開発書籍の著者として有名な木下誠さんの iOS 技術情報誌アプリ

HMDT BOOKS
カテゴリ: ブック
販売業者: HMDT Co., Ltd.
http://itunes.apple.com/jp/app/hmdt-books/id500860946?mt=8
HMDT
http://hmdt.jp/

HMDT JOURNAL Vol.001
第1回 iCoud(1) iCoud とは
\170
HMDT JOURNAL Vol.002
第2回 iCoud(2) NSUbiquitousKeyValueStore
\170
HMDT JOURNAL Vol.003
第3回 iCoud(3) ファイルベースの同期
\170
HMDT JOURNAL Vol.004
第4回 iCoud(4) ドキュメントベースの同期
\170

も参考になると思います。貴重な情報源で、書籍のように邪魔にならないので、毎回購入しています。

まず最初に、Document-Based App を理解しないといけないので

Document-Based App Programming Guide for iOS: Creating a Custom Document Object
http://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/DocumentBasedAppPGiOS/CreateCustomDocument/CreateCustomDocument.html#//apple_ref/doc/uid/TP40011149-CH8-SW1
▼Creating a Custom Document Object
Loading Document Data
Supplying a Snapshot of Document Data
Storing Document Data in a File Package

上の説明に出てくるソースから、Document-Based App を作りました。

また、ドキュメントデータをそれぞれ NSData、NSFileWrapper のどちらかで保存する方法も学びました。

NSURL の

+ URLWithString:
+ fileURLWithPath:

の違いに注意してください。

また、Document Type の宣言方法は、

Document-Based App Programming Guide for iOS: Document-Based Application Preflight
http://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/DocumentBasedAppPGiOS/DocumentImplPreflight/DocumentImplPreflight.html#//apple_ref/doc/uid/TP40011149-CH3-SW2
▼Document-Based Application Preflight
▼Creating and Configuring the Project
Declare a Document Type

上記 URL のページが参考になります。

UTI の種類は

Uniform Type Identifiers Reference: Introduction to Uniform Type Identifiers Reference
http://developer.apple.com/library/ios/#documentation/Miscellaneous/Reference/UTIRef/Introduction/Introduction.html#//apple_ref/doc/uid/TP40009258-SW1

を参照してください。

ここまで、Document-Based App の理解が進むと iCloud に取り掛かるのに充分だと思います。

iCloud について

Document-Based App Programming Guide for iOS: Designing a Document-Based Application
http://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/DocumentBasedAppPGiOS/DocumentArchitectureiniOS/DocumentArchitectureiniOS.html#//apple_ref/doc/uid/TP40011149-CH2-SW7
▼Designing a Document-Based Application
▼A Document in iOS
 		A Document in iCloud Storage

を読んでから、もう一度

Your Third iOS App: iCloud: About Your Third iOS App
https://developer.apple.com/library/ios/#documentation/General/Conceptual/iCloud101/Introduction/Introduction.html

のソースと

Document-Based App Programming Guide for iOS: Managing the Life Cycle of a Document
http://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/DocumentBasedAppPGiOS/ManageDocumentLifeCycle/ManageDocumentLifeCycle.html#//apple_ref/doc/uid/TP40011149-CH4-SW1
▼Managing the Life Cycle of a Document
▼Creating a New Document
▼Opening and Closing a Document

を参考に理解を深めると良いと思います。

Version Conflicts については

iiOS App Programming Guide: iCloud Storage
https://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/iCloud/iCloud.html#//apple_ref/doc/uid/TP40007072-CH5-SW1
▼iCloud Storage
▼Using iCloud Document Storage
Choosing a Strategy to Respond to Version Conflicts

が参考になります。

また、iCoud と Local 間の Documents の移動は

Document-Based App Programming Guide for iOS: Managing the Life Cycle of a Document
http://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/DocumentBasedAppPGiOS/ManageDocumentLifeCycle/ManageDocumentLifeCycle.html#//apple_ref/doc/uid/TP40011149-CH4-SW1
▼Managing the Life Cycle of a Document
▼Moving Documents to and from iCloud Storage

に説明されています。HMDT JOURNAL Vol.001 ~ Vol.004 も参考になります。

Your Third iOS App: iCloud: About Your Third iOS App
https://developer.apple.com/library/ios/#documentation/General/Conceptual/iCloud101/Introduction/Introduction.html

のソースを読んでいると Blocks

Blocks Programming Topics: Introduction
https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Blocks/Articles/00_Introduction.html
A Short Practical Guide to Blocks
https://developer.apple.com/library/ios/#featuredarticles/Short_Practical_Guide_Blocks/_index.html
Building with Blocks in C and Objective-C
https://developer.apple.com/library/mac/#featuredarticles/BuildingWithBlocks/_index.html

や GCD

Concurrency Programming Guide: Introduction
https://developer.apple.com/library/ios/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/Introduction/Introduction.html

の理解も必要になってくると思います。

手っ取り早く理解したい場合は

Introducing Blocks and Grand Central Dispatch
https://developer.apple.com/library/mac/#featuredarticles/BlocksGCD/_index.html

が参考になります。

私自身、なかなか理解できない部分もあるので 、書籍

Creating iOS 5 Apps: Develop and Design

Creating iOS 5 Apps: Develop and Design

Creating iOS 5 Apps: Develop and Design [Kindle Edition]
Rich Warren (Author)
Kindle Price:
$21.99

を Amazon で購入し、iPadKindle で読んでいる途中です。iOS 5 になって変わった基本的な Objective-C の機能についての説明もあるので、今まで iOS 開発を行ってきた人にもお勧めの本です。

'プチコンmkII' 上で動作するマインスイーパの QR コード公開、新しい iPad 購入。

プチコンmkII’ 上で動作するマインスイーパの QR コードを下記 URL で公開します。

Yoshiaki's HomePage - プチコンmkII
プチコンmkII版マインスイーパ Version 1.0.0
http://kyoshiaki.sakura.ne.jp/osx/petitcom.html

良かったら、遊んでみてください。

Twitterハッシュタグ #ptcmqr でいろいろな ‘プチコンmkII’ の QR コードが公開されていますが、

SHOHD
QRコード32枚
投稿プログラム : ホラーダンジョン - プチコンまとめWiki
http://wiki.hosiken.jp/petc/?Toukou%2F%A5%DB%A5%E9%A1%BC%A5%C0%A5%F3%A5%B8%A5%E7%A5%F3
GN_TRK03
StarTrek for Petitcom
http://www2.u-netsurf.ne.jp/~ozawa/startrek/startrek.html
コマンドの詳しい解説は
Star Trek
http://www.dunnington.u-net.com/public/startrek/
で紹介されているリンク先ファイル TREK.DOC [ http://www.dunnington.u-net.com/public/startrek/TREK.DOC ] が参考になります。
KYMTREK
スタートレック
http://www1.odn.ne.jp/beni/petitcom/trek/list.html
SPEHURRI
SPECTACLE HURRICANE
『プチコン』のページ
http://www1.ocn.ne.jp/~tabby/games/ds_kkoj.html
http://www1.ocn.ne.jp/~tabby/games/ds_knaj.html
RE201
Reflect EDGE Ver2.01
http://www.geocities.jp/sp1_ssr/ReflectEDGE1.htm
TINYKITT
プチコンmkII用「ナンジグライダー」
プチコン関連
http://www.geocities.jp/tiny_yarou/petitcom/index.html
(Safari で見る場合は、メニュー/表示/テキストエンコーディング:日本語 (EUC) を選択してください。)
DROPPZL
ありそうで無かった「逆テ○リス?」
http://www.ma.mctv.ne.jp/~miche/ptc/hare/index.html
GRPSHP2P
お絵描きツール
mkII - 湯飲実験室 (QRコードと操作説明)
http://www.sotohane.com/2012/03/mkii.html#more
QRコード
http://twitpic.com/8y4hgw
G2MMLEX
G2MMLSMP
プチコンmkIIのMMLをマクロ対応にするプログラム
http://www.gradius2.com/index.php?UID=1332082863
OCHAOSP
自動歌唱ソフト OSP
OCHAOSP2
棒歌ロイド OSP2
http://ww5.tiki.ne.jp/~ochame/petitcom/1page.htm#osp
MRPLAY
MML音色試聴ツール
http://twitpic.com/8zrzq2
S51PTCL3
投稿プログラム : PetitcoLOID - プチコンまとめWiki
http://wiki.hosiken.jp/petc/?Toukou%2FPetitcoLOID

がお勧めです。後、プログラムの中断は ‘SELECT ボタン’ を押してください。

Apple が 2012年3月7日(水)AM10時 (PST) [日本時間 2012年3月8日(木)AM3時] より、米カリフォルニア州サンフランシスコの Yerba Buena Center for the Arts(YBCA)でスペシャルイベントを開催しました。新しい iPadiOS 5.1が発表されました。早速、iOS 5.1にアップデートしました。iPhone 4S を持っていないので Siri を試せないのが、残念です。

初代 iPad は、購入しました。しかし iPad 2 は Retina Display に対応していなかったので、見送りました。新しい iPad は、発表があってからすぐに ‘ホワイト WiFiモデル 32GB’ を予約しました。16日に到着しました。拙作 iYKRSSHD [ http://itunes.com/apps/iYKRSSHD ] になるべく早く対応したいです。iCloud を勉強中なので、アプリに活かしてみたいですね!

Apple メディアイベント 'Back to the Mac'、iPad 用 RSS リーダー iYKRSSHD の解説と iTunes App Store での販売

Apple が10月20日午前10時 (日本時間の21日午前2時) にメディアイベント ‘Back to the Mac’ を開催し、 iLife ’11、FaceTime for Mac、new MacBook AirMac OS X Lion を発表しました。

個人的には Mac OS X Lion、Mac App Store に興味があります。iOS Developer Program 以外にMac Developer Program に加入するか、悩みますが!
iLife ’11 は即購入しました。

メディアイベントのストリーミングは

Apple - Apple Events - Apple Special Event October 2010
http://events.apple.com.edgesuite.net/1010qwoeiuryfg/event/index.html

で見ることができます。iTunes Podcast

Apple Keynotes - Apple Special Event, September 2010
http://itunes.apple.com/jp/podcast/apple-keynotes/id275834665

でも配信されています。

iPad の ‘ビデオ’ アプリを使って、PodcastApple Special Event, October 2010 を見ることができませんでした。試しに動画を VLC にコピーして試してみましたが、快適に視聴するのは無理でした。結局、iMaciTunes で見ました。

話は変わって、個人的に使用していた iPadRSS リーダー iYKRSSHD を iTunes StoreApp Store に申請してみました。iPhone Human Interface Guidelines に触れるか心配していたのですが、あっさり承認されました。

iYKRSSHD を無料にすると App Store で公開されている iPhoneRSS リーダー iYKRSS [ http://itunes.com/apps/iYKRSS ] を iPad に対応した Universal Application にするように勧められ、iPad だけで動作する iYKRSSHD は審査に通らない可能性があります。それで 115 円で販売するようにしました。また、一度 App Store で有料アプリケーションを販売してみたかったのもあります。


iYKRSSHD
カテゴリ/ニュース
\115
http://itunes.com/apps/iYKRSSHD

無料アプリと違って有料アプリはなかなかダウンロードされませんね!ダウンロード数が増えるかわかりませんが、宣伝する必要がありそうです。

宣伝もかねて使用方法を説明しておきます。

iYKRSSHD

基本的には iPhoneRSS リーダー iYKRSS (無料) の iPad 版です。有料 \115 なので注意してください。RSS 1.0/2.0、ATOM に対応しています。ウェブサービスを利用した RSS リーダーではなく、iPad だけで完結したシンプルな RSS リーダーです。

iYKRSSHD の説明で使用する用語を解説します。

① フィードテーブル

② アイテムテーブル

③ 記事エリア

④ツールバー

1. RSS フィードの登録

iYKRSSHD では RSS フィードの登録方法が2通りあります。フィードテーブルの下部ツールバー左側にある ‘+’ ボタン、’+リスト’ ボタンです。’+リスト’ ボタンをタップするとあらかじめ登録された RSS フィードのリストから選ぶことができます。’+’ ボタンをタップすると RSS フィードの URL を直接入力して、RSS フィードを登録することができます。

1-1. ‘+リスト’ ボタンによる RSS フィードの登録

フィードテーブルの下部ツールバー左側にある ‘+リスト’ ボタンをタップすると下図の赤枠のように Popover ビュー が開きます。Popover ビューに表示された RSS フィードのリストをスクロールさせて登録したい RSS フィードのタイトルをタップします。Popover ビューが消え、フィードテーブルにタップしたフィードが追加されます。キャンセルしたい場合は、Popover ビュー以外の場所をタップします。

フィードテーブルに追加された RSS フィード のタイトルをタップして選択します。選択されるとタイトルの右側にチェックマークが付きます。フィードテーブル下部にある ‘Info’ ボタンをタップしてください。モーダルビューが開きます。下段にあるツールバー左側の ‘リロード’ ボタン をタップして RSS フィードを読み込んでください。( ‘Info’ ボタンで開くモーダルビュー上の ‘リロード’ ボタン は、RSS フィードのアイテムをすべて削除してから読み込みます。保存期間は影響しません。)

1-2. ‘+’ ボタンによる RSS フィードの登録

フィードテーブルの下部ツールバー左側にある ‘+’ ボタンをタップするとモーダルビューが開きます。’URL:’ ラベル下のテキストフィールドをタップするとキーボードが現れるので、RSS フィードの URL を入力してください。

URL を入力し終えると上図キーをタップして、キーボード閉じてください。ツールーバーが見えるようになるので、ツールバー左側にある ‘リロード’ ボタン をタップして、RSS フィードを読み込んでください。URL が正しく、RSS フィードのデーターの読み込みに成功したら、タイトル、Description が自動的に設定されます。右端の ‘保存’ ボタンをタップして登録してください。

1-3. 購読したい RSS フィードの URL を探す。

1-3-1. Mac の場合

読みたいブログをパソコン上の Safari で開いてください。(iPhoneiPadiPod touch 上の Safari では正しい RSS フィードの URL を表示することはできません。注意してください。)下図、例では、このブログを表示しています。

Safari の上部にある URL フィールドの右端に RSS という名前のアイコンがあります。それをマウスでクリックすると以下のように表示されます。

RSS 2.0′ を選びます。(’RSS‘ を選んでも問題はありません。) Safari が下図のように RSS フィードを表示します。この時に Safari の URL テキストフィールドに表示されている URL が、購読したい RSS フィードの URL です。この場合、feed://d.hatena.ne.jp/KYoshiaki/rss2 です。(1-2. ‘+’ ボタンによる RSS フィードの登録) で説明したように URL を入力して RSS フィードを登録してください。

1-3-2. Windows XPInternet Explorer 8 の場合

(私が Windows 7 を所有していないため、Internet Explorer 9 の説明はできません。)

読みたいブログをパソコン上の Internet Explorer 8 で開いてください。(iPhoneiPadiPod touch 上の Safari では正しい RSS フィードの URL を表示することはできません。注意してください。)下図、例では、このブログを表示しています。

ツールバー上にある RSS アイコンが有効になっているので、下図のように RSS アイコン右の ▼ をクリックして ‘RSS 2.0′ を選択してください。(’RSS‘ を選んでも問題はありません。)

Internet Explorer 8 が、下図のように RSS フィードを表示します。この時に Internet Explorerの URL テキストフィールドに表示されている URL が、購読したい RSS フィードの URL です。この場合、http://d.hatena.ne.jp/KYoshiaki/rss2 です。(1-2. ‘+’ ボタンによる RSS フィードの登録) で説明したように URL を入力して RSS フィードを登録してください。(1-3-1. Mac の場合) の URL、 feed://d.hatena.ne.jp/KYoshiaki/rss2 と違いますが、どちらを入力しても問題はありません。

1-3-3. その他

Mac、Windows 上のパソコンで SafariInternet ExplorerFirefox を使って、読みたいブログを開きます。表示されたページ内に RSS アイコンが、下図のように表示されているはずです。

上図の赤枠部分の RSS アイコンをクリックすると RSS フィードが表示されます。この時にブラウザの URL テキストフィールド上に表示された URL が購読したい RSS フィールドの URL です。この場合は feed://d.hatena.ne.jp/KYoshiaki/rss または http://d.hatena.ne.jp/KYoshiaki/rss です。(1-2. ‘+’ ボタンによる RSS フィードの登録) で説明したように URL を入力して RSS フィードを登録してください。

2. RSS フィードの閲覧

2-1. 未読の記事

フィードテーブルに、それぞれの RSS フィードの未読数を円グラフの青色で表し、タイトル、青色の数字で未読数、黒色の数字で記事総数をリストで表示します。

2-2. 記事の閲覧

フィードテーブルで読みたい RSS フィードのタイトルをタップしてチェックマークを付け、選択します。隣のアイテムテーブルに RSS フィードに含まれる記事のタイトルがすべて表示されます。アイテムテーブルから読みたい記事のタイトルをタップします。下段の記事エリアに内容が表示されます。

直接ウェブページを開きたい場合は、記事エリア下段にあるツールバー右端の ‘Web’ ボタンをタップしてください。

RSS フィードの記事の内容は、すべて含まれていない場合があります。その場合は、RSS フィードの記事が全部含まれていない RSS フィードをフィードテーブルでタップして選択し、アイテムテーブル下段のツールバー右端の ‘設定’ ボタンをタップし、Popover ビューが開くので、’Description 表示’ を ‘オフ’ にしてください。

これで RSS フィードの記事の内容を表示するのではなく、記事エリアで直接ウェブページを開くようになります。手間が省けて便利です。

3. 更新

3-1. 記事の保存期間

RSS フィードに含まれる記事には保存期間があります。フィードテーブルから、保存期間を変更したい RSS フィードのタイトルをタップしてチェックマークを付け選択します。アイテムテーブル下段のツールバー右端 ‘設定’ ボタンが有効になるので、タップして Popover ビューを表示してください。保存期間をタップして変更してください。

新しく作成した RSS フィードのデフォルト保存期間は、’設定’ アプリの保存期間が使われます。

3-2. すべての RSS フィードの更新

フィードテーブル上段のツールバー左端にある ‘リロード’ ボタン をタップするとすべての RSS フィードの更新を行います。更新した後、保存期間を過ぎた記事は削除されます。

3-3. 一つの RSS フィードの更新

フィードテーブルの更新したい RSS フィールドをタップして選択し、アイテムテーブル上段ツールバー左上端のリロードボタン をタップしてください。更新が始まります。更新した後、保存期間を過ぎた記事は削除されます。

3-4. RSS フィードの読み直し

RSS フィードを読み直したい場合は、フィードテーブル下段の左端 ‘Info’ ボタンをタップします。モーダルビューが開くので、下段ツールバー左端のリロードボタン をタップすることで読み直しができます。動作としては、RSS フィードのすべての記事を削除して、読み直します。

4. 並び替え、削除

フィールドテーブル上段の右端 ‘編集’ ボタンをタップすると編集モードに入ります。

削除したい時は左の ‘-‘ アイコンをタップして削除します。

並び替えを行いたい時は ’ ≡’ アイコンをリスト内の新しい位置までドラッグして並び替えます。

編集を終えたら、フィールドテーブル上段の右端 ‘完了’ ボタンをタップして終了してください。

5. ファイル共有

iTunes のファイル共有で表示されるファイル RSSArchive.iYKRSS は iYKRSSHD で利用しているすべてのデータを含んだファルです。iPhone 用 iYKRSS と互換性があります。次のバージョン iYKRSS ではファイル共有ができるようにするつもりです。iYKRSS で購読していた RSS フィードを iYKRSSHD に持ってくることが可能になります。(現在はできません。)