tag:blogger.com,1999:blog-89642561505594619132024-03-19T17:08:00.362+09:00iPhone SDKこのページはiPhone SDKに関するメモです。メモなので間違いも多くあると思いますが、間違いを見つけた場合にはコメントで指摘してください。donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.comBlogger45125tag:blogger.com,1999:blog-8964256150559461913.post-39892361686140250132009-06-20T08:13:00.000+09:002009-06-20T08:14:17.651+09:00Open SourceAppleが主催するdarwin-devのMailing listにAppleのDarwin TeamのWilliam SiegristがDeveloper Tools 3.1.3とiPhone OS 3.0関連のソース一部を公開したと投稿していました。<br /><br />Developer Tools 3.1.3 - Source<br />http://opensource.apple.com/release/developer-tools-313/<br /><br />iPhone 3.0 - Source<br />http://opensource.apple.com/release/iphone-30/<br /><br />iPhone SDKb8 - Source<br />http://opensource.apple.com/release/iphone-sdkb8/donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-91406328659260012972009-04-07T10:52:00.003+09:002009-05-08T11:59:10.480+09:00StanfordがiPhone Development Class<a href="http://db.tidbits.com/">TidBITs</a>が外部リンク情報として、StanfordがオンラインでiPhone Development Classを受けられるようにしたと書いていました。<br /><br />オンライン クラスのURLは以下の通りです。<br /><a href="http://www.stanford.edu/class/cs193p/cgi-bin/index.php">CS193P - Cocoa Programming | Announcements</a><br />http://www.stanford.edu/class/cs193p/cgi-bin/index.php<br /><br />!! S T A N F O R D !! と言う名前だけでも、興味を引かれそうですね(笑)<br />Berkeleyが対抗してAndroidのオンライン クラスを始めたりして(大笑)donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-19454058216935721862009-04-03T13:11:00.000+09:002009-04-03T13:12:02.568+09:00iPhone SDK 3.0 beta 2iPhone SDK 3.0がアナウンスされてさっそくダウンロードしたものの引っ越しで調べることもできず、引っ越し先に到着するとiPhone SDK 3.0 beta 2がアナウンスされていました。<br /><br />しかし、引っ越し先がカンボジアなのでこんな巨大なファイルをダウンロードできるか・・・難しいだろうな(苦笑)donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-78490235479259471002009-02-20T10:09:00.000+09:002009-02-20T10:10:02.956+09:00iPhone 2.2.1のソースコード公開Darwin TeamがiPhone 2.2.1のソースコードを公開しました。今回はWebCoreとJavaScriptCoreが新しく含まれています。<br /><br /><a href="http://www.opensource.apple.com/darwinsource/iPhone2.2.1/">http://www.opensource.apple.com/darwinsource/iPhone2.2.1/</a>donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-15672741693449045752008-12-24T09:46:00.001+09:002008-12-24T10:29:23.639+09:00サイト公開Apple Developer Connectionの人と話す機会があり、iPhone Dev Center Log inのWebページ画面下方の記述に関して尋ねました。二人のiPhone担当者がその場で相談し確認した上で返事を頂きました。<br /><br />iPhone SDKはGM(Golden Master)版であれば公開の場で話して良いとの答えです。ただし、ベータ版に関しては話しできません。<br /><br />以上の返事を元にこのサイトを公開することにしました。技術的な記述はすでに旧聞になりかけていますが、皆さんのお役に立てば幸いです。donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-49129982326005814052008-10-25T09:14:00.001+09:002008-10-25T09:16:20.664+09:00NDA解除されずiPhoneの開発者契約が改定されました。<br /><br />解約書では機密情報に関しては4. Confidentialityに以下のように定義されています。(改行は私が入れました)<br /><br />Notwithstanding the foregoing, Apple Confidential Information will not include: <br /><br />(i) information that is generally and legitimately available to the public through no fault or breach of yours, <br /><br />(ii) information that is generally made available to the public by Apple, <br /><br />(iii) information that is independently developed by you without the use of any Apple Confidential Information, <br /><br />(iv) information that was rightfully obtained from a third party who had the right to transfer or disclose it to you without limitation, or <br /><br />(v) any third party software and/or documentation provided to you by Apple and accompanied by licensing terms that do not impose confidentiality obligations on the use or disclosure of such software and/or documentation.<br /><br />ここで、iPhone Dev Center Log inのWebページ画面下方には以下のような文章があります。<br />All information presented or provided to you by Apple through the iPhone Dev Center is considered Confidential Information and is subject to your Registered iPhone Developer Terms and Conditions with Apple.<br /><br />これでは以前と変わらず、このWebサイトの公開はできません。donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-65319774142104213582008-10-02T07:41:00.000+09:002008-10-02T07:49:55.236+09:00NDA条項を削除予定Appleが一週間以内にNDA条項を削除するとの発表をしました。<br /><br />iPhone Developer Program<br />http://developer.apple.com/iphone/program/<br /><br />数百に及ぶ特許申請がようやく終わったためとしています。実際、Appleは特許申請関連で何度となくしくじっているので、特許はNDA条項を付加した理由のすべてではないかもしれませんが、重要な理由の一つだと思います。<br /><br />まぁ、このサイトでは実際にNDAが外れるまで待ちます(笑)donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-65965233676511868882008-08-30T15:06:00.005+09:002008-08-30T15:07:47.269+09:00iTunes Connectその2(アプリケーションの登録と変更)アプリケーションの追加方法はAdd New Applicationに書かれています。先のページにもあるように、Manage Your Applicationsがアップロードして登録する場所です。アプリケーションの大きさが200MBを超える場合にはこのページにあるApplication Loaderを使用するように推薦しています。新規にアプリケーションを登録する場合には主に使用する言語と開発者名を設定します。この設定はiTunes内のApp Storeにて開発者名と解説に利用されますが、後から変更できないそうです。<br /><br />アプリケーションが暗号化技術を持っている場合にはExport Compliance Pagesから米国の輸出規制法に基づいてその内容を報告します。この場合にはCCATS(Commodity Classification Automated Tracking System)に基づく承認(番号?)を得て、そのコピーを添付するそうです・・・とは言うものの面倒(苦笑)詳細は以下のURLあたりを参照してください。<br /><br />U. S. Bureau of Industry and Security<br />http://www.bis.doc.gov/index.htm<br /><br />Export Administration Regulations<br />http://www.access.gpo.gov/bis/index.html<br /><br />詳細は読んでいませんが(笑)以下のページが役立つでしょう・・・たぶん<br />U. S. Bureau of Industry and Security - Guidelines for Requesting a Commodity Classification<br />http://www.bis.doc.gov/licensing/cclrequestguidance.html<br /><br />Overview Pageにはアプリケーションのメタデータを書き込むのですが、最初にアクセスした時にはこのページを編集できないそうです。詳細はPDFにも書かれていますが、Webサイトにあるヘルプボタンを参照するように書いています。<br /><br />A) Application Name -<br />B) Application Description –<br /> 4000文字未満ですが、700文字以下にすることを推薦しています。<br /> 書き込めるのはプレーンテキストです。制御文字は改行だけでHTML<br /> のタグなども利用できません。スペルチェックも構文チェックもしない<br /> と書いています(笑)<br />C) Device –<br /> iPhoneやiPod touchなどを選択できますが、今後は数が増える<br /> でしょうね。<br />D) Primary and Secondary Category -<br /> アプリケーションの種類を選びます。<br />E) Subcategories –<br /> ゲームはさらに種類を選びます。<br />F) Copyright –<br /> コピーライトの印を入れるなと書いています。<br />G) Version Number –<br /> バージョン番号はアプリケーション製品ページのアプリケーション<br /> アイコンの隣に表示されるそうです。<br />H) SKU Number –<br /> アプリケーションを特定するためのUTF8のAlphanumericだそうで、<br /> 後から変更できないとしています。<br />I) Support Email Address –<br /> アプリケーションに何らかの問題があった場合にAppleから問い合<br /> わせるためのメールアドレスで、ユーザには公開されないそうで、<br /> このアドレスは必須とされています。<br />J) Support URL –<br /> サポート用WebサイトのURLも必須だそうです。<br />K) Application Website URL –<br /> アプリケーションに関する詳細な情報を得るためのWebサイトの<br /> URLですが、必須ではないそうです。<br />L) End User License Agreement –<br /> アプリケーションの説明と同様にライセンスもプレーンテキストで、<br /> 改行だけが有効です。<br /><br />入力画面とiTunes App Storeのサンプルが対応づけられた図があるので、どの内容がどこに表示されるのか、またされないのかが分かります。<br /><br />Upload Pageはアセット(アプリケーション自身、大きなアイコン、メイン画面のスクリーンショット、その他の追加スクリーンショット)をアップロードするページです。追加スクリーンショット以外は必須です。Webサイトのスクリーンショットをもとに入力するべき内容を解説しています。一つのアプリケーションの最大サイズは2Gバイトだそうです。<br /><br />Pricing/Availability Pageでは公開日(世界時間)、国別通貨単位での売価と売り上げの表、販売する国を設定します。販売する国にはRest of Worldという項目がある点が興味深いです。<br /><br />Localization Pageでは英語のメタデータ以外を追加できるそうで、PDFに書かれている選択可能な言語は以下の通りです。<br /><br /> US/UK English<br /> German<br /> Spanish<br /> Dutch<br /> Italian<br /> French Canadian<br /> French<br /> Japanese<br /><br />Review Pageで内容の確認をし、よければSubmitしてApp Storeに上がるのを待ちます。App Storeの作業状況は以下の七つの段階で表示されるそうですが、詳細は本文を参照してください。<br /><br />In Review (Yellow) – <br />Waiting for Upload (Yellow) –<br />Pending Contract (Yellow) – <br />Ready for Sale (Green) – <br />Rejected (Red) –<br />Removed from Sale (Purple) –<br /><br />Editing and Updatingではアップロードしたデータの変更方法が、またUpdating an Existing Binaryではアプリケーションのアップデート方法が紹介されています。変更とアップデートはiTunes ConnectのManage Your Applicationsで行います。最初の登録時とは異なり、各タブで変更した場合には必ず保存をするように書いています。<br /><br />Large Binary Uploadsでは200 MB以上のアプリケーションをアップロードする方法が書かれています。詳細は本文を参照してください。<br /><br />Game Advisoriesではゲームの登録に関して解説していますが、詳細は本文を参照してください。ゲームに関しては文章、図版、写真などの「わいせつ」「ポルノ」「不快度」「名誉毀損」およびAppleが不適切と判断したものなどを制限しています。なお、ここで書かれているESRBとPEGIはそれぞれ以下を参照してください。<br /><br />Entertainment Software Rating Board<br />http://www.esrb.org/<br /><br />Pan European Game Information<br />http://www.pegi.info/<br /><br />日本のWikipediaにもそれぞれ解説があります。<br /><br />・・・と言うことでiTunes ConnectのPDFのメモは終わり。donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-18708644547473055422008-08-30T15:06:00.004+09:002008-08-30T15:07:34.298+09:00iTunes Connectその1(Program Portal補足)iTunes Connect Developer Guide(ファイル名:iTunesConnect_DeveloperGuide.pdf)のメモです。<br /><br />Program Portalの解説44ページに書かれている"Submitting your application via iTunes Connect"の詳細です。<br /><br />Program Portalでは書かれていなかった、大小二つのアイコン(57 x 57と512 x 512)の仕様が書かれています。また、Info.plistのUIPrerenderedIconというタグが紹介されています。解説の図にあるように登録したアイコンに、光った感じ(光沢)の印影を付けてくれるようです。書式は以下のようになりますが、詳細はURLを参照すると良いでしょう。<br /><br /><key>UIPrerenderedIcon</key><br /><true/><br /><br />Apple - Support - Discussions - Shine/NoShine ...<br />http://discussions.apple.com/thread.jspa?threadID=1566351&tstart=-5<br /><br />スクリーンショットの大きさに関しても図付きで紹介しています。また、縮小されますが、スクリーンショットは4つまで登録できるそうです。<br /><br />販売する場合には「Contacts:」に連絡先が必要で、販売に関する契約が完了するまで販売できません。<br /><br />米国とカナダ以外で販売する場合には「Additional Languages:」に書きます。<br /><br />暗号化が含まれているアプリケーションは「Export Compliance:」にある質問に答えて、正規に輸出承認を得ていることを証明しなくてはなりません。<br /><br />「Additional Artwork:」はAppleのWWDCがアプリケーションを紹介するかもしれないので、絵を準備するようにと言うことです。<br /><br />iTunes ConnectはWebベースのApp Store用管理ツールで、契約状況、利用者管理、アプリケーションやメタデータ、アセットの追加をできます。<br /><br />iPhone Developer ProgramのTeam AgentがiTunes Connectに初期登録されており、Team AgentのApple IDとパスワードでiTunes Connectにログインできます。<br /><br />iTunes Connectのログイン ページへのリンクはiPhone Developer Program Portal内左欄からDistributionを選択し、App Storeタブ内の折りたたまれた分かりにくい場所にあります・・・が以下の場所です(苦笑)<br /><br />https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/wa/default<br /><br />ちなみに、2008/08/29現在ではProgram Portalに一度ログインするとiTunes Connectにジャンプするときに再ログインは求められませんでした。<br /><br />iTunes Connectのホームページには以下の五つのアイコンが表示されていて、GuidのPDFにある図よりも一つ増えています。<br /><br /> Sales/Trend Reports<br /> Contracts, Tax, & Banking Information<br /> Financial Reports<br /> Manage Users<br /> Manage Your Applications<br /><br />なにせ、iPhoneは今までのPCや携帯のビジネスモデルとは異なる事を考えているようなので、今後もProgram PortalとiTunes Connectのサービス内容は変わっていくでしょうね。<br /><br /><span style="font-family:serif;">■</span> Manage Users<br />この項目は現在もありますが、この場合のUserは顧客ではなく、管理のための利用者です。利用者には四つの役割を割り振ることができ、それぞれのメールアドレスにiTunes Connectのアカウントに関する情報が送られます。<br /><br />四つの役割、Admin、Legal、Finance、Technicalに関する詳細は本文を参照してください。それぞれの役割はこのManage Usersのページで割り振ったり、削除したりできます。面白いことにiPhone Developer Programの個人会員でも、このiTunes Connectには複数の人を割り当てることができます。使い方の詳細は本文を参照してください。<br /><br />iTunes Connectから送られるメールにはいくつかのタイプがあり、iPhone Developer Programの会員にはCntractとFinancila Report、Misc Reporting、Content Tichetの四つが割り振られ、解説PDFに書かれている他の内容は2008/08/30現在では利用不可のようです。<br /><br /><span style="font-family:serif;">■</span> Contracts, Tax, & Banking Information<br />ここは、支払いや税金などの経理事務や契約内容などがまとめられています。<br /><br /><span style="font-family:serif;">■</span> Financial Reports<br />AdminとFinanceの利用者が各月の経理報告を見ることができます。<br /><br /><span style="font-family:serif;">■</span> Manage Your Content<br />現在はManage Your Applicationsとなっています。アプリケーションのアップロード、メタデータの設定、価格付け、使用言語の設定ができ、設定が終わり承認されるとiTunesのApp Storeに表示されます。<br /><br /><span style="font-family:serif;">■</span> Contact Us<br />2008/08/30現在、このタグは枠外下の中央に表示されています。また、連絡内容の分類はApplication Questions、Legal Questions、Financial Reports, Tax, Banking and Payment Questions、Reporting Questionsの四つになっています。donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-54452812906501887442008-08-27T21:45:00.002+09:002008-08-27T21:46:51.274+09:00複数アプリケーション開発複数のアプリケーションを作るときの注意書きBuilding Multiple Apps for Distribution and Validating Your Distribution Builds(ファイル名:distributing_multiple_apps_readme.pdf)の内容はProgram Portalの解説37ページに書かれている内容と比べて多少単語が異なるときがあるだけでほぼ同じでした。donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-37182511902090209382008-08-27T07:58:00.002+09:002008-08-27T07:59:11.256+09:00Program Portalの解説PDFその2ようやくDistributionの章、50ページの24ページにたどり着きました。集中して読める環境が欲しい(苦笑)<br /><br />Program Portalの左欄Distributionの説明で、App StoreやAd Hoc経由で配布するためにアプリケーション提出する方法を解説しています。この作業ができるのはTeam Agentだけだそうです。<br /><br />ここではiPhone Distribution Certificate(iPhone配布証明書)なるものを生成するように書いています。<br /><br />iPhone Distribution Certificateを請求するために、先の項目でキーチェンアクセス.appを使って作成したCSR(Certificate Signing Request)を使用します。<br /><br />これ以降に'Generating a Certificate Signing Request'と'Submitting a Certificate Signing Request for Approval'、'Downloading and Installing iPhone Distribution Certificates'、'Saving your Private Key and Transferring to Other Systems'に書かれている内容は、開発Certificateを入手するときの作業とほとんど同じです。<br /><br />この次の二つの小項目ではApp Storeで配布する方法とAd Hocで配布する方法を紹介しています。<br /><br />開発用Provisioning Profileと、App Store配布Provisioning Profile、さらにAd Hoc配布Provisioning Profileはそれぞれ異なるそうです。<br /><br />以上でようやくXcodeを使って配布用のビルドができると書かれています。'Building your Application with Xcode for Distribution'に書かれている内容に沿ってProject Infoの設定などを行います。<br /><br />先の開発用Provisioning Profileでも書かれていましたが、複数のアプリケーションを配布するにはアスタリスク( * )を使って設定することになるようです。既存のProvisioning Profileを消去するなど、面倒な作業が必要だそうで'Building Multiple Apps for Distribution and Validating Your Distribution Builds'と'All Distribution Methods'に色々と書かれています。<br /><br />次にiTunes Connectに関して解説しています。 iTunes ConnectはApp Storeでのアプリケーション販売の登録や管理をするためのWebベースのツールで、Team Agentは契約の確認やユーザの管理、バイナリやメタデータ、assetの申請ができます。<br /><br />Team AgentはProgram Portalの左欄にある'Distribution'項目内にiTunes Connectへのリンクがあり、そのログインページにジャンプしますので、Program Portalで使用しているApple IDとパスワードを入力してログインします。<br /><br />ここで、iTunes Distribution Terms & Conditionsの再確認が求められるそうですが、わざわざ 'Distribution Terms & Conditions'と小項目を設けて、会社に法務部があれば確認するように書いています。<br /><br />次に、登録に必要なメタデータを用意するように書いて、16の項目を列挙しています。さらにiPhoneなどのホームスクリーンとApp Storeに表示するために二つのアイコン(57 x 57と512 x 512 ピクセル)と、商品解説用のスクリーンショットなどを準備するように書いています。スクリーンショットは垂直(320 x 460)と水平表示(480 x 300)が利用できステータスバーを入れないように言っています。最初からステータスバーがないフルスクリーンでは320 x 480で登録できるそうです。<br /><br />以上で準備ができれば、ファイルをzipで圧縮して送信するようです。<br /><br />次にAd Hoc配布ですが、Standardプログラム参加者はApp Store以外(outside of App Store)に100の装置に配布できるとしています。ここではAd Hoc配布用Provisioning Profileの入手とXcodeでの作業が解説されています。<br /><br />ようやく、読み終わりました。仕事場の雑音が多すぎてエラク時間がかかりました(苦笑)donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-36161529872642534422008-08-24T16:49:00.003+09:002008-08-25T07:45:26.844+09:00Program Portalの解説PDFその1このメモは"iPhone Developer Program Standard Program Portal User Guide for OS X iPhone 2.0"という表題(ファイル名:iphone_developer_program_user_guide__standard_program_v1.1.pdf)のPDFファイルを読んだときのものです。<br /><br />Welcomeの章では開発チームを作れとか、iPhone開発証明を要求して承認を得ろとか、App IDを生成しろなど、など何やら大袈裟なことが書かれています。<br /><br />Developmentの章で大袈裟な理由が分かります。iPhoneの開発者向けサイトにある'Program Portal'というページに、開発に参加する人や使用する装置(iPhoneやiPod touchなど)、作る予定のアプリケーションを登録するためです。<br /><br />推測ですが、<br />このような手続きにより少しでもウィルスなどの悪質なプログラムを閉め出すことを狙っているのかもしれません。iPhoneという新しいプラットフォームでは、PCのような状況はユーザとして避けたいものです。しかし、同時にさまざまなアプリケーションが提供されるというPCの良いところも取り入れたいのもの確かです。その暗中模索と折衷案が今回のAppleのiPhone SDKと見るべきと思われます。<br /><br />閑話休題、<br />個人としてiPhone Developer Programに登録した人は、チームなどの登録は不要ですし、出来ません。<br /><br />チームのメンバーには三つの役割が割り振られます。それぞれTeam Agent、Team Admin、Team Memberです。<br /><br />Team AgentはiPhone Developer Programに登録した人で、Appleとの連絡やライセンスなどの責任者です。Team Agentができることは以下の通りです。<br /> Team AdominやMemberの登録、<br /> デジタル証明要求の承認、<br /> 開発装置の登録、<br /> App IDの生成、<br /> iPhone Distribution Certificateの入手、<br /> 開発用と配布用のProvisioning Profileの生成<br /><br />Team AdominがProgram PortalでできることはTeam Agentと同じです。Team AdominとTeam Agent がチームの最小構成になります。Team Adominの数に制限はありません。<br /> 新しいTeam AdominやMemberの登録、<br /> デジタル証明要求の承認、<br /> 開発装置の登録、<br /> App IDの生成、<br /> iPhone Distribution Certificateの入手、<br /> 開発用と配布用のProvisioning Profileの生成<br /><br />Team Member ができることは以下の通りです。<br /> デジタル証明を要求<br /> 開発用のProvisioning Profileのダウンロード<br /><br />以上の三つのメンバーは装置でのアプリケーション検証ができます。<br /><br />Adding Team Admins and Team Membersの小項目ではTeam AgentとTeam Adminが新規にTeam AdminやMemberを登録する方法を紹介しています。登録場所はProgram Portalページ左欄の'Team'を選択し'Invitation'タブにあります。Invitationの名前からも推測できますが、登録したメールアドレスにチームへの招待状を発送する方法で登録を処理します。<br /><br />面白いことにTeam Agentの新規登録はProgram Portalページからはできないらしく、ADC Support Teamの連絡用ページを通して要求するようです。<br /><br />次はiPhone Development Certificateの申請です。まず最初にMac OS X 10.5.xに付属するキーチェーンアクセス.appを使ってCSR(Certificate Signing Request)の時に公開鍵と非公開鍵を生成します。<br /><br />ここからは、日本語版キーチェーンアクセス.appでも、英語版と同様にできるか試してみます。<br /><br />「キーチェーンアクセス」メニューから「証明書アシスタント>証明局に証明書を要求...」を選択します。なお、左下欄「分類」の「鍵」が選択されていると、「証明局に証明書を要求...」の表示が異なりますので、注意してください。<br /><br />「ユーザのメールアドレス」と「コモンネーム」には、iPhone Developer Programに登録したメールアドレスと名前を入力します。「CAのメールアドレス」は無視して、「要求の処理」で「ディスクに保存」「鍵ペア情報を指定」を選択し、「続ける」ボタンを押します。鍵情報を保存するダイアログが表示されますので保存します。<br /><br />次の画面で「鍵のサイズ」を「2048ビット」、「アルゴリズム」を「RSA」を選択します。<br /><br />以上でCSRファイルが指定した場所に保存されます。<br /><br />以上でCSRファイルができたので、Program Portalに登録するそうです。ここからはProgram Portalでの作業なので動作検証せずにPDFを読み進みます。<br /><br />WebブラウザSafariでProgram Portalのサイトを開き、‘Certificates’、 ‘Development’、‘Add Certificate’の順でクリックしていきます。<br /><br />作成したCSRファイルをテキストエディタで開いて、内容をすべてコピーし、Safariに表示されているテキストフィールドにペーストし、「Submit」のボタンを押します。キーの大きさが2048ビットでないと、Program Portalからはねられます。<br /><br />以上の作業でTeam Adminに登録完了のメールが届きます。登録失敗したときもその趣旨を書いたメールが届くそうです。さらに、Team AdminがCSRを承認したり削除してもメールが届くそうです。<br /><br />Team AgentとAdminはiPhone Development Certificate要求の承認と非承認ができますが、Team Adminは自身のCSRの承認を得ないと、Team Memberからの要求に承認を出せないそうです。Approving Certificate Signing RequestsとDownloading and Installing Development Certificatesの小項目には承認と非承認の方法と証明書(拡張子.cerのファイル)のダウンロードとキーチェーンアクセス.appへのインストール方法が書かれています。<br /><br />複数のコンピュータで開発していたり、何らかの理由でシステムを再インストールする場合に、個人鍵がないと開発ができなくなるのでCSRのファイルの管理は悩ましい問題です。Saving your Private Key and Transferring to other Systemsの小項目に複数のコンピュータでCSRファイルを共有する方法が書かれています。<br /><br />iPhoneやiPod touchなどの装置の登録はTeam AgentかAdminが行います。登録にはUDID(Unique Device Identifier)と呼ばれる16進数で40桁の文字列が使用され、Program Portalに最大100まで登録できます。また、UDIDは後で生成するprovisioning profileにも含まれます。<br /><br />UDIDは装置を接続してXcodeのバージョン3.1以降やiTunesのバージョン7.7以降で調べることができます。詳細はLocating a Unique Device ID with XcodeまたはLocating a Unique Device ID with iTunes 7.7の各小項目を参照してください。また、Program Portalへの登録、抹消、変更方法はAdding DevicesとRemoving Devices from your Development Team、Editing Devices on your Development Teamの各小項目を参照してください。<br /><br />書いたコードをiPhoneやiPod touchなどの装置で動作検証するにはOS X iPhoneをインストールするそうです。インストールには色々と制限がありますが、詳細はInstalling OS X iPhoneを参照してください。<br /><br />次にApp IDと言うものを生成します。Apple IDではありません(苦笑)装置に作ったアプリケーションをインストールするためにApp IDが必要だそうです。<br /><br />作ったアプリケーションがキーチェインにアクセスすることをOS X iPhoneが承認するためにApp IDというものが必要だそうです。また、開発と配布のProvisioning ProfileにもApp IDが含まれているそうです。<br /><br />App IDはAppleが生成した10文字の"Bundle Seed ID"プレフィックスと、Team Adminが定義した"Bundle Identifier"からなっています。ただ、複数のアプリケーションを開発配布する場合には問題があるようです。一時的な問題回避策として"Bundle Identifier"をアスタリスクにするように書いています。複数のアプリケーション開発に関しては別にPDFファイルがあります。これ以降はApp IDを生成する方法が書かれています。<br /><br />次は今までにも出てきた開発用Provisioning Profileです。配布用は24ページから始まるDistributionの項目で説明されています。<br /><br />開発用Provisioning Profileは動作検証のために各装置にインストールし、開発チームと装置を特定します。開発用Provisioning ProfileにはiPhone Development Certificate、Unique Device Identifier、App IDのセットが入っています。一つの装置に複数の開発用Provisioning Profileを入れることができるそうです。<br /><br />'Creating a Development Provisioning Profile'にProgram Portal上での開発用Provisioning Profileの作り方が解説され、'Installing a Development Provisioning Profile'にProgram Portalから開発用Provision Profileをダウンロードし、Xcodeで装置にインストールする方法を紹介しています。また、iTunes 7.7でもインストールできると書いています。<br /><br />この段階で以下のものがそろっているはずです。<br /> 1.iPhone Development Certificate(承認されたもの)<br /> 2.iPhoneまたはiPod touch(登録されたもの)<br /> 3.開発用Provisioning Profile(正しくインストールされたもの)<br />もし、iPhone Development Certificateと開発用Provisioning Profileが一つだけであれば、Xcodeの初期設定のままでアプリケーションを走らせることができるはず・・・だそうです。'Running your Development Application on a Provisioned Device'にその手順が書かれています。<div><br /><div>つづく・・・(笑)</div></div>donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-37991730207857128522008-08-14T07:48:00.004+09:002008-08-14T07:53:55.764+09:00iPhone Developer Programからメール2008/08/13にiPhone Developer Programから"Support resources for the iPhone Developer Programと言うタイトルのメールを受け取りました。<br /><br />作ったアプリケーションをダウンロードするためのサイトProgram Portalの説明書PDF[ファイル iPhone Developer Program Portal User Guide]ができたそうです。このPDFはiPhone Dev Centerのトップページから右上の[Program Portal]ボタンをクリックし、<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0aRPvt0UPiIj21q2gU5Tqegb4QoLUc1N7vrdxziP8ME6yBYoSR03mTUSKVzvp4us_2MEkqhe3Y1oCKiJn7WYCmErbC260xIpbWSuGizWc4mQy0GMzBohR1KiuN9b4PyRABE-Rf0QTe3Ei/s1600-h/ProgramPortal.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0aRPvt0UPiIj21q2gU5Tqegb4QoLUc1N7vrdxziP8ME6yBYoSR03mTUSKVzvp4us_2MEkqhe3Y1oCKiJn7WYCmErbC260xIpbWSuGizWc4mQy0GMzBohR1KiuN9b4PyRABE-Rf0QTe3Ei/s320/ProgramPortal.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5234138389792761074" /></a><br />次画面の右上にあるボタンをクリックすると入手できます。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYcMzdhN-ualwn6Kpm4sl5X6R9Hir6BGpZBTHV62SsfUW7ZRqdyD3Xz5siiW0PHH1gy-TIYtO9QNRy0Hh_K7o38UMpOk9UhcftRdUu3gLuHb5mjceQ2xEZ8GzFCtJJ5ec7OqoIyt7DcpXv/s1600-h/ProgramPortalPDF.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYcMzdhN-ualwn6Kpm4sl5X6R9Hir6BGpZBTHV62SsfUW7ZRqdyD3Xz5siiW0PHH1gy-TIYtO9QNRy0Hh_K7o38UMpOk9UhcftRdUu3gLuHb5mjceQ2xEZ8GzFCtJJ5ec7OqoIyt7DcpXv/s320/ProgramPortalPDF.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5234138395770753698" /></a><br /><br /><br />また、iTunesのApp Storeでアプリケーションの販売状況などの管理サイトも紹介されています。始めてこのサイトにジャンプすると使用許諾書が表示され、同意すると管理サイトを見られます。使い方は[iTunes Connect Developer Guide]というPDFにまとめられています。このファイルはiTunes Connectのトップページにある[Manage Your Applications]をクリックして、<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqehKTrINmCxCXhObhPm_zLj70Nr9UT5fktoYEpfpnmTujVqbPB7R7khPAUo-J3KVHAH21SdEdRrCGZtLPatKyhtlaQWC06vLHZAWbMJ6i_x_JXyXwIB2kommzHL3DoUdMwBKdMnZhO3Jh/s1600-h/ManageApp.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqehKTrINmCxCXhObhPm_zLj70Nr9UT5fktoYEpfpnmTujVqbPB7R7khPAUo-J3KVHAH21SdEdRrCGZtLPatKyhtlaQWC06vLHZAWbMJ6i_x_JXyXwIB2kommzHL3DoUdMwBKdMnZhO3Jh/s320/ManageApp.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5234139063292579138" /></a><br />次の画面下に表示される[Download Detailed Instructions]をクリックすると入手できます。<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8iSgzPb2IGURq4GVArmD0sMPZKYZRXxxC4pwQ4TpIG-Qmy4nSxB1JrcimwIiSz7SxnW7NK1rnwZHE99mI1oq9SbxNAq3Zpv-yLduAsuMa0cjMPtztewdGFc4MostVMF2ENVtOiL2AR8eo/s1600-h/ManageAppPDF.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8iSgzPb2IGURq4GVArmD0sMPZKYZRXxxC4pwQ4TpIG-Qmy4nSxB1JrcimwIiSz7SxnW7NK1rnwZHE99mI1oq9SbxNAq3Zpv-yLduAsuMa0cjMPtztewdGFc4MostVMF2ENVtOiL2AR8eo/s320/ManageAppPDF.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5234139070933339506" /></a><br />次はAppleのエンジニアから受けられる技術サポートで、いままでのDTSから受けたサービスと似ています。ただ、メーリングリストによるサービスがWebアプリケーションのみである点が気になります。<br /><br />興味深い機能として[Ad Hoc distribution]があります。100名限定でアプリケーションを配布する方法で、メールやWebサイト経由で配布できるとしています。動作検証用などに利用できるとしています。[Ad Hoc distribution]の方法は上記の解説PDFに書かれているそうです。donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-66703251617052346672008-07-15T07:08:00.001+09:002008-08-14T14:15:37.951+09:00iPhone Developer Program有料版申し込みを忘れていた有料版を6月27日に申し込んで、7月12日に申し込み受付の返事が届き、14日に手続きが終わりました。<br /><br />ただ、手続きはすんなりとは終わりませんでした。手続きはAppleから届いたメールにあるタグにジャンプして、表示されたActivation Codeがメールと同じであることを確認してボタンを押して終了・・・のハズでした。しかし、確認ボタンを押すと、次の画面で記録の照合に失敗したのでAppleに問い合わせるように出てきました。<br /><br />しかたなくエラー画面にcontact usとかかれたページにジャンプして、名前やメールアドレスと共にテキストフィールドに照合が失敗している件の話を書いて送りました。幸い、その日の内に返事のメールが届きActivationを成功しました。面白いことに返事のメールは日本語でした。<br />有料版会員向けサイトには右上に [Program Portal] というボタンが表示されます。このボタンを押すと、アプリケーションや、検証に使うiPhoneの登録状況などをリストアップするデータベースがありました。ただし、なにせiPhoneもiPod touchもない状態なのでどのような動きをするのか確認できていません(笑)<br />興味深い点として、2008年6月9日以前にiPhone Developer Programに承認された人は、承認が無効になったそうです。<br /><br />また、iPhone Developer Programのサイトには新規情報として以下のPDFと解説ムービーが上がっていました。<br /><br />PDF<br /> iPhone OS 2.0 Pre-Installation Advisory (updated 7/11)<br /> Migrating from iPhone OS beta 6 (updated 7/11)<br /> Building and Distributing Multiple OS X iPhone Applications (added 7/11)<br /><br />解説ムービー<br /> Publishing on the App Store<br /><br />製品が出たのでサポートにも力が入ったと言うところでしょうか?donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-29954241275403086652008-07-03T12:54:00.003+09:002008-07-03T13:05:59.340+09:00iPhone SDKのReadMe最初にSDKのReadMeを読んだ時のメモをここに書くのを忘れていました。<br /><br />ReadMeに書かれている内容で重要なのはアンインストールです。気に入らなければ元に戻せるそうですが、今のところアンインストールしなくてはならないような状況には陥っていないので試していません。<br /><br />何がどこにインストールされるか、どのようにインストールするかなどの解説は、他のSDKと同じで特筆するようなことはないと思います。<br /><br />ただ、インストール済みのXcode 3.0とは別にインストールする方法も書かれています。ちなみに、新しいXcodeのバージョンは3.1になります。<br /><br />さて、問題のアンインストールですが、<br />起動ボリューム上のiPhone SDKとXcode developer tools をアンインストールするにはTerminalアプリケーションで以下のようにします。<br /><br />$ sudo /Developer/Library/uninstall-devtools --mode=all <br /><br />/Developer/ディレクトリとそれに必要なファイルを残し、起動ボリューム上のShared Libや3.1関連のファイルを削除するにはTerminalアプリケーションで以下のようにします。<br /><br />$ sudo /Developer/Library/uninstall-devtools --mode=systemsupport <br /><br />UNIX開発ツールを削除して/Developer/ディレクトリとそれに必要なファイルを残すには以下のようにします。<br /><br />$ sudo /Developer/Library/uninstall-devtools --mode=unixdev <br /><br />Xcodeの削除はそのままTrashに入れるか、以下の命令を使用します。<br /><br />$ sudo /Developer/Library/uninstall-devtools --mode=xcodedir<br /><br />uninstall-devtoolsのhelpによると、それぞれの引数によって以下の場所にあるアンインストールのスクリプトが実行されます。<br /><br />all:<br /> /Library/Developer/Shared/uninstall-devtools<br /> /Library/Developer/3.1/uninstall-devtools<br /> /Developer/Library/uninstall-developer-folder<br /><br />xcodedir:<br /> /Developer/Library/uninstall-developer-folder<br /><br />unixdev:<br /> /Library/Developer/Shared/uninstall-devtools<br /><br />systemsupport:<br /> /Library/Developer/Shared/uninstall-devtools<br /> /Library/Developer/3.1/uninstall-devtoolsdonihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-41085689940105837712008-07-03T11:49:00.008+09:002008-12-09T15:22:21.338+09:00ライセンスライセンスを流し読みすると以下のようなことが書かれていました。なお、ライセンスはコピー制限がかかっているので、ライセンスの部分はスクリーンショットですが、絵が縮小されているのでそれぞれをクリックして元の大きさで読んでください。<br /><br />このWeblogでライセンスに関連するのが以下の一文です。<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFCkYeu0FEPQWtz6BfLCDebYHGuV_HWb_-0XO2inbdFA4a2VFo_iI48ko2lG3Uzg4gPUUDsdTFFhs2uTxcjk7Jl_4IpKCzC4wkVJCFffDT6DG4pYcOrdZ3GJPcdZ8zGWJF3wVM_Z_QiVMp/s1600-h/Internal+use+only.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFCkYeu0FEPQWtz6BfLCDebYHGuV_HWb_-0XO2inbdFA4a2VFo_iI48ko2lG3Uzg4gPUUDsdTFFhs2uTxcjk7Jl_4IpKCzC4wkVJCFffDT6DG4pYcOrdZ3GJPcdZ8zGWJF3wVM_Z_QiVMp/s320/Internal+use+only.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5218614942349662626" /></a><br />以上の項目の中に以下の一文がありました。<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgkASxZun0TvzqMeoDsTCXpnf7ikF2NUMETBlmwjACxU9CcE9zpcfLJhWMucsUpikuTY69ZPmFWKMI-ON8BhZcPlw8Mkfh1VFBktdqdPxyhs_noIl_QdnhDvaj1QT0yR_oa8FWtSEvy_Nq/s1600-h/Permitted+Uses+and.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgkASxZun0TvzqMeoDsTCXpnf7ikF2NUMETBlmwjACxU9CcE9zpcfLJhWMucsUpikuTY69ZPmFWKMI-ON8BhZcPlw8Mkfh1VFBktdqdPxyhs_noIl_QdnhDvaj1QT0yR_oa8FWtSEvy_Nq/s320/Permitted+Uses+and.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5218614943442428258" /></a><br />この文章は、Authorized User間の情報共有は認められていますので、iPhone Developer Programに参加している人だけに公開しているこのWeblogはライセンスに反しない、と考えて良さそうです。<br /><br />ところで、こんな一文がライセンスに入っていました。<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZt3es3VSJzTvBH7-CBVo80ydOitWHwUVNrQBX1ORpKkcJEdHtsqlYDiNJzXkfTImcMHm30JRAJm8xtGYWXIMc7HAKVESV6NdyELJQ6FEfNwsrDgvrxvyiR_9aNCso9cOO9CbK6XZamN6b/s1600-h/User+Interface.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZt3es3VSJzTvBH7-CBVo80ydOitWHwUVNrQBX1ORpKkcJEdHtsqlYDiNJzXkfTImcMHm30JRAJm8xtGYWXIMc7HAKVESV6NdyELJQ6FEfNwsrDgvrxvyiR_9aNCso9cOO9CbK6XZamN6b/s320/User+Interface.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5218614949588711138" /></a><br />Human Interface Guidelineに反するアプリケーションはライセンス違反で訴えられますね(笑)<br /><br />正直言って、Macintosh上で変なユーザーインターフェースを使ったアプリケーションを見るとイライラする性分(苦笑)なので、利用者としてはこの一文は嬉しい(大笑)donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-43087668705014733802008-07-03T10:08:00.002+09:002008-07-05T12:58:10.578+09:00Sample Code for iPhoneSample Code for iPhone<br />http://developer.apple.com/iphone/samples/index.action<br /><br />ようやくサンプルコードです。サンプルコードは解説に利用されたMoveMeを除くと以下の6つです。<br /><br />> HelloWorld<br /> 問題なくビルドできました。テキストフィールドに文字を入力するとHelloWorldの替わりに表示します。<br /><br />加速度検出器を利用したものが3つもあります。加速度検出器というとMacBookがハードディスクのクラッシュを防ぐために搭載した加速度検出器です。もしかするとiPhoneシミュレータが使っているかもしれない!と期待して試したところ・・・ダメでした(笑)そこまでは凝っていないようです。残念!・・・と言うことで以下の三つはビルドできますが、iPhoneシミュレータでは検証できません。<br />> AccelerometerGraph<br /> 加速度検出器の利用方法を示すもので、リアルタイムで加速度検出器の出力をグラフィカルに見せるそうです。<br />> BubbleLevel<br /> 加速度検出器で方向の情報を利用する方法を示すもので、これは水準器ですね。<br />> CrashLanding<br /> OpenGLを元にしたゲームで加速度検出器も利用しています。<br /><br />> UICatalog<br /> UIKitフレームワークがもつユーザインターフェース用の部品を並べたもので、そのままコピー&ペーストできるそうです。これは、後々まで便利に使えそうです。<br /><br />> SpeakHere<br /> Audio Tookboxフレームワークを録音機として利用する方法を示すものです。ビルドするとiPhoneシミュレータでも録音できました。donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-6614975740929037752008-07-02T18:09:00.002+09:002008-07-03T12:58:58.700+09:00Signing Code For iPhone DevelopmentSigning Code For iPhone Development<br /><br />http://developer.apple.com/iphone/gettingstarted/docs/signingcodeforiphonedev.action<br /><br />FAQは問題が起きたときに読むとして(笑)最後に色々と噂のこのページを読んでメモを取りたいと思います・・・とは言うものの肝心のiPhoneもiPod touchも手元にないので確認ができません(苦笑)<br /><br />開発システムを走らせる前と、配布する前にAppleに依頼する前に、デジタル サインを求めているそうです。さらに配布する前にAppleは自身のデジタル サインを加えているそうです。<br /><br />■ Digital Signatures and Signing Identities<br />すべてのiPhoneのアプリケーションは証明発行によるデジタル サインが必要で、証明はAppleにiPhone developerとして登録されることで発行されます。この証明発行によりアプリケーションの開発者を識別でき、アプリケーションが改ざんされていないことを確認できる・・・と書いているのですが、イタチごっこにならないように祈るのみです。ただ、この文章のiPhone developerはFreeの人も含まれるような感じがします。<br /><br />証明発行には公開鍵 秘密鍵方式だそうです。チョットここは用語の利用が気になるので英単語混じりで書くと・・・private鍵はsigningプロセスで使用され、public鍵はsignatureを確認するために使用されます。public鍵はsigning certificateに保管されています。private鍵は別に保管されています。このcertificateと関連のprivate鍵の組み合わせはdigital identityまたはsigning identityと呼ばれています・・・ん〜〜日本語の公開鍵 秘密鍵方式で使われている用語との関係がチョット分かりにくい(笑)まあ、公開鍵 秘密鍵方式はすでに知っていることなので気にせずに先に進みましょう(大笑)<br /><br />iPhone Developer ProgramのProgram Portalを使用して許可申請するCertificate Signing Request (CSR)を作成するために、Keychain Accessユーティリティ内のCertificate Assistantを使用するそうです。申請が許可されるとcertificateファイルをダウンロードして、Keychainに登録するためにダブルクリックします・・・で、ここからがチョット書いていることが分からないー>この手続きでハッキリして い な い のはCSRを生成するためにCertificate Assistantユーティリティを使うときで、それは自動的にpublic鍵とprivate鍵の組み合わせを生成します・・・とちゅうの「それ」が何を差すのか分からないし、何がハッキリしないのかも分からない(苦笑)まあいずれにせよ・・・Appleに送られる承認要求の中にpublic鍵が入り、private鍵はkeychainの中に入っているそうだ。<br /><br />署名されたCertificateをダウンロードしてインストールするときに、Keychain Accessユーティリティがprivate鍵と関連づけ、証明承認が生成される、としています。Certificateとそのprivate鍵を見るには、Keychain Accessユーティリティを開いて、CategoryペインのMy Certificatesを開きます、としてその図が示されています。<br /><br />用意した装置に署名済みアプリケーションをインストールするときに、アプリケーションが署名されており、サイン後に変更されていないことを確かめるために、iPhone OSが署名を確認します。もし、署名が無効だったり、コードが署名されていないと、iPhone OSはアプリケーションを起動しません、と書いていますが、開発したコードに署名するにはどうすれば良いのか・・・良くわかりません。<br /><br />同様に、Appleに承認を得て配布するためにアプリケーションを送るときに、signing identityを使用してアプリケーションにサイン承認して、アプリケーションと共にSigning Certificateを送ります。この時にprivate鍵をAppleに送るなと書いていますが、やる人はたくさんいるだろうな(笑)Appleは登録された開発者から送られたコードであり、改変されていないことをサインを元に確認し、アプリケーションにApple自身の承認をします。これで、開発機以外のiPhoneやiPod touchで実行できます。この方法で利用者はiTunesからダウンロードしたアプリケーションが登録開発者によって書かれたもので、改変されていないことを確信できます。<br /><br />■ Copying a Signing Identity To Another Computer<br />複数のコンピュータで開発する場合には、すべてのコンピュータにsigning identityをいれます。これはProgram Portalからダウンロードしたsigning certificateファイルはprivate鍵を含んでいないため、このファイルをコピーしても利用できません。<br />Keychain AccessユーティリティのFileメニューにあるExport Itemsを選択して、certificateとprivate鍵をPersonal Information Exchange (.p12)ファイルとしてExportし、他のコンピュータにこのファイルをコピーします。ファイルをダブルクリックしてcertificateとprivate鍵をKeychainにインストールします。<br /><br />■ Keeping Your Private Key Safe and Secure<br />このシステムはsigning identity(特にprivate鍵)が安全に保管されている限りは大丈夫です。しかし、これが第三者にコピーされると悪用されます。このため、物理的な安全策をとるようにお進めします・・・う〜ん、この意味ではMacBook (Pro)は危険だな。<br /><br />このあと他の人と一緒に仕事をしているときの注意書きがあります。<br /><br />Keychainの初期設定ではそのパスワードはログインのパスワードと同じだそうで、コンピュータにログインしていると解錠されてしまうそうです。これは別パスワードを設定しないとダメですね。<br /><br />別パスワードを設定するにはKeychain Accessユーティリティで、Edit > Change Passwordを選択します。Change Passwordダイアログのロック アイコンをクリックしてPassword Assistantで、パスワードの安全性や推薦パスワードを調べます。<br /><br />使用していないときにKeychainを施錠するには、Keychain AccessユーティリティでEdit > Change Settings for Keychainを選択し、二つのLockチェックボックスをonにするそうです。<br /><br />他の人がコンピュータを使うことがないように執拗に書いています。これは万が一クラックされてAppleが控訴されたときの対策ですね。米国ではこれぐらい書いていないと、悪徳弁護士にごっそり持って行かれます(苦笑)<br /><br />さらに、他の安全な場所にあるコンピュータにバックアップしたり、暗号化してCDに焼いたり、Personal Information Exchange (.p12)ファイルのフォームで暗号ディスクイメージファイルに入れるなどを推薦しています。さらに、本当に安全かを確かめろと書いています。いやはや<br /><br />■ Where to Start<br />signing identityを入手してインストールする方法は、iPhone Developer ProgramのWebサイトにあるProgram Portalに詳細が書かれています。iPhone DevCenterページの上右端にあるProgram Portalをクリックすると行ける・・・と書いていますが、そのような場所は見あたりません(苦笑)<br /><br />詳細は"Security Overview"と"Code Signing Guide"を参照するように書いています。donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-15921954950694557812008-07-02T11:24:00.001+09:002008-07-03T12:59:05.202+09:00iPhone OS for Cocoa DevelopersiPhone OS for Cocoa Developers<br />http://developer.apple.com/iphone/gettingstarted/docs/iphoneosforcocoadevelopers.action<br /><br />この資料はCocoaで開発している人向けの資料です。iPhone OSの開発とCocoaの主な違いをここに列挙しています。<br /><br />■ Changes to Foundation Framework<br />Foundationフレームワークはvalue objects、strings、collections、thread managementなどが入っているのですが、全部がiPhone OSに入っているわけではないとしています。<br /><br />Table 1がその主なものと、入れなかった理由と代案の表だそうです。詳細は"Foundation Framework Reference."の"The Foundation Framework"を参照しろと書いています。<br /><br />■ UIKit Versus AppKit<br />UIKitフレームワークはAppKitフレームワークの手法を元に書かれていますが、まったく異なるプラットフォーム向けの異なる用途を前提にしています。Cocoaのシンボル名をUIKitの近い名前に入れ替えたからと行って動くものではありません。二つのフレームワークは構造も挙動も異なるので、それに合わせて修正と書き換えをして・・・等々、当前のことが書かれています。<br /><br />Table 2には違いがリストアップされています。<br /><br />iPhoneではCore Animationレイヤの上に描画されているそうです。Core Animationレイヤとやり取りする時は、レイヤのツリー構造を直接制御するときやViewレベルで提供されてない機能を使う時だそうです。<br /><br />概念的にはMac OS Xと同様に、iPhoneもWindowとViewは同じ構造だけど、実装は異なるようです。Mac OS XではNSWindowクラスはNSResponderのサブクラスで、iPhone OSではUIWindowクラスはUIViewのサブクラスだそうです。これはたしかビデオでも言っていたような気がします。この違いにより、UIKitのウィンドウはCore Animationレイヤを持っていて、アクセラレーションの描画ができるそうです。<br /><br />Mac OS XとiPhone OSの他の違いとして、iPhone OSではウィンドウが一つだけという点があると書いています。異なる内容を描画するにはViewを変更するそうです。<br /><br />ウィンドウが一つなのに、ウィンドウを設けている理由は、アラートやステータスウィンドウなどをアプリケションのウィンドウの上に置くためだそうです。<br /><br />■ Changes to Other Frameworks<br />Table 3はiPhone OSとMac OS Xで共通になっている上記以外のフレームワークから重要な違いをリストアップしています。<br /><br />■ OpenGL Notes<br />私がOpenGL ESを使うことはまず内のでパス(笑)<br /><br />■ Coordinate Systems<br />Mac OS XとiPhone OSでは座標系が異なると書いています。iPhone OSでは左上が(0,0)で、右と下に向かって座標の数値が多きなくなります。<br /><br />■ Memory Management<br />iPhone OSではmemory-managed modelでメモリの確保、解放、自動開放オブジェクトを利用し、ガベージコレクションはしていない、この点は重要ですね。初期のMS-DOSや組込を経験している人であれば当たり前ですが、WindowsやMacしか知らない人には面倒です。とはいえ、MS-DOSしか知らない人はObjective-Cは面倒(笑)<br /><br />ループでautoreleaseのオブジェクトをアロケートしたときにはループ内で直接オブジェクトを解放するか、autorelease poolを生成して定期的に解放するように書いています。これをやらないとメモリ不足でiPhone OSが自動再起動(笑)と言うことですね。donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-85046857172277108762008-07-02T08:17:00.002+09:002008-07-03T12:59:11.555+09:00Darwin書き忘れていましたがiPhone SDKで使われているgccやgdbなどのソースが以下のサイトで公開されています。<br /><br />http://www.opensource.apple.com/darwinsource/<br /><br />2008/07/02現在の最新版iPhone SDK Beta 8は以下の場所にあります。<br /><br />http://www.opensource.apple.com/darwinsource/iPhoneSDKBeta8/<br /><br />SDK Beta 8で公開されているファイルは以下の四つです。<br /> cctools-667.8.0<br /> gcc-5484<br /> gdb-961<br /> gnumake-119donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-4078529594286206772008-07-01T21:16:00.003+09:002008-07-03T12:59:19.502+09:00Creating an iPhone Application目次1ページを読むのに時間がかかったので、後から追いかけやすいように目次を付けました。<br /><br /><a href="http://iphone-sdk-j.blogspot.com/2008/06/creating-iphone-application.html">その1</a><br /><span style="font-family:serif;">■</span> Examining the MoveMe Sample Project<br /><span style="font-family:serif;">■</span> Building the MoveMe Application<br /><span style="font-family:serif;">■</span> A Word About Memory Management<br /><span style="font-family:serif;">■</span> Initializing the MoveMe Application<br /><br /><a href="http://iphone-sdk-j.blogspot.com/2008/06/creating-iphone-application_26.html">その2</a><br /><span style="font-family:serif;">■</span> Defining the Application Delegate<br /><span style="font-family:serif;">■</span> Creating the Application Window<br /><br /><a href="http://iphone-sdk-j.blogspot.com/2008/06/creating-iphone-application_28.html">その3</a><br /><span style="font-family:serif;">■</span> Drawing the Welcome Button<br /><span style="font-family:serif;">■</span> Handling Touch Events<br /><br /><a href="http://iphone-sdk-j.blogspot.com/2008/07/creating-iphone-application.html">その4</a><br /><span style="font-family:serif;">■</span> Animating the Button's Movement<br /><span style="font-family:serif;">■</span> Finishing the Application<br /><br /><a href="http://iphone-sdk-j.blogspot.com/2008/07/creating-iphone-application_01.html">その5</a><br /><span style="font-family:serif;">■</span> Taking Your Applications Further<br />>Tracking Orientation and Motion Using the Accelerometers<br />>Accessing the User's Contacts<br />>Getting the User's Current Location<br />>Playing Audio and Video<br />>Taking Pictures with the Built-in Cameradonihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-43728201538729078482008-07-01T21:05:00.003+09:002008-07-03T13:00:40.617+09:00Creating an iPhone Applicationその5Creating an iPhone Application<br />http://developer.apple.com/iphone/gettingstarted/docs/creatingiphoneapps.action<br /><br />まだまた、"Creating an iPhone Application"のメモが続きます(苦笑)<br />他のメモと同様に翻訳じゃないのでたくさん抜けていますし、たくさん間違っているハズですが、原文を読むときの参考にはなると思います。<br /><br />■ Taking Your Applications Further<br />この項目が最後で、これ以降にも項目はありますが文字がわずかに小さく小項目になっています。見た目が命のAppleにしては珍しく分かりにくいレイアウトです(笑)<br /><br />デバイスの向きに合わせてViewを変えるなどのiPhone独自の機能に関しての解説です。ハードウェアの利用方法をiPhoneの既存アプリケーションに合わせて統一感を持たせるようにAppleは求めているようです。<br /><br />>Tracking Orientation and Motion Using the Accelerometers<br />加速度検出器の話しですが、XYZのどれがどの方向に割り当てられているか注意が必要です。加速度検出は重力検出として利用することで装置が縦向きか横向きかなどを検出できます。<br /><br />装置の向きが変わるとシステムがアプリケーションに知らせますので、向きに合わせてViewを縦向きや横向きなどに変更できます。UIViewControllerクラスが向きの変化に合わせて、インタフェースを回転させたり、Viewの位置を自動修正するなどの機能を提供します。<br /><br />加速度検出器の生データを見るときはUIKitのUIAccelerometerオブジェクトを使用します。UIAccelerometerは指定したタイミングでデータを得ることができます。また、前後に振っているなどの動きや向きを知ることもできます。<br /><br />詳細は"iPhone OS Programming Guide"の"Accessing Accelerometer Events"の項目を見ろと書かれています。<br /><br />>Accessing the User's Contacts<br />ユーザのアドレス帳を利用できます。Phone、Mail、SMS(Short Message Service)Textなどと同じ容易にこのサービスを利用できます。<br /><br />iPhone OSはアドレス帳に直接、あるいは間接的にフィルタをかけるなどの方法でアクセスできます。連絡データを取り出したり生成したりするシステム インタフェースが提供されています。このインタフェースを利用することにより、システムと似た感触をもったアプリケーションを開発できます。<br /><br />詳細は"Address Book Framework Reference"と"Address Book UI Framework Reference"を見ろと書いています。<br /><br />>Getting the User's Current Location<br />iPhone OSが走っている装置はユーザの動きに合わせます。ユーザの現在位置に合わせた情報を元に、インターネットでどこでも仕事ができます。Core Locationフレームワークにより、現在位置に近くの喫茶店のリストを提供することができます。<br /><br />Core Locationフレームワークは携帯電話のアンテナやWi-Fiホットスポット(もちろんGPSも)の信号をモニタして三角測量しています。アプリケションからこのフレームワークを利用することで、現在位置を知ったり、位置が変わったことを知ることができます。<br /><br />詳細は"iPhone OS Programming Guide"の"Getting the User's Current Location"の項目を見ろと書かれています。<br /><br />>Playing Audio and Video<br />iPhone OSはCore AudioとOpenALフレームワークを通してオーディオを利用できます。さらにMedia Playerフレームワークを使用してビデオ再生もできます。<br />Core Audioでは再生、録音、音声処理、ストリーム オーディオ再生のインタフェースを提供します。簡単な音声エフェクトや複数音声再生、合成、音場再生処理、バイブレーションに利用できるそうです。<br /><br />Media Playerフレームワークはビデオをフルスクリーン(だけ)で再生します。さまざまなフォーマットのビデオ再生ができると書いています。再生コントロールの表示や再生アスペクト比なども設定できるそうで、ゲームに使えるとしています。この文章ではゲームで利用できるという内容が多いですね。<br /><br />例によって、詳細は"iPhone OS Programming Guide"の"Audio and Video Technologies"を見ろと書いています。<br /><br />> Taking Pictures with the Built-in Camera<br />CameraアプリケションはUIKitフレームワークのUIImagePickerControllerクラスを経由してiPhoneで写真を撮影して、他の写真と共にライブラリに追加できるとしていますが、動画のことが書かれていません。Pickerインタフェースを表示して、Pickerコントローラがユーザとのやり取りを処理して、イメージを返します。<br /><br />詳細は"iPhone OS Programming Guide"の"Taking Pictures with the Camera"と"Picking a Photo from the Photo Library"の項目を見ろと書いています。<br /><br />ようやく、一ページを読み終えました(笑)donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-45485052838498357292008-07-01T21:04:00.002+09:002008-07-03T13:00:46.659+09:00Creating an iPhone Applicationその4Creating an iPhone Application<br />http://developer.apple.com/iphone/gettingstarted/docs/creatingiphoneapps.action<br /><br />"Creating an iPhone Applicationその3"のメモの続きです。1ページを読むのに長々と続いていますが、他のメモと同様に翻訳じゃないのでたくさん抜けている点も、たくさん間違っている点も、原文を読むときの参考にはなると思う点も同じです。<br /><br />■ Animating the Button's Movement<br />まずはアニメーションによる情報提供の重要性を説いています。素早い理解を得る言う意味でアニメーションのインタフェースを捉えると、iPhoneは今までのPDAやPCとは一線を画していると言えそうです。最初にMacintoshを見たときの驚きに近いものを感じるのはこの点かもしれません。ここでは例として画面の切り替えアニメーションが上下左右のどちらに行くかで、情報の詳しさを表していると解説しています。<br /><br />UIKitにはアニメーションが組込済みなので、アプリケーションMoveMeではWelcomeボタンのアニメーションに利用でき、基本的な動作は以下の通り、<br /><br />1.アニメーション関連ViewのbeginAnimations:context:メソッドを呼び出し<br />2.アニメーションのプロパティ設定<br />3.アニメーションを開始するViewのcommitAnimationsメソッドを呼び出し<br /><br />Listing 8はWelcomeボタンが最初にタッチされたときの動きをするために使用されたコードです。アニメーションの時間設定を大きさの設定をしています。アニメーションが終了するとアニメーションdelegateのgrowAnimationDidStop:finished:context:メソッドがボタンを少し小さくして、プラカードを指の位置に移動させます。<br /><br />詳細は"iPhone OS Programming Guide"の"Applying Core Animation Effects"の項目を見ろと書かれています。<br /><br />■ Finishing the Application<br />ここはInfo.plistの話しです。Info.plistはKEXTなどでも悩ましい存在です(苦笑)<br /><br />Listing 9がアプリケーションMoveMeのInfo.plistですが、ベータ8のSDKでは表形式で表示されています。この表形式は新しいProperty List Editorと同じです。XMLに特化したテキストエディタであった旧版と比べて、Xcodeのビルド設定に近い感じになっています。Info.plistには実行ファイルの名前、アイコンのファイル名前、システムがアプリケーションを識別するための名前などが入りますが、iPhone独自のものとしてステータスバー表示の有無を決めるUIStatusBarHiddenキーがあります。プログラム内からもこの設定はできるそうですが、アプリケーションがらうんちした後で消えるので奇妙な感じになると書いています。<br /><br />詳細は"iPhone OS Programming Guide"の"The Information Property List"の項目を見ろと書いています。<br /><br />・・・と、ここまで基本だそうで、これ以降の項目ではiPhoneらしい機能を紹介するそうです。donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-48922920894031884692008-06-28T10:20:00.003+09:002008-06-28T10:29:57.722+09:00iPhone SDK β8iPhone SDKのサイトを見るとβ8が上がっていました。今試しているAppleのサンプルコードとどの程度互換性があるか気になります。アンインストールの方法は書いてはいるものの、面倒なことに替わりありません(笑)<br /><br />readmeによると、このベータ8はiPhone 2.0の最終版と互換性があり、App Storeに登録するiPhone OSアプリケーションに使うように書いています。登録するためにはiPhone Developer Programの会員になるように、とも書いています。あとは、例によってインストールとアンインストールの注意書きです。donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0tag:blogger.com,1999:blog-8964256150559461913.post-66868091981615445622008-06-28T10:16:00.003+09:002008-07-03T13:00:54.689+09:00Creating an iPhone Applicationその3Creating an iPhone Application<br />http://developer.apple.com/iphone/gettingstarted/docs/creatingiphoneapps.action<br /><br />"Creating an iPhone Applicationその2"のメモの続きです。他のメモと同様に翻訳じゃないのでたくさん抜けていますし、たくさん間違っているハズですが、原文を読むときの参考にはなると思います。<br /><br />■ Drawing the Welcome Button<br />UIKitが提供している標準的なViewは単純な内容であれば変更なしに表示できて、イメージならUIImageView、文字列ならUILabelが使えます。アプリケーションMoveMeだと、UIViewオブジェクトのbackgroundColorプロパティで背景色を初期化メソッドで描画しています。backgroundColorプロパティはInterface BuilderでnibファイルMoveMeView.xib内のMoveMeViewを作るときにInspectorウィンドウのAttributeタブで設定しています。複雑な背景が必要なときにはUIKitの棒が機能か、QuartzやOpenGL ESを利用できます。<br /><br />アプリケーションMoveMeのPlacardViewクラスはWelcomeボタンの描画とスクリーン上の位置管理をします。PlacardViewクラスはすべてのプロセスを紹介するために、あえて前述のUIImageViewやUILabelを使わずに描画しています。描画はPlacardView.mファイル内のdrawRect:メソッドで行われています。<br /><br />drawRect:メソッドが呼び出された時点で、描画のための環境は利用可能になっていますので、必要な描画命令を発効するだけです。PlacardViewクラスの描画内容はPlacard.pngで描かれたバックグランドとテキストで、テキストは逐次変更することが出来ます・・・とここでPlacard.pngの描画が気になって調べてみると、PlacardView.mファイル内でinitメソッドでPlacard.pngイメージ ファイルを読み込み、placardImageオブジェクトに入れてdrawRect内でdorawATPointメソッドで位置を指定して描画していて、確かに描画の手順が詳しく分かるようになっています・・・解説文に戻ると、処理の手順が示されています。<br /><br />1.現在のView座標0にボタンの背景イメージを描画しています。この時にViewの大きさはイメージに合うようになっていて、ボタン全体が描画されています。<br /><br />2.ボタンの中央に来るようにWelcom文字列の位置を計算します。この文字列はさまざまに変わるので、毎回計算しなくてはなりません。<br /><br />3.描画色を黒に設定します。([[UIColor blackColor] set]のことを言っているのであろうが、この行をコメントアウトしても結果は変わりません。おそらく初期値が黒なのでしょう)<br /><br />4.文字列をずらせて描画<br /><br />5.描画色を白に設定します。<br /><br />4.文字列を描画します。<br /><br />Listing 4では、placardImageメンバ変数がボタン背景の入ったUIImageオブジェクトを保持し、currentDisplayStringメンバ変数が文字列の入ったNSStringオブジェクトを保持しています。イメージを描画した後で、文字列の位置を計算しtextSizeメンバ変数にいれます。文字列は陰を付けるために黒と白で二回描画されています。描画はNSStringのメソッドで行なわれています。<br /><br />前述のように複雑な描画をするときにはQuartzかOpenGL ESが利用できますが、QuartzはUIKitと共にベクトル パス、イメージ、PDFなどを描画できます。QuartzとUIKitは同じ描画環境ですので、drawRect:メソッドから呼び出せます。<br /><br />OpenGL ESは2Dや3Dの描画ができますが、drawRect:メソッドは利用できません。ViewはOpenGL ESの表面描画に利用されます。表面描画に利用するオブジェクトの選択や描画頻度は自由に決められます。<br /><br />詳細は"iPhone OS Programming Guide"の"Graphics and Drawing"の項目を見ろと書かれています。<br /><br />■ Handling Touch Events<br />マルチタッチ インタフェースの処理ですが、とうぜん既存のマウス処理とは異なります。2番目以降の指が触れる度にタッチ イベントが発行されます。また、画面にふれているそれぞれの指が移動しても、指が画面から離れてもタッチ イベントが発行されます。<br /><br />一本の指で操作後にもう一本の指が追加されることは想定しておらず、この単純化でジェスチャを識別しやすくしています。システムはswipesなどの共通のジェスチャを識別する方法を手今日していますが、独自に複雑なジェスチャ識別をさせることもできます。新しいタッチイベントが生成されたときに、各指がタッチしているか、離れたかなどの情報も提供されます。これにより、新しいタッチイベントが発生する度に、各指の動きを追跡できます。Figure 4に示すようなピンチ クローズやピンチ オープンのジェスチャのイベントが発生すると、Viewがサポートしている拡大縮小としてズームのレベルを変更できます。<br /><br />システムはUIResponderクラスをインスタンスしたオブジェクトにイベントを配信します。アプリケーションMoveMeでは二つのViewクラスを利用していますが、MoveMeViewクラスがイベントを処理します。このクラスはタップがWelcomeボタンの内側で発生したのか外で発生したのかの識別をUIResponderのメソッドをオーバライドすることで実現しています。<br /><br />単純にするためにアプリケーションMoveMeでは最初にタッチした指だけを追跡します。UIViewクラスが初期値でマルチタッチ イベントOFFの状態であることを利用しています。マルチタッチ イベントがOFFだと、システムは最初にタッチした指が生成するイベントのみを配信します。マルチタッチのイベントが必要な場合にはUIViewクラスのsetMultipleTouchEnabled:メソッドを利用します。<br /><br />イベント処理の一貫として、MoveMeViewクラスは以下の手順を踏みます。<br /><br />1.最初のタッチイベントが届くと、発生した場所を調べます。<br /> ・ボタン外でのダブルタップ - 文字列の変更<br /> ・ボタン内でのシングルタップ - ボタンの中央を指の下に移動し、ボタンを拡大してアニメーションを初期化<br /> ・他のタッチは無視<br /><br />2.ボタン内をタッチしている指が移動すると、新しい位置にボタンの位置を変更します。<br /><br />3.ボタン内をタッチしている指が離れるとボタンを中央に戻すアニメーションを始めます。<br /><br />Listing 5ではMoveMeView.mファイル内のMoveMeView用touchesBegan:withEventメソッドを示しています。touchesBegan:withEventメソッドはUIResponder.hで宣言されています。指が最初にふれるとシステムはこのメソッドを呼び出します。このメソッドはすべてのタッチを取得するので、その中から一つだけを取り出します。UITouchオブジェクトはMoveMeViewオブジェクトとPlacardViewオブジェクトのいずれでタッチイベントが発生したかと、その回数を調べるために使用されます。もし、ボタン外でダブルタッチが発生するとtouchesBegan:withEventメソッドはWelcomeボタンのもじれとを次の文字に入れ替えるためにsetupNextDisplayString:メソッドを呼び出します。また、ボタン内の場合にはボタンを拡大してタッチされた場所を追跡するためにanimateFirstTouchAtPoint:メソッドを呼び出します。他のイベントは無視されます。<br /><br />Listing 6ではMoveMeViewクラスのtouchesMoved:withEvent:メソッドを示しています。指が触れて移動したときにシステムはこのメソッドを呼び出します。最初に指が触れた場所に関係なくこのメソッドは呼び出されますので、アプリケーションMoveMeではボタン内でイベントが発生しているかを調べ、その場合にはPlacardViewオブジェクトの中心を設定しなおし再描画しています。<br /><br />Listing 7 ではtouchesEnded:withEvent:メソッドを示しており、指が離れるとシステムはこのメソッドを呼び出します。アプリケーションMoveMeではボタンを画面中央に戻すアニメーションを実行します。<br /><br />アプリケーションのイベント取扱を簡素化するために、ボタンが元に戻るアニメーション期間中はViewのtouchesEnded:withEvent: メソッドを不可にしています。もし、不可にしないと、各イベント処理メソッドはボタンがアニメーション中であるかと、アニメーションのキャンセルを識別するコードが必要なります・・・などなど説明が書かれています。ボタンが元の位置に戻ると、MoveMeViewクラスのanimationDidStop:finished:メソッドがユーザからの入力を可能にします。<br /><br />詳細は"iPhone OS Programming Guide"の "Event Handling"の項目を見ろと書いています。<br /><br />・・・と、このページは意外と長くて、まだまだ続きます(笑)donihttp://www.blogger.com/profile/10650818486774203958noreply@blogger.com0