米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 フォルダに書き込むことができます。

PC-G850V、PC-G850VS 用 SDCC版 Minesweeper ver 1.0

SDCC - Small Device C Compiler
http://sdcc.sourceforge.net/

iPadiOS 4 に熱中している合間に Mac 上で動作する SDCC の C言語を使って、PC-G850V、PC-G850VS 用マインスイーパーを作成していました。何とか動作するようになったので、需要があるかどうかわかりませんが、下記ページで PC-G850V、PC-G850VS 用 SDCC版 Minesweeper ver 1.0 と自作のライブラリを公開します。(自作ライブラリの著作権は放棄しますので、良かったら自由に使ってください。)

PC-G850V
SDCC 版 Minesweeper ver 1.0
http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html

まるひろさんの PC-G850V エミュレータを使って、拙作 SDCC 版 Minesweeper ver 1.0 実行した動画を添付しておきます。 (動画の録画には、QuickTime Player バージョン 10.0 の ‘新規画面収録’ を使用し、編集には iMovie ’09 を利用しました。)

Version 0
http://www16.ocn.ne.jp/~ver0/index.html
http://ver0.sakura.ne.jp/
Linux/Windows/MacOSX用ソフトウェア
SHARP PC-G850/G815/E200エミュレータ g800 version 0.9.8
http://www16.ocn.ne.jp/~ver0/pc/index.html#g800
http://ver0.sakura.ne.jp/pc/index.html#g800

動画
http://youtube.com/watch?v=_Xf9NC514bo

公開されている SDCC 版 Minesweeper ver 1.0 はソースも含まれています。Makefile の書き方は

Pocket Game Library - INDEX
http://pocketgame.web.fc2.com/
Pocket Game Library - PC-G850 GAME
SDCC用ライブラリ + サンプルゲーム ギャラクシーウォール
http://pocketgame.web.fc2.com/game_g.html#g04

を参考にしました。

sdcc で -mz80 を指定するとライブラリ /Developer/sdcc/share/sdcc/lib/z80/z80.lib (Mac OS X 専用パス) をリンクします。z80.lib に含まれる関数は

/Developer/sdcc/share/sdcc/lib/src/z80 $ ls
README		divsigned.s	memmove.s	mulchar.s	stubs.s
crt0.s		divunsigned.s	mod.s		putchar.s
crt0_rle.s	fstubs.s	modsigned.s	shift.s
divmixed.s	heap.s		mul.s		strlen.s

/Developer/sdcc/share/sdcc/lib/src/z80/ (Mac OS X 専用パス) に関数名のファイルとして含まれています。

拙作 Minesweeper ver 1.0 を make で作成中にできる minesweeper.map を参照すればリンクされる関数名や関数の番地も分かるので PC-G850VS の機械語モニタでブレークポイント設定するのに便利です。

PC-G850VS の画面描画の仕組みについては

COSMO PATROL
http://orange.kakiko.com/cosmopatrol/
1ドットの誘惑
http://orange.kakiko.com/cosmopatrol/1dot/dot.html

で学びました。

IOCS について

SHARP PC-G850 解析資料
http://www.akiyan.com/pc-g850_technical_data

が参考になります。

Mineswepper ver 1.0 を作成中に乱数をどうやって発生させるのか、皆目見当も付かなかったのですが!たまたま、まるひろさんの

Version 0
http://www16.ocn.ne.jp/~ver0/index.html
http://ver0.sakura.ne.jp/
PC-G850/G815/E200用ソフトウェア
PC-G850用ライブラリ
http://www16.ocn.ne.jp/~ver0/g800/index.html#libg800
http://ver0.sakura.ne.jp/g800/index.html#libg800

PC-G850用ライブラリで 線形合同法を利用することを知り Wikipedia で調べました。

擬似乱数 - Wikipedia
http://ja.wikipedia.org/wiki/%E7%96%91%E4%BC%BC%E4%B9%B1%E6%95%B0
Pseudorandomness - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Pseudorandom_numbers
List of random number generators - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/List_of_random_number_generators

下記ページが一番理解しやすいと思います。

 Linear congruential generator - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Linear_Congruential_Generators

こんな簡単な式

{X_{\fs{+1}n+1}  = (a{X_{\fs{+1}n} + c) \text { mod m}

で疑似乱数を発生できるのですね!

私の理解不足か、拙作 Minesweeper ver 1.0 の疑似乱数発生の周期が小さいような気がします。

SDCC - Snapshot Builds
Documentation
Full documentation, including HTML and PDF files; zip is for Windoze (docs)
http://sdcc.sourceforge.net/snap.php#Docs
sdccman.pdf

sdcc、sdasz80、sdcclib、packihx の使用方法やコマンドラインは、上記ページからダウンロードできる Zip ファイルに含まれる sdccman.pdf を参考にしました。

作成中のPC-G850用Cライブラリ - Tosikの雑記
http://d.hatena.ne.jp/tosik/20061023/1161551560

インラインアセンブラのサンプルとして上記ページも参考にしました。最近の SDCC では、文法が

誤) _asm  -> 正) __asm
誤) _endasm;  -> 正)  __endasm;

に変更されているので注意してください。

IOCS ルーチンを C とインラインアセンブラで作成する時に

sdcc -mz80 -c --opt-code-size -o iocs.rel iocs.c
iocs.c:22: warning 85: in function printchar unreferenced function argument : 'x'
iocs.c:22: warning 85: in function printchar unreferenced function argument : 'y'
iocs.c:22: warning 85: in function printchar unreferenced function argument : 'ascii'
iocs.c:45: warning 59: function 'inkey' must return value
iocs.c:45: warning 85: in function inkey unreferenced function argument : 'keycode'
iocs.c:59: warning 59: function 'inkeyWait' must return value
iocs.c:79: warning 85: in function vram unreferenced function argument : 'x'
iocs.c:79: warning 85: in function vram unreferenced function argument : 'y'
iocs.c:79: warning 85: in function vram unreferenced function argument : 'size'
iocs.c:79: warning 85: in function vram unreferenced function argument : 'address'

上のような警告が表示されます。関数の引数を参照しなかったり、返り値を宣言していないためです。
警告を防ぐため

/*=====================[ iocs.c ]=====================*/
#pragma disable_warning 59
#pragma disable_warning 85
/*================================================*/

と宣言しました。

~/Minesweeper/Sources $ make
sdasz80 -gl -o crt0.rel crt0.asm
sdcc -mz80 -c --opt-code-size -o minesweeper.rel minesweeper.c
sdasz80 -gl -o data.rel data.asm
sdcc -mz80 -c --opt-code-size -o iocs.rel iocs.c
sdcclib iocs.lib iocs.rel
sdcc -mz80 -c --opt-code-size -o library.rel library.c
sdcclib library.lib library.rel
sdcc -mz80 --code-loc 0x108 --data-loc 0 --no-std-crt0 -o minesweeper.ihx crt0.rel minesweeper.rel data.rel iocs.lib library.lib -L .
packihx minesweeper.ihx > minesweeper.hex
packihx: read 723 lines, wrote 523: OK.
~/Minesweeper/Sources $ 

上のようにうまくビルドすることができました。

BASICマインスイーパーと違って旗を立てたり、開いたセルに書かれている数字の数だけ、周りのセルに旗を立てて、数字の書かれたセルをスペースキーで押すと自動的に旗を立てていないセルを開くことができます。パソコン版のマインスイーパーでよくあるダブルクリック機能と同じ動作です。

SDCCの C コンパイラには、いろいろ苦労させられました。何とか動作できるものができました。

ブログとホームページ [ http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html ] にアクセス解析を設置しているのですが、ブログを検索エンジンからキーワード ‘PC-G850VS’ などで訪れる人は、私が確認した限りすべて Windows ユーザーです。

PC-G850V
http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html

を訪れる人もほとんどが Windows ユーザーです。折角公開した PCG-LinkMac もあまり使われていないうようです。残念です。

私自身 VMware FusionWindows XPSHARP 製 ‘PC-Gリンク’ で、インテルヘキサ形式ファイルの送信時にエラーが出るので ‘拙作 PCG-LinkMac’ には重宝しています。

最近の Mac だと PCG-LinkMac が正しく動作するか心配ですが!

対処方法として ’アプリケーション PCG-LinkMac’ を右クリックして ‘パッケージの内容を表示’ を選び ‘Contents/Resources/Japanese.lproj/’ フォルダの ‘Localizable.strings’ ファイル

PCG-LinkMac.app/Contents/Resources/Japanese.lproj/Localizable.strings
"pcg_send_duration"="0.001";
"pcg_receive_duration" = "0.005";

上の値を変更すればうまくいくかもしれません。’Localizable.strings’ ファイルの文字コードUTF-16 なので注意してください。

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 を使用することが多くなりました。