<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1343562093772154599</id><updated>2024-10-07T13:58:44.224+09:00</updated><category term="NSString"/><category term="OpenGL ES"/><category term="UIButton"/><category term="UIKit"/><category term="cocos2d"/><category term="coreGraphics"/><category term="iPad"/><category term="iPhone"/><category term="obj-c"/><category term="objective-c"/><title type='text'>iPhoneアプリを作ろう</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-2286175610276255689</id><published>2013-07-30T19:11:00.004+09:00</published><updated>2013-07-30T19:11:43.767+09:00</updated><title type='text'>iOS アプリリリースまでのメモ</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&amp;lt;DevCenter&amp;gt;&lt;br /&gt;
1,devCenterへログイン&lt;br /&gt;
2,Certificates,Identifiers &amp;amp; Profilesへ&lt;br /&gt;
3, App IDs　に登録。&lt;br /&gt;
　　　名称などを入れてPushNotificationを使えるようにして登録&lt;br /&gt;
　　　&lt;br /&gt;
4, Continueを押して確認画面へ、その後 Submit&lt;br /&gt;
&lt;br /&gt;
5,Provisioning Profiles &amp;gt; Distribution&lt;br /&gt;
&amp;nbsp; &amp;nbsp;プラスボタン&lt;br /&gt;
&lt;br /&gt;
６、 What type of provitioning profile do you need?&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Distribution の AppStoreにチェックしてContinue&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;nbsp;7, Select App ID&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;さきほど作ったAppIDをプルダウンで選択&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
8, Select certificaties&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; 以前、実機ビルドするために作っているはずなので割愛します。&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; それを選択してContinue&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;
9, Name this profile and generate&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp;適当な名前をつけてください。&lt;br /&gt;
&amp;nbsp; &amp;nbsp;Generateを押す&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
10, プロビジョニングをDLしてダブルクリック&lt;br /&gt;
&lt;br /&gt;
&amp;lt;iTunesConnect&amp;gt;&lt;br /&gt;
1,iTunesConnectにログイン&lt;br /&gt;
　devCenterと同じID/PW&lt;br /&gt;
　&lt;br /&gt;
2,Manage Your Apps へ&lt;br /&gt;
&lt;br /&gt;
　Add New App ボタンを押す&lt;br /&gt;
　&lt;br /&gt;
&amp;nbsp;&amp;lt;AppInformation の入力&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; DefaultLanguage = JPNでもいいですが、Englishにしておくと後々はまりづらいです。&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp; 　AppName = AppStoreに表示するアプリの名前&lt;br /&gt;
&amp;nbsp; 　　　※使われてるとエラーになります。&lt;br /&gt;
&amp;nbsp; 　SKU Number = ユニークなキー　（適当でいいです）&lt;br /&gt;
&amp;nbsp; 　Bundle ID =　プルダウンで選択。事前にDevCenterで作っておく必要があります。&lt;br /&gt;
&amp;nbsp; 　&lt;br /&gt;
&amp;nbsp; 　 次の画面へ&lt;br /&gt;
&amp;nbsp; 　&lt;br /&gt;
&amp;nbsp; Availability Date&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; いつからリリースしたいかです。通常は最短ですが、プレス打つ場合などは先の日付です。&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;nbsp; Price Tier &amp;nbsp;= いくらで売るか。こんかいはFreeで&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp; Discount for Educational Institutions = 学生とかにディスカウントするかどうか。Freeなのではずします。&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp; 次の画面へ&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp; VertionNumber = 1.0&lt;br /&gt;
&amp;nbsp; copyright = TigerTech.inc とか？&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&amp;nbsp;Primary Category = どのカテゴリのアプリにしたいか。&lt;br /&gt;
&amp;nbsp;Secondary category = 　同上&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Rating = Simlated Gambling 以外はNoneで&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Description =　アプリの概要を記述　じつは結構な長文が入ります。&lt;br /&gt;
&amp;nbsp;keyword ＝　検索キーワードをカンマ区切りで&lt;br /&gt;
&amp;nbsp;SupportURL = アプリの紹介ページが必要です。そのURL&lt;br /&gt;
&amp;nbsp;MarketingURL = 紹介サイトなど（不要）&lt;br /&gt;
&amp;nbsp;Privacy Policy URL = 不要&lt;br /&gt;
　&lt;br /&gt;
・AppReview Information&lt;br /&gt;
　　　　担当者の連絡先などを記載&lt;br /&gt;
　　　　&lt;br /&gt;
・DemoAccount Information&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;デモ用のアカウントがあればそれを記載&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;lt; Uploads&amp;gt;&lt;br /&gt;
&lt;br /&gt;
※ ここは事前に用意が必要&lt;br /&gt;
　プロモーションの要素もかねているので、&lt;br /&gt;
　アプリの中で一番いい物をスクリーンショットとして選ぶ。&lt;br /&gt;
　画面の遷移の順番通の必要はないので、相手に見てもらいたい順にあげる。&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Large App Icon &amp;nbsp;= 1024　× 1024 の大きいアイコンが必要&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;3.5Inch スクリーンショット&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;4 Inch スクリーンショット&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;バイナリをあげる&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1,XcodeにてSchemeを実機に設定 (実機にビルドするときと同じ物を選択)&lt;br /&gt;
2,Optionを押しながらRun ボタンを押して Debug　からRelaseに変更&lt;br /&gt;
３、 Product &amp;gt; &amp;nbsp;Clean&lt;br /&gt;
4, &amp;nbsp;Product &amp;gt; archive&lt;br /&gt;
5, archiveが終わると画面が変わるので　Validateを押す。&lt;br /&gt;
６、Distributionを押す。&lt;br /&gt;
　　　AppStoreを選択。&lt;br /&gt;
　　　プロビジョニングが、上記で作ったものであることを確認&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
７、iTuneConnectにて Waiting For Reviewになっていることを確認&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/2286175610276255689/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2013/07/ios.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/2286175610276255689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/2286175610276255689'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2013/07/ios.html' title='iOS アプリリリースまでのメモ'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-5528824707175883300</id><published>2013-01-23T13:22:00.000+09:00</published><updated>2013-01-23T13:22:20.757+09:00</updated><title type='text'>CoreData 小技　EntityからNSDictionaryをとる</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;CoreData&lt;/span&gt;やってるとさ〜&lt;span style=&quot;font-size: large;&quot;&gt;Mo&lt;/span&gt;(MamagedObject)と&lt;span style=&quot;font-size: large;&quot;&gt;NSDictionary&lt;/span&gt;のやりとりってめんどいですよね？&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;いちいち代入とかやってらんないよ！&lt;/span&gt;&lt;br /&gt;
っと言う方の為に小技を公開しちゃいます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;NSDictinary to MO&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;Entity * entity = ... ;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; @&quot;value&quot;,@&quot;title&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; @&quot;createDate&quot;,@&quot;data&quot;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;nil];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;[entity setValuesForKeysWithDictionary:dic];&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
ま、これは厳密にいうとDate型とかFommaterで&lt;span style=&quot;font-size: large;&quot;&gt;変換しなきゃいけない&lt;/span&gt;のでそんなに使わないですねｗ&lt;br /&gt;
よく使うのがMO to Dictionaryでしょう。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;MO to Dictionary&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;Entity *entity = [[DataManager EntityListFrom:@&quot;Entity&quot; sort:nil pred:nil]lastObject];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;NSDictionary *dic = [entity dictionaryWithValuesForKeys:[[[entity entity] attributesByName] allKeys]];&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ちなみに前回のデータ取得の共通メソッドにて一行&lt;br /&gt;








&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;[fetchRequest &lt;/span&gt;setResultType&lt;span class=&quot;s1&quot;&gt;:&lt;/span&gt;NSDictionaryResultType&lt;span class=&quot;s1&quot;&gt;];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;と書けば&lt;span style=&quot;color: red; font-size: x-large;&quot;&gt;最初からDictionary&lt;/span&gt;でリストをとれます。&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/5528824707175883300/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2013/01/coredata-entitynsdictionary.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/5528824707175883300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/5528824707175883300'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2013/01/coredata-entitynsdictionary.html' title='CoreData 小技　EntityからNSDictionaryをとる'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-4005607038986670213</id><published>2013-01-23T13:06:00.000+09:00</published><updated>2013-01-23T13:06:36.966+09:00</updated><title type='text'>CoreData データ呼び出しの共通メソッド</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
前回のCreateに続いて&lt;span style=&quot;font-size: large;&quot;&gt;Read&lt;/span&gt;の共通メソッド書きます。&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
ま、こんな感じ。&lt;/div&gt;
&lt;div&gt;
パラメータにエンティティの名前。そしてSortDescriptorとPredicateとlimitです。&lt;/div&gt;
&lt;div&gt;
SortDescriptorとPredicateについては他のところでも解説が多いので、そちらをみてください。&lt;/div&gt;
&lt;div&gt;
気が向いたら書くかもしれませんが。。。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: red; font-size: x-small;&quot;&gt;DataManager.m&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;+(NSArray *)EntityListWithName:(NSString *)entityName&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; sort:(NSSortDescriptor *)sort&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;     &lt;/span&gt; &amp;nbsp; pred:(NSPredicate *)pred&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; limit:(int)limit&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: lime; font-size: x-small;&quot;&gt;//※Moを拡張してます&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;NSManagedObjectContext* managedObjectContex=[NSManagedObjectContext managedObjectContextForCurrentThread];&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: lime; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; // 取得するエンティティを設定&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; NSEntityDescription *entityDescription;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; entityDescription = [NSEntityDescription entityForName:entityName inManagedObjectContext:managedObjectContex];&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; [fetchRequest setEntity:entityDescription];&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;if(sort!=nil){&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NSArray *sortDescriptors;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sortDescriptors = [[NSArray alloc] initWithObjects:sort, nil];&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [fetchRequest setSortDescriptors:sortDescriptors];&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}else{&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NSArray *sortDescriptors;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sortDescriptors = [[NSArray alloc] initWithObjects: nil];&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [fetchRequest setSortDescriptors:sortDescriptors];&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: lime; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; // 取得条件の設定&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;if(pred!=nil)[fetchRequest setPredicate:pred];&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: lime; font-size: x-small;&quot;&gt;&amp;nbsp; // 取得最大数の設定&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; if(limit&amp;gt;0)[fetchRequest setFetchBatchSize:limit];&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: lime; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; // データ取得用コントローラを作成&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; NSFetchedResultsController *resultsController;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; resultsController = [[NSFetchedResultsController alloc]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; initWithFetchRequest:fetchRequest&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; managedObjectContext:managedObjectContex&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sectionNameKeyPath:nil&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cacheName:entityName]; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: lime; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; // DBから値を取得する&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;NSError* error = nil;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; if (![resultsController performFetch:&amp;amp;error]) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; abort();&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; NSArray *result = resultsController.fetchedObjects ;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; resultsController=nil;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; managedObjectContex=nil;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;return result;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
ちなみにカテゴリ実装でNSManagedObjectに下記を実装してます。&lt;/div&gt;
&lt;div&gt;







&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;+ (&lt;span class=&quot;s1&quot;&gt;NSManagedObjectContext&lt;/span&gt; *)managedObjectContextForCurrentThread {&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; [&lt;/span&gt;NSManagedObjectContext&lt;span class=&quot;s2&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;managedObjectContextForThread&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;:[&lt;/span&gt;NSThread&lt;span class=&quot;s2&quot;&gt; &lt;/span&gt;currentThread&lt;span class=&quot;s2&quot;&gt;]];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
呼び出しで共通メソッド作っておくと、さくっとArrayで返ってくるので&lt;span style=&quot;font-size: large;&quot;&gt;楽&lt;/span&gt;です(^^)&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/4005607038986670213/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2013/01/coredata_23.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/4005607038986670213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/4005607038986670213'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2013/01/coredata_23.html' title='CoreData データ呼び出しの共通メソッド'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-6057642867254601421</id><published>2013-01-23T12:51:00.004+09:00</published><updated>2013-01-23T12:54:18.587+09:00</updated><title type='text'>CoreData データ取得の共通メソッドを作っておく</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
こんにちは！ひさしぶりの投稿です。&lt;br /&gt;
&lt;br /&gt;
今回はCoreDataについて。&lt;br /&gt;
基本的な部分エンティティの設定やら何やらは本でも読んでもらうとして。&lt;br /&gt;



それらを実装済みの状態で簡単に&lt;span style=&quot;font-size: x-large;&quot;&gt;CoreData&lt;/span&gt;を扱うサンプルを書いて行きたいと思います。&lt;br /&gt;
&lt;br /&gt;
DBっていえばCRUD(クラッド）できないとですね。ちなみにCRUDとは&lt;br /&gt;
&lt;br /&gt;
　C=Create&lt;br /&gt;
&amp;nbsp; &amp;nbsp;R=Read&lt;br /&gt;
&amp;nbsp; &amp;nbsp;U=Update&lt;br /&gt;
&amp;nbsp; &amp;nbsp;D=Delete&lt;br /&gt;
&lt;br /&gt;
です。&lt;br /&gt;
え？そんなこと知ってるって？&lt;br /&gt;
そーですね。失礼しましたｗ&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
とりあえずはRDBでいうSelect投げられないとですね。&lt;br /&gt;
でも&lt;span style=&quot;color: red; font-size: large;&quot;&gt;Create&lt;/span&gt;しないとReadできないか。&lt;br /&gt;
&lt;br /&gt;
そんなわけでまずはCreateから。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
とりあえずの仕掛けとして、シングルトンでmanagerクラス作るのが常識かもしれませんが、簡単にAppDelegateにてcoreDateの設定周りを書ききりmanagedObjectContextとかもAppDelegateに保持する感じで説明します。&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red; font-size: x-small;&quot;&gt;AppDelegate.h&lt;/span&gt;&lt;br /&gt;








&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;@property&lt;span class=&quot;s1&quot;&gt; (&lt;/span&gt;nonatomic&lt;span class=&quot;s1&quot;&gt;, &lt;/span&gt;retain&lt;span class=&quot;s1&quot;&gt;, &lt;/span&gt;readonly&lt;span class=&quot;s1&quot;&gt;) &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;NSManagedObjectContext&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; *managedObjectContext;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
ただし、ほかのCoreData周りのコードも含めて別途シングルトンの管理クラスを作ります。&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
ここではDataManagerとでもしておきましょか。&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;color: red; font-size: x-small;&quot;&gt;DataManager.m&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;








&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;+(&lt;span class=&quot;s1&quot;&gt;NSManagedObjectContext&lt;/span&gt; *)managedObjectContext{&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;Apple-tab-span&quot;&gt;&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;AppDelegate&lt;span class=&quot;s2&quot;&gt; *delegate=(&lt;/span&gt;AppDelegate&lt;span class=&quot;s2&quot;&gt;*)[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;UIApplication&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;sharedApplication&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;delegate&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;span class=&quot;s2&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; delegate.&lt;/span&gt;managedObjectContext&lt;span class=&quot;s2&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
続いて呼び出し側&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
簡単に言うと、インスタンス作ってそいつのプロパティに値入れて保存。&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
ちなみにUpdateの場合もインスタンスを呼び出して保存でいけちゃいますｗ&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;color: red; font-size: x-small;&quot;&gt;YourClass.m&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;color: blue;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;Order *orderEntity = [NSEntityDescription insertNewObjectForEntityForName:@&quot;Order&quot; inManagedObjectContext:[DataManager managedObjectContext]];&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;color: blue;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;color: blue;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; orderEntity.pos_order_id = order.orderId;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;color: blue;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; orderEntity.amount = [NSNumber numberWithInt:order.orderAmount];&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;color: blue;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; orderEntity.created = order.orderDate;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;color: blue;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; orderEntity.updated = order.orderDate;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;color: blue;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;color: blue;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; NSError *error = nil;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;color: blue;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; [[DataManager managedObjectContext] save:&amp;amp;error];&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;color: blue;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; if (error) {&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6aa84f;&quot;&gt;&amp;nbsp; //ここにエラー制御書きます&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot; style=&quot;color: blue;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
はい、簡単ですね。&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
次回は&lt;span style=&quot;font-size: large;&quot;&gt;Read&lt;/span&gt;について書きたいと思います。&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/6057642867254601421/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2013/01/coredata.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/6057642867254601421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/6057642867254601421'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2013/01/coredata.html' title='CoreData データ取得の共通メソッドを作っておく'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-8737891001704340847</id><published>2012-02-27T16:51:00.000+09:00</published><updated>2012-02-27T16:51:04.759+09:00</updated><title type='text'>アプリのテンプレートを作ってみる</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;オレオレテンプレートがらみの話です。&lt;br /&gt;
ちょっとでも開発を楽にする為に&lt;br /&gt;
&lt;div style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;「テンプレートでも作っとこうかなぁ」&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: red;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;なんて事を言い出して、作り始めたら結構はまって&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;逆に大変な労力を費やしてしまう。。。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: red;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;そんなパターンに僕も&lt;span style=&quot;font-size: large;&quot;&gt;ハマりつつ&lt;/span&gt;ありますが、&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;そのまま&lt;span style=&quot;font-size: large;&quot;&gt;前進&lt;/span&gt;することにします。&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;color: black;&quot;&gt;まずは必要そうな機能をリストアップ。&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;ナビゲーションで画面遷移&lt;/li&gt;
&lt;li&gt;ローディングビュー&lt;/li&gt;
&lt;li&gt;デバッグログ&lt;/li&gt;
&lt;li&gt;ローカライズ(Localizable.strings / InfoPlist.Strings)&lt;/li&gt;
&lt;li&gt;モデル実装(モデルオブジェクト,モデルリストクラス,データマネージャークラス)&lt;/li&gt;
&lt;li&gt;リクエストマネージャークラス（通信の仕組み)&lt;/li&gt;
&lt;li&gt;FNCクラス(各種情報の定義、ユーザデフォルト管理、C言語化した関数) &lt;/li&gt;
&lt;li&gt;SNS連携&lt;/li&gt;
&lt;li&gt;plistにドキュメント登録&lt;/li&gt;
&lt;li&gt;URLスキーム&lt;/li&gt;
&lt;li&gt;アプリ内課金View&lt;/li&gt;
&lt;li&gt;アプリ紹介などのWebView&lt;/li&gt;
&lt;li&gt;jsonライブラリ&lt;/li&gt;
&lt;li&gt;アドモブSDK&lt;/li&gt;
&lt;li&gt;サウンド再生関係&lt;/li&gt;
&lt;li&gt;メール送信機能&lt;/li&gt;
&lt;li&gt;設定画面 &lt;/li&gt;
&lt;li&gt;OpenGLにてobjファイルを回転させるView&lt;/li&gt;
&lt;li&gt;TableViewパーツとり用クラス&lt;/li&gt;
&lt;li&gt;ViewControllerのお決まりテンプレート&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/8737891001704340847/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2012/02/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/8737891001704340847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/8737891001704340847'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2012/02/blog-post.html' title='アプリのテンプレートを作ってみる'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-2325761664972683763</id><published>2012-02-27T16:43:00.009+09:00</published><updated>2012-02-27T16:54:26.279+09:00</updated><title type='text'>NavigationControllerにて画面遷移するようにしておく</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;俺俺テンプレート第一弾ってことで、まずは画面遷移を作っていきたいと思います。&lt;br /&gt;
&lt;br /&gt;
AddSubViewパターンとかmodalViewパターンは&lt;span style=&quot;font-size: large;&quot;&gt;いつでも&lt;/span&gt;使えるので、ここではやらない。&lt;br /&gt;
&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;NavigationController&lt;/span&gt;を使ったパターンを実装していきます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
まずはsingleViewのテンプレートにて新しいプロジェクトを作る&lt;br /&gt;
&lt;br /&gt;
１、NavigationControllerによる画面の遷移を実装する。&lt;br /&gt;
AppDelegate.h&lt;br /&gt;
rootControllerプロパティを追加&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif; font-size: x-small;&quot;&gt;#import &amp;lt;UIKit/UIKit.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
@class ViewController;&lt;br /&gt;
&lt;br /&gt;
@interface AppDelegate : UIResponder &amp;lt;UIApplicationDelegate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
@property (strong, nonatomic) UIWindow *window;&lt;br /&gt;
@property (nonatomic,retain) UINavigationController* rootController;&lt;br /&gt;
@property (strong, nonatomic) ViewController *viewController;&lt;br /&gt;
&lt;br /&gt;
@end&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AppDelegate.m&lt;br /&gt;
起動時に呼ばれるメソッドを少しいじる&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif; font-size: x-small;&quot;&gt;- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Override point for customization after application launch.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; self.viewController = [[[ViewController alloc] initWithNibName:@&quot;ViewController&quot; bundle:nil] autorelease];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //起点となるViewControllerを設定&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; rootController = [[UINavigationController alloc]initWithRootViewController:_viewController];//追加&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; self.window.rootViewController = self.rootController;//変更&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [self.window makeKeyAndVisible];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return YES;&lt;br /&gt;
}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
＃動作を確認の為の準備&lt;br /&gt;
適当なViewControllerをプロジェクト上に作る。ここではSecondViewControllerとする。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnoO7ZpIxVCcr0RnTapp5CB9WT1niA3vwPZMfqOGSltHy7rYiZee1FqfLfImn9PECcL7w5bZJToMlKZ2j8QUPrnaVa66sa8szXT91OC1Npj8bEHnLYUTaNqHpdMkcIbrRU906DiG-TtKw/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882012-02-22+10.23.06%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;307&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnoO7ZpIxVCcr0RnTapp5CB9WT1niA3vwPZMfqOGSltHy7rYiZee1FqfLfImn9PECcL7w5bZJToMlKZ2j8QUPrnaVa66sa8szXT91OC1Npj8bEHnLYUTaNqHpdMkcIbrRU906DiG-TtKw/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882012-02-22+10.23.06%EF%BC%89.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBExiqu50ik41iPjL9I8aQzK5ucKJRanUAGblRHi0MgJxe0SrJi6LPc2uLK-x8po1ago1ZHIddwMONlrvPl89tXO4guzkQSsih-2p70N2ndlX8576RsHWYfFhDFoz8toO7Xs_a9WqnKhI/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882012-02-22+10.23.13%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBExiqu50ik41iPjL9I8aQzK5ucKJRanUAGblRHi0MgJxe0SrJi6LPc2uLK-x8po1ago1ZHIddwMONlrvPl89tXO4guzkQSsih-2p70N2ndlX8576RsHWYfFhDFoz8toO7Xs_a9WqnKhI/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882012-02-22+10.23.13%EF%BC%89.png&quot; width=&quot;307&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
ViewControllerに　#importする。&lt;br /&gt;
ViewControllerに適当なボタンを作ってIBActionのメソッドを実行できるようにする。&lt;br /&gt;
&lt;br /&gt;
メソッドの中は下記の通り&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif; font-size: x-small;&quot;&gt;-(IBAction)buttonDidPush:(id)sender{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; SecondViewController* viewController =&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [[SecondViewController alloc]initWithNibName:@&quot;SecondViewController&quot; bundle:nil];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [self.navigationController pushViewController:viewController animated:YES];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [viewController release];&lt;br /&gt;
}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
アプリを起動してボタンを押したら画面が遷移したら成功だ。&lt;br /&gt;
&amp;nbsp;ちゃんちゃん &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/2325761664972683763/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2012/02/navigationcontroller.html#comment-form' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/2325761664972683763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/2325761664972683763'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2012/02/navigationcontroller.html' title='NavigationControllerにて画面遷移するようにしておく'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnoO7ZpIxVCcr0RnTapp5CB9WT1niA3vwPZMfqOGSltHy7rYiZee1FqfLfImn9PECcL7w5bZJToMlKZ2j8QUPrnaVa66sa8szXT91OC1Npj8bEHnLYUTaNqHpdMkcIbrRU906DiG-TtKw/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882012-02-22+10.23.06%EF%BC%89.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-5134944069152571063</id><published>2012-02-14T18:21:00.000+09:00</published><updated>2012-02-14T18:21:56.463+09:00</updated><title type='text'>Plistから配列にする</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;br /&gt;
アプリ上で使う要素を配列にする時にこんなコードは書いてないだろうか？&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: blue;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;　　NSMutableArray* array = [NSMutableArray alloc]init];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: blue;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; [array addObject:@&quot;Source1&quot;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: blue;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; [array addObject:@&quot;Source2&quot;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: blue;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; [array addObject:@&quot;Source3&quot;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: blue;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -----続く---------&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
もちろんこれでも間違いじゃないけれど、要素が１００個くらいあると&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;しんどい&lt;/span&gt;しコードが&lt;span style=&quot;font-size: large;&quot;&gt;長く&lt;/span&gt;なる。 &lt;br /&gt;
&lt;br /&gt;
そんな時はPlistを使って配列に起こすようにすると色々と&lt;span style=&quot;font-size: large;&quot;&gt;楽だ&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;よくあるサンプルだと下記のようにやっているけれど、Xcode4.xにて作ったplistはこれじゃ読込めない。 試しに実行してみるとarrayWithContentsOfFileの戻り値がnilにて返ってくるはずだ。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;color: blue;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NSMutableArray* array = [[NSMutableArray alloc]init];&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NSBundle* bundle = [NSBundle mainBundle];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; NSString* path = [bundle pathForResource:@&quot;list&quot; ofType:@&quot;plist&quot;];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; NSArray* list = [NSArray arrayWithContentsOfFile:path];&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for(NSString* str in list){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [array addObject:str];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&amp;nbsp;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Plistがきちんとした形式になっていないとnilが返ってくる仕様だが、xcode上で作ったplistが読込めない。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Plistを右クリックしてSourceにて開いてみると。。。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;一番頭のタグが&amp;lt;dict&amp;gt;になっている。 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2WztqjCmzvcPVNZuqPXR3KSYetvNWfA56oz282KtML2yt46qrSsjK5oz_KlZUlKju6AwtBt8ow1U9JIIcSg_Lhadbhw21rqS-bM0qe3RKu2Kp32BVXi9Yg-AaXMQhql1wgkgoc_gNJqk/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882012-02-14+17.56.25%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2WztqjCmzvcPVNZuqPXR3KSYetvNWfA56oz282KtML2yt46qrSsjK5oz_KlZUlKju6AwtBt8ow1U9JIIcSg_Lhadbhw21rqS-bM0qe3RKu2Kp32BVXi9Yg-AaXMQhql1wgkgoc_gNJqk/s640/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882012-02-14+17.56.25%EF%BC%89.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;下はXcode3.xにて作ったPlist。 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb0e_2_AKz8GVGKeE4Bf3U88xaPQCxZQUBVMbFwuYrnfGwuZJ6si66i7jgHfGyCfLTKtz30578igkmF352W8IeS2fPBtd4PN_O8qJYBmYExq8qhLPOUoq3Uf818g-Yv9_wQ-E_oBibO2M/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882012-02-14+17.56.04%EF%BC%89.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgb0e_2_AKz8GVGKeE4Bf3U88xaPQCxZQUBVMbFwuYrnfGwuZJ6si66i7jgHfGyCfLTKtz30578igkmF352W8IeS2fPBtd4PN_O8qJYBmYExq8qhLPOUoq3Uf818g-Yv9_wQ-E_oBibO2M/s640/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882012-02-14+17.56.04%EF%BC%89.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;color: blue; font-size: x-small;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;
頭のタグが&amp;lt;array&amp;gt;になってますね。&lt;br /&gt;
&lt;br /&gt;
要するにXMLの階層構造がXcode4から変わっているってことです。&lt;br /&gt;
なので、　&lt;span style=&quot;font-size: large;&quot;&gt;dictionaryWithContentsOfFile&lt;/span&gt;　を使ってNSDictionaryを生成するのが正解。&lt;br /&gt;
まず、keyをきちんととれるように下記のようにplistを作りかえます。&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE plist PUBLIC &quot;-//Apple//DTD PLIST 1.0//EN&quot; &quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&quot;&amp;gt;&lt;br /&gt;
&amp;lt;plist version=&quot;1.0&quot;&amp;gt;&lt;br /&gt;
&amp;lt;dict&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;key&amp;gt;Root&amp;lt;/key&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;array&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;string&amp;gt;要素1&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;color: red; font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string&amp;gt;要素2&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/array&amp;gt;&lt;br /&gt;
&amp;lt;/dict&amp;gt;&lt;br /&gt;
&amp;lt;/plist&amp;gt; &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
取得するコードは下記の通り。&lt;br /&gt;
一度 NSDictionaryにしてからobjectForKeyにて配列を取得するんですね。&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NSBundle* bundle = [NSBundle mainBundle];&lt;/span&gt;&lt;br style=&quot;color: blue;&quot; /&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NSString* path = [bundle pathForResource:@&quot;list&quot; ofType:@&quot;plist&quot;];&lt;/span&gt;&lt;br style=&quot;color: blue;&quot; /&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NSDictionary* dic = [NSDictionary dictionaryWithContentsOfFile:path];&lt;/span&gt;&lt;br style=&quot;color: blue;&quot; /&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NSArray *items =[dic objectForKey:@&quot;Root&quot;];&lt;/span&gt;&lt;br style=&quot;color: blue;&quot; /&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: blue;&quot; /&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(NSString* str in items){&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;/span&gt;&lt;br style=&quot;color: blue;&quot; /&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [array addObject:str];&lt;/span&gt;&lt;br style=&quot;color: blue;&quot; /&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: blue;&quot; /&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
plistの作りようでは、配列の中にdictionaryを入れてそこからモデルオブジェクトを格納した配列にするなんてこともできちゃいます♪&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/5134944069152571063/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2012/02/plist.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/5134944069152571063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/5134944069152571063'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2012/02/plist.html' title='Plistから配列にする'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2WztqjCmzvcPVNZuqPXR3KSYetvNWfA56oz282KtML2yt46qrSsjK5oz_KlZUlKju6AwtBt8ow1U9JIIcSg_Lhadbhw21rqS-bM0qe3RKu2Kp32BVXi9Yg-AaXMQhql1wgkgoc_gNJqk/s72-c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882012-02-14+17.56.25%EF%BC%89.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-2737185878168214903</id><published>2011-12-06T15:10:00.000+09:00</published><updated>2011-12-06T15:10:05.334+09:00</updated><title type='text'>画像を縮めますかね？　え？　いいって？　まあ、そんなこと言わないでw</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;今回は画像を小さいくしていきます。&lt;br /&gt;
下のメソッドは、引数にUImageとサイズを&lt;span style=&quot;font-size: x-large;&quot;&gt;ぶっこんで&lt;/span&gt;いって&lt;span style=&quot;font-size: large;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;小さく&lt;/span&gt; &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;なった&lt;/span&gt;UIImageを返すというものです。&lt;br /&gt;
&lt;br /&gt;
こりゃ解説するまでもないね。&lt;br /&gt;
コンテキスト作って、そこに描画して、それをgetなんちゃらしてUIImageにする。&lt;br /&gt;
&lt;br /&gt;
でもあえて書くとすると、 &lt;br /&gt;
&lt;span style=&quot;color: red; font-size: large;&quot;&gt;なぜ&lt;/span&gt;　&lt;span style=&quot;color: black; font-family: Arial,Helvetica,sans-serif;&quot;&gt; [image drawInRect:rect];　なんだ？ってことかな。&lt;/span&gt;&lt;span class=&quot;Variable&quot; style=&quot;color: black;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Variable&quot;&gt;もちろん &lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Variable&quot;&gt;CGContextD&lt;wbr&gt;&lt;/wbr&gt;rawImage&lt;/span&gt;(context, rect, image.&lt;span class=&quot;Entity&quot;&gt;CGImage&lt;/span&gt;);という書き方もあります。&lt;br /&gt;
でもこれだとY軸が反転しちゃうんだな。 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;-(UIImage*)shrinkImage:(UIImage*)image size:(CGSize)size{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 計算した描画領域を指定して描画準備。&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CGRect rect = CGRectMake(0, 0, (int)size.width, (int)size.height);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UIGraphicsBeginImageContext(rect.size);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 描画はすべて新しい描画領域が対象となる。&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [image drawInRect:rect]; // イメージ描画。&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 新しい描画領域からUIImageを作成。&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; image = UIGraphicsGetImageFromCurrentImageContext();// スケーリングされたUIImageを設定。&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UIGraphicsEndImageContext(); // 解除。&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&amp;nbsp; image;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/2737185878168214903/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/12/w.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/2737185878168214903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/2737185878168214903'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/12/w.html' title='画像を縮めますかね？　え？　いいって？　まあ、そんなこと言わないでw'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-7224396122647166432</id><published>2011-12-06T15:07:00.001+09:00</published><updated>2012-02-27T16:56:45.847+09:00</updated><title type='text'>画面遷移の３パターン</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;こんにちは、こーじーです。&lt;br /&gt;
&lt;br /&gt;
iPhoneアプリの開発を始めて僕が最初にハマったのは&lt;span style=&quot;font-size: large;&quot;&gt;画面遷移&lt;span style=&quot;font-size: small;&quot;&gt;です。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;画面を移動する為に主に３つの方法があるのですが、そのうちNavigationControllerを使う方法でかなりはまりました。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;基底となるViewControllerを設定していなかったり、もともとIBを使わずにコードだけで画面を作っていたものを後からXib化すると動かないとか。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;３つの方法って？&lt;span style=&quot;font-size: small;&quot;&gt;という方もいらっしゃるのではないでしょうか？&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;これです！&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;&amp;nbsp;&lt;span style=&quot;font-size: small;&quot;&gt;１、　AddSubViewを使ったパターン&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;　2、　modalViewを使ったパターン&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;　3、&amp;nbsp;&amp;nbsp; NavigationControllerを使ったパターン&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
そのうち一番めんどうなのがNavigationControllerを使ったパターンだと思いますねー&lt;br /&gt;
&lt;br /&gt;
基本となるのが１番目のAddSubViewのパターンです。&lt;br /&gt;
でも、僕が一番好きなのは２番のパターンなのでこちらから。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;modalViewControllerのパターン &lt;/span&gt;&lt;br /&gt;
-(void)ch{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; 　　SecondViewController * viewController =&lt;br /&gt;
[[SecondViewController alloc]initWithNibName:@&quot;SecondViewController&quot; bundle:nil];&lt;br /&gt;
[self presentModalViewController:viewController animated:YES];&lt;br /&gt;
[viewController release];}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
戻る側のViewには&lt;br /&gt;
-(void)back{ &lt;br /&gt;
&amp;nbsp;&amp;nbsp; [self dismissModalViewControllerAnimated:YES];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
このパターンは戻る側のコードが変化しないで書けるので、&lt;br /&gt;
ViewControllerを&lt;span style=&quot;font-size: large;&quot;&gt;部品化&lt;/span&gt;しやすいのと、&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;アニメーションが簡単&lt;/span&gt;なのが便利です。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
UIViewControllerのプロパティmodalTransitionStyleを変更することでアニメーションを変化させることができます。&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;UIModalTransitionStyleCoverVertical&lt;ul&gt;&lt;li&gt;下から上にせり出してくる。デフォルトはこれ。&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;UIModalTransitionStyleCrossDissolve&lt;ul&gt;&lt;li&gt;画面がフェードアウト、フェードインする&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;UIModalTransitionStyleFlipHorizontal&lt;ul&gt;&lt;li&gt;水平方向に画面がくるっと回る(フリップする &lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
使い方は、呼び出し側でviewControllerインスタンスを生成して&lt;br /&gt;
[self present〜　を呼び出す前に&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red; font-size: large;&quot;&gt;v&lt;/span&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;iewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
などの一行を書くだけ。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;AddSubViewパターン&lt;/span&gt;&lt;br /&gt;
これはViewControllerのインスタンスを作ってaddSubViewするだけです。&lt;br /&gt;
コードで書くと&lt;br /&gt;
&lt;br /&gt;
-(void)ch{&lt;br /&gt;
&amp;nbsp; 　　SecondViewController * viewController =&lt;br /&gt;
[[SecondViewController alloc]initWithNibName:@&quot;SecondViewController&quot; bundle:nil];&lt;br /&gt;
[self.view addSubView:viewController.view];&lt;br /&gt;
[viewController release];&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
戻る側のSecendViewControllerの実装は&lt;br /&gt;
-(void)back{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [self.view removeFromSuperView];&lt;br /&gt;
&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;NavigationControllerパターン&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;まずAppDelegateに宣言をします。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt; // ヘッダにて宣言を追加&lt;br /&gt;
@interface AppDelegate : NSObject &amp;lt;UIApplicationDelegate&amp;gt; {&lt;br /&gt;
UIWindow *window;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: red;&quot;&gt;UIViewController* rootController;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 　　&lt;span style=&quot;color: red;&quot;&gt;FirshViewController* viewController;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
つづいて、起動時に呼び出されるメソッドに記述をします。&lt;br /&gt;
&amp;nbsp; - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FirstViewController *top = [[[instrumentViewController alloc]init]autorelease];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //起点となるViewControllerを設定&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rootController = [[UINavigationController alloc]initWithRootViewController:top];&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Add the view controller&#39;s view to the window and display.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [window addSubview:rootController.view];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [window makeKeyAndVisible];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
これでNavigationControllerによる画面遷移の準備が整いました。&lt;br /&gt;
&lt;br /&gt;
次にFirstViewContollerから次のViewに画面遷移するコードです。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
-(void)ch{&lt;span style=&quot;color: red;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;SecondViewController *viewController = [[Config alloc] initWithNibName:@&quot;SecondViewController&quot; bundle:nil];&amp;nbsp;&lt;/span&gt; //これはxibからViewVontrollerのインスタンスを作っている。&lt;br /&gt;
&lt;br /&gt;
.ctrl = self;//値を設定するものがあればここで入れる&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(conf){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt; [self.navigationController pushViewController:viewController animated:YES];&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
この方法で画面遷移すると、移動後のViewにNavigationBarと戻る為のボタンが自動で表示されます。NavigationControllerの&lt;a href=&quot;http://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF&quot; target=&quot;_blank&quot;&gt;スタック領域&lt;/a&gt;にViewControllerのインスタンスをPushして画面を移動し、戻るとPopされて格納したデータが破棄されます。&lt;br /&gt;
&lt;br /&gt;
動き的に&lt;span style=&quot;font-size: large;&quot;&gt;ブラウザ&lt;/span&gt;のリンクを辿っていって、&lt;span style=&quot;font-size: large;&quot;&gt;戻るボタン&lt;/span&gt;で戻るといった動きと同じと思っていただければイメージしやすいですね^^ &lt;br /&gt;
スタックとは要するに後入先出しのデータ格納領域のことです。&lt;br /&gt;
&lt;br /&gt;
もちろんこの領域に直接アクセスして画面遷移することもできます。&lt;br /&gt;
例えば、今は５番目の画面だけれど２番目に開いた画面に戻るとか。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ではまた！ &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
※NavigationControllerパターンについては、&lt;a href = &quot;http://firstiphoneapp.blogspot.com/2012/02/navigationcontroller.html&quot;&gt;オレオレテンプレートを作る&lt;/a&gt;にちょっと詳しく書き直しましたw&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;　&lt;/span&gt;&amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/7224396122647166432/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/12/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/7224396122647166432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/7224396122647166432'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/12/blog-post.html' title='画面遷移の３パターン'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-5514905300558507930</id><published>2011-11-25T13:05:00.000+09:00</published><updated>2011-11-25T13:05:58.379+09:00</updated><title type='text'>画像をPhotoLibralyに保存する</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;br /&gt;
さて、前回作った画面キャプチャのUIImageって&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;何に使うんだ？&lt;/span&gt;&lt;/b&gt;と思った人は多いでしょうね。&lt;br /&gt;
まあ、使い道としてはカメラやフォトライブラリから取得した写真をごにょごにょして、それをまた保存するなりメールで送りたいって感じでしょうかね。&lt;br /&gt;
&lt;br /&gt;
コールバック関数の部分は別に nil にしてもらっても良いと思います。&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;-(void)saveToPhotoLibrary{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;UIImage* img = [self screenCapture];//前回の記事を呼んでちょ&amp;nbsp; &lt;br /&gt;
&amp;nbsp;NSData *pngData = UIImagePNGRepresentation(img);&lt;br /&gt;
&amp;nbsp;UIImage *screenImage = [[UIImage imageWithData:pngData] retain];&lt;br /&gt;
&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;//コールバック関数の設定 &amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; SEL sel = @selector(savingImageIsFinished:didFinishSavingWithError:contextInfo:);&lt;/div&gt;&lt;div style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UIImageWriteToSavedPhotosAlbum(screenImage, self, sel, nil);//ここのselが保存後に呼ばれる。&lt;br /&gt;
&lt;br /&gt;
}&lt;/div&gt;&lt;div style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;//コールバック関数&lt;/div&gt;&lt;div style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;- (void)savingImageIsFinished:(UIImage*)image didFinishSavingWithError:(NSError*)error contextInfo:(void *)contextInfo{&lt;/span&gt;&lt;br style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NSString* message;&lt;/span&gt;&lt;br style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!error){&lt;/span&gt;&lt;br style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = @&quot;success save&quot;;&lt;/span&gt;&lt;br style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }else{&lt;/span&gt;&lt;br style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = @&quot;fail save&quot;;&lt;/span&gt;&lt;br style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@&quot;保存&quot; message:message&lt;/span&gt;&lt;br style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delegate:self&lt;/span&gt;&lt;br style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cancelButtonTitle:nil&lt;/span&gt;&lt;br style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; otherButtonTitles:@&quot;OK&quot;,nil];&lt;/span&gt;&lt;br style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [alertView show];&lt;/span&gt;&lt;br style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [alertView release];&lt;/span&gt;&lt;br style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot; /&gt;&lt;span style=&quot;color: blue; font-family: Arial,Helvetica,sans-serif;&quot;&gt;} &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/5514905300558507930/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/11/photolibraly.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/5514905300558507930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/5514905300558507930'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/11/photolibraly.html' title='画像をPhotoLibralyに保存する'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-6096175577711588993</id><published>2011-11-24T18:04:00.001+09:00</published><updated>2011-11-25T13:08:16.269+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cocos2d"/><category scheme="http://www.blogger.com/atom/ns#" term="coreGraphics"/><category scheme="http://www.blogger.com/atom/ns#" term="iPad"/><category scheme="http://www.blogger.com/atom/ns#" term="iPhone"/><category scheme="http://www.blogger.com/atom/ns#" term="NSString"/><category scheme="http://www.blogger.com/atom/ns#" term="obj-c"/><category scheme="http://www.blogger.com/atom/ns#" term="objective-c"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenGL ES"/><category scheme="http://www.blogger.com/atom/ns#" term="UIButton"/><category scheme="http://www.blogger.com/atom/ns#" term="UIKit"/><title type='text'>お世話になった書籍たち</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;デベロッパー登録してはや一年半。&lt;br /&gt;
思えば、&lt;span style=&quot;color: red; font-size: x-large;&quot;&gt;まったくアプリが売れてねぇ...&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;color: black;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
書籍だって何冊買ったかわからん位買ってるので、&lt;span style=&quot;color: red; font-size: x-large;&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;もうけるどころか大赤字です。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red; font-size: x-large;&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;&amp;nbsp;まあ、今は本業でiOSやってるので就職活動代とみるか。。。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red; font-size: x-large;&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;&amp;nbsp;始めたばかりの頃は、サンプルのコードを書き写してビルドするのが精一杯だったのですが、一体僕はどうやって開発できるようになったのだろう？&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red; font-size: x-large;&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;そんなことを考えてみました。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red; font-size: x-large;&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;※そんなこと考える暇があったら設計書の一つでも書けと言われそうですが。。。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red; font-size: x-large;&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red; font-size: x-large;&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: red; font-size: x-large;&quot;&gt;&lt;span style=&quot;color: black; font-size: small;&quot;&gt;&lt;br /&gt;
やっぱり大金をつぎ込んできた書籍達のおかげでしょうか。今日はその中でも厳選してご紹介致します。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;table&gt;&lt;tr&gt; &lt;td&gt;&lt;br /&gt;
&lt;iframe frameborder=&quot;0&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;amp;bc1=FFFFFF&amp;amp;IS2=1&amp;amp;npa=1&amp;amp;bg1=FFFFFF&amp;amp;fc1=EF086A&amp;amp;lc1=0000FF&amp;amp;t=kozy2735825-22&amp;amp;o=9&amp;amp;p=8&amp;amp;l=as1&amp;amp;m=amazon&amp;amp;f=ifr&amp;amp;ref=qf_sp_asin_til&amp;amp;asins=4897978440&quot; style=&quot;height: 240px; width: 120px;&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;&lt;br /&gt;
interfaceBuilderを使わないというポリシーの本。&lt;br /&gt;
この本にどれだけ助けられたか。&lt;br /&gt;
そもそもInterfaceBuilderはわかりやすいけれど、ちゃんと使いこなすにはやっぱりコードが書けないとです。この本で学んでから、再びIBに戻ると新しい世界が開けます。&lt;br /&gt;
中級者くらいでも、ど忘れしたときに開くと便利かも。&lt;br /&gt;
&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;br /&gt;
&lt;iframe src=&quot;http://rcm-jp.amazon.co.jp/e/cm?t=kozy2735825-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4861007348&amp;ref=tf_til&amp;fc1=EF086A&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;npa=1&amp;f=ifr&quot; style=&quot;width:120px;height:240px;&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;&lt;br /&gt;
MVCの何たるかが分かりやすく書いてあります。&lt;br /&gt;
この本の手法で、スマートで仕様変更にも耐えられるアプリが作りやすくなります。&lt;br /&gt;
アプリは作ったことあるけれど、デバッグしてるとよくBad Access食らってアプリが落ちるなんてひとにもおすすめかも。&lt;br /&gt;
中級者向け。&lt;br /&gt;
&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;br /&gt;
&lt;iframe src=&quot;http://rcm-jp.amazon.co.jp/e/cm?t=kozy2735825-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4844328085&amp;ref=tf_til&amp;fc1=EF086A&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;npa=1&amp;f=ifr&quot; style=&quot;width:120px;height:240px;&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;&lt;br /&gt;
OpenGL ES1なのでちょっと古い感じになりましたが、この本にもすごく助けられた。OpenGLなんかやってられるかと思っていたけど、この本のおかげでなんとかなることが分かりました。&lt;br /&gt;
この本をやりつつ、OpenGL ESのクラスリファレンスを読むとより理解度が高くなるかもしれません。&lt;br /&gt;
&lt;br /&gt;
&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;br /&gt;
&lt;iframe src=&quot;http://rcm-jp.amazon.co.jp/e/cm?t=kozy2735825-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4873114721&amp;ref=tf_til&amp;fc1=EF086A&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;npa=1&amp;f=ifr&quot; style=&quot;width:120px;height:240px;&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;&lt;br /&gt;
目からウロコな一冊。パフォーマンスに関する部分は読まずに死ねるかという感じ。&lt;br /&gt;
&lt;br /&gt;
&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;br /&gt;
&lt;iframe src=&quot;http://rcm-jp.amazon.co.jp/e/cm?t=kozy2735825-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4797361786&amp;ref=tf_til&amp;fc1=EF086A&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;npa=1&amp;f=ifr&quot; style=&quot;width:120px;height:240px;&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;&lt;br /&gt;
これは枕にするにはちょうどいい本。はじめは呪文に見えましたw&lt;br /&gt;
iOSに関係ないガーベジコレクションについても書かれています。上を目指すには必読。&lt;br /&gt;
&lt;br /&gt;
&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;br /&gt;
&lt;iframe src=&quot;http://rcm-jp.amazon.co.jp/e/cm?t=kozy2735825-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4798025798&amp;ref=tf_til&amp;fc1=EF086A&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;npa=1&amp;f=ifr&quot; style=&quot;width:120px;height:240px;&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;&lt;br /&gt;
この本から、未だにかゆいところに手が届くネタを見つけることがあります。お気に入りの一冊。&lt;br /&gt;
&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;br /&gt;
&lt;iframe src=&quot;http://rcm-jp.amazon.co.jp/e/cm?t=kozy2735825-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4844329766&amp;ref=tf_til&amp;fc1=EF086A&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;npa=1&amp;f=ifr&quot; style=&quot;width:120px;height:240px;&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;&lt;br /&gt;
iOS4の新機能に特化した書籍。カメラ周りやblocksについてなど内容は盛りだくさん。読んで納得の一冊。&lt;br /&gt;
&lt;br /&gt;
&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;br /&gt;
&lt;iframe src=&quot;http://rcm-jp.amazon.co.jp/e/cm?t=kozy2735825-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4797355158&amp;ref=tf_til&amp;fc1=EF086A&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;npa=1&amp;f=ifr&quot; style=&quot;width:120px;height:240px;&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;&lt;br /&gt;
唯一のCoreAudioの本。音系のアプリを作るなら必携の一冊。&lt;br /&gt;
&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;br /&gt;
&lt;iframe src=&quot;http://rcm-jp.amazon.co.jp/e/cm?t=kozy2735825-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4863540515&amp;ref=tf_til&amp;fc1=EF086A&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;npa=1&amp;f=ifr&quot; style=&quot;width:120px;height:240px;&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;&lt;br /&gt;
真剣に読むというよりは、持っておくと便利な本。&lt;br /&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;&amp;nbsp;&lt;/span&gt; &lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;br /&gt;
&lt;iframe src=&quot;http://rcm-jp.amazon.co.jp/e/cm?t=kozy2735825-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4798027782&amp;ref=tf_til&amp;fc1=EF086A&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;npa=1&amp;f=ifr&quot; style=&quot;width:120px;height:240px;&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;&lt;br /&gt;
この本のサンプルは作ってて楽しかった♪&lt;br /&gt;
UIKitを一通り触ってもうちょっと何かって人にお勧めです。&lt;br /&gt;
&lt;br /&gt;
&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;br /&gt;
&lt;iframe src=&quot;http://rcm-jp.amazon.co.jp/e/cm?t=kozy2735825-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4797362332&amp;ref=tf_til&amp;fc1=EF086A&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;npa=1&amp;f=ifr&quot; style=&quot;width:120px;height:240px;&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;&lt;br /&gt;
僕が初めて買った本。&lt;br /&gt;
書いてある通りに作ればサンプルは作れます。だけど、肝心のところが理解できないかも。&lt;br /&gt;
これと併用してObjective-Cの文法の本を買うと良いと思います。&lt;br /&gt;
&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;br /&gt;
cocos 2d関連&lt;br /&gt;
&lt;iframe src=&quot;http://rcm-jp.amazon.co.jp/e/cm?t=kozy2735825-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4899772882&amp;ref=tf_til&amp;fc1=EF086A&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;npa=1&amp;f=ifr&quot; style=&quot;width:120px;height:240px;&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;&lt;br /&gt;
敷居の高そうなcocos2Dを自分の土俵に引きづり込めた一冊。おすすめ&lt;br /&gt;
&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;iframe src=&quot;http://rcm-jp.amazon.co.jp/e/cm?t=kozy2735825-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4844330411&amp;ref=tf_til&amp;fc1=EF086A&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;npa=1&amp;f=ifr&quot; style=&quot;width:120px;height:240px;&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;&lt;br /&gt;
上のやつを読んでからこの本を読むとよさそう。&lt;br /&gt;
&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
開発以外&lt;br /&gt;
&lt;br /&gt;
&lt;iframe src=&quot;http://rcm-jp.amazon.co.jp/e/cm?t=kozy2735825-22&amp;o=9&amp;p=8&amp;l=as1&amp;asins=4798029297&amp;ref=tf_til&amp;fc1=EF086A&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;npa=1&amp;f=ifr&quot; style=&quot;width:120px;height:240px;&quot; scrolling=&quot;no&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;&lt;br /&gt;
いろいろとアプリの企画からプロモーションまで為になることが書いてある。&lt;br /&gt;
&lt;/td&gt; &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/6096175577711588993/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/11/blog-post_24.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/6096175577711588993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/6096175577711588993'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/11/blog-post_24.html' title='お世話になった書籍たち'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-5427531457394365750</id><published>2011-11-24T17:09:00.000+09:00</published><updated>2011-11-24T17:09:13.508+09:00</updated><title type='text'>画面をキャプチャする</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;久しぶりの投稿で&lt;span style=&quot;font-size: large;&quot;&gt;すみませんm(_ _)m&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;最近 CoreGraphicsにハマってます。（以下　コアグラ）&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;いやーいろいろできて便利です♪&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt; もう既にコアグラしてるぜっ！って人は突っ込みどころ満載かもしれないので手加減してくださいね。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;まずは、&lt;span style=&quot;font-size: large;&quot;&gt;画面に映ったものをUIImageに&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;しちゃいましょうか。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;こんな感じ。 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: small;&quot;&gt;- (UIImage *)screenCapture {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; UIImage *capture;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; CGRect rect = self.view.frame;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; UIGraphicsBeginImageContext(rect.size);//コンテキストを作る。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [[UIApplication sharedApplication].keyWindow.layer renderInContext:UIGraphicsGetCurrentContext()];//スクリーンからキャプチャしてコンテキストにレンダリング&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; capture = UIGraphicsGetImageFromCurrentImageContext();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: small;&quot;&gt;　UIGraphicsEndImageContext();//コンテキストを閉じる。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; return capture;&lt;br /&gt;
}&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: small;&quot;&gt;コアグラでイメージ作るのは、大抵そうなんだけど&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: small;&quot;&gt;メモリ上の空間(コンテキスト)に描画して　（ここでは画面に結果が出力されない)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: small;&quot;&gt;そいつを&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: small;&quot;&gt;capture = UIGraphicsGetImageFromCurrentImageContext();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: small;&quot;&gt;　でUIImageとして取り出す方法が基本w&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: small;&quot;&gt;上の例では、ナビゲーションバーとかも画面に映ったものは問答無用でUIImageにしてるけれど&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
[app.view.layer&amp;nbsp;renderInContext:UIGraphicsGetCurrentContext()];&lt;br /&gt;
とかに変更すると、Viewで狙いうつこともできます。 &lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: small;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/5427531457394365750/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/11/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/5427531457394365750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/5427531457394365750'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/11/blog-post.html' title='画面をキャプチャする'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-1829771655172026801</id><published>2011-11-24T17:07:00.000+09:00</published><updated>2011-11-24T17:07:34.874+09:00</updated><title type='text'>リリース前のplistとかプロジェクト周りの設定について</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;&amp;nbsp;あー、完全に自分の為のメモです&lt;br /&gt;
&lt;br /&gt;
アイコン&lt;br /&gt;
iPad用とRatina ディスプレイ用にアイコンファイルを設定する。&lt;br /&gt;
用意するファイル&lt;br /&gt;
Icon.png = 57×57&lt;br /&gt;
Icon@2x.png = 114 × 114  (iPhone4用）&lt;br /&gt;
Icon-72.png = 72 × 72  (iPad2用）&lt;br /&gt;
&lt;br /&gt;
plist設定&lt;br /&gt;
Icon file　を空欄にする&lt;br /&gt;
行を追加してIcon filesを選ぶ。Item 0 Item1と追加して、項目にアイコンのファイル名を入れていく。&lt;br /&gt;
これにより、デバイスによって最適な画像のサイズを選んでアイコンを表示してくれるようになる。&lt;br /&gt;
&lt;br /&gt;
必要であれば、検索で表示されるときの小アイコンも設定する。&lt;br /&gt;
&lt;br /&gt;
Icon-Small.png　29 × 29　（iPhone3GS用小アイコン）&lt;br /&gt;
Icon-Small-50.png　50 × 50　（iPad用小アイコン）&lt;br /&gt;
Icon-Small-@2x.png　58 × 58（iPhone4用小アイコン）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
＜メモ＞&lt;br /&gt;
iPad対応にする手順&lt;br /&gt;
http://blog.myrss.jp/archives/2010/04/iphone_ipad.html&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/1829771655172026801/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/11/plist.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/1829771655172026801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/1829771655172026801'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/11/plist.html' title='リリース前のplistとかプロジェクト周りの設定について'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-2111620441008436722</id><published>2011-06-06T00:22:00.003+09:00</published><updated>2011-06-06T14:45:02.076+09:00</updated><title type='text'>LocalizedStringファイルの生成を半自動化する。</title><content type='html'>開発の規模が大きくなってくると、LocalizedStringの数がハンパなく多くなってきますね。&lt;br /&gt;
プログラマが複数名いて、とにかく自由奔放にNSLocalizedString()マクロを書きまくっていると収集がつかなくなります。&lt;br /&gt;
ソースコード上ではNSLocalizedStringしてるんだけど、ローカライズのファイルにその文言がなかったりとか&lt;br /&gt;
微妙に文言が違うとかありがち。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
そんなんで時間をかけているのも馬鹿馬鹿しいけれど、表示の文言も大切な仕様です。&lt;br /&gt;
表記違いもプログラムの深刻なバグも同じと考える人もいるかもしれません。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
そこでこのうざい問題を秒殺する方法を考えましたｗ&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
まず、すべての文言をリスト化します。&lt;br /&gt;
僕はこの作業でExcelを使います。Mac使いだからってWindowを使っちゃいけないって法律はないし。&lt;br /&gt;
管理しやすいし、文字列変換のコードがくそ簡単に書ける。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
まず、ソースコード上のNSLocalizedStringをテキストに吐き出します。&lt;br /&gt;
ターミナルを開いて、プロジェクトが置いてあるフォルダのClassへ移動。基本的なコマンドがわからん！って人は簡単なので勉強してください。&lt;br /&gt;
&lt;br /&gt;
下のコマンドを実行&lt;br /&gt;
&lt;br /&gt;
grep -i &quot;NSLocalizedString&quot; $(find . -name &#39;*.m&#39;) | less &gt;&gt; result.txt&lt;br /&gt;
&lt;br /&gt;
これやると、どのクラスファイルで何をローカライズしようとしてるかがテキストファイルになります。&lt;br /&gt;
&lt;br /&gt;
続いてウインドウズへ。&lt;br /&gt;
ＶＢＥを開いて下のコードをコピペ。&lt;br /&gt;
&lt;br /&gt;
sub getLocalize()&lt;br /&gt;
Const cnsTITLE = &quot;テキストファイル読み込み処理&quot;&lt;br /&gt;
Const cnsFILTER = &quot;全てのファイル (*.*),*.*&quot;&lt;br /&gt;
Dim xlAPP As Application        &#39; Applicationオブジェクト&lt;br /&gt;
Dim intFF As Integer            &#39; FreeFile値&lt;br /&gt;
Dim strFILENAME As String       &#39; OPENするファイル名(フルパス)&lt;br /&gt;
Dim strREC As String            &#39; 読み込んだレコード内容&lt;br /&gt;
Dim GYO As Long                 &#39; 収容するセルの行&lt;br /&gt;
Dim lngREC As Long              &#39; レコード件数カウンタ&lt;br /&gt;
Dim allString As String&lt;br /&gt;
Dim allArray As Variant&lt;br /&gt;
Dim strbuf As String&lt;br /&gt;
Dim lineArray As Variant&lt;br /&gt;
Dim splitArray As Variant&lt;br /&gt;
Dim lineCount As Integer&lt;br /&gt;
Dim z As Integer&lt;br /&gt;
Dim y As Integer&lt;br /&gt;
Dim row As Integer&lt;br /&gt;
&lt;br /&gt;
Rows(&quot;2:65536&quot;).ClearContents&lt;br /&gt;
&#39; Applicationオブジェクト取得&lt;br /&gt;
Set xlAPP = Application   &lt;br /&gt;
&lt;br /&gt;
strFILENAME = xlAPP.GetOpenFilename(FileFilter:=cnsFILTER, _&lt;br /&gt;
Title:=cnsTITLE)                                         &lt;br /&gt;
&lt;br /&gt;
If StrConv(strFILENAME, vbUpperCase) = &quot;FALSE&quot; Then Exit Sub &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
intFF = FreeFile                                           &lt;br /&gt;
&lt;br /&gt;
Open strFILENAME For Input As #intFF                      &lt;br /&gt;
GYO = 1&lt;br /&gt;
&lt;br /&gt;
Do Until EOF(intFF)                                        &lt;br /&gt;
&#39; レコード件数カウンタの加算&lt;br /&gt;
lngREC = lngREC + 1&lt;br /&gt;
&lt;br /&gt;
&#39; 改行までをレコードとして読み込む&lt;br /&gt;
Line Input #intFF, strREC                                &lt;br /&gt;
&#39; 行を加算しA列にレコード内容を表示(先頭は2行目)&lt;br /&gt;
GYO = GYO + 1&lt;br /&gt;
allString = allString &amp; strREC                              &lt;br /&gt;
Loop&lt;br /&gt;
&#39; 指定ファイルをCLOSE&lt;br /&gt;
Close #intFF                                                  &lt;br /&gt;
&lt;br /&gt;
allArray = Split(strREC, vbLf)&lt;br /&gt;
&lt;br /&gt;
row = 2&lt;br /&gt;
For i = 2 To UBound(allArray)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
lineArray = Split(allArray(i), &quot;NSLocalizedString&quot;)&lt;br /&gt;
&lt;br /&gt;
If UBound(lineArray) &gt; 0 Then&lt;br /&gt;
Cells(row, 1).Value = lineArray(0)&lt;br /&gt;
End If&lt;br /&gt;
&lt;br /&gt;
For lineCount = 1 To UBound(lineArray)&lt;br /&gt;
lineArray(lineCount) = &quot;NSLocalizedString&quot; &amp; lineArray(lineCount)&lt;br /&gt;
z = InStr(1, lineArray(lineCount), &quot;@&quot;)&lt;br /&gt;
y = InStr(1, lineArray(lineCount), &quot;nil&quot;) - 3&lt;br /&gt;
strbuf = Left(lineArray(lineCount), y)&lt;br /&gt;
Cells(row, 2).Value = Replace(Replace(Replace(Replace(strbuf, &quot;NSLocalizedString&quot;, &quot;&quot;), &quot;(&quot;, &quot;&quot;), &quot;@&quot;, &quot;&quot;), Chr(34), &quot;&quot;)&lt;br /&gt;
row = row + 1&lt;br /&gt;
Next lineCount&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next i&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end sub&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
こいつを実行するときれいに形を整えてエクセルに取り込んでくれます。これを元にエクセルで翻訳リストを作成。&lt;br /&gt;
吐き出しようには下のモジュールを使う。&lt;br /&gt;
普通のテキスト吐き出し（フリーファイルとかFileSystemObject)とかだとUnicodeを扱えないのでADOStreamを使う。&lt;br /&gt;
&lt;br /&gt;
参照設定でＡＤＯにチェック。&lt;br /&gt;
こいつを実行すると、実行したエクセルファイルと同じ場所にLocalized.Stringを吐き出すってわけ。&lt;br /&gt;
このファイルをそのまま使うんじゃなくて、ここからコピペをする予定なのでBOMとかはとってないです。&lt;br /&gt;
&lt;br /&gt;
Sub getLocal()&lt;br /&gt;
&lt;br /&gt;
Dim i As Integer&lt;br /&gt;
Dim endline As Integer&lt;br /&gt;
Dim str As String&lt;br /&gt;
Dim path As String&lt;br /&gt;
Dim endC As Integer&lt;br /&gt;
Dim strUni As String&lt;br /&gt;
&#39;オブジェクトを作成&lt;br /&gt;
Dim txt2 As Object&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dim xlAPP As Application        &lt;br /&gt;
&lt;br /&gt;
Dim fileName As String       &#39; OPENするファイル名(フルパス)&lt;br /&gt;
Dim strREC As String            &#39; 書き出すレコード内容&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dim str_buf As String&lt;br /&gt;
&lt;br /&gt;
path = Application.ThisWorkbook.path&lt;br /&gt;
endline = Cells(65536, 1).End(xlUp).row&lt;br /&gt;
endC = Cells(1, 200).End(xlToLeft).Column&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For C = 2 To endC&lt;br /&gt;
Set txt2 = CreateObject(&quot;ADODB.Stream&quot;)&lt;br /&gt;
&lt;br /&gt;
&#39;オブジェクトに保存するデータの種類を文字列型に指定する&lt;br /&gt;
&#39;txt2.Type = adTypeText&lt;br /&gt;
txt2.Type = 2&lt;br /&gt;
&#39;文字列型のオブジェクトの文字コードを指定する&lt;br /&gt;
txt2.Charset = &quot;UTF-16&quot;&lt;br /&gt;
&lt;br /&gt;
&#39;オブジェクトのインスタンスを作成&lt;br /&gt;
txt2.Open&lt;br /&gt;
&lt;br /&gt;
&#39;//翻訳を作る処理&lt;br /&gt;
&lt;br /&gt;
strREC = &quot;&quot;&lt;br /&gt;
strUni = &quot;&quot;&lt;br /&gt;
fileName = path &amp; &quot;\&quot; &amp; Cells(1, C).Value &amp; &quot;.txt&quot;&lt;br /&gt;
&lt;br /&gt;
For i = 2 To endline&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If Cells(i, 1).Value &lt;&gt; &quot;&quot; And Left(Cells(i, 1).Value, 1) &lt;&gt; &quot;#&quot; Then&lt;br /&gt;
str = Chr(34) &amp; Cells(i, 1).Value &amp; Chr(34) &amp; &quot;=&quot; &amp; Chr(34) &amp; Cells(i, C).Value &amp; Chr(34) &amp; &quot;;&quot;&lt;br /&gt;
&lt;br /&gt;
Else&lt;br /&gt;
str = &quot;//&quot; &amp; Cells(i, 1).Value&lt;br /&gt;
End If&lt;br /&gt;
str = Replace(str, &quot;\&quot; &amp; Chr(13), &quot;\n&quot;)&lt;br /&gt;
str = Replace(str, Chr(10), &quot;&quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#39;1行ずつ書き込む&lt;br /&gt;
txt2.WriteText str, adWriteLine&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next i&lt;br /&gt;
&lt;br /&gt;
&#39;オブジェクトの内容をファイルに保存&lt;br /&gt;
txt2.SaveToFile (fileName), adSaveCreateOverWrite&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#39;オブジェクトを閉じる&lt;br /&gt;
txt2.Close&lt;br /&gt;
&lt;br /&gt;
&#39;メモリからオブジェクトを削除する&lt;br /&gt;
Set txt2 = Nothing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next C&lt;br /&gt;
&lt;br /&gt;
MsgBox &quot;ファイル出力が完了しました。&quot;&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
このファイルを上手に使えば、翻訳リストとソースコードと実際のLocalizedStringファイルをマッチングして、ローカライズ漏れを一網打尽にすることができます。</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/2111620441008436722/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/06/localizedstring.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/2111620441008436722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/2111620441008436722'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/06/localizedstring.html' title='LocalizedStringファイルの生成を半自動化する。'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-4607686770091448803</id><published>2011-05-27T04:06:00.002+09:00</published><updated>2012-01-25T00:32:55.087+09:00</updated><title type='text'>Core Graphicsで図形を描く</title><content type='html'>まーるさんかくしかーくー♪&lt;br /&gt;
ってことで、今回は図形を描写します。&lt;br /&gt;
&lt;br /&gt;
まずこれ。簡単な四角形から。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXoodRSU4n2Of_FBRAWP-qtrpU-mWKcTS87Un1KSePH5Sw3b-oW2-GUSC2HdUGDB3OL_B5ckW40OrqvBhN-94r9Vwt4CmxoyRwaUMdV9hO6WjCfscYpMdx2SmkK0zqKACLXYwsmq8o1sU/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-05-27+1.05.18%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; width=&quot;223&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXoodRSU4n2Of_FBRAWP-qtrpU-mWKcTS87Un1KSePH5Sw3b-oW2-GUSC2HdUGDB3OL_B5ckW40OrqvBhN-94r9Vwt4CmxoyRwaUMdV9hO6WjCfscYpMdx2SmkK0zqKACLXYwsmq8o1sU/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-05-27+1.05.18%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-(void)drawInContext:(CGContextRef)context&lt;br /&gt;
{&lt;br /&gt;
CGContextSetRGBStrokeColor(context, 1.0, 0, 0, 1.0);&lt;br /&gt;
&lt;br /&gt;
CGContextStrokeRect(context, CGRectMake(20.0, 20.0, 100.0, 200.0));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
CGContextStrokeRect(context, CGRect);で枠だけの四角を描く。&lt;br /&gt;
&lt;br /&gt;
次にこれ&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDReSW26sAgNZJBkm-X_sp3bVR62IESIh_4CHp7EhmJwi3L6ecVdQmNE0ZdEW7_1hPL4utdc2Q9Sqgc0spn_AGaMhqDLrO4XDWMtmp0Ve0U5QyWPTTnozVz1s_tvEAirQhgEx3KG718Oc/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-05-27+1.11.14%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; width=&quot;261&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDReSW26sAgNZJBkm-X_sp3bVR62IESIh_4CHp7EhmJwi3L6ecVdQmNE0ZdEW7_1hPL4utdc2Q9Sqgc0spn_AGaMhqDLrO4XDWMtmp0Ve0U5QyWPTTnozVz1s_tvEAirQhgEx3KG718Oc/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-05-27+1.11.14%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;-(void)drawInContext:(CGContextRef)context&lt;br /&gt;
{&lt;br /&gt;
CGContextSetRGBStrokeColor(context, 1.0, 0, 0, 1.0);&lt;br /&gt;
&lt;br /&gt;
CGRect rect = CGRectMake(20.0, 20.0, 200.0, 300.0);&lt;br /&gt;
CGContextStrokeRectWithWidth(context, rect,10.0);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
CGContextStrokeRectWithWidth(context, rect,線の太さ);で線の太さを変更できる四角を描く&lt;br /&gt;
&lt;br /&gt;
次にこれ&lt;br /&gt;
&lt;br /&gt;
-(void)drawInContext:(CGContextRef)context&lt;br /&gt;
{&lt;br /&gt;
CGContextSetRGBStrokeColor(context, 1.0, 0, 0, 1.0);&lt;br /&gt;
&lt;br /&gt;
CGRect rect = CGRectMake(20.0, 20.0, 200.0, 300.0);&lt;br /&gt;
CGContextFillRect(context, rect);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
はい、真っ黒〜&lt;br /&gt;
CGContextSetRGBStrokeColorは線の色なので、下の塗りつぶし色の設定を追加します。&lt;br /&gt;
CGContextSetRGBFillColor(context, 1.0, 0, 0, 1.0); &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
再び実行。&lt;br /&gt;
まさにRectを塗りつぶした形になります。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgR8aC0xiOjN7bbfdcjKCWnqEvUI3TdMQ390PRh2TgvnAxE3KIWBmwJzL39EcWV5-vwYUFOm7ffJ10kLj6MRhP0gv3yBqEPMb-_opECxxpgw6moO2hK31eutgdRBtDlRLRzhNeiZ6cJbpw/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-05-27+1.16.09%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; width=&quot;230&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgR8aC0xiOjN7bbfdcjKCWnqEvUI3TdMQ390PRh2TgvnAxE3KIWBmwJzL39EcWV5-vwYUFOm7ffJ10kLj6MRhP0gv3yBqEPMb-_opECxxpgw6moO2hK31eutgdRBtDlRLRzhNeiZ6cJbpw/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-05-27+1.16.09%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
次に丸を描いてみます。&lt;br /&gt;
&lt;br /&gt;
CGContextAddEllipseInRect(context,rect);//線の円&lt;br /&gt;
CGContextFillEllipseInRect(context,rect);//塗りつぶされた円&lt;br /&gt;
CGContextAddEllipseInRect(context,rect);//パスを追加&lt;br /&gt;
&lt;br /&gt;
これも分かりやすいですね。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
三角形はどうしょうでしょうか。&lt;br /&gt;
特にそれ用の関数は無いので、線を引いてその中を埋めていきます。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj9_yPCqgQLuvEERKMeRADZjbmImrNx3a4qyTOGoUcMx-wwPWRMdN6elIQkknvazYjG2k1nuYZA8YErIhPhRAaGzdBWQmzo5A9kzxiiArC3YMuNynWSWQ6IF2nQODOKZ6-xaHc69cYS58/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-05-27+3.57.36%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;270&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgj9_yPCqgQLuvEERKMeRADZjbmImrNx3a4qyTOGoUcMx-wwPWRMdN6elIQkknvazYjG2k1nuYZA8YErIhPhRAaGzdBWQmzo5A9kzxiiArC3YMuNynWSWQ6IF2nQODOKZ6-xaHc69cYS58/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-05-27+3.57.36%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
CGContextMoveToPoint(context,160.0,10.0);&lt;br /&gt;
CGContextAddLineToPoint(context,10.0,200.0);&lt;br /&gt;
CGContextAddLineToPoint(context,310.0,200.0);&lt;br /&gt;
CGContextFillPath(context);//塗りつぶす&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
この書き方だと、複数図形があってそれぞれ異なる色で塗りつぶしたり、はたまた線だけの図形を描くときにどうするんだろう？&lt;br /&gt;
で、一回一回完結させてみた。&lt;br /&gt;
&lt;br /&gt;
-(void)drawInContext:(CGContextRef)context&lt;br /&gt;
{ &lt;br /&gt;
&lt;br /&gt;
CGContextSetRGBStrokeColor(context, 1.0, 0, 0, 1.0);&lt;br /&gt;
CGContextSetRGBFillColor(context, 0, 1.0, 0, 1.0);&lt;br /&gt;
&lt;br /&gt;
CGContextMoveToPoint(context,160.0,10.0);&lt;br /&gt;
CGContextAddLineToPoint(context,10.0,200.0);&lt;br /&gt;
CGContextAddLineToPoint(context,310.0,200.0);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CGContextFillPath(context);&lt;br /&gt;
&lt;br /&gt;
CGContextStrokeEllipseInRect(context, CGRectMake(10, 200, 100, 100));&lt;br /&gt;
&lt;br /&gt;
CGRect rect = CGRectMake(10,210 , 100, 100);&lt;br /&gt;
CGContextAddEllipseInRect(context,rect);&lt;br /&gt;
CGContextStrokePath(context);&lt;br /&gt;
&lt;br /&gt;
CGContextSetRGBFillColor(context, 1.0, 1.0, 0, 1.0); &lt;br /&gt;
CGContextFillEllipseInRect(context,CGRectMake(200,200,100,200));&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiooKIc0h4FXrAnt60im4gxsSaN4_cyTdxaGPe4hW2nZm63P6fcJVlMXIm65zv4dcasMxoQgBCXY0aRHwabrsSJVDGFxmw0CIi3VTnSs81kuaW1vvCrM2_-06tjWLH4yMHLoAV1EfybK1E/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-05-27+4.05.49%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; width=&quot;226&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiooKIc0h4FXrAnt60im4gxsSaN4_cyTdxaGPe4hW2nZm63P6fcJVlMXIm65zv4dcasMxoQgBCXY0aRHwabrsSJVDGFxmw0CIi3VTnSs81kuaW1vvCrM2_-06tjWLH4yMHLoAV1EfybK1E/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-05-27+4.05.49%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
とりあえず図形についてはこれでおしまい。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://bit.ly/zoS9Rn&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;160&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUcsRlmr1e5dNfv5YvmngF5dZnnZXz7uLz1iL545_XPNND_Xt-laY646OlXIatPcsOTkF7eYv2fI7RvBzjLqI-vTEBDgY0D9ZJxMai_7iEJzWeZkid_htMgxWjHFiHT3FHvolvVgHD-24/s320/Default%25402x.jpg&quot; width=&quot;107&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/4607686770091448803/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/05/core-graphics_27.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/4607686770091448803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/4607686770091448803'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/05/core-graphics_27.html' title='Core Graphicsで図形を描く'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXoodRSU4n2Of_FBRAWP-qtrpU-mWKcTS87Un1KSePH5Sw3b-oW2-GUSC2HdUGDB3OL_B5ckW40OrqvBhN-94r9Vwt4CmxoyRwaUMdV9hO6WjCfscYpMdx2SmkK0zqKACLXYwsmq8o1sU/s72-c/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-05-27+1.05.18%25EF%25BC%2589.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-8266333465170867798</id><published>2011-05-27T00:26:00.001+09:00</published><updated>2011-05-27T00:56:22.682+09:00</updated><title type='text'>Core Graphicsを学ぶ</title><content type='html'>何となく CoreGraphics　辺りを書きたい気分に。&lt;br /&gt;
これを使って何かをしようと思ったことが無いので、個人的にも勉強しながら書いていくというスタンスです。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Core Graphicsは、UIImageとかよりもちょっとだけ低レベルなグラフィックフレームワークだとか。&lt;br /&gt;
Cocoa Touchよりもハードウェアよりに位置するので、実行速度も多分速くなるし自由度も増す。&lt;br /&gt;
Core何とかと名前がついているAPIは大抵C言語で提供されているんだけれど、Core Graphicsもそうらしい。&lt;br /&gt;
ってことは、呼び出しが若干煩雑になるってこと。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
とりあえず、プロジェクトに　CoreGraphics.frameworkを追加してみる。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
１、グラフィックスコンテキスト&lt;br /&gt;
書籍なんかでは描画する対象を表すものだとか何とか書かれている。まあ、良くわからんが　Core Graphicsを使った描画では、最初にグラフィックスコンテキストを取得しないといけないってことだけは確かだ。&lt;br /&gt;
&lt;br /&gt;
　CGContextRef UIGraphicsGetCurrentContext();&lt;br /&gt;
　&lt;br /&gt;
&lt;br /&gt;
とりあえず実践。&lt;br /&gt;
すべての描画はdrawRect: メソッドの中に記述するか、この中から呼ぶメソッドに記述しないと動かないらしいので、Viewを一丁つくってdrawRectにメソッドを書いておく。&lt;br /&gt;
&lt;br /&gt;
これ、コメントを削除したアップルさんのサンプルと一緒w&lt;br /&gt;
引数でグラフィックコンテキストも作って渡しちゃう。&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;-(void)drawRect:(CGRect)rect&lt;br /&gt;
{&lt;br /&gt;
[self drawInContext:UIGraphicsGetCurrentContext()];&lt;br /&gt;
}&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
呼び出されるメソッドの中身はこれ。&lt;br /&gt;
なにやってるかはコメントに記載しました。&lt;br /&gt;
&lt;i&gt;-(void)drawInContext:(CGContextRef)context&lt;br /&gt;
{&lt;br /&gt;
CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0);//線の色。引数はcontext, R,G,B,アルファ。&lt;br /&gt;
&lt;br /&gt;
CGContextMoveToPoint(context, 20.0, 50.0);//線の始点&lt;br /&gt;
CGContextAddLineToPoint(context, 300.0, 50.0);//線の終点から線を生成&lt;br /&gt;
CGContextStrokePath(context);//線を引く&lt;br /&gt;
}&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
はい、びしっと線が引けたかと。&lt;br /&gt;
&lt;br /&gt;
じゃあ、これを使って折れ線グラフ的な線も引けるんじゃないかと言うのが人情ですね。&lt;br /&gt;
上のやり方でちまちまやってもいいのですが、まとめてやる方法があります。&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;-(void)drawInContext:(CGContextRef)context&lt;br /&gt;
{&lt;br /&gt;
CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0);&lt;br /&gt;
CGPoint lines[] =&lt;br /&gt;
{&lt;br /&gt;
CGPointMake(10.0, 90.0),&lt;br /&gt;
CGPointMake(70.0, 60.0),&lt;br /&gt;
CGPointMake(130.0, 100.0),&lt;br /&gt;
CGPointMake(190.0, 70.0),&lt;br /&gt;
CGPointMake(250.0, 90.0),&lt;br /&gt;
CGPointMake(310.0, 50.0)&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
CGContextAddLines(context, lines, 6);&lt;br /&gt;
CGContextStrokePath(context);&lt;br /&gt;
&lt;br /&gt;
}&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
これで、真っ赤なガタガタ線が引けたかと思います。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjENShreOF3C5EJ8RxibjawI2emslduUzgIx5wnkI1BaSfkV2bt3_1mT4JRjKpr9VjkHnnv1czwSwF2mngiUEZgr0AK9zMSCx4WhB69luxyqsGu6QG6n1Bj-yRcYnsuziHSdsAFCYeh7R8/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-05-27+0.07.45%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; width=&quot;313&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjENShreOF3C5EJ8RxibjawI2emslduUzgIx5wnkI1BaSfkV2bt3_1mT4JRjKpr9VjkHnnv1czwSwF2mngiUEZgr0AK9zMSCx4WhB69luxyqsGu6QG6n1Bj-yRcYnsuziHSdsAFCYeh7R8/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-05-27+0.07.45%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
最初にCの配列 lines　を生成してCGPointをぶっこみにいってます。&lt;br /&gt;
CGContextAddLines関数。末尾に”s”が付いてるので複数形ですね。第一引数はcontext、次に接点を保つ配列が第二引数。最後の引数は接点の数です。　&lt;br /&gt;
　この最後の引数の「６」ですが、実際のプログラムでは動的に入れたいというケースがほとんどなので、ここを&lt;br /&gt;
　sizeof (lines)/ sizeof( lines[0]) とするとスマートです。&lt;br /&gt;
sizeof はメモリのサイズを返すので、配列全体のサイズを最初の一個目のサイズで割ると、CGPointひとつひとつで確保しているメモリのサイズは同じなので、配列の数　＝　接点の数が算出できるというわけです。obj-Cみたいに[ Array count ] とかできないところがもどかしいですね。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
＜その他＞&lt;br /&gt;
&lt;br /&gt;
太さの設定&lt;br /&gt;
CGContextSetLineWidth(context, x);&lt;br /&gt;
x は?pxということ。&lt;br /&gt;
&lt;br /&gt;
たばこと丸と四角&lt;br /&gt;
&lt;br /&gt;
・線の端っこの形の設定。&lt;br /&gt;
 CGContextSetLineCap関数で設定。まさに名前の通りw&lt;br /&gt;
　ラインキャップを設定するんですね。キャップは両端にかぶせます。&lt;br /&gt;
　&lt;br /&gt;
　kCGLineCapButt = 両切りタバコ状態&lt;br /&gt;
　kCGLineCapRound = 丸いキャップをするんですね。&lt;br /&gt;
　kCGLineCapSquare　= 四角いキャップ。&lt;br /&gt;
　&lt;br /&gt;
　&lt;br /&gt;
　CGContextSetLineCap = kCGLineCapRound;&lt;br /&gt;
　&lt;br /&gt;
　Buttという単語はアメリカ英語だとタバコって意味もあるらしくて、灰皿を　Butt tray とかとも言うらしい。でも、アメリカ人以外には通じないらしいw&lt;br /&gt;
　&lt;br /&gt;
　&lt;br /&gt;
　&lt;br /&gt;
ジョイントの方法&lt;br /&gt;
&lt;br /&gt;
CGContextSetLineJoin = kCGLineJoinMiter;&lt;br /&gt;
&lt;br /&gt;
miter joint（マイタージョイント）っていうのは、斜めに切った角材を張り合わせた感じの事をいうらしい。&lt;br /&gt;
ふむふむ。&lt;br /&gt;
&lt;br /&gt;
kCGLineJoinMiter マイターに&lt;br /&gt;
kCGLineJoinRound　丸くつなぐ&lt;br /&gt;
kCGLineJoinBevel　角をばつんと落とす。</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/8266333465170867798/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/05/core-graphics.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/8266333465170867798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/8266333465170867798'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/05/core-graphics.html' title='Core Graphicsを学ぶ'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjENShreOF3C5EJ8RxibjawI2emslduUzgIx5wnkI1BaSfkV2bt3_1mT4JRjKpr9VjkHnnv1czwSwF2mngiUEZgr0AK9zMSCx4WhB69luxyqsGu6QG6n1Bj-yRcYnsuziHSdsAFCYeh7R8/s72-c/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-05-27+0.07.45%25EF%25BC%2589.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-9047099746485365604</id><published>2011-05-26T22:30:00.006+09:00</published><updated>2012-01-25T00:33:48.352+09:00</updated><title type='text'>よく使う文字列操作その２</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;良く使う文字列操作を書き終わった後に色々思いついちゃったので、続編を書きたいと思います。&lt;br /&gt;
そういえば文字列の長さを取得するメソッドとかも書いてなかったし。。。&lt;br /&gt;
まあ、だいたいどの言語でもlengthなんでobj-cのルールに乗っ取って書けば　[str length];　になりますね。&lt;br /&gt;
ちなみに、前回で解説してきたNSMutableStringクラスはNSStringクラスのサブクラスになるので、NSStringクラスで使えるメソッドは使えます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
文字列の比較。&lt;br /&gt;
これは [str isEqualToString:str2];　です。&lt;br /&gt;
例えば、&lt;br /&gt;
NSString *str = [NSString stringWithString:@&quot;山田”];&lt;br /&gt;
if ( [str isEqualToString:@&quot;田中&quot;]) {&lt;br /&gt;
NSLog(@&quot;%@！この野郎！&quot;,str);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
って感じで、strが田中だった場合は、何だかぶっそうな展開になります。&lt;br /&gt;
上の例では isEqualToString:メソッドの戻り値はNO(Boolean)で返ってくるので、特に修羅場にはなりません。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
パスからディレクトリ名などを切り出す。&lt;br /&gt;
&lt;br /&gt;
まず、バンドルのリソースファイルを取得します。&lt;br /&gt;
&lt;br /&gt;
NSString *path;&lt;br /&gt;
path = [bundle pathForResource:@&quot;background&quot; ofType:&quot;@png&quot;];&lt;br /&gt;
&lt;br /&gt;
NSLog(@&quot;%@&quot;,path);&lt;br /&gt;
&lt;br /&gt;
これの実行結果が&quot; /user/document/background.png&quot;　だとします。&lt;br /&gt;
&lt;br /&gt;
//ファイルの拡張子を取得&lt;br /&gt;
NSString *extension;&lt;br /&gt;
extension = [path pathExtension];&lt;br /&gt;
&lt;br /&gt;
NSLog(@&quot;%@&quot;,extension);&lt;br /&gt;
//実行結果:png&lt;br /&gt;
&lt;br /&gt;
//ファイル名を取得&lt;br /&gt;
//例ではファイル名入れてpathForResourceしてるんですが、まあ練習ということで　（＾＾；）&lt;br /&gt;
&lt;br /&gt;
NSString *fileName;&lt;br /&gt;
fileNamee = [path lastPathComponent];&lt;br /&gt;
NSLog(@&quot;%@&quot;,fileName);&lt;br /&gt;
//実行結果: background&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//ファイルが存在するディレクトリを取得&lt;br /&gt;
NSString *directory;&lt;br /&gt;
directory = [path stringByDeletingLastPathComponent];&lt;br /&gt;
NSLog(@&quot;%@&quot;,directory);&lt;br /&gt;
&lt;br /&gt;
//実行結果: /user/document&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
そうそう、忘れていました！型変換でもつまずく型は結構いるんじゃないでしょうか。&lt;br /&gt;
&lt;br /&gt;
他の言語なら、異なる型で宣言した変数に入りさえすれば。。。ふふふ、なんて事にもなりますが、obj-cではそうはいきません。&lt;br /&gt;
無理矢理キャストというのも無いみたいです。&lt;br /&gt;
NSString *str = [NSString stringWithString:@&quot;123&quot;];&lt;br /&gt;
NSInteger int = 35 + (NSInteger) str;&lt;br /&gt;
なんてやったら確実に怒られますw&lt;br /&gt;
&lt;br /&gt;
[str intValue];&lt;br /&gt;
でinteger に型変換できます。ダブルの場合は&lt;br /&gt;
[str double];&lt;br /&gt;
です。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Obj-Cのメソッドの名前って覚えずらいですよね。&lt;br /&gt;
何かを見ながらコード書くより声に出してみた方が案外覚えられることに最近気づきました。僕だけかもしれませんが。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://bit.ly/zoS9Rn&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;160&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUcsRlmr1e5dNfv5YvmngF5dZnnZXz7uLz1iL545_XPNND_Xt-laY646OlXIatPcsOTkF7eYv2fI7RvBzjLqI-vTEBDgY0D9ZJxMai_7iEJzWeZkid_htMgxWjHFiHT3FHvolvVgHD-24/s320/Default%25402x.jpg&quot; width=&quot;107&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://bit.ly/zoS9Rn&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;160&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUcsRlmr1e5dNfv5YvmngF5dZnnZXz7uLz1iL545_XPNND_Xt-laY646OlXIatPcsOTkF7eYv2fI7RvBzjLqI-vTEBDgY0D9ZJxMai_7iEJzWeZkid_htMgxWjHFiHT3FHvolvVgHD-24/s320/Default%25402x.jpg&quot; width=&quot;107&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/9047099746485365604/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/05/blog-post_26.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/9047099746485365604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/9047099746485365604'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/05/blog-post_26.html' title='よく使う文字列操作その２'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUcsRlmr1e5dNfv5YvmngF5dZnnZXz7uLz1iL545_XPNND_Xt-laY646OlXIatPcsOTkF7eYv2fI7RvBzjLqI-vTEBDgY0D9ZJxMai_7iEJzWeZkid_htMgxWjHFiHT3FHvolvVgHD-24/s72-c/Default%25402x.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-3592723409410759856</id><published>2011-05-25T02:34:00.002+09:00</published><updated>2012-01-25T00:33:28.053+09:00</updated><title type='text'>良く使う文字列変換をまとめてみる</title><content type='html'>Objective-Cに慣れちゃったという人は読み飛ばしてください。&lt;br /&gt;
今回はかなりの初級編。&lt;br /&gt;
&lt;br /&gt;
Excelの関数から始まり、VBAでプログラムデビューした自分にとってObj-Cの文字列変換ってどうにも親しみづらいイメージがありました。&lt;br /&gt;
ネットや本であれこれ調べて、最近はようやく慣れましたが。&lt;br /&gt;
そこで、良く使うパターンをまとめちゃいます☆&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;NSString&lt;/b&gt;ってクラスはご存知ですか？&lt;br /&gt;
Obj-cの文字を扱うクラスです。一度設定したら変更できないですね。&lt;br /&gt;
&lt;br /&gt;
例えば。。。&lt;br /&gt;
NSString *str = @&quot;str&quot;;&lt;br /&gt;
str = @&quot;str2&quot;;&lt;br /&gt;
&lt;br /&gt;
とかは怒られてしまいます。&lt;br /&gt;
なので、変更可能なクラスである　NSMutableStringを個人的には多用します。&lt;br /&gt;
まあ、変更する必要がなければNSStringの方がプログラムの効率が良いのですがね。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
文字列変換でやりたい事って、大体決まってますよね。&lt;br /&gt;
文字列連結に文字列置換に文字列取り出しってところでしょうか。おまけで型変換。特にC言語のStringにしたいってケースは良くあるかも。&lt;br /&gt;
&lt;br /&gt;
生成を含めてズバリしたの５つ&lt;br /&gt;
&lt;br /&gt;
文字列生成　＞　[NSMutableString stringWithFormat:str];&lt;br /&gt;
文字列連結　＞　[NSMutableString appendString:str];&lt;br /&gt;
文字列置換　＞　[NSMutableString stringByReplacingOccurrencesOfString:str1 withString:str2]&lt;br /&gt;
文字列取り出し　＞　[str substringWithRange:NSMakeRange(0,1)];&lt;br /&gt;
UTF8に変換　&gt;  [str UTF8String];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
まずは良く使う形。&lt;br /&gt;
NSMutableString *str1 = [NSMutableString stringWithFormat:@&quot;SELECT * FROM TABLE WHERE id = %d&quot;,100];&lt;br /&gt;
&lt;br /&gt;
stringWithFormatメソッド。これは文字列が格納された変数を生成するときによく使います。&lt;br /&gt;
最初の@””に囲まれた文字列が格納したい本体。%dには数字（Integerなど）を表す変数みたいなもの。&lt;br /&gt;
C が書ける人にはおなじみですね。&lt;br /&gt;
で、カンマで区切ってその「%d」の中に入れる数字が続きます。この「100」の部分は変数でもいいです。&lt;br /&gt;
VBのformat関数みたいなものですね。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
少し発展させるとこんな感じになります。&lt;br /&gt;
&lt;br /&gt;
NSString *str = [NSString stringWithFormat:@&quot;%02d:%02d&quot;,Number/60,Number % 60];&lt;br /&gt;
&lt;br /&gt;
変数Numberには数字が入っています。まあ、秒数だとしましょう。&lt;br /&gt;
上のコードは秒数から「00:00」に表記を変えるコードです。&lt;br /&gt;
%02dは二桁の数字という意味です。 1 = 01 ,11 = 11　ってな感じです。&lt;br /&gt;
%02dがコロンを挟んで二つならんでいると思います。そしてカンマで区切られた式が二つ。&lt;br /&gt;
分かりやすく構造だけ書くと下のようになります。&lt;br /&gt;
&lt;br /&gt;
[NSString stringWithFormat:@&quot;%d%d&quot;,　(一つ目の%dに対応) ,　(二つ目の%dに対応) ];&lt;br /&gt;
&lt;br /&gt;
要するに%何とかの個数が増えれば、それに対応させてカンマで区切られた値なり式が増えるんですね。&lt;br /&gt;
実際にSQLなんかを合成させてみるとこんな感じになります。&lt;br /&gt;
%dの代わりに使われている%@には文字列を格納しています。&lt;br /&gt;
一行目のコードで生成した文字列に appendString:メソッドで文字列を連結しています。&lt;br /&gt;
連結する文字列は stringWithFormat:　で別途生成したも文字列になります。&lt;br /&gt;
末尾の　NSLog関数で生成したSQLの内容をコンソールに表示させています。&lt;br /&gt;
NSLogの使い方は、ほぼStringWithFormatと同じ書式です。&lt;br /&gt;
&lt;br /&gt;
NSMutableString *str1 = [NSMutableString stringWithFormat:@&quot;%@&quot;,@&quot;INSERT INTO Data1 VALUES&quot;];&lt;br /&gt;
[str1 appendString:[NSMutableString stringWithFormat:@&quot; (%d,&#39;%@&#39;,%d,%d,%d,&#39;%@&#39;,&#39;%@&#39;,&#39;%@&#39;);&quot;&lt;br /&gt;
,[Array count]&lt;br /&gt;
,[Name_ stringByReplacingOccurrencesOfString:@&quot;&#39;&quot; withString:@&quot;&#39;&#39;&quot;]&lt;br /&gt;
,Number_&lt;br /&gt;
,info_&lt;br /&gt;
,SoundType_&lt;br /&gt;
,[soundName_ stringByReplacingOccurrencesOfString:@&quot;&#39;&quot; withString:@&quot;&#39;&#39;&quot;]&lt;br /&gt;
,infoSoundName_&lt;br /&gt;
,itemCode_&lt;br /&gt;
]];&lt;br /&gt;
NSLog(@&quot;%@&quot;,str1);&lt;br /&gt;
&lt;br /&gt;
文字列連結は&lt;br /&gt;
[NSMutableString appendString:@&quot;文字列”]; です。&lt;br /&gt;
このメソッドを使うと、末尾に任意の文字列を連結できます。&lt;br /&gt;
　&lt;br /&gt;
NSMutableString *str = [NSMutableString stringWithFormat:@&quot;今日は%d月%d日です。”,12,25];&lt;br /&gt;
[str appendString:@&quot;なんだクリスマスじゃないか!”];&lt;br /&gt;
[str appendString:[NSMutableString stringWithFormat:@&quot; じゃあ%d円くらいなら、おごってあげるよ。&quot;]];&lt;br /&gt;
&lt;br /&gt;
と、連結しまくりです。&lt;br /&gt;
上のコードでは文字列置換もやっています。痴漢じゃないですよ。置換。&lt;br /&gt;
この部分。&lt;br /&gt;
[Name_ stringByReplacingOccurrencesOfString:@&quot;&#39;&quot; withString:@&quot;&#39;&#39;&quot;]&lt;br /&gt;
&lt;br /&gt;
Nameに含まれるシングルクォートをエスケープして[&#39;&#39;]シングルクォート二つに変更しています。&lt;br /&gt;
今時はみなさんCoreDataを使っているでしょうが、もしSqliteを使っているならば&lt;br /&gt;
生成したSQLに文字列が含まれるようなものを扱っているならば、シングルクオートをエスケープしとかないと&lt;br /&gt;
ユーザーがシングルクォーテーション付きの文字列を入れて登録〜っとやった瞬間にエラーぶっこきますよw&lt;br /&gt;
&lt;br /&gt;
と、余談はさておき、&lt;br /&gt;
&lt;br /&gt;
文字列置換は&lt;br /&gt;
[NSMutableString stringByReplacingOccurrencesOfString:str1 withString:str2]&lt;br /&gt;
となっていて、str1とstr2を入れ替えるんですね。&lt;br /&gt;
&lt;br /&gt;
NSMutableString *hatugen = @&quot;今回のプロジェクトは田中君にまかせることになった。がんばりたまえ”；&lt;br /&gt;
&lt;br /&gt;
もし、田中が気に入らなくて鈴木さんに変更したいのならばこうだ。&lt;br /&gt;
[hatugen stringByReplacingOccurrencesOfString:@&quot;田中” withStirng:@&quot;鈴木&quot;];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
最後に文字列取り出し。&lt;br /&gt;
obj-cはVBとかエクセルの関数みたいにLeftとかMidとかじゃないんだけど、&lt;br /&gt;
にたようなものがあるのでそれを使う。&lt;br /&gt;
&lt;br /&gt;
NSString *str = [NSString stringWithFormat:@&quot;%02d:%02d&quot;,Second/60,Second % 60];&lt;br /&gt;
n1.text = [str substringWithRange:NSMakeRange(0,1)];//一文字目&lt;br /&gt;
n2.text = [str substringWithRange:NSMakeRange(1, 1)];//二文字目&lt;br /&gt;
n3.text = [str substringWithRange:NSMakeRange(3, 1)];//三文字目&lt;br /&gt;
n4.text=[str substringWithRange:NSMakeRange(4, 1)];//四文字目&lt;br /&gt;
&lt;br /&gt;
NSMakeRange( 開始位置, 文字数) なので [str substringWithRange:メソッドを使えば、&lt;br /&gt;
エクセルの関数のMid(ミドル）的に取り出せる。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
後は、変換した文字列の使い道としては、UILabelか　UIButton　かといったところでしょうか。&lt;br /&gt;
UILabel は　Label.text = @&quot;ラベルだどぉ&quot;;&lt;br /&gt;
UIButtonは　[button setTitle:@&quot;ボタンタイトルです。&quot; forState:UIControlStateNormal];&lt;br /&gt;
って感じです。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
今回は「良く使う文字列変換」についてでした~&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://bit.ly/zoS9Rn&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;160&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUcsRlmr1e5dNfv5YvmngF5dZnnZXz7uLz1iL545_XPNND_Xt-laY646OlXIatPcsOTkF7eYv2fI7RvBzjLqI-vTEBDgY0D9ZJxMai_7iEJzWeZkid_htMgxWjHFiHT3FHvolvVgHD-24/s320/Default%25402x.jpg&quot; width=&quot;107&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/3592723409410759856/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/05/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/3592723409410759856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/3592723409410759856'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/05/blog-post.html' title='良く使う文字列変換をまとめてみる'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUcsRlmr1e5dNfv5YvmngF5dZnnZXz7uLz1iL545_XPNND_Xt-laY646OlXIatPcsOTkF7eYv2fI7RvBzjLqI-vTEBDgY0D9ZJxMai_7iEJzWeZkid_htMgxWjHFiHT3FHvolvVgHD-24/s72-c/Default%25402x.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-88358040314786810</id><published>2011-04-29T21:59:00.002+09:00</published><updated>2011-04-29T23:01:33.864+09:00</updated><title type='text'>アプリをローカライズする手順メモ</title><content type='html'>&lt;h3&gt;Localizable.strings を用意する.&lt;/h3&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;ファイル&gt;新規ファイル&gt;Resource&gt;Strings Filesと選択&lt;br&gt;&lt;br&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlqGrmrf0okfpbfd02ZxsAxrr8J4lkgUBuK2zpS0SuCBxl3upPLHZZSUk0DyMcOiujuwqWN_T4pTH8p619r8rnm3R-9PHU5iWyuaMUnGnOkDHJ9IoVjRyVJD5AbHwddwtSjCEGFIXp4MI/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-29+22.55.46%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;206&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlqGrmrf0okfpbfd02ZxsAxrr8J4lkgUBuK2zpS0SuCBxl3upPLHZZSUk0DyMcOiujuwqWN_T4pTH8p619r8rnm3R-9PHU5iWyuaMUnGnOkDHJ9IoVjRyVJD5AbHwddwtSjCEGFIXp4MI/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-29+22.55.46%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgojd2FaxUaGzETQ34x39PkN-XQoBOt_xFEtCKgGysTnWmXXQnHOGO8iBSAmtZFAi_jXGlzFNnpOiK1jfPtgFlVoJ1Y8saaIo47Vo7bWYwrydfoS2djDRmYh-YhFNPoEFVCX4yZY5XNzTg/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-29+22.55.57%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;270&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgojd2FaxUaGzETQ34x39PkN-XQoBOt_xFEtCKgGysTnWmXXQnHOGO8iBSAmtZFAi_jXGlzFNnpOiK1jfPtgFlVoJ1Y8saaIo47Vo7bWYwrydfoS2djDRmYh-YhFNPoEFVCX4yZY5XNzTg/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-29+22.55.57%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br&gt;&lt;br&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt;Localizable.string をResourcesフォルダに入れる&lt;br&gt;&lt;br&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilKICwV3DWkxhjbOgZxg5dFlRAb8B4nK4jZ-l_DCyvKrrqmsS4q9AwqBo1QXOCo1W0-MvkGPPUWb0WrNQnaLFSU8x1unvzh9lP30nRlsulspv55eqn17u5mSTEtKfz5fkyb9cqaNxmBbM/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-29+22.54.15%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;91&quot; width=&quot;253&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilKICwV3DWkxhjbOgZxg5dFlRAb8B4nK4jZ-l_DCyvKrrqmsS4q9AwqBo1QXOCo1W0-MvkGPPUWb0WrNQnaLFSU8x1unvzh9lP30nRlsulspv55eqn17u5mSTEtKfz5fkyb9cqaNxmBbM/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-29+22.54.15%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt;Localizable.string を右クリックし[情報を見る] を選択&lt;br&gt;&lt;br&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijC86PcaDHMFihM5WCHuyfIu1liTHEfIgbX0NsiMnZ9vRfbumM6BJshZHjFRBvBXF8DDwbR_EYUfLDmmz7HJNJLHMebgNBIinsPMc9J_APGRgTxH3IsQJ0_cgQjFxERWb9_6YJeVZCVOA/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-29+22.02.46%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;303&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijC86PcaDHMFihM5WCHuyfIu1liTHEfIgbX0NsiMnZ9vRfbumM6BJshZHjFRBvBXF8DDwbR_EYUfLDmmz7HJNJLHMebgNBIinsPMc9J_APGRgTxH3IsQJ0_cgQjFxERWb9_6YJeVZCVOA/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-29+22.02.46%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt;
[一般] タブの下部にある[ファイルをローカライズ可能にする] ボタンを押下&lt;br&gt;&lt;br&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWhFSMWedZWpWExLtou8tXfejPbCt-FR35e491z6TGQhWAoTwLlTvYlCcgwebfi19XPj_Z67hbq4-zlCdnUTSvyxUlkmI6I4clXkWFLFPw6UYDKD4H-77kFhN5MT1sceGVFqva5cWpAxo/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-29+22.03.01%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;238&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWhFSMWedZWpWExLtou8tXfejPbCt-FR35e491z6TGQhWAoTwLlTvYlCcgwebfi19XPj_Z67hbq4-zlCdnUTSvyxUlkmI6I4clXkWFLFPw6UYDKD4H-77kFhN5MT1sceGVFqva5cWpAxo/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-29+22.03.01%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt;
&lt;li&gt;[一般] タブに、&quot;ローカリゼーション&quot;欄ができる&lt;br /&gt;
[ローカリゼーションを追加] ボタンを押下。一覧に出てこない国名はISO-639の省略形をつければ良い。韓国なら「kor」かな？&lt;br&gt;&lt;br&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikA4P2nDWeDf8C0680n7R3qC4cgL8ztLviVfUegHyWSxl-nrY5jRB-gG-2KsSzsZxSM9D0gK9uNTs2VzyTEqN_1fV0ccPnuFMzSGR49aiVZGmWXrlHMZoWXXWl2AddBFrMAUKxhts_408/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-29+22.03.10%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;158&quot; width=&quot;302&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikA4P2nDWeDf8C0680n7R3qC4cgL8ztLviVfUegHyWSxl-nrY5jRB-gG-2KsSzsZxSM9D0gK9uNTs2VzyTEqN_1fV0ccPnuFMzSGR49aiVZGmWXrlHMZoWXXWl2AddBFrMAUKxhts_408/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-29+22.03.10%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt;ファイルを開いてローカリゼーションの追加をおこなっていく&lt;br /&gt;
例:&quot;Hellow&quot;=&quot;こんにちは&quot;;&lt;br&gt;&lt;br&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSFj70nGb26i_7Ey3DIZx4D7INomUUGvy_9Q11hyphenhyphenPYM2B26Lr3o2C9snGEjNzFDYfLJUGfvXS6AoYuQwFZA4G0SuwCZCoeclbIpYdV1YETIHkVKYoBJxlisj0Xh_BbXzOsCC40EZRAR2Q/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-29+22.54.23%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;194&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSFj70nGb26i_7Ey3DIZx4D7INomUUGvy_9Q11hyphenhyphenPYM2B26Lr3o2C9snGEjNzFDYfLJUGfvXS6AoYuQwFZA4G0SuwCZCoeclbIpYdV1YETIHkVKYoBJxlisj0Xh_BbXzOsCC40EZRAR2Q/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-29+22.54.23%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/ul&gt;&lt;br&gt;&lt;br&gt;
&lt;h3&gt;アプリ名のローカライズ&lt;/h3&gt;&lt;br&gt;&lt;br&gt;
&lt;ul&gt;&lt;li&gt;Localizable.stringを作った時と同じような手順で、&quot;InfoPlist.string&quot;というファイルを作成する.&lt;br /&gt;
&lt;li&gt;InfoPlist.string は、アプリの設定ファイルである Info.plist の項目を、ローカライズ毎に上書きするために用いるファイルとなる.&lt;br /&gt;
&lt;li&gt;特に、Info.plist の内容をローカライズする必要が無いときには、 InfoPlist.string を作成する必要は無い.&lt;br /&gt;
&lt;/ul&gt;&lt;br&gt;&lt;br&gt;
CFBundleDisplayName = &quot;Hellow Timer&quot;;  CFBundleDisplayName = &quot;Hellow Timer&quot;;  
&lt;br&gt;&lt;br&gt;

&lt;h3&gt;プログラム側をLocalizedStringに対応させる&lt;/h3&gt;&lt;br&gt;&lt;br&gt;
正式に書くなら下のような感じ。 NSString *localizedString = [[NSBundle mainBundle] localizedStringForKey:@&quot;Hoge&quot; value:@&quot;Hoge&quot; table:nil];  ただし、マクロが用意されているので下記で書くのがふつう  NSString *localizedString = NSLocalizedString(@&quot;String&quot;, @&quot;message&quot;);  messageは特に表示されるわけでは無いので@&quot;&quot;と空にしても良い。
&lt;br&gt;&lt;br&gt;
&lt;h3&gt;Xibのローカライズ&lt;/h3&gt;&lt;br&gt;&lt;br&gt;
&lt;br /&gt;
これの右クリック＞情報をみる　から設定が可能。&lt;br /&gt;
でも、かりにIBで画面を作っていたとしてもViewDidLoadのところでラベルやボタンのタイトルにlocalizedStringでテキストを再設定するように書いておいた方が明らかに便利。&lt;br /&gt;
&lt;br /&gt;
国によって表示する画像や色を変えたりという場合に使うのかな。&lt;br /&gt;
でも、どの国でどういうデザインがうけるのかリサーチが必要だな。。。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
その他、Sqliteのファイルもローカライズする設定がでてくるんだけれど、国別にファイルを分けられるって事？&lt;br /&gt;
うーん、必要にかられたら今度実験してみよう。&lt;br /&gt;
でも、必要なカラムを持っておいてコードで分岐させる方が楽かな。&lt;br /&gt;
&lt;br /&gt;
NSArray *languages = [NSLocale preferredLanguages];&lt;br /&gt;
//NSLog(@&quot;preferredLanguages : %@&quot;, languages);&lt;br /&gt;
&lt;br /&gt;
language = [languages objectAtIndex:0];&lt;br /&gt;
&lt;br /&gt;
こんな感じで　NSStringで持って来ちゃえばいいんだもんなぁ。</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/88358040314786810/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/04/blog-post_29.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/88358040314786810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/88358040314786810'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/04/blog-post_29.html' title='アプリをローカライズする手順メモ'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlqGrmrf0okfpbfd02ZxsAxrr8J4lkgUBuK2zpS0SuCBxl3upPLHZZSUk0DyMcOiujuwqWN_T4pTH8p619r8rnm3R-9PHU5iWyuaMUnGnOkDHJ9IoVjRyVJD5AbHwddwtSjCEGFIXp4MI/s72-c/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-29+22.55.46%25EF%25BC%2589.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-4698273769173738342</id><published>2011-04-22T05:09:00.001+09:00</published><updated>2011-04-22T05:15:44.800+09:00</updated><title type='text'>とりあえずプロジェクトを作ってみる</title><content type='html'>順序がおかしいかもしれませんが、ようやくXcodeを使ってプロジェクトを作ってみるところを解説したいと思います。&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Xcodeを起動&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0Mm0VwoZD8s4oixXCGSXxWEX_YgZPGEOIhh7dSL53Nmnp6kDU07HmznFtn-lM7QnBgOCP9CkJ7p6-RI_RD8tQUMBm09QEwM7PYRkjk4U9_vaG7FBBZEqo1KGW0tBtncPcS7jyh02_skw/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+19.59.10%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; width=&quot;302&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0Mm0VwoZD8s4oixXCGSXxWEX_YgZPGEOIhh7dSL53Nmnp6kDU07HmznFtn-lM7QnBgOCP9CkJ7p6-RI_RD8tQUMBm09QEwM7PYRkjk4U9_vaG7FBBZEqo1KGW0tBtncPcS7jyh02_skw/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+19.59.10%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt;新規プロジェクトを選択&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2kEbBBVOjhgMN1sgsjAgkvYKb6g2PaBeFIpvX3Fsb8Jq_xlKM7gSmNyGvpP6XLfT96K3Xa_e41Oi6XwHa06b7uInrMpvsESrxkWTMuBjBZesTiGRJgJSLtCEyIkYWi-7viWTPxFa727Y/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+19.59.36%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;259&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2kEbBBVOjhgMN1sgsjAgkvYKb6g2PaBeFIpvX3Fsb8Jq_xlKM7gSmNyGvpP6XLfT96K3Xa_e41Oi6XwHa06b7uInrMpvsESrxkWTMuBjBZesTiGRJgJSLtCEyIkYWi-7viWTPxFa727Y/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+19.59.36%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt;Window-Basedにてプロジェクトを作成&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmQfQ8w77zWkLPStEbCHXoPSg38zkYkNiZmHQ6mHxAFN7xpUsp1kNsyZNWWaN0VPVrsGrRzBFcv6ck71Az3mW5KSlw3u-spQYh-cQe2KPhj8e6x4we9ohtT5FlamfSSTJ31DDJT5Z5A2Y/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+20.00.06%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;102&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmQfQ8w77zWkLPStEbCHXoPSg38zkYkNiZmHQ6mHxAFN7xpUsp1kNsyZNWWaN0VPVrsGrRzBFcv6ck71Az3mW5KSlw3u-spQYh-cQe2KPhj8e6x4we9ohtT5FlamfSSTJ31DDJT5Z5A2Y/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+20.00.06%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt;
&lt;li&gt;プロジェクト名はとりあえず「Hellow-World」としますか。&lt;br /&gt;
&lt;li&gt;とりあえずビルドしてみる。&lt;br /&gt;
&lt;/ul&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2oxewWTzd-rGhxMb3MzgGt3Jbioa11oz3RRLRVdvJ41bE5ctjRk_JOkJvo4UWEAlfHVE8lSAP9db5lZWe3_Ck0Ywz8ZZw2_TgeMgu7g4nGt5sTAo1ZzgHPqFai-zro72Bt21YxvCZ-Uw/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+20.01.13%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;clear:left; float:left;margin-right:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; width=&quot;162&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2oxewWTzd-rGhxMb3MzgGt3Jbioa11oz3RRLRVdvJ41bE5ctjRk_JOkJvo4UWEAlfHVE8lSAP9db5lZWe3_Ck0Ywz8ZZw2_TgeMgu7g4nGt5sTAo1ZzgHPqFai-zro72Bt21YxvCZ-Uw/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+20.01.13%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt; &lt;td&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdP1JiWyVbDgogP-nHwOlhuqzEy7bsWbWsXpieUZMp0ICw5K97apR6KMVxiH9b6wiOh_-kl3PugAkACghY05CAmFaGpA_V_S9K0bJMHiuJOnzXhGpvua1EIvNzxy1cCVITrGJD-IjqAVc/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+20.01.44%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;clear:left; float:left;margin-right:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; width=&quot;222&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdP1JiWyVbDgogP-nHwOlhuqzEy7bsWbWsXpieUZMp0ICw5K97apR6KMVxiH9b6wiOh_-kl3PugAkACghY05CAmFaGpA_V_S9K0bJMHiuJOnzXhGpvua1EIvNzxy1cCVITrGJD-IjqAVc/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+20.01.44%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;/table&gt;ビルドしてみて真っ白な画面が出れば成功です。 シュミレーター（実機でもよい）にもインストールされて真っ白なアイコンが表示されていますね。
&lt;br&gt;&lt;br&gt;       
 &lt;h3&gt;それではプロジェクトの中身を色々と見て行きます。&lt;/h3&gt;&lt;br&gt;
グループとファイル＞Hellow-Worldの左横の▶をクリックするとツリー状に整列されたフォルダーが出てきますね。 これがHellow-Worldというアプリの中身になります。  &lt;ul&gt;&lt;li&gt;Classes&lt;br /&gt;
Hellow-WorldAppDelegate.hとHellow_WorldAppDelegate.mがあります。Objective-Cのクラスファイルは.hと.mのファイルが２つで一組になります。プロジェクト名＋AppDelegateという名前のファイルがこのアプリの全ての動作を全てまかされた代表のファイルのなります。ちなみにDelegateとは代理という意味です。&lt;br /&gt;
&lt;li&gt;Other Sources&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;アプリ名_Prefix.pch&lt;br /&gt;
コンパイル開始時に実行する事を書くファイル。今は変更しない。&lt;br /&gt;
&lt;li&gt;main.m&lt;br /&gt;
このファイルが一番最初に実行される。が、いじる事はない。&lt;br /&gt;
&lt;/ol&gt;&lt;li&gt;Resources&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;MainWindow.xib&lt;br /&gt;
アプリケーションの内容を描画する為のウインドウ。&lt;br /&gt;
&lt;li&gt;アプリ名-info.plist&lt;br /&gt;
プロパティリスト。XML形式でアプリのさまざまなプロパティ情報を保持する。アプリをリリースするまでには必ずいじる。&lt;br /&gt;
&lt;/ul&gt;&lt;li&gt;Frameworks&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;UIKit.framework&lt;br /&gt;
アプリケーション・ユーザインターフェイスの構築と管理に必要なクラスの集合体&lt;br /&gt;
&lt;li&gt;Foundation.framework&lt;br /&gt;
Cocoaフレームワークの基礎的な部分を担当するAPIの集合体です。&lt;br /&gt;
&lt;li&gt;CoreGraphics.framework&lt;br /&gt;
グラフィックのAPI。&lt;br /&gt;
&lt;/ul&gt;&lt;li&gt;Products&lt;br /&gt;
&lt;/ul&gt;用語解説 &lt;ul&gt;&lt;li&gt;&lt;a href =&quot;http://ja.wikipedia.org/wiki/Application_Programming_Interface&quot;&gt;API &lt;/a&gt;&lt;br /&gt;
要するにプログラムの固まり。これにより、機械語レベルのプログラミングを人間が書かないですむ。&lt;br /&gt;
&lt;li&gt;&lt;a href = &quot;http://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF&quot;&gt;フレームワーク &lt;/a&gt; &lt;br /&gt;
APIを寄せ集めたものだと個人的には理解。&lt;br /&gt;
&lt;br /&gt;
&lt;/ul&gt;&lt;br /&gt;
次回はiOSの概要について解説します。</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/4698273769173738342/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/04/blog-post_22.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/4698273769173738342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/4698273769173738342'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/04/blog-post_22.html' title='とりあえずプロジェクトを作ってみる'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0Mm0VwoZD8s4oixXCGSXxWEX_YgZPGEOIhh7dSL53Nmnp6kDU07HmznFtn-lM7QnBgOCP9CkJ7p6-RI_RD8tQUMBm09QEwM7PYRkjk4U9_vaG7FBBZEqo1KGW0tBtncPcS7jyh02_skw/s72-c/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+19.59.10%25EF%25BC%2589.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-767380868294047136</id><published>2011-04-21T19:35:00.000+09:00</published><updated>2011-04-21T19:35:45.009+09:00</updated><title type='text'>ダウンロードしたサンプルプログラムをビルドする。</title><content type='html'>僕がDeveloper登録して一番最初に行ったことは、ネットなどで見つけたサンプルコードを実行してみた事です。&lt;br /&gt;
実際に形ある物で動かしてみることはとても大事です。&lt;br /&gt;
&lt;br /&gt;
でも大抵のサンプルは過去に作られたものなので、Xcodeで起動してみると「BaseSDK missing」となってビルドできないですよね。&lt;br /&gt;
&lt;br /&gt;
前回までの記事で解説した実機でのビルドをしっかりとマスターされた方なら「余裕っすよ」なんて言ってくれるかもしれませんが。。。&lt;br /&gt;
&lt;br /&gt;
僕もここで少しつまずいたので、さっそく解説しちゃいます（＾＾）&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;まず、適当なサンプルをダウンロードしてきます。&lt;br /&gt;
アップルのでも、書籍のサンプルでも何でも良いです。&lt;br /&gt;
&lt;li&gt;ほとんどの場合、zip形式になっているので解凍します。&lt;br /&gt;
&lt;li&gt;プロジェクトファイルをダブルクリックしてXcodeで起動します。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEtFBE9zoNuf3X0aZI78kLNLVNu_jL16j9ii8vKlWvtcL9lPEJNJ_jrX0oxIKRjbiLGJzkNwBvruU5D36giJwZHEWA8aSsvpCo3FrWquvdwEAfrjc2yq2TWFX_AaQyBSXn0wHNXxhnIrU/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+19.14.09%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; width=&quot;282&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEtFBE9zoNuf3X0aZI78kLNLVNu_jL16j9ii8vKlWvtcL9lPEJNJ_jrX0oxIKRjbiLGJzkNwBvruU5D36giJwZHEWA8aSsvpCo3FrWquvdwEAfrjc2yq2TWFX_AaQyBSXn0wHNXxhnIrU/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+19.14.09%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt;はい、思った通りBase SDK Missingです。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPY4oF8Du0NELD3Wo2lf58ct03urz8WIgTzxeSt4w3tsEi64lQZtkBrHEnEGHKiiBIlNOHRCx5mg-VDpx__6yOuRg6Xiw9ZWB5vA5wEQbaDm-tN54Fsh9_JPnOMh2H9P90jSZoct1I2Q8/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+19.12.13%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;175&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPY4oF8Du0NELD3Wo2lf58ct03urz8WIgTzxeSt4w3tsEi64lQZtkBrHEnEGHKiiBIlNOHRCx5mg-VDpx__6yOuRg6Xiw9ZWB5vA5wEQbaDm-tN54Fsh9_JPnOMh2H9P90jSZoct1I2Q8/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+19.12.13%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt;メニュー＞プロジェクト＞プロジェクトの設定を編集を開く&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiclPJlc8sBIFe2kplH1PNgI9PB7KZDe8BJVwpulvKb-BX2PCcnFdjPoIMQfwsVXLmmzHP2qZu35WBI_GiNiHgeaVL46vylDZYXnjwHL3Wkt1bciq2L4jUATFHkUCK-Etnr3c-FRaVWVZg/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+19.15.25%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; width=&quot;274&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiclPJlc8sBIFe2kplH1PNgI9PB7KZDe8BJVwpulvKb-BX2PCcnFdjPoIMQfwsVXLmmzHP2qZu35WBI_GiNiHgeaVL46vylDZYXnjwHL3Wkt1bciq2L4jUATFHkUCK-Etnr3c-FRaVWVZg/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+19.15.25%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt;ベースSDKがiOS 3.1.2になってますね。これはSDKが3.1.2の時に作られたものだということが推測されます。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhikHdwhO4Be6B3i4HRXcRhGtoa3zMnDB3LMrhz5B1P2aTlGgxAQShC-QKFIK1Dtcq1qX-J9U8i7VyRCWxSeqFXG-eXqj1zXEqQYlKI5CML3QRsU2DuNeste6r_B1JpUqA51KVuQ3NjXj0/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+19.15.58%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;46&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhikHdwhO4Be6B3i4HRXcRhGtoa3zMnDB3LMrhz5B1P2aTlGgxAQShC-QKFIK1Dtcq1qX-J9U8i7VyRCWxSeqFXG-eXqj1zXEqQYlKI5CML3QRsU2DuNeste6r_B1JpUqA51KVuQ3NjXj0/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+19.15.58%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt;これを最新のSDKに書き換えます。この記事を書いてる現在はiOS4.3なのでそれにします。&lt;br /&gt;
&lt;li&gt;もうひとつ、Code signing &gt; コード署名&gt;Any iOS をTeam Provisionning Profileに設定します。&lt;br /&gt;
&lt;li&gt;通常はここで　Base SDK Missing　からDebug〜に変わる。変わらなければOptionを押しながらBase SDK Missingとなっているボタンをクリックするとビルド先が設定できるようになる。（ここ大事）&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyQ5SEAwsFlJ_z8Bkwlw1XeUjIj3tWYRZrsvY_I4oi-JxYcire2GoaM-wayMgKume_ycHOYkNpU1PzC9lHv7dZ_ysJQsZxTKmL2oE7XIqelnS4Wt-Nj6Npbzcswn2rLl5tabluUWv-nec/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+19.30.29%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; width=&quot;250&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyQ5SEAwsFlJ_z8Bkwlw1XeUjIj3tWYRZrsvY_I4oi-JxYcire2GoaM-wayMgKume_ycHOYkNpU1PzC9lHv7dZ_ysJQsZxTKmL2oE7XIqelnS4Wt-Nj6Npbzcswn2rLl5tabluUWv-nec/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+19.30.29%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt;iPhoneを接続してビルド。&lt;br /&gt;
&lt;li&gt;見事に立ち上がる&lt;br /&gt;
&lt;/ul&gt;※まれに作者のidが残ったままになり、code sign errorが出る場合があるが、その場合は僕は諦めちゃいます。キーチェーンの設定を見直したり色々とやり方がありますが、サンプルはビルドできずにさらに自分の作ったプロジェクトまでビルドできなくなりましたなんてこともあったのでw&lt;br /&gt;
&lt;br /&gt;
その場合は、自分で新規プロジェクトを作ってコードをコピーしてFrameworkなども取り込み直して作り直します。</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/767380868294047136/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/04/blog-post_5585.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/767380868294047136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/767380868294047136'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/04/blog-post_5585.html' title='ダウンロードしたサンプルプログラムをビルドする。'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEtFBE9zoNuf3X0aZI78kLNLVNu_jL16j9ii8vKlWvtcL9lPEJNJ_jrX0oxIKRjbiLGJzkNwBvruU5D36giJwZHEWA8aSsvpCo3FrWquvdwEAfrjc2yq2TWFX_AaQyBSXn0wHNXxhnIrU/s72-c/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+19.14.09%25EF%25BC%2589.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-396197381029383960</id><published>2011-04-21T19:04:00.002+09:00</published><updated>2012-01-25T00:34:02.221+09:00</updated><title type='text'>アプリを実機でビルドする　実践編</title><content type='html'>アプリの作り方については、まだ一切解説していないが&lt;br /&gt;
自分で作ったプロジェクトを実機でビルドする方法について解説します。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;X-codeを起動&lt;/h3&gt;&lt;h3&gt;p-listの編集　&lt;/h3&gt;&lt;ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq0UnThs8u_fIB3jw0A_0u-rOZmku7FNHJr4ShQ-fmWHvvIA4M6UWzNw__sUOM_GUFA9FIDDKvfna-LB1rb3vTFIYS0i9Z37mCI-9yVPP1FTUkON9L4xag49U58OzX7sbi5tAukuhs5D8/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+18.26.46%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;158&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq0UnThs8u_fIB3jw0A_0u-rOZmku7FNHJr4ShQ-fmWHvvIA4M6UWzNw__sUOM_GUFA9FIDDKvfna-LB1rb3vTFIYS0i9Z37mCI-9yVPP1FTUkON9L4xag49U58OzX7sbi5tAukuhs5D8/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+18.26.46%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;li&gt;プロジェクトの左側のグループとファイル＞Resourceから、プロジェクト名-Info.plistを開きます。&lt;br /&gt;
&lt;li&gt;Bundle identifierに、App IDとして登録した内容を入力します。&lt;br /&gt;
&lt;/ul&gt;&lt;h3&gt;プロジェクト情報の編集&lt;/h3&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj60t-ocx2rVLOq0U1linTlc1KAAMUTer4Pl14Y3WD83HRI9MbQQLPNokHp_1vbPhraUR3iJ2plrc_HxDqcDGVPOWrFe6G6ndrbsK81cyY5-dK263BXiOlMyMtSHeJqY5pl9gD3QoIIu_I/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+18.44.05%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; width=&quot;282&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj60t-ocx2rVLOq0U1linTlc1KAAMUTer4Pl14Y3WD83HRI9MbQQLPNokHp_1vbPhraUR3iJ2plrc_HxDqcDGVPOWrFe6G6ndrbsK81cyY5-dK263BXiOlMyMtSHeJqY5pl9gD3QoIIu_I/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+18.44.05%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;メニュー＞プロジェクト＞プロジェクト情報を編集＞「ビルド」タブ&lt;br /&gt;
&lt;li&gt;ビルド構成をDebugへ変更&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfbzrD5umc9s1_UibMRCjK6n9IQl9HO2quas0F19bz0-b8CpReVR76HQwdanMikTrFBrRNlMIgfQ5h1bT0vs_ZSchKVMPq-opJjmNv91DV5a3o88QFqMTCkkL0tjf-WoaDUrUHni4gdTM/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+18.47.03%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;145&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfbzrD5umc9s1_UibMRCjK6n9IQl9HO2quas0F19bz0-b8CpReVR76HQwdanMikTrFBrRNlMIgfQ5h1bT0vs_ZSchKVMPq-opJjmNv91DV5a3o88QFqMTCkkL0tjf-WoaDUrUHni4gdTM/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+18.47.03%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggo4febPbrKGXtz2KMTAs1FAV4o3g6ryeEcDF8-PCwhpvEbNSDzH8C5JPTjyM9CHp0rrnd3TgblZYTHstrcqlaCldZsW2UiC7vHEeZVWZLgVG6yTg74zLInqkeOnuVus7gCnru6SHkJEA/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+18.47.17%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;84&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggo4febPbrKGXtz2KMTAs1FAV4o3g6ryeEcDF8-PCwhpvEbNSDzH8C5JPTjyM9CHp0rrnd3TgblZYTHstrcqlaCldZsW2UiC7vHEeZVWZLgVG6yTg74zLInqkeOnuVus7gCnru6SHkJEA/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+18.47.17%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt;Code Signing＞コード署名ID＞Any iPhone OS Deviceを作成したProvisioningにする&lt;br /&gt;
&lt;li&gt;アーキテクチャ＞ベースSDKを最新のSDKに設定&lt;br /&gt;
&lt;li&gt;Deployment＞Target Device Familyを設定&lt;br /&gt;
&lt;li&gt;Deployment＞iPhone OS Deployment Target＞ベースSDKよりも古いバージョンを設定。※注意が必要。後日に別途解説します。&lt;br /&gt;
&lt;/ul&gt;
Deployment Targetは、複数のバージョンで動作するアプリをビルドするときに設定します。
しかし、最新のSDKに存在していて古いバージョンのSDKには存在しないFrameworkなどを使用していたりすると、古いバージョンのiOSで動かした際にアプリが落ちるなどの不具合が発生する可能性があるのでプログラムの中で対応が必要だったりもするので結構大変です。
今回はとりあえず最新のSDKにしておいてください（＾＾；

ビルドエラーで　failed to upload xxx.appと出たらXcodeを再起動してください。×で閉じるだけじゃなくてcommand + Qできっちりと終了させる。


&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://bit.ly/zoS9Rn&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;160&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUcsRlmr1e5dNfv5YvmngF5dZnnZXz7uLz1iL545_XPNND_Xt-laY646OlXIatPcsOTkF7eYv2fI7RvBzjLqI-vTEBDgY0D9ZJxMai_7iEJzWeZkid_htMgxWjHFiHT3FHvolvVgHD-24/s320/Default%25402x.jpg&quot; width=&quot;107&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/396197381029383960/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/04/blog-post_21.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/396197381029383960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/396197381029383960'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/04/blog-post_21.html' title='アプリを実機でビルドする　実践編'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq0UnThs8u_fIB3jw0A_0u-rOZmku7FNHJr4ShQ-fmWHvvIA4M6UWzNw__sUOM_GUFA9FIDDKvfna-LB1rb3vTFIYS0i9Z37mCI-9yVPP1FTUkON9L4xag49U58OzX7sbi5tAukuhs5D8/s72-c/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-21+18.26.46%25EF%25BC%2589.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-8449029988430721415</id><published>2011-04-18T04:39:00.000+09:00</published><updated>2011-04-18T04:39:32.271+09:00</updated><title type='text'>アプリを実機でビルドする。 準備編</title><content type='html'>アプリの作り方の解説の前に、作ったアプリを実機で動かす為の手順を解説しちゃいます。&lt;br /&gt;
&lt;br /&gt;
なんでかって言うと、色々なサイトや書籍とかに付いているサンプルコードを実機で動かしてみたいってのが人情じゃないですか。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
※iOS Developer Program に登録されていることが前提です。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
アプリの作り方の解説の前に、作ったアプリを実機で動かす為の手順を解説しちゃいます。&lt;br /&gt;
&lt;br /&gt;
なんでかって言うと、色々なサイトや書籍とかに付いているサンプルコードを実機で動かしてみたいってのが人情じゃないですか。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;PCでの準備&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;アプリケーション＞ユーティリティ＞キーチェーンアクセスを起動。&lt;br /&gt;
&lt;li&gt;[設定確認]より、OCSPとCRLが「切」になっている事を確認。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAhNmvYRL3EEVPuEHR7LZcVGMI852eh-iDtgD-dBtudHZPUOqSP8qJr8h3Nso-MG_4XOKxdOiRNQLscadxJiLTk5XTMQZqYd-x8AmPWOMLS3pzdE9eFymPR6HGs7xR4cq3alikNFRu7w0/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-18+3.27.00%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;124&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAhNmvYRL3EEVPuEHR7LZcVGMI852eh-iDtgD-dBtudHZPUOqSP8qJr8h3Nso-MG_4XOKxdOiRNQLscadxJiLTk5XTMQZqYd-x8AmPWOMLS3pzdE9eFymPR6HGs7xR4cq3alikNFRu7w0/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-18+3.27.00%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt;キーチェーンアクセス＞証明書アシスタント＞認証局に証明書を要求を選択して、証明書を作成します。&lt;br /&gt;
&lt;li&gt;ユーザのメールアドレス:iOS Developer Program に登録した際のメールアドレス  コモンネーム:iOS Developer Program に登録した際のFirstname とLastnameを記入する。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihknhBAHa39hCkcaWZyQLF0famVZoIOG-mj-AS3EfkdS70v_rTFDhHygZeFGh8Zfs9OUkzfn2Dwdj1DcJZw_dRnllZ1c8nG_D1zhdlazM1RlpzDwtSvhMZ7H8J_JEH_7VNPw6DfG9wTvE/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-18+3.27.20%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;110&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihknhBAHa39hCkcaWZyQLF0famVZoIOG-mj-AS3EfkdS70v_rTFDhHygZeFGh8Zfs9OUkzfn2Dwdj1DcJZw_dRnllZ1c8nG_D1zhdlazM1RlpzDwtSvhMZ7H8J_JEH_7VNPw6DfG9wTvE/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-18+3.27.20%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;要求の処理:[ディスクに保存]を選択して、「鍵ペア情報を指定」をチェックします。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqhBk1sHg-fwx2v3JoDPh9KM1EyKE3Hp1_VNd87b95nmTmt103nrxHai9DCRmi4WEic5_wSIoSYU-j_IPVb1OgCnr37_S4sGeqH_1tqNEs35OLi683VFLjOxo1B8fc9_KaKnYpEdI9hVI/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-18+3.30.31%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;225&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqhBk1sHg-fwx2v3JoDPh9KM1EyKE3Hp1_VNd87b95nmTmt103nrxHai9DCRmi4WEic5_wSIoSYU-j_IPVb1OgCnr37_S4sGeqH_1tqNEs35OLi683VFLjOxo1B8fc9_KaKnYpEdI9hVI/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-18+3.30.31%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/ul&gt;




&lt;br&gt;&lt;br&gt;



&lt;h3&gt;iOS Provisining Portal&lt;/h3&gt;&lt;ul&gt;&lt;a href = &quot;http://developer.apple.com/devcenter/ios/index.action&quot;&gt;iOS Dev Center&lt;/a&gt;の「log in」ボタンを押すとIDとパスワードを入力するフォームが出てくるので、入力してログインします。
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5PhJJQzUXV2dufiqziYX7XTYasc1cx4is_vx4z7RvZ12ZP43eWwi9-ssGqbjLKxHuL4IR1GotDH2WolppwVjrCZ8OOvyk8ZrZ90c84TJPX9cGxGMoIQxIAiaMSURzwzzKBtzTX-PVTQk/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-18+3.08.48%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;88&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5PhJJQzUXV2dufiqziYX7XTYasc1cx4is_vx4z7RvZ12ZP43eWwi9-ssGqbjLKxHuL4IR1GotDH2WolppwVjrCZ8OOvyk8ZrZ90c84TJPX9cGxGMoIQxIAiaMSURzwzzKBtzTX-PVTQk/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-18+3.08.48%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;li&gt;ログイン後、iOS Developer Programのメニューに表示された iOS Provisioning Portal へ入る。&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-jKX8XoFLkSavBoFMRkIc1DqfoiipLVSetjBK2jxrW3DN-C2iLAT-iIKQwTmG_rGedM3TW4IEPwQoezsD7jWL5bpPps8rSgxZbIv2i7W6jdXsjxarxq2cNwhx4dBzNke2gCt_5-PA_Gc/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-18+3.13.26%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;185&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-jKX8XoFLkSavBoFMRkIc1DqfoiipLVSetjBK2jxrW3DN-C2iLAT-iIKQwTmG_rGedM3TW4IEPwQoezsD7jWL5bpPps8rSgxZbIv2i7W6jdXsjxarxq2cNwhx4dBzNke2gCt_5-PA_Gc/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-18+3.13.26%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt;左側にあるメニューより、「Certificates」&gt;「Development」タブ。&lt;br /&gt;
&lt;br /&gt;
&lt;li&gt;「Request Certificate」をクリックして，次の画面で証明書要求のファイル(キーチェーンで作成した作成したCSRファイル）を選択し、「Submit」をクリック&lt;br /&gt;
&lt;li&gt;タブを一旦、「Distribution」タブにします。それから、「Development」タブに戻します。&lt;br /&gt;
&lt;li&gt; Request Certificate の箇所に「Approve」ボタンが表示されますので、クリックします。&lt;br /&gt;
&lt;li&gt;タブを一旦、[Distribution]タブにします。それから、[Development]タブに戻します。&lt;br /&gt;
&lt;li&gt;Approve の箇所に「Downloade」ボタンが表示されますので、クリックすると、証明書をダウンロードします。&lt;br /&gt;
リストの下にある「WWDR intermediate certificate」もダウンロード&lt;br /&gt;
&lt;li&gt;ダウンロードして、ファイルをダブルクリックすると、キーチェーンアクセスの証明書に追加されます。&lt;br /&gt;
&lt;li&gt;If you do not have the WWDR intermediate certificate installed click here to download now. のアンカーをクリックして「AppleWWDRCA.cer」をダウンロード。&lt;br /&gt;
&lt;li&gt;ダウンロードして、ファイルをダブルクリックすると、キーチェーンアクセスの証明書に追加されます。&lt;br /&gt;
&lt;li&gt;キーチェーンアクセスに、以下の証明書が追加されていれば成功。&lt;ul&gt;&lt;li&gt;■iOS Development: Firstname Lastname&lt;br /&gt;
&lt;li&gt;■Apple Worldwide Developer Relations Certification Authority&lt;br /&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;h3&gt;Deviceの登録&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;iPhoneをMac に接続し、Xcode を起動。&lt;br /&gt;
&lt;li&gt;メニュー&gt;ウィンドウ&gt;オーガナイザ&lt;br /&gt;
&lt;li&gt;iPhone の「Identifier」（Device ID）をコピーします。後で貼付ける為。&lt;br /&gt;
&lt;li&gt; iOS Provisioning Portalにログインします。&lt;br /&gt;
&lt;li&gt; 左側にメニューDevicesをクリックします。&lt;br /&gt;
&lt;li&gt;Manageタブを選択する。&lt;br /&gt;
&lt;li&gt;Add Devices　からDevice Name とさっきコピーしたDeviceIDをコピペで入力&lt;br /&gt;
&lt;/ul&gt;&lt;h3&gt;Provisioning Profileを作成する&lt;/h3&gt;&lt;ul&gt;&lt;li&gt; 左側メニュー&gt;App IDs&lt;br /&gt;
&lt;li&gt;ユニークなアプリのIDを作成する為の手続き&lt;br /&gt;
&lt;li&gt; &lt;ul&gt;以下の項目を記入して[submit]ボタンをクリックする。
&lt;li&gt;Description: xxxx (後で何のアプリか分かればよい)&lt;li&gt;Bundle Seed ID:Generate New&lt;br /&gt;
&lt;li&gt;Bundle Identifier:com.xxx.appriname（com.domainname.appnameの形が推奨されている）&lt;br /&gt;
&lt;/ul&gt;&lt;li&gt;メニュー＞Provisioning＞Developmentタブ&lt;br /&gt;
&lt;li&gt;[New Profile]ボタンをクリックして、以下の項目を記入して[submit]ボタンをクリックする。&lt;br /&gt;
 &lt;ul&gt;&lt;li&gt;Profile Name:xxxx(後で、何アプリの開発用だとわかるように記入する)&lt;br /&gt;
&lt;li&gt;Certificates:チェックを入れる&lt;br /&gt;
&lt;li&gt;AppID: さきほどAppIDsで作成したIDを入力&lt;br /&gt;
&lt;li&gt;Devices：実行したいデバイスにチェックを入れる。&lt;br /&gt;
&lt;/ul&gt;&lt;li&gt; メニュー＞Provisioning＞Developmentタブ&lt;br /&gt;
&lt;li&gt; 先ほど作成したProvisioning ProfileのDownloadボタンをクリックしてダウンロード。（作成後しばらく待つ必要有り）&lt;br /&gt;
&lt;li&gt; ダウンロード後、ファイルをダブルクリックするとXcodeに取り込まれる。&lt;br /&gt;
&lt;/ul&gt;
以下にあるようにcertificateは自分おPCが正規な開発者のものかどうかを認証する為のものなので、一台のPCで開発している人は一回だけしかやらない作業です。
Provisioningの作成とインストールは頻繁にやる作業なのでしっかりと理解しておいた方が良いとおおいます。BundleIdentifer に＊をつけたIDを作るなどの方法もありますが、個人的には一度もメリットを感じたことが無いのであえて解説はしません。

&lt;br&gt;&lt;br&gt;
&lt;h3&gt;その他メモ&lt;/h3&gt;
&lt;ul&gt;証明書(Certificate)について
&lt;li&gt;正規のiPhone開発者であるという証明書(Certificate)をPCに登録する必要がある。&lt;br /&gt;
&lt;li&gt;iPhone Developper Program では公開鍵、秘密鍵方式で認証している（RSA)&lt;br /&gt;
&lt;li&gt;証明書は開発するマシンにインストールされる、キーチェーンアクセスでインストールされた証明書を確認できる&lt;br /&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/8449029988430721415/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/04/blog-post_18.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/8449029988430721415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/8449029988430721415'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/04/blog-post_18.html' title='アプリを実機でビルドする。 準備編'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAhNmvYRL3EEVPuEHR7LZcVGMI852eh-iDtgD-dBtudHZPUOqSP8qJr8h3Nso-MG_4XOKxdOiRNQLscadxJiLTk5XTMQZqYd-x8AmPWOMLS3pzdE9eFymPR6HGs7xR4cq3alikNFRu7w0/s72-c/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-18+3.27.00%25EF%25BC%2589.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-6151950578946262220</id><published>2011-04-13T23:30:00.066+09:00</published><updated>2011-04-14T03:06:16.657+09:00</updated><title type='text'>Developer Programに参加する</title><content type='html'>&lt;a href =&quot;http://developer.apple.com/programs/ios/&quot;&gt;iOS Developer Program&lt;/a&gt;への登録&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9wNZZVnOjT3AQN42FJiR7zGaXhzNRpV72YWTGQx3Zr-Q00L8B7i_9e4KqyGNCdW5okhVMNk0gGrdRYE1kFf1t-JrPm4L4BBwTTAdpkIK-5aCNoivTk2bcJ39oBkXSvgbxtEo4ef3zd8I/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-14+2.32.55%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;91&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9wNZZVnOjT3AQN42FJiR7zGaXhzNRpV72YWTGQx3Zr-Q00L8B7i_9e4KqyGNCdW5okhVMNk0gGrdRYE1kFf1t-JrPm4L4BBwTTAdpkIK-5aCNoivTk2bcJ39oBkXSvgbxtEo4ef3zd8I/s400/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-14+2.32.55%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9zSh_r554eA4LuF8x35bIUVLccdeD41FaZajzNc7GOGWgoVSRug6P299HqPWVcql9BMCMJFwaWH-2eQWxLFLCLUrDIDRMPBjmYx9WKksOQppeIioosH5Qroe4Dg12Dfpzb562IQMT5yM/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-14+2.33.06%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;151&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9zSh_r554eA4LuF8x35bIUVLccdeD41FaZajzNc7GOGWgoVSRug6P299HqPWVcql9BMCMJFwaWH-2eQWxLFLCLUrDIDRMPBjmYx9WKksOQppeIioosH5Qroe4Dg12Dfpzb562IQMT5yM/s400/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-14+2.33.06%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;1.Are you new or a registered Apple developer?&lt;/h2&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOAOw5MirWAITF_dF0Jx4Rwa2P5g0xOSVBYpHsGobqhK5yYC1_UskWGFX6aVzRSsOWt9UzkDnYr3zE9SGkd4Oh0tbmMsh5jQPMKsWtCDmX6HWjODQlgumZm08XiHu7NMdbf0zKZfkmxag/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-14+2.23.55%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;250&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOAOw5MirWAITF_dF0Jx4Rwa2P5g0xOSVBYpHsGobqhK5yYC1_UskWGFX6aVzRSsOWt9UzkDnYr3zE9SGkd4Oh0tbmMsh5jQPMKsWtCDmX6HWjODQlgumZm08XiHu7NMdbf0zKZfkmxag/s400/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-14+2.23.55%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
画面右側は既にDeveloper登録済みの方のメニューなので左側の二つから選択。&lt;br /&gt;
&lt;br /&gt;
I need to create a new account for an Apple Developer Program.&lt;br /&gt;
&lt;訳&gt;Apple Developer用に新しいアカウントを作成します。&lt;br /&gt;
&lt;br /&gt;
I currently have an Apple ID I would like to use for my enrollment in an Apple Developer Program.&lt;br /&gt;
&lt;訳&gt;既存の　Apple IDを持っていて、それをApple Developer Program の参加に使用します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;2.Are you Enrolling as an Individual or Company?&lt;/h2&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-vqB7a9WARBB71U4b9xj1eCMfucvmOwEFpifIhmi5VD3uX7HEbkg5LKoJ90hsMmoJsSrinaRt5aCrzeFRHCOmCHEPKIWxg0C9bHJUvOb3GxLNaj9aaWu-P62l8m1MitHfNK7rPe2lGDY/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-14+2.33.34%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;253&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-vqB7a9WARBB71U4b9xj1eCMfucvmOwEFpifIhmi5VD3uX7HEbkg5LKoJ90hsMmoJsSrinaRt5aCrzeFRHCOmCHEPKIWxg0C9bHJUvOb3GxLNaj9aaWu-P62l8m1MitHfNK7rPe2lGDY/s400/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-14+2.33.34%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
個人ならIndividual、企業ならCompanyを選択します。&lt;br /&gt;
個人を選択した場合、AppStoreの販売業者欄にはApple IDで指定した個人の名前が入るようになります。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;3.Sign in with your Apple ID&lt;/h3&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjECFjVJWWrM_11ljCFESkBnbT73UsOVgwWexDpvRMyM5qixsFXLL-G6ubVXUY_Y39F_dTUFeMaa8jF1DIbnLYJQ0EUKLgD4EzodrJffY85SCPyaQEShudK2LODYwaP6VzOT_PMMN36CDk/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-14+2.24.50%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;208&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjECFjVJWWrM_11ljCFESkBnbT73UsOVgwWexDpvRMyM5qixsFXLL-G6ubVXUY_Y39F_dTUFeMaa8jF1DIbnLYJQ0EUKLgD4EzodrJffY85SCPyaQEShudK2LODYwaP6VzOT_PMMN36CDk/s400/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-14+2.24.50%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
登録してある　Apple IDを入力してログイン&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;4.Enter your billing information for identity verification&lt;/h3&gt;&lt;br /&gt;
支払いの為の情報を入力する。&lt;br /&gt;
名前、国、住所、郵便番号、電話番号を入力。&lt;br /&gt;
電話番号は「Country Code, Area/City Code, Number, Extension」と指定されているので、先頭の箱に81、続きは普通に入力。国際電話の番号扱いだから頭のゼロをとったほうがいいとも思ったが、とりあえず普通に入力。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;5.Select Your Program&lt;/h3&gt;&lt;br /&gt;
&lt;h3&gt;6.Review your enrollment information &amp; submit.&lt;/h3&gt;&lt;br /&gt;
&lt;h3&gt;7.Program License Agreement&lt;/h3&gt;　同意して次へ&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;8.Proceed to your country&#39;s Apple Online Store to purchase&lt;/h3&gt;&lt;br /&gt;
　Add to cartをクリック。AppleStoreの普通の商品という扱い。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;9.Apple Storeのサイト&lt;/h3&gt;App Storeで購入処理。&lt;br /&gt;
なぜか配送業者にヤマト運輸とか書いてありますが、実際に書類が送られてきたりといったことはありません。&lt;br /&gt;
一連の手続きを全て英語で入力しないと、その後のアクティベーションでつまずいてしまうとありますが、ここで日本のAppleStoreを選択する限りやっぱりはまってしまうそうです。&lt;br /&gt;
なので始めからアップルのサポートに連絡をいれるつもりでいましょう（笑）&lt;br /&gt;
&lt;br /&gt;
　&lt;br /&gt;
&lt;h3&gt;10.Apple Developer Program Activation Code&lt;/h3&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirRrmL7TEwKgcVHl3pB6l61ri2__zF2aQes8AJnAvr6ORor-b3g9sp5HlWTyVrCBHeWdYWfel5yslDpj9nYC-jTu5pkPE9-AMcSRxibrOpPz6G48GsU3qUTxmiv6dfWUPD1xBzRNJgIUE/s1600/%25E3%2582%25A2%25E3%2582%25AF%25E3%2583%2586%25E3%2582%25A3%25E3%2583%2599%25E3%2583%25BC%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%25B3%25E3%2583%25A1%25E3%2583%25BC%25E3%2583%25AB.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;266&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirRrmL7TEwKgcVHl3pB6l61ri2__zF2aQes8AJnAvr6ORor-b3g9sp5HlWTyVrCBHeWdYWfel5yslDpj9nYC-jTu5pkPE9-AMcSRxibrOpPz6G48GsU3qUTxmiv6dfWUPD1xBzRNJgIUE/s400/%25E3%2582%25A2%25E3%2582%25AF%25E3%2583%2586%25E3%2582%25A3%25E3%2583%2599%25E3%2583%25BC%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%25B3%25E3%2583%25A1%25E3%2583%25BC%25E3%2583%25AB.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
全て登録した後にしばらくするとアクティベーションメールが届きます。&lt;br /&gt;
メールの内容の通りにActivation Codeをクリックするとアクティベーションが開始されます。&lt;br /&gt;
しかし、前述の通りエラーになりますw&lt;br /&gt;
ここをそのまま抜けられた場合はラッキーです。&lt;br /&gt;
&lt;br /&gt;
エラーは下記な感じ&lt;br /&gt;
We are unable to activate your iPhone Developer Program membership because we are unable to successfully verify your identity. Please contact us and reference Enrollment ID# XXXXXXXXXX for further assistance.&lt;br /&gt;
&lt;br /&gt;
アクティベーションができない旨を報告。こちらからアクションを起こさない限りApple側からは連絡はないので注意。&lt;br /&gt;
http://developer.apple.com/contact/&lt;br /&gt;
&lt;br /&gt;
まず速攻で&quot;Acknowledgement of your email/submission&quot;というタイトルでメールが返ってくるが、これは受信しましたよというもの。&lt;br /&gt;
早ければ数時間。遅くとも２、３日でメールの返信がある。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOedRV7247dd8zBvmsTCBqIKzyWQmK_jmpQfwKpJMERACMRBY3LyKbT115HdmnV1ZBdBLMr5PShgafwmecVciM-g0DdzHB5WoSAe-re-wXhqVwh9yqjOkTIzAKfoMYMyYXd23nFoXok-w/s1600/update.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;266&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOedRV7247dd8zBvmsTCBqIKzyWQmK_jmpQfwKpJMERACMRBY3LyKbT115HdmnV1ZBdBLMr5PShgafwmecVciM-g0DdzHB5WoSAe-re-wXhqVwh9yqjOkTIzAKfoMYMyYXd23nFoXok-w/s400/update.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;h3&gt;11.ふたたびアクティベーション&lt;/h3&gt;ここでうまくいけば晴れてiOS Developerの仲間入りだ。&lt;br /&gt;
ふう。</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/6151950578946262220/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/04/developer-program.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/6151950578946262220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/6151950578946262220'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/04/developer-program.html' title='Developer Programに参加する'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9wNZZVnOjT3AQN42FJiR7zGaXhzNRpV72YWTGQx3Zr-Q00L8B7i_9e4KqyGNCdW5okhVMNk0gGrdRYE1kFf1t-JrPm4L4BBwTTAdpkIK-5aCNoivTk2bcJ39oBkXSvgbxtEo4ef3zd8I/s72-c/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-14+2.32.55%25EF%25BC%2589.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1343562093772154599.post-3883151568231084731</id><published>2011-04-13T21:26:00.011+09:00</published><updated>2011-04-14T02:21:45.514+09:00</updated><title type='text'>開発環境を作る</title><content type='html'>&lt;h&gt;iphoneSDKの入手とインストール&lt;/h&gt;&lt;br /&gt;
&lt;br /&gt;
正確にはiPadが発売されたときにiPhoneOSからiOSになったのでiOS SDK.&lt;br /&gt;
そんな細かい事はいいかw&lt;br /&gt;
&lt;br /&gt;
iOS SDKは&lt;a href=&quot;http://developer.apple.com/devcenter/ios/&quot;&gt;&quot;iPhone Dev Center&quot;&lt;/a&gt;から無料でダウンロードできる。&lt;br /&gt;
SDKには開発環境、ドキュメント、サンプルなど開発に必要な物が含まれる。&lt;br /&gt;
&lt;br /&gt;
まずDev Center に登録。Webフォームに必要事項を記入。&lt;br /&gt;
その後、iPhone Dev Center へログイン。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqVsYT4D531d8xGVIv0D34KyNWg6NPp3pDAFJnXzSTUPoVSgCnbevAFQ2d4j7_2-oe1oQpss3r56Hz6pt_I7TfKoDt1kaqJ0xlRAfe6SaDR6yHpOyXoEWX3rLBtCiON7zjQDVg2n1Q5wM/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-13+21.34.04%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;204&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqVsYT4D531d8xGVIv0D34KyNWg6NPp3pDAFJnXzSTUPoVSgCnbevAFQ2d4j7_2-oe1oQpss3r56Hz6pt_I7TfKoDt1kaqJ0xlRAfe6SaDR6yHpOyXoEWX3rLBtCiON7zjQDVg2n1Q5wM/s400/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-13+21.34.04%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
iPhoneSDKをダウンロード。&lt;br /&gt;
Member Center &gt; Dev Center &gt; iOS &gt; Downloads&lt;br /&gt;
&lt;br /&gt;
XCodeというソフトがプログラムのエディタやコンパイラなどを含む統合開発環境で無料でダウンロードができたのだが、最新版のXcode 4 は現時点では 99 ドル / 年の Mac Developer Program もしくは iOS Developer Program 加入者のみに無償で提供されており、それ以外のユーザーは Mac App Store で 4.99 ドルで購入する必要があるらしい。&lt;br /&gt;
&lt;br /&gt;
とりあえずは&lt;a href = &quot;http://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=20792&quot;&gt;XCode3&lt;/a&gt;をダウンロードしよう。&lt;br /&gt;
最新版の&quot;Xcode 3.2.6 and iOS SDK 4.3 (Disk Image)&quot;は4.1Gあるのでダウンロードは気長に。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ディスクイメージファイル（拡張子は.dmg)で配布されているので、ダウンロード後にダブルクリックすると中に「iPhone SDK.mpkg」というファイルがあるのでダブルクリックするとインストールが始まる。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaWpa5Dun3aXvp2oRHhvYIE7wHp1X7azm0CuljBrwHdajbTiqr3qKa8d6zynUyp5VqbnZC07ASd_Vka47AXpm-XH1OX09NoiiDSQZalRc8HWQbhrMrC1ngWZ0dtGakTsf0huGnJHj1EnU/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-13+22.43.48%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;clear:left; float:left;margin-right:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;139&quot; width=&quot;184&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaWpa5Dun3aXvp2oRHhvYIE7wHp1X7azm0CuljBrwHdajbTiqr3qKa8d6zynUyp5VqbnZC07ASd_Vka47AXpm-XH1OX09NoiiDSQZalRc8HWQbhrMrC1ngWZ0dtGakTsf0huGnJHj1EnU/s400/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-13+22.43.48%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTTJjzHzgC6u4kYepYiQkHSmPU5W1u6kM0M_n3M6_2SIgrpydTTflFhhVuxm6Xo3q4qd5Yw3rJw2jdZ9Tg6fVKRsBm2aJHdTQ45oBpAu7gsIuhyI5r8tJPSMUSHkMXteLWsS14NlIYZi4/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-13+22.43.57%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;clear:right; float:right; margin-left:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;124&quot; width=&quot;389&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTTJjzHzgC6u4kYepYiQkHSmPU5W1u6kM0M_n3M6_2SIgrpydTTflFhhVuxm6Xo3q4qd5Yw3rJw2jdZ9Tg6fVKRsBm2aJHdTQ45oBpAu7gsIuhyI5r8tJPSMUSHkMXteLWsS14NlIYZi4/s400/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-13+22.43.57%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYzVEJCIBkzS74ZwjflpAfFeE22XGr0mUlKRczVdtRb7A-yiY0YT_38BpZulQdaOTuEPkJHLBRowT9M-lBRbY9KtRB2RWPwiCVZtoChczAJCa520aZ4h9etTPouEf3JjFK9RJJaQcBwmU/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-13+22.45.50%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;190&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYzVEJCIBkzS74ZwjflpAfFeE22XGr0mUlKRczVdtRb7A-yiY0YT_38BpZulQdaOTuEPkJHLBRowT9M-lBRbY9KtRB2RWPwiCVZtoChczAJCa520aZ4h9etTPouEf3JjFK9RJJaQcBwmU/s400/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-13+22.45.50%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEqOkUbpZe1i9gOHif0WoPa6DGIF3oSkd4xU06w_RWJzw1YfjOCLvS10BcTtBs3oiOAL7ILcaB5cE6qwNejGi9i89XDo8_lvK89ZFhffr86JKkxTxGlXwSAUUJQCFxrGZK8b4qfDo1JNQ/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-13+22.46.10%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;285&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEqOkUbpZe1i9gOHif0WoPa6DGIF3oSkd4xU06w_RWJzw1YfjOCLvS10BcTtBs3oiOAL7ILcaB5cE6qwNejGi9i89XDo8_lvK89ZFhffr86JKkxTxGlXwSAUUJQCFxrGZK8b4qfDo1JNQ/s400/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-13+22.46.10%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtLPwIkOoL0Li_OUdIf-M6EzP31igroyrCQXY3g-dKiri-mjsIHAVYG_h53B-_08ZNx3g67dlDl_LfHinDlTvqo2rexsf71yHaohsgFROGJr263DI53Eg78y_3_C-ZXtinypoFLth-d74/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-13+22.46.54%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;283&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtLPwIkOoL0Li_OUdIf-M6EzP31igroyrCQXY3g-dKiri-mjsIHAVYG_h53B-_08ZNx3g67dlDl_LfHinDlTvqo2rexsf71yHaohsgFROGJr263DI53Eg78y_3_C-ZXtinypoFLth-d74/s400/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-13+22.46.54%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhjf_VdchOjDOZyy86SYhkJnz6So2jRnfP8ZwfH7cUIik66aSXEWXRQ6KCrtvjiM4kgmBRV4bp1I8CXKG0WuLqmg3bYAOcgs_1TFzh8XDYWQabB66JXyVnR7cnnyJv3QwZh8dxPka30yc/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-13+22.47.22%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;283&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhjf_VdchOjDOZyy86SYhkJnz6So2jRnfP8ZwfH7cUIik66aSXEWXRQ6KCrtvjiM4kgmBRV4bp1I8CXKG0WuLqmg3bYAOcgs_1TFzh8XDYWQabB66JXyVnR7cnnyJv3QwZh8dxPka30yc/s400/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-13+22.47.22%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
インストールも結構時間がかかるので気長に。&lt;br /&gt;
僕もこれを書きながらiOS4.2から4.3にバージョンアップすべく、インストールしてるんだけれどあと２５分かかるらしい。ひと休みして食事でもしよう。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcjtft9Ug7OEgoViP-5QS7ism7qVApXsRgiwfGcS7PUHvMc-gWcj5s3hSy_rwEf6f4qfFOcBngYFV0vXpQwax0QFdgTTGTubRf2qPqtY6UDgBQv7oLMG8xycuJz73A3MBkBdjPalCld5g/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-13+23.15.47%25EF%25BC%2589.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;287&quot; width=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcjtft9Ug7OEgoViP-5QS7ism7qVApXsRgiwfGcS7PUHvMc-gWcj5s3hSy_rwEf6f4qfFOcBngYFV0vXpQwax0QFdgTTGTubRf2qPqtY6UDgBQv7oLMG8xycuJz73A3MBkBdjPalCld5g/s400/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-13+23.15.47%25EF%25BC%2589.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
一年間での金額が設定されているので、シュミレーターでじっくりと作ったアプリをテストしてから&lt;a href =&quot;http://developer.apple.com/programs/ios/&quot;&gt;iOS Developer Program&lt;/a&gt;に登録するというのも人つの手かもしれない。&lt;br /&gt;
でも、とりあえず登録してお金を払ったほうがモチベーションが継続するとも思ってみたり。&lt;br /&gt;
&lt;br /&gt;
次回は&lt;a href = &quot;http://firstiphoneapp.blogspot.com/2011/04/developer-program.html&quot;&gt;Developer Programに参加する&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://firstiphoneapp.blogspot.com/feeds/3883151568231084731/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/04/blog-post_1011.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/3883151568231084731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1343562093772154599/posts/default/3883151568231084731'/><link rel='alternate' type='text/html' href='http://firstiphoneapp.blogspot.com/2011/04/blog-post_1011.html' title='開発環境を作る'/><author><name>Kozy</name><uri>http://www.blogger.com/profile/03020992755176558737</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqVsYT4D531d8xGVIv0D34KyNWg6NPp3pDAFJnXzSTUPoVSgCnbevAFQ2d4j7_2-oe1oQpss3r56Hz6pt_I7TfKoDt1kaqJ0xlRAfe6SaDR6yHpOyXoEWX3rLBtCiON7zjQDVg2n1Q5wM/s72-c/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%25EF%25BC%25882011-04-13+21.34.04%25EF%25BC%2589.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>