米Apple、アンテナ問題の記者会見、Xcode オーガナイザ による Application Data の管理、iTunes のファイル共有

Apple、アンテナ問題の記者会見のビデオを公開

アップル - QuickTime - 7月16日の記者会見
http://www.apple.com/jp/apple-events/july-2010/
アップル - スマートフォンのアンテナ性能
http://www.apple.com/jp/antenna/
アップル - アンテナ設計・試験室
http://www.apple.com/jp/antenna/testing-lab.html

個人的な意見ですが、iPhone 4 の外部アンテナが剥き出しで目視できることが問題なんだと思います。いろいろなウェブサイトから判断すると、性能的には欠陥というほどではないような気がします。

Statement by Apple on White iPhone 4
http://www.apple.com/pr/library/2010/07/23iphonestatement.html
アップル - iPhone 4 - ケースプログラム
http://www.apple.com/jp/iphone/case-program/

iPhone 4 ホワイト モデル発売が延期になったようですね!
2010年9月30日までに iPhone 4 を購入した方への iPhone 4 Bumper、または特定の他社製ケース無償配布の受付も始まったようです。

前回紹介したように iPhoneRSS リーダー iYKRSS を iPad に移植しました。

iPad Programming Guide: Starting Your Project
http://developer.apple.com/iphone/library/documentation/General/Conceptual/iPadProgrammingGuide/StartingYourProject/StartingYourProject.html#//apple_ref/doc/uid/TP40009370-CH9-SW3
▼Creating a Universal Application
Adding Runtime Checks for Newer Symbols
Using Runtime Checks to Create Conditional Code Paths

上記ページを参考にして iPhoneiPad 両方で動作する Universal Application を作成しようと思ったのですが、ソースが複雑になりそうだったので、iPhone 用 iYKRSS を iPad 用に iYKRSSHD というプロジェクト名で新規作成しました。

iPad Programming Guide: Views and View Controllers
http://developer.apple.com/iphone/library/documentation/General/Conceptual/iPadProgrammingGuide/UserInterface/UserInterface.html#//apple_ref/doc/uid/TP40009370-CH3-SW7
▼Views and View Controllers
▼Using Popovers to Display Content

上記ページを参考に popover を使用しました。一例が下図です。

ModalView を中央に表示するのに UIViewController の modalPresentationStyle に UIModalPresentationFormSheet を設定し、下記ソースのように利用しました。

- (IBAction)toolbarItemAddTapped:(id)sender
{
EditController *content;
if (self.gEditController == nil) {
content = [[[EditController alloc] initWithNibName:@"EditController" bundle:nil] autorelease];
content.gRootController = self;
content.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
content.modalPresentationStyle = UIModalPresentationFormSheet;
//		content.modalPresentationStyle = UIModalPresentationPageSheet;
self.gEditController = content;
}
[giYKRSSHDViewController presentModalViewController:gEditController animated:YES];
}

UIModalPresentationFormSheet の実行結果が下図です。

他の部分は iPhoneRSS リーダー iYKRSS とほとんど同じなので、難なく作成することができました。

RSS リーダーに登録したフィードなどのデータをファイルに保存するには、plist、NSKeyedArchiver、CoreData の3通りあります。

拙作 iYKRSS、iYKRSSHDでは CoreData を使うほど本格的なデータベースは必要ないし、plist を使うほど単純ではないので、NSKeyedArchiver を利用しています。

iYKRSS、iYKRSSHD で保存されるデータ構造は同一で同じファイル名 RSSArchive.iYKRSS です。ファイル RSSArchive.iYKRSS は、各々アプリケーションごとに作成される ‘アプリケーション’ フォルダの Documents フォルダに保存されています。

  • plist
Property List Programming Guide: Introduction to Property Lists
http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/PropertyLists/Introduction/Introduction.html#//apple_ref/doc/uid/10000048i
  • NSKeyedArchiver
Archives and Serializations Programming Guide: Introduction
http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/Archiving/Archiving.html#//apple_ref/doc/uid/10000047i
  • CoreData
Core Data Programming Guide: Introduction to Core Data Programming Guide
http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreData/cdProgrammingGuide.html#//apple_ref/doc/uid/TP40001075

iPhone 用 iYKRSS の RSS フィードデータファイル RSSArchive.iYKRSS を iPad 用 iYKRSSHD の Document フォルダに移動すれば iYKRSS の RSS フィードを iYKRSSHD で引き継ぐことができ便利です。iYKRSSHD 上で最初からフィードの URL を入力する必要もありません。

幸いにも Xcode でビルドしてデバイスにインストールしたアプリケーションの Application Data (Documents フォルダのデータも含む) は、Xcode のオーガナイザを使って読み書きすることができます。

オーガナイザは Xcode のメニュー(上図) ‘ウインドウ/オーガナイザ’ (下図) で開くことができます。

iOS Development Guide: Running Applications
http://developer.apple.com/iphone/library/documentation/Xcode/Conceptual/iphone_development/120-Running_Applications/running_applications.html#//apple_ref/doc/uid/TP40007959-CH6-SW4
▼Running Applications
Managing Application Data

上記URL が参考になります。

簡単に説明すると iPhoneiPad などのデバイスを USB で Mac に接続し、 Xcode のオーガナイザを開き、デバイス名をクリックします。’Summary タブ/ Applications’ のダウンロードしたいアプリを選び、三角を開くと ‘Application Data’ という名前が表示されます。右側にあらわれたダウンロードボタン(上図の赤枠部分)をクリックして保存してください。Finder 上にフォルダが作成されます。(下図参照) Documents フォルダに RSSArchive.iYKRSS を見つけることができます。



データを元に戻した時はダウンロードしてできたフォルダの中のデータを変更して、オーガナイザのダウンロードしたいアプリ名にフォルダをドラッグ・ドロップ (下図参照)することで変更できます。即ちファイルなどのデータを iPhoneiPad に書き込むことができます。

オーガナイザを使わずに iTunes のファイル共有を使って Documents フォルダのデータを読み書きすることもできます。

iOS Application Programming Guide: Implementing Standard Application Behaviors
http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/StandardBehaviors/StandardBehaviors.html#//apple_ref/doc/uid/TP40007072-CH4-SW10
▼ Implementing Standard Application Behaviors
▼ Files and the File System
Sharing Files with the User

上記 URL が参考になります。

iTunes のファイル共有に Documents フォルダを表示させたい場合は、info.plist に UIFileSharingEnabled キー Boolean 型 YES を追加するだけです。

UIFileSharingEnabled キーは、メニュー ‘表示/Property List Type/Default File for Type’ で None を選ぶと入力しやすいと思います。

ただし、注意する必要があります。UIFileSharingEnabled を追加する前に、デバイス iPhoneiPad 上にアプリケーションがあると、ビルドしてインストールするだけでは、iTunes 上のファイル共有に表示されません。デバイスからアプリケーションを一度、削除して再インストールすると iTunes 上で同期した後、ファイル共有に表示されます。

上図を例にすると、iTunes 上のファイル共有/App から iYKRSSHD を選択すると Documnets フォルダにあるすべてのファイルが表示されます。この場合、RSSArchive.iYKRSS という名前のファイルが一つあります。ファイル RSSArchive.iYKRSS をウインドウの外にドラッグ・ドロップすればファイルを取り出すことができます。逆に Finder からファイルを iYKRSSHDD の書類と表示されているテーブルにドラッグ・ドロップすると Documents フォルダに書き込むことができます。

iPhone 4、iPad 発売、WWDC、E3

iPhone 4iPad 発売、WWDC、E3 とイベント尽くしでした。

まず E3 から

E3 2010 Latest Highlights at GameSpot
http://e3.gamespot.com/?tag=header%253Be3logo

上記ページの上部にある Video をマウスオーバーすると、ウインドウが下に表示され、

Press Conferences
Microsoft | Nintendo | Sony

その中の Press Conferences から、それぞれの会社名をクリックすることで基調講演を見ることができます。最初に生年月日を入力する必要があります。CM の後、基調講演が始まります。

任天堂の基調講演については

任天堂 E3 2010情報
http://www.nintendo.co.jp/n10/e3_2010/index.html

の ‘E3 レポート’で日本語吹き替えを見ることができます。

3D (裸眼立体視機能) 対応の Nintendo 3DS はぜひ見てみたいですね。

次は WWDC 2010 です。基調講演 (Monday, June 7 at 10 a.m.) は

Apple - QuickTime - WWDC 2010 Keynote Address
http://www.apple.com/quicktime/qtv/wwdc10/index.html

で見ることができます。Apple のトップサイトに

Apple
http://www.apple.com/

WWDC 2010 基調講演、iPhone 4 Video、FaceTime Video のリンクが張られています。

また、WWDC 基調講演は iTunesPodcast

Apple Keynotes
http://itunes.apple.com/jp/podcast/apple-keynotes/id275834665

でも配信されています。

アップル、WWDC 2010開催--ジョブズ氏基調講演をライブカバレッジ - CNET Japan
http://japan.cnet.com/news/service/story/0,3800104747,20414685,00.htmPC Watch】 【WWDC 10レポート】基調講演速報、iPhone OS 4あらためiOS 4を正式アナウンス 〜デベロッパ向けにはプラットフォームの優位性を強調
http://pc.watch.impress.co.jp/docs/news/event/20100608_372849.html
フォトレポート:S・ジョブズ氏のWWDC 2010基調講演 - CNET Japan
http://japan.cnet.com/apple/story/0,2000076557,20414769,00.htm
速報:WWDC 2010 スティーブ・ジョブズ 基調講演
http://japanese.engadget.com/2010/06/07/wwdc-2010/

も参考になります。

iPhone Developer Program に加入しているので、随分前に iPhone SDK 4 beta、iOS 4 GM はダウンロードしたのですが、インストールはしていませんでした。

そうこうしているうちに iPhone 4 が発売され、iOS 4 アップデータも公開されたので iTunes 経由で iPod touchiOS 4 にアップデートしました。iPhone SDK 4 final もインストールしました。

私の使用方法だと iPhone 4 は必要ないのですが、次世代 iPod touch が楽しみですね。

iPad は、発売日 (5月28日) に運送会社から届きました。iPad アプリは1万円近く購入してしまいました。

私の iPad の利用目的は、PDF ファイルの閲覧、ブログなどのウェブページ閲覧、Kindle 読書です。

iPod touch の利用のほとんどが、自作の iPhone アプリ Twitter クライアント iYKTwitter、拙作 RSS リーダー iYKRSS です。

拙作 iYKTwitter は認証方式が Basic 認証ですが、Twitter が OAuth認証必須になったので、対応する必要があります。ただし、OAuth 認証への移行が

Twitterブログ: Twitter APIデベロッパー・コミュニティへのお知らせ (OAuthへの移行に関しての期限延長)
http://blog.twitter.jp/2010/06/twitter-api-oauth.html

2010年8月16日に延長になったようです。

Safari のウェブページ閲覧が快適なので、拙作 iPhoneRSS リーダー iYKRSS と iYKTwitter を 2、3日かけてとりあえず動作するように iPad 上に移植してみました。思いのほか便利です。iPad を持て余している人は RSS リーダーを使ってみるべきです。

本当は Google リーダー対応の RSS リーダーを使えばよいのですが、シンプルなものが良いので、拙作 iPad 対応 iYKRSS を使用しています。

書籍、電子書籍リーダーをいろいろ購入してみました。

書籍
Alice for the iPad
カテゴリ/電子書籍
\1000
WIRED Magazine
カテゴリ/ニュース
\600
数学ガールHD
カテゴリ/ブック
\900
AiR HD エア 先行配信版
カテゴリ/ブック
\350
Toy Story 2 Read-Along
カテゴリ/ブック
\1000
電子書籍リーダー
i文庫HD
カテゴリ/電子書籍
\700
CloudReaders pdf,cbz,cbr
カテゴリ/ブック
無料
GoodReader for iPad
カテゴリ/仕事効率化
\115

‘不思議の国アリス’ を読んだことがなかったので、Alice for the iPad は面白かったです。ただし、読んだ位置を覚えてくれないのが不便でした。途中で画面をタップして現れる Cheshire-Cat (チェシャーキャット) の顔をタップすると目次を表示できることを発見し、何とかなりましたが!

iPad の電子書籍リーダーに PDF 書類を移動するには iTunes 上で iPad デバイス名をクリックし、’アプリ’ タブ 下にある ‘ファイル共有/アプリケーション’ を選択して iPad にコピーしたい書籍 (PDF など) をドラッグ・ドロップします。

以前は NetWalker 上で PDF 書類を読んでいたのですが、iPad で十分です。NetWalker はお役御免になりそうです。また、PDF 書類のファイル内リンクに対応しているのは、GoodReader for iPad だけです。他の電子書籍リーダーより拡大・縮小しても文字がくっきりしている気がします。以前の GoodReader はページ送りが上下部分をタップだったのですが、左右にも対応しました。

CloudReaders pdf,cbz,cbr は、’しおり機能’ が付いていません。ただし大きなサイズの PDF 書類を読むには最適だと思います。

iBooks が PDF 書類に対応する前まで、’しおり機能’ が付いた ‘i文庫 HD’ が、個人的には一番快適でした。iOS 4 開発資料 PDF 書類を ‘i文庫HD’ で良く読んでいました。

iBooks も PDF 書類対応になったので、試してみました。iBooks に PDF 書類を読み込むには iTunes の ‘ライブラリ/ブック’ に PDF 書類をドラッグ・ドロップします (下図参考)。 デバイス名の ‘アプリ’ タブ ‘ファイル共有/アプリケーション’ や ‘ブック’ タブではないので注意してください。

自炊 (自分で本を裁断してスキャンすること) 用にスキャナーと裁断機が欲しくなりました。

iPad で雑誌を読んでみたく下記サイトで ‘4特集まとめ買いパック’

購入から読むまで|iPadで読む!週刊ダイヤモンド
https://item.diamond.co.jp/ipad/
週刊ダイヤモンド
\1000

を購入してみました。i文庫HD、CloudReaders pdf,cbz,cbr どちらでも読むことができます。書籍ファイルは 1ページを ‘1050 × 1400 ピクセル 72 dpi’ の JPEG 画像であらわし、ファイル名をページ数にした画像を Zip で圧縮したファイルでした。

iMaciPod touch の利用時間が大幅に少なくなり、iPad を使用することが多くなりました。

私的利用、自作 Twitter アプリ < iYKTwitter >

@iphone_dev_jp [ http://twitter.com/iphone_dev_jp ] 閲覧目的で、遅ればせながら Twitter @KYoshiaki [ http://twitter.com/KYoshiaki ] を始めてみました。とりあえず、次のアプリをダウンロードしてみました。

iPhone
カテゴリ/ソーシャルネットワーク
Twittelator Pro
\600
http://itunes.apple.com/jp/app/twittelator-pro/id288963578?mt=8
リスト対応
Tweetie 2
\350
http://itunes.apple.com/jp/app/tweetie-2/id333903271?mt=8
リスト対応
TwitBird Premium
¥230
http://itunes.apple.com/jp/app/twitbird-premium/id307876729?mt=8
リスト対応
Tweetery
\230
http://itunes.apple.com/jp/app/tweetery-twitter-made-easy/id334303843?mt=8
Twitterrific
無料
http://itunes.apple.com/jp/app/twitterrific/id284540316?mt=8
有料版もある
Echofon for Twiiter
無料
http://itunes.apple.com/jp/app/echofon-for-twitter/id286756410?mt=8
NatsuLion for iPhone
無料
http://itunes.apple.com/jp/app/natsulion-for-iphone/id289977677?mt=8
TweetDeck for iPhone
無料
http://itunes.apple.com/jp/app/tweetdeck-for-iphone/id318518757?mt=8

私自身、Twitter についてよく理解していません。時間的余裕もないので、発言もしていません。そのため、ホームとリストの閲覧が、私の Twitter の利用目的なっています。リストに対応した Twitter アプリを探すと、次の3つが対応していました。

Twittelator Pro
Tweetie 2
TwitBird Premium

一番使いやすかったのが Twittelator Pro でした。ただし、最新の発言が20個までしか読むことができません。1日に1,2回しか起動しない私には物足りません。

Twitter API Wiki / API Overview
http://apiwiki.twitter.com/API-Overview

それで Twitter API が REST を使用しているので、試しに自分専用の Twitter アプリを作ってみることにしました。私専用なので、リストとホームが見れるようにし、発言の仕組みは省くことにしました。

Twitter API Wiki / Twitter API Documentation
http://apiwiki.twitter.com/Twitter-API-Documentation

の statuses/home_timeline を確認しました。

Twitter API Wiki / Twitter REST API Method: statuses home_timeline
http://apiwiki.twitter.com/Twitter-REST-API-Method%3A-statuses-home_timeline
http://api.twitter.com/1/statuses/home_timeline.format

format は、拙作 iYKRSS [ http://itunes.com/apps/iYKRSS ] のソースが再利用できるので xml を選びました。

また、Requires Authentication で OAuth は難しそうなので Basic Auth を利用することにしました。

Basic access authentication - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Basic_authentication
2010/11/14(Sun) 現在 Twitter の認証方式で Basic 認証 (Basic Auth) は、廃止になりました。OAuth 認証の簡易版 xAuth を利用した記事を [  id:KYoshiaki:20100919 ] で公開しています。

最初 Basic Auth は、

Uniform Resource Locators (URL)
http://www.ietf.org/rfc/rfc1738.txt?number=1738
3.1. Common Internet Scheme Syntax
//:@:/

で大丈夫なのかと思いましたが、非公開リストのデータの取得に失敗するので、MGTwitterEngine を参考にしました。MGTwitterEngine のソースは Terminal 上で

svn checkout http://svn.cocoasourcecode.com/MGTemplateEngine

を実行するすればダウンロードできます。

since_id で指定すれば、簡単に発言を遡ってダウンロードできるものと思っていたのですが、最新20個しかダウンロードしてくれません。

仕方のないので、パラメーター count を使って 最新の発言 200 個をダウンロードし、前回の最新発言 id 以降のデータを探し、追加するようにしました。結局、未読の発言を最大 200 個まで遡ることができるようになりました。

また、リストの取得には

Twitter API Wiki / Twitter REST API Method: GET lists
http://apiwiki.twitter.com/Twitter-REST-API-Method%3A-GET-lists

を利用し、follow しているリストは GET list subscriptions

Twitter API Wiki / Twitter REST API Method: GET list subscriptions
http://apiwiki.twitter.com/Twitter-REST-API-Method%3A-GET-list-subscriptions

で取得できるようです。

簡単にテキストから URL 抽出をしたかってので、

iPhoneアプリ正規表現を使う - 24/7 twenty-four seven
http://d.hatena.ne.jp/KishikawaKatsumi/20081031/1225463896

を参考に正規表現を利用しました。RegexKitLite を使用するには libicucore.dylib をリンクする必要があります。

一番簡単なリンク方法は Xcode でターゲット名を選択し、

‘メニュー/ファイル/情報を見る’ か Option キーを押したまま、’メニュー/ファイル/インスペクタを表示’ を選びます。

ターゲット “iYKTwitter” の情報というウインドウが表示されるはずです。

‘一般’ タブをクリックし、リンク済みライブラリの下の ‘+’ ボタンを押し、スクロールして libicucore.dylib を追加してください。

libicucore.dylib を Frameworks のフォルダに移動しておくと良いかもしれません。

何とか、動作できるようになりました。プロフィール画像や日付の表示には対応していませんが、私的に利用するには十分です。最後にスクリンキャプチャーを付けておきます。