DSi Ware 'プチコン' 、3月2日開催 Apple Special イベントと任天堂 Game Developer Conference 2011、ニンテンドー3DS 発売、iPhone アプリ iYKRSS バージョン 1.0.3 公開

3月11日(金)、東日本大震災 (東北地方太平洋沖地震) が発生しました。幸いなことに、私が住んでいる地域には影響がありませんでした。このブログに求めているものは、パソコンに関する技術的な情報だと思い、普段通り書きたいと思います。被災地の皆さん、災害に負けず頑張ってください。早い復興を心よりお祈りいたいます。

本題に入る前に、最近熱中していうものがあります。それは、ニンテンドーDSiダウンロード販売している専用ソフトウェア DSi Ware ‘プチコン‘ です。

プチコン
http://smileboom.com/special/petitcom/sample.html
任天堂ページ プチコン DSi Ware
http://www.nintendo.co.jp/ds/dsiware/kkoj/index.html

ニンテンドーDSi 上で動作する BASIC です。ニンテンドーDSi では現在 800 ポイントでダウンロードできます。ニンテンドー3DS上でも動作します。ニンテンドー3DSの場合、配信は5月末頃になるようです。

年齢がばれてしまいますが、BASIC は ポケコン PC-E500、PC-98MacintoshX68000Zaurus、PC-G850VS といろいろ経験してきたので、楽しみにしていました。X68000 の X-BASIC 上のスプライトについては、最後まで理解できませんでした。’プチコン‘ では、スプライトに対応しているので理解できるか心配していたのですが、大丈夫そうです。

プチコン
http://smileboom.com/special/petitcom/sample.html

上記 URL の ‘コマンド一覧’ と ‘サンプルギャラリー’、’プログラムリスト集’ の一部を印刷してバインダーに綴じて理解に励んでいます。特に印刷したプログラムリストの命令を調べるのに、’コマンド一覧’ だけだと不便なので、索引 (インデックス) を Python で作成しました。

追記: [ 2011/03/23(Wed) ] Twitter で知りましたが、プチコンのホームページ上に 'コマンド一覧' は残っているそうです。リンク先の URL は、http://smileboom.com/special/petitcom/command.htmlです。
プチコン - 'コマンド一覧'
http://smileboom.com/special/petitcom/command.html

残念ながら、’コマンド一覧’ は ‘仕様/ダウンロード’ の Web版・PDF ファイルに変更になりました。折角作ったので、何かの役に立つかもしれないと思い ‘索引 (インデックス) レファレンスと Python プログラム’ を公開しておきます。

【 プログラム名 】 プチコン 'コマンド一覧' 索引(インデックス) 作成プログラムと索引リファレンス
ダウンロード: PetitIndex.zip (12KB)
http://kyoshiaki.sakura.ne.jp/osx/Download/PetitIndex.zip


いろいろなプラットフォームに移植しているマインスイーパーでも作ってみたいですね。

本題に入ります。

2月26日、ニンテンドー3DS 発売、3月2日に Apple Special イベントと任天堂 Game Developer Conference 2011 Keynote が開催されましたね!

まず、Apple Special イベントから

3月2日午前10時(日本時間3月3日午前3時) the Yerba Buena Theater in San Francisco, California にて、Special イベントが開かれました。予想通り iPad 2 が発表されました。

Apple - Press Info - Apple Launches iPad 2
http://www.apple.com/pr/library/2011/03/02ipad.html

基調講演は、

Apple Special Event March 2011
http://events.apple.com.edgesuite.net/1103pijanbdvaaj/event/index.html
Apple Keynotes (iTunes Podcast)
http://itunes.apple.com/jp/podcast/apple-keynotes/id275834665

上記 URL でストリーミングや iTunes Podcast で見ることができます。スティーブ・ジョブスが元気そうで何よりです。

また、3月10日に iOS 4.3 アップデートも配信されました。詳しくは

Apple - Press Info - Apple Introduces iOS 4.3
http://www.apple.com/pr/library/2011/03/02ios.html

を参照してください。

私個人としては、iPad 2 が Retina ディスプレイに対応していたら、自作の iPad アプリを対応させるために購入しないといけないと思っていたのですが、その必要がないので、今回は見送るつもりです。公開するかわかりませんが、iPod touch のカメラ機能を利用したアプリも試しに作成してみたので、必要になったら iPad 2 を購入するかもしれません。

ニンテンドー3DS は、2月26日の発売日に手に入れるつもりはありませんでした。ただ、Amazon で定価 25000 円で発売されるのを午後1時頃、夕方午後6時頃、一日に2回チェックしていました。Yahoo! オークションでも値段の推移も確認していました。たまたま確認した 2月24日午後6時頃に入荷していました。ニンテンドー3DS アクアブルーを購入しました。3月5日に到着しました。ニンテンドー 3DS の供給は十分なようで、比較的手に入れやすいようですね!

遊んでみた感想は、ARゲームズニンテンドー3DSカメラは面白かったです。私は眼鏡をかけているのですが、3D についてはそれほど気になりませんでした。

任天堂公式ライセンス商品 ピタ貼り for ニンテンドー3DS は、すごく丁寧に作ってあって iPhoneiPod touchiPad 版も欲しいと思ったぐらいです。ソフトは nintendogs 柴&フレンズを購入しました。

ARゲームズの 3D 効果も驚いたのですが、ニンテンドッグスも負けていないと思います。

また、Apple Special イベントと同じ 3月2日に、任天堂 Game Developer Conference 2011 Keynote が開催されました。基調講演については

Nintendo @ GDC2011
http://gdc2011.nintendo.com/

で見ることができます。詳細については

Live from Nintendo's GDC 2011 keynote (Update: It's over!) | Joystiq
http://www.joystiq.com/2011/03/02/nintendo-gdc-keynote/

を参照してください。


iYKRSS
カテゴリ/ニュース
無料
http://itunes.com/apps/iYKRSS

iPhone アプリ iYKRSS バージョン 1.0.3 を公開しました。

ブログには書いていませんでしたが、第4世代 iPod touch を購入していました。iYKRSSHD を普段利用していたのですが、iPad の iOS が 4.2.1 になり、マルチタスキングに対応させないと使用しづらくなってしまいました。

iPhone 版 iYKRSS も、それなりにダウンロードされているので、もしかしたら使用しづらく困っている人がいるかもしれないと思い、私のアプリケーションの中ではユーザーの多い iPhone 版 iYKRSS を最初にマルチタスキングに対応させることにしました。iPad 版は iPad 2 の発表で Retina ディスプレイに対応する必要がないことがわかったので、今月中には取り掛かりたいと思います。Xcode 4 に慣れないといけないので、少し遅れるかもしれません。

追加した機能は、簡潔に説明すると

1.0.3
- iPhone 4、iPod touch 4世代のRetinaディスプレイに対応。
- RSSフィードの更新をマルチタスキング機能に対応させた。
バックグラウンドで RSS フィードの更新が終了すると画面に通知する。
- RSS フィードの更新中以外の時に、バックグラウンド処理に移ると RSS フィードデータを保存。

です。

注意

私は RSS フィード 60個ぐらい登録しています。iYKRSS を使用中に反応がすごく鈍くなることがあります。メモリ不足が原因のようです。その時は、ホームボタンをダブルクリックして、バックグラウンドにあるアプリケーションを表示し、アイコンを押し続けると ‘-‘ 記号がアイコンに付き揺れ始めるので、’-‘ 記号をタップして iYKRSS 以外のアプリを終了してください。

簡単な使い方を説明しておきます。

基本的な使い方は、下記 URL を参考にしてください。

2009-07-29 - KOYAMA Yoshiaki の日記
http://d.hatena.ne.jp/KYoshiaki/20090729

iYKRSS をタップして起動させます。最初は ‘アップルホットニュース’ というタイトルの RSS フィードが登録されています。

最初は RSS フィードを登録する必要があります。右下の ボタンをタップして RSS フィードの URL を入力してください。RSS フィードの URL は、iPhone 上の Safari ではなく、パソコン上のブラウザを使って表示された URL を使用してください。どうやってブログなどの RSS フィードを見つけるのかについては、iPad 用 iYKRSSHD の説明ですが、 iPhone 用 iYKRSS でも同じなので

2010-10-31 - KOYAMA Yoshiaki の日記
http://d.hatena.ne.jp/KYoshiaki/20101031

が参考になります。

右下の URL ボタンを押すとサンプル RSS フィードを選択できます。

URL を入力し、左下の 更新ボタンをタップするとタイトルなどが自動入力されます。この画面での更新は、保存期間が影響しません。

トップ画面左下の 更新ボタンをタップするとすべての RSS フィードが更新されます。更新に失敗した RSS フィードは、以前ダイアログで表示されましたが、今回から RSS フィード名を赤色で表示するようにしました。更新中は iPhone はスリープしません。ホームボタンを押してバックグラウンドに移るとスリープ解除が無効になるので注意してください。

更新中にホームボタンを押してバックグラウンドに移っても、更新処理は継続されています。すべての RSS フィードの更新が終了すると画面に通知されます。

RSS フィードの更新に失敗すると赤色で表示されます。個別に失敗した RSS フィードを選択して更新するとエラーの詳細をダイアログで表示します。

iYKRSSHD は、まだマルチタスキングン対応していません。注意してください。

iTunes の デバイス App ファイル共有で表示されるファイル RSSArchive.iYKSS は iPhone 用 iYKRSS と iPad 用 IYKRSSHD で互換性があります。iYKRSS の RSS フィードデータを iYKRSSHD に移行したい場合は、iYKRSS のファイル RSSArchive.iYKSS を iYKRSSHD のファイル共有に移動してください。逆に iYKRSSHD のファイル RSSArchive.iYKSS を iYKRSS のファイル共有に移動することもできます。

通常は、必要ないと思いますが、文字列を URL エンコードする Python スクリプトを作成しました。

文字列:  ニンテンドー3DS
URL エンコードした文字列: %E3%83%8B%E3%83%B3%E3%83%86%E3%83%B3%E3%83%89%E3%83%BC3DS
~ $ cd Desktop/
~/Desktop $ ./escape.py ニンテンドー3DS
%E3%83%8B%E3%83%B3%E3%83%86%E3%83%B3%E3%83%89%E3%83%BC3DS
~/Desktop $ ./unescape.py %E3%83%8B%E3%83%B3%E3%83%86%E3%83%B3%E3%83%89%E3%83%BC3DS
ニンテンドー3DS
~/Desktop $ 

登録する RSS フィード

feed://k.hatena.ne.jp/keywordblog/ニンテンドー3DS?mode=rss

ではなく

feed://k.hatena.ne.jp/keywordblog/%E3%83%8B%E3%83%B3%E3%83%86%E3%83%B3%E3%83%89%E3%83%BC3DS?mode=rss

なので注意してください。

公開するのも恥ずかしいプログラムではありますが、良かったら、ダウンロードしてください。

URL エンコード/デコードするプログラム escape.py, unescape.py
ダウンロード: Escape.zip (4KB)
http://kyoshiaki.sakura.ne.jp/osx/Download/Escape.zip

また、私が公開している HatenaDiaryAssistance に追加してみました。

要望があれば公開したいと思います。

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

私的利用、自作 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 のフォルダに移動しておくと良いかもしれません。

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