日本時間 4月21日午前2時に Apple がオンラインイベントを開催

2021/04/14(Wed) 18:36:10
Apple Events - Apple
https://www.apple.com/apple-events/
2021/04/14(Wed) 18:36:44
Apple、オンラインイベントを21日午前2時に開始。iPadなどの新製品発表か - PC Watch
https://pc.watch.impress.co.jp/docs/news/1318455.html

2021/04/14(Wed) 18:37:07
Appleが4月21日午前2時にオンラインイベントを開催 - ITmedia PC USER
https://www.itmedia.co.jp/pcuser/articles/2104/14/news055.html

2021/04/14(Wed) 18:37:28
ASCII.jp:アップル、4月20日にイベント開催発表 iPad Proに期待!?
https://ascii.jp/elem/000/004/051/4051419/

2021/04/14(Wed) 18:38:06
Apple、2021年4月20日にスペシャルオンラインイベント「Spring Loaded.」を開催すると発表(日本時間4月21日) | Apple | Macお宝鑑定団 blog(羅針盤)
http://www.macotakara.jp/blog/apple/entry-41123.html
2021/04/14(Wed) 18:38:41
Apple April 20 event: Everything that could be announced - 9to5Mac
https://9to5mac.com/2021/04/13/apple-april-event-roundup/

2021/04/14(Wed) 18:39:26
What product are you most excited to see at Apple April Event? - 9to5Mac
https://9to5mac.com/2021/04/13/poll-apple-april-event/

2021/04/14(Wed) 18:39:53
Siri says the next Apple event is on April 20: new iPad Pro expected - 9to5Mac
https://9to5mac.com/2021/04/13/siri-says-the-next-apple-event-is-on-april-20-new-ipad-pro-expected/

新型 iPad Pro や新デザインの iMac が噂になってる。
新型 iMac が発表されたら、Apple M1 チップの後継モデルがどのくらいの性能になるのか、楽しみ。

拙作 iPhone 用 RSS リーダー iYKRSS、iPad 用 RSS リーダー iYKRSSHD 無料公開、 iOS 用 Twitter アプリ作成方法

ちょっと宣伝です。拙作 RSS リーダー iYKRSS を iPhone 5 スクリーンで表示できるようにしました。また、iPadRSS リーダー iYKRSSHD を Retina ディスプレイに対応しました。

あらかじめ登録された芸能人ブログリストから RSS フィードを簡単に選ぶことができるので、RSS リーダーを使ったことがない初心者にもお勧めです。

iYKRSS、iYKRSSHD 共に無料です。ただし、iYKRSSHD は、9月になると 85 円に戻ります。iPhoneiPod touchiPad を持ってる人は、良かったら試しにダウンロードしてみてください。

使い方がわからない人は、気軽にコメントに書き込んでください。返事は、遅れるかもしれないのでご了承ください。

iYKRSS version 1.0.4
http://appstore.com/yoshiakikoyama/iykrss

iYKRSSHD version 1.0.2
http://appstore.com/yoshiakikoyama/iykrsshd

随分遅れましたが、前回、予告した iOS 用 Twitter アプリ作成方法を説明したいと思います。私自身、良く理解していない部分もあるので、間違いもあるかもしれません。

基本的に、下記 URL の REST API v1.1 を

REST API v1.1 Resources | Twitter Developers
https://dev.twitter.com/docs/api/1.1

使って Twitter のタイムライン情報などを取得します。REST API v1.1 を前回説明した GET、POST で送信するのですが、

Authorizing a request | Twitter Developers
https://dev.twitter.com/docs/auth/authorizing-request

上記、URL の

POST /1/statuses/update.json?include_entities=true HTTP/1.1
Accept: */*
Connection: close
User-Agent: OAuth gem v0.4.4
Content-Type: application/x-www-form-urlencoded
Authorization:
OAuth oauth_consumer_key="xvz1evFS4wEEPTGEFPHBog",
oauth_nonce="kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg",
oauth_signature="tnnArxj06cWHq44gCs1OSKk%2FjLY%3D",
oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1318622958",
oauth_token="370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb",
oauth_version="1.0"
Content-Length: 76
Host: api.twitter.com
status=Hello%20Ladies%20%2b%20Gentlemen%2c%20a%20signed%20OAuth%20request%21

のように、認証情報 (上の Authorization: OAuth の部分) が必要です。OAuth を使って取得する必要があります。

しかし、iOS の場合、

 Using Reverse Auth | Twitter Developers
https://dev.twitter.com/docs/ios/using-reverse-auth

Reverse Auth を使って OAuth の情報を取得できます。取得の仕方は、

 seancook/TWReverseAuthExample · GitHub
https://github.com/seancook/TWReverseAuthExample

を参考にした拙作サンプル

自作 iOS 用 Twitter アプリ サンプル TSTwitter
http://kyoshiaki.sakura.ne.jp/osx/Sample/Twitter.zip

に含まれています。 KeyDefines.h の

#define TWITTER_CONSUMER_KEY    @""
#define TWITTER_CONSUMER_SECRET @""

を設定してください。Consumer key、Consumer secret を使うには、

Twitter Developers
https://dev.twitter.com/

にログインして、自分のアイコンをクリックして表示されるメニューから ‘My applications’ を選び、’Create a new application’ ボタンをクリックして My application を作成する必要があります。

Sign in with your Twitter account | Twitter Developers
https://dev.twitter.com/apps

作成した application を選べば、Consumer key、Consumer secret は表示されます。

自作 iOS 用 Twitter アプリ サンプル TSTwitter
http://kyoshiaki.sakura.ne.jp/osx/Sample/Twitter.zip

の TSViewController.m の Reverse Auth を呼び出している部分は、

TSViewController.m

- (void)awakeFromNib {
__unsafe_unretained TSViewController *me = self;
_accountStore = [[ACAccountStore alloc] init];
_apiManager = [[TWAPIManager alloc] init];
ACAccountType *twitterType = [_accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
_accounts = [_accountStore accountsWithAccountType:twitterType];
_account = [_accounts objectAtIndex:0];
NSLog(@"%@", _account);
NSLog(@"identifier: %@", _account.identifier);
NSLog(@"username: %@", _account.username);
if ([TWITTER_CONSUMER_KEY isEqualToString:@""]) {
NSLog(@"TWITTER_CONSUMER_KEY=\"\"");
[self requestApiTimeline:self];
//        [self requestApi:me];
} else {
[_apiManager performReverseAuthForAccount:_account withHandler:^(NSData *responseData, NSError *error) {
if (responseData) {
NSString *responseStr = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSArray *parts = [responseStr componentsSeparatedByString:@"&"];
me.reverseAuth = [NSMutableDictionary dictionary];
//            NSLog(@"%@", responseStr);
for (NSString *line in parts) {
NSArray *array = [line componentsSeparatedByString:@"="];
[me.reverseAuth setObject:array[1] forKey:array[0]];
}
//            NSLog(@"%@", me.reverseAuth);
//
[me requestApi:me];
//                [me requestRawApi:me];
}
}];
}
}

[_apiManager performReverseAuthForAccount:_account withHandler:^(NSData *responseData, NSError *error) { です。

_apiManager に引数、ACAccount *account と最終的に呼ばれるブロックを渡し、performReverseAuthForAccount: withHandler: メソッドを呼ぶと

Using Reverse Auth | Twitter Developers
https://dev.twitter.com/docs/ios/using-reverse-auth

の最後にある下部

oauth_token=2311112785-EXKeLV5ezo3HHIaIf1T3ffeww0mR5dfYXKZjjRy0&oauth_token_secret=KYxxxxx3U4Fxrxva3BGD92--12ehEzFwQ&user_id=38895958&screen_name=theseancook

のような、oauth_token、oauth_token_secret、user_id、screen_name を NSData *responseData で返してくれます。ここで重要なのは、user_id を返してくれることです。実は、Reverse Auth を使わなくても、タイムラインを表示することができます。

    if ([TWITTER_CONSUMER_KEY isEqualToString:@""]) {
NSLog(@"TWITTER_CONSUMER_KEY=\"\"");
[self requestApiTimeline:self];
//        [self requestApi:me];

上の部分が TWITTER_CONSUMER_KEY が設定されていない場合、Reverse Auth を使わないでタイムラインを表示しています。

ただし、他の REST API v1.1 を使用するためには user_id が必要になってきます。

後は、簡単です。アップルが用意したフレームワークの SLReuest を使って Twitter API v1.1 を呼び出す汎用 API

- (void)performTwitterRequestAccount:(ACAccount *)account Method:(SLRequestMethod)method URL:(NSURL *)url parameters:(NSDictionary *)dict completion:(TwitterRequestHandler)completion

です。

- (void)requestApi:(id)sender {
//    url = [NSURL URLWithString:@"http://192.168.1.6:9090/1.1/lists/list.json"];
url = [NSURL URLWithString:@"https://api.twitter.com/1.1/lists/list.json"];
//    dict = @{@"user_id" : @"00000000"}; // user_id を設定してください
dict = @{@"user_id" : [self.reverseAuth objectForKey:@"user_id"]}; // TWITTER_CONSUMER_KEY を設定していないと使えません。
[self performTwitterRequestAccount:_account Method:SLRequestMethodGET URL:url parameters:dict completion:^(NSArray *json, NSURLResponse *response, NSError *error) {
NSLog(@"===< List >===");
//      NSLog(@"%@", json);
for (NSDictionary *list in json) {
NSString *text = [NSString stringWithFormat:@"<%@>\n  list_id:%@\n  slug:%@",[list  objectForKey:@"uri"],[list  objectForKey:@"id"],[list  objectForKey:@"slug"]];
NSLog(@"%@", text);
}
}];

で、- (void)performTwitterRequestAccount:(ACAccount *)account Method:(SLRequestMethod)method URL:(NSURL *)url parameters:(NSDictionary *)dict completion:(TwitterRequestHandler)completion を呼び出しているのがわかると思います。この場合、自分のリストを表示しています。

 url = [NSURL URLWithString:@"http://192.168.1.6:9090/1.1/lists/list.json"];

を有効にして、前回の GET、POST のように SLRequest がどんなデータをサーバーに送信しているのか確認することができます。

まず、ターミナルで

自作 iOS 用 Twitter アプリ サンプル TSTwitter
http://kyoshiaki.sakura.ne.jp/osx/Sample/Twitter.zip

に含まれる server.rb を実行します。その後、TSTwitter.xcodeproj を開き、ツールバー上 Run ボタンをクリックします。画面が現れプログラムが起動し終えたら、Stop ボタンを押します。ターミナル上に実際の SLRequst がサーバーに送るデータが下図のように表示されます。

上図より、

Authorizing a request | Twitter Developers
https://dev.twitter.com/docs/auth/authorizing-request

上記 URL の

POST /1/statuses/update.json?include_entities=true HTTP/1.1
Accept: */*
Connection: close
User-Agent: OAuth gem v0.4.4
Content-Type: application/x-www-form-urlencoded
Authorization:
OAuth oauth_consumer_key="xvz1evFS4wEEPTGEFPHBog",
oauth_nonce="kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg",
oauth_signature="tnnArxj06cWHq44gCs1OSKk%2FjLY%3D",
oauth_signature_method="HMAC-SHA1",
oauth_timestamp="1318622958",
oauth_token="370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb",
oauth_version="1.0"
Content-Length: 76
Host: api.twitter.com
status=Hello%20Ladies%20%2b%20Gentlemen%2c%20a%20signed%20OAuth%20request%21

と似ているのが理解できると思います。SLRequest を使わずに NSMutableURLRequest で実現したのが

自作 iOS 用 Twitter アプリ サンプル TSTwitter
http://kyoshiaki.sakura.ne.jp/osx/Sample/Twitter.zip

に含まれているソース

TSSignedRequest.h
TSSignedRequest.m

の TSSignedRequest

- (void)performTSTwitterRequestMethod:(TSSignedRequestMethod)method URL:(NSURL *)url parameters:(NSDictionary *)dict completion:(TSTwitterRequestHandler)completion {
- (void)requestRawApi:(id)sender {
- (void)performTSTwitterRequestMethod:(TSSignedRequestMethod)method URL:(NSURL *)url parameters:(NSDictionary *)dict completion:(TSTwitterRequestHandler)completion {

です。SLRequest と似ているので注意してください。TSSignedRequest を通常使う必要はありません。Twitter API の動作を確認するために、実験的に作ってみただけです。SLRequest を使ってください。

SLRequest を使うだけなら、Reverse Auth が必要ないと思うかもしれません。以前は ACAccount *account から user_id を取り出すことができたのですが、現在、Reverse Auth を使って user_id を取り出すしか方法がありません。

Twitter API v1.1 を試すには、Mac App StoreTwitter、ターミナル上で curl を使う方法があります。

Mac 上で動作する本家 Twitter アプリは、Mac App Store にあります。

Twitter
http://appstore.com/mac/twitterinc/twitter

上記 URL をクリックすれば表示されます。

Twitter をクリックして実行し、メニュー/Twitter/環境設定… を選び、ツールバーから ‘開発者’ を選択します。コンシュマーキー、アクセストークンを入力し、認証ボタンをクリックすると開発者メニューが有効になります。

試しに、メニュー/開発/コンソール を選び、ホームタイムラインを表示してみたのが下図です。

curl を使って試す方法は、まず、

Twitter Developers
https://dev.twitter.com/

にログインします。

REST API v1.1 Resources | Twitter Developers
https://dev.twitter.com/docs/api/1.1

を開き、呼びたい REST Api をクリックします。ここでは、GET statuses/home_timeline にします。
右側、OAuth tool で ‘Select one of your Apps’ から自分のアプリケーションを選びます。その後、Generate OAuth signature ボタンをクリックします。

表示されたページの Request URI: が正しく設定されているか確かめます。 Request query: に設定したいパラメーターを入力します。ここでは、count=2 と入力します。

この後、ページの一番下の See Oauth signature for this request ボタンをクリックします。

表示されたページの OAuth Signing Results に cURL command と名前の項目があります。右横にパラメーターがセットされた curl コマンドが表示されています。それをコピーして、ターミナルにペーストし実行すれば、生の JSON データを取得することができます。

TI-Nspire CX CAS 版 Neko (Kitty) 公開、iPad 上で動作する Lua スクリプト言語開発 Codea、とびだせ どうぶつの森

以前、紹介したように Texas Instruments Nspire CX CAS Graphing Calculator (以下略 TI-Nspire CX CAS) を購入しました。
TI-Nspire CX CAS では、Lua スクリプト言語でプログラムを組むことができます。

それで、Amazon.com から Kindle

Beginning Lua Programming (Programmer to Programmer)

Beginning Lua Programming (Programmer to Programmer)

を購入し、読んでいる途中なのですが、実際に TI-Nspire CX CAS で Lua スクリプト言語プログラミングに挑戦してみました。
初めての Lua スクリプト言語プログラミングなので、稚拙です。

プログラムの題材は、私が、いろいろなプラットフォームに移植している Neko

Neko (ソフトウェア) - Wikipedia
http://ja.wikipedia.org/wiki/Neko_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)

です。

名前は、Kitty (子猫) にしてみました。良かったら下記 URL からダウンロードしてください。

Kitty Version 1.0.0
猫 (Neko) Version 1.0.0
http://kyoshiaki.sakura.ne.jp/osx/Sample/Kitty.zip

プログラムの実行は、TI-Nspire CAS Student Software の Content Explorer で Computer から Kitty.tns ファイルをダブルクリックして開き、Tab 1.2 を選択すると実行画面が表示されます。Content Explorer を使って TI-Nspire CX CAS 本体 (Connected Handhelds) に Kitty.tns ファイルをドラッグ・ドロップすれば、コピーできます。

TI-Nspire CAS Student Software で Tab 1.2 を開き、メニュー ‘Insert/Script Editor/Edit Script’ を選択すると Script Editor が起動し、ソースを確認することができます。

また、iPad 上で Lua スクリプト言語でプログラムを組むことができる Codea を購入してみました。

App Store
Codea
https://itunes.apple.com/jp/app/codea/id439571171?mt=8
カテゴリ:仕事効率化
\850

折角、覚えた Lua スクリプト言語を活かして見たいですね!

また、年甲斐もなく

とびだせ どうぶつの森
http://www.nintendo.co.jp/3ds/egdj/index.html

を買ってみました。どうぶつの森が、どのようなゲームなのかあまり理解していなかったので、Wiki

とびだせ どうぶつの森@まとめwiki - トップページ
http://www49.atwiki.jp/doubutsunomori3ds/
とびだせ どうぶつの森 攻略まとめWiki
http://ebiyokan.straw-berry.net/butsumori_3ds/
Animal Crossing City, the Animal Crossing wiki - Wild World, City Folk, codes, and more
http://animalcrossing.wikia.com/wiki/Animal_Crossing_Wiki

で確認しながら、進めました。(英語の勉強に、英語版 Wiki も利用しています。)

任天堂公式ページ

とびだせ どうぶつの森
http://www.nintendo.co.jp/3ds/egdj/index.html
とびだせ どうぶつの森:配信プレゼント
http://www.nintendo.co.jp/3ds/egdj/item/present.html
とびだせ どうぶつの森:マイデザイン
http://www.nintendo.co.jp/3ds/egdj/item/design.html
とびだせ どうぶつの森ニンテンドーhttp://www.nintendo.co.jp/3ds/egdj/item/village.html

の配信プレゼント、マイデザイン、ニンテンドー村を訪れるのをお忘れなく。

私が作成したホビット村のスクリーンショットです。(スクリーンショットを撮るには、L+R ボタン同時押しです。スクリーンショットのファイルは、SDカードに保存されるので、パソコンからアクセスするか、3DS 内蔵ブラウザを利用します。)

また、スクリーンショット画像をニンテンドー3DSから取り出すのに、いちいち SD カードを使うのは、面倒です。そこで、ニンテンドー3DS のブラウザ経由で、Mac に保存するプログラムを PHP で組んでみました。

OSX 10.8 Mountain Lion で Web 共有と PHP5 を有効にしているので、~/サイト (~/Sites) フォルダに PHP プログラムを置き、ニンテンドー3DS のブラウザでアクセスし、画像を Mac にアップロードできます。単純なプログラムです。スクリーンショットを付けておきます。要望があれば、公開するかもしれません。

ニンテンドー3DS内蔵ブラウザで、Mac にアクセスした状態。

Safari
http://localhost/~あなたのアカウント/AnimalCrossing/3DS.php
ニンテンドー3DS内蔵ブラウザ
http://プライベートアドレス(例: 192.168.1.2)/~あなたのアカウント/AnimalCrossing/3DS.php
Finder
/Users/あなたのアカウント/Sites/AnimalCrossing/data

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 に持ってくることが可能になります。(現在はできません。)

アップル 2010年秋 スペシャルイベント、Twitter 用ライブラリ XAuthTwitterEngine に機能を追加して公開

アップル 2010年秋 スペシャルイベントが 9月1日 (September. 1, 2010 at 10 a.m. Pacific Time : 日本時間9月2日深夜午前2時) に Yerba Buena Center で開かれました。スペシャルイベントのストリーミング動画は

Apple - Apple Events - Apple Special Event September 2010
http://events.apple.com.edgesuite.net/1009qpeijrfn/event/index.html

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

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

でも配信されています。

今回のイベントで発表されたのは新 iPod ラインナップ、iOSプレビュー、新 iTunes とサービス、新 Apple TV でした。

iPod nanoiPod shuffle には興味がありませんが、新 iPod touch は、拙作 iYKRSS を Retina ディスプレイには対応させるために購入しようか悩んでいます。カメラ機能も購買意欲をそそられます。

以前 id:KYoshiaki:20100627、紹介したように自作した iPadRSSリーダー iYKRSSHD と Twitter アプリ iYKTwitter は毎日使用しています。ところが、Twitter の認証方式が OAuth 認証必須になり、Basic 認証が廃止されました。それで iYKTwitter を OAuth 認証に対応させる必要が生じました。

ネットで調べてみると OAuth 対応は難しそうなので OAuth 認証の簡易版 xAuth が良さそうです。

xAuth を使うために以下のサイトを

xAuthを使うための手続き - タイトルは未定
http://d.hatena.ne.jp/nakaji999/20100623/1277306203
xAuthの申請をしてみた « Today’s Replay
http://tmokita.sakura.ne.jp/wpress/2010/06/28/xauth%E3%81%AE%E7%94%B3%E8%AB%8B%E3%82%92%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F/

を参考にしました。

Create cool applications! | dev.twitter.com
http://dev.twitter.com/

まず、最初に上の URL で Twitter アカウントでサインインし、2. Register an app をクリックするとアプリケーション登録申請ページが開きます。自作アプリを登録します。ただし、アプリケーション名で Twitter という文字を含んでいるとエラーになります。私の場合、iYKTwitter では登録できませんでした。それでアプリケーション名を iYKTweetHD に変更しました。これで OAuth 認証が使えるようになりました。

OAuth 認証の簡易版 xAuth を利用するためには api@twitter.com にメールを送って、有効にしてもらう必要があります。メールに送る内容については、先ほど紹介した下記 2つのページが参考になります。

xAuthを使うための手続き - タイトルは未定
http://d.hatena.ne.jp/nakaji999/20100623/1277306203
xAuthの申請をしてみた « Today’s Replay
http://tmokita.sakura.ne.jp/wpress/2010/06/28/xauth%E3%81%AE%E7%94%B3%E8%AB%8B%E3%82%92%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F/

それぞれ申請するアプリの platform に合わせて送信する内容を置き換えてください。私の場合は iPadiOS 3.2 です。また、下記本家サイトを確認すると

Using xAuth | dev.twitter.com
http://dev.twitter.com/pages/xauth
xAuth access is restricted to approved applications. If your application is a
desktop or mobile application and the standard web OAuth flow or PIN-code
out-of-band flow is not right for you, send a detailed message to api@twitter.com
to request xAuth privileges. Include the name of your application,
the consumer key, the application ID (if available), and a summary of how xAuth
is best-suited for your application.

consumer key も必要そうなのでメールで送りました。スクリーンショットについては、私は MobileMe に加入しているので、Sites フォルダにスクリーンショットファイルを置いて下記 URL をメールに書いて送りました。

http://homepage.mac.com/'メンバー名'/'スクリーンショットファイル'

次の日にメールで xAuth が使用可能になったと返事が届きました。

xAuth を自力で実装するのは無理なので、参考になるライブラリを探しました。XAuthTwitterEngine が良さそうです。

最初に見つけた XAuthTwitterEngine ライブラリは

aral's XAuthTwitterEngine at master - GitHub
http://github.com/aral/XAuthTwitterEngine

です。さらにフォークを探してみるとリストに対応した

penso's XAuthTwitterEngine at master - GitHub
http://github.com/penso/XAuthTwitterEngine

を発見しました。ところがファイルがすべて揃っていません。仕方がないので自分で作成しました。また statuses/home_timeline や retweeted_status も実装されていないようなので追加しました。私が個人的に利用するために作成したものなので status の id が文字列に変更されています。注意してください。それにしてもきれいなソースには驚かされました。大変勉強になります。

github の使い方がよく分からないので、はてなのファイルアップロード機能利用して機能を追加した XAuthTwitterEngine Zip ファイルをアップロードしておきます。下記リンクからダウンロードできます。ただし、下記リンクのファイル名をクリックするとダウンロードされたファイル名が変化しますので、横の矢印↓をクリックしてダウンロードしてください。

Yoshiaki-XAuthTwitterEngine.zip 直

Yoshiaki-XAuthTwitterEngine.zip
http://kyoshiaki.sakura.ne.jp/osx/Hatena/Yoshiaki-XAuthTwitterEngine.zip

簡単な説明は、Zipファイルに同封された ReadMe-j.rtf に記載しておきました。公開に問題があったら、取り消しするかもしれません。質問についてはコメントを利用してください。返事は遅くなるかもしれません。

最後に XAuthTwitterEngine を利用して作った自作 Twitter アプリ iYKTweetHD の実行画面を添付しておきます。