Your SlideShare is downloading. ×

iPhone develop for Beginner

601

Published on

iPhone勉強会資料その1です

iPhone勉強会資料その1です

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
601
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. iPhoneアプリ開発入門 ∼簡単なiPhoneアプリを作ってみよう∼13年3月17日日曜日iPhoneアプリ開発の入門ということで勉強会を開催させていただくことになりました。3時間という短い時間ですが、よろしくお願いいたします。
  • 2. 今日の目標 iPhoneアプリ開発の楽しさを知っ ていただく iPhoneアプリの本を読めるように なる 好評だったらシリーズ化(できたらいいな・・・)13年3月17日日曜日本日の目標は、iPhoneアプリ開発の楽しさを知っていただくこととiPhoneアプリの本が抵抗なく読めるようになることです。iPhoneアプリ開発に興味はあるけれど、いまいち取っ付きにくいと感じているのではないでしょうか。本日一緒に勉強することで少しでも抵抗がなくなればと思います。好評だったらシリーズ化したいなと思っています。。。
  • 3. アジェンダ iPhoneアプリ開発に必要なもの お決まりのHelloWorld 簡単なアプリを作ってみる13年3月17日日曜日本日は、まずiPhoneアプリ開発に必要な環境や知識を少し説明し、HelloWorldアプリを作成しながら、基本的なXCodeの使い方、実機転送の仕方の説明をいたします。実際に手を動かしながら行うのが一番身に付くので、一緒に手を動かしましょう。Macが人数分なくて申し訳ないのですが、交代で使ってください。
  • 4. どうやって開発しているの? Objective-Cという言語とXcodeというIDEを 使用して開発 言語的な敷居が高いので、Unity,Titaniumな ど他の言語で開発できるフレームワークもあ る(ここではObjective-Cで開発する前提で す)13年3月17日日曜日iPhoneアプリをどうやって開発しているのかを説明いたします。iPhoneアプリはObjective-Cという言語とXcodeというIDEを使って開発します。Javaとかに慣れ親しんでいる開発者にとってはObjective-Cという言語は敷居が高いので(今はARCがあるのでメモリ管理が楽になりましたが、Javaのようなガーベジコレクションがないのです)UnityとかTitaniumといったほかの言語(JavaScript)で開発できるフレームワークもあります。ですが、せっかくなのでここではObjective-Cで開発します。
  • 5. Objective-Cって何者? C言語をベースにSmalltalk型のオブジェクト 指向機能を持たせた上位互換言語(Wikipedia より)→そもそもMac向け C言語はそのまま使用することが出来る 構文など実践的なことは後ほどやりますの で、ご安心を・・。13年3月17日日曜日ちょっと敷居が高いといわれているObjective-Cが何者かということについて軽く説明いたします。Objective-CはC言語をベースにして、オブジェクト指向機能を持たせたものです。こういうとC++と変わらないような気もしますが、Mac向けに特化しているのが特徴です。C言語をベースにしているということもあり、中でそのままC言語を使うことができます。
  • 6. 必要なもの Mac Xcode(Macにインストールしてますか?) 実機転送およびAppStoreへの登録をするに は、AppleDeveloperへの登録(年間99ド ル)が必要13年3月17日日曜日開発に必要なものを説明します。開発にはMacを使います。なので、本格的に開発するというのであればMacを用意してください。Mac上でXcodeというIDEを使います。Xcode自体はフリーでダウンロードできますが、AppleDeveloperに登録して年間99ドルを払うと、β版を入手できます。あと、実機転送やAppStoreへの登録(公開する)ためにはAppleDeveloperへの登録が必要なので、注意してください。本日は私が登録しているIDを使って実機転送をしてみます。
  • 7. では、お決まりの・・・ HelloWorldを作成してみます。13年3月17日日曜日あまりぐだぐだと説明しても退屈なので、お決まりのHelloWorldを作成してみましょう。
  • 8. Xcodeを起動して、新 規プロジェクトを作成す る(ここでは SingleViewApplication を選択してください)13年3月17日日曜日まず、Xcodeを起動してください。FinderのアプリケーションというところにXcodeと書かれているアイコンがあるので、クリックしてください。起動したら、「Create new Xcode Project」をクリックして新しいプロジェクトを作成しましょう。いくつか種類があるのですが、ここでは「Simple View Applications」を選択してください。
  • 9. プロジェクト名を記載して、Createをクリッ クしてください。 Devices:iPhone,iPad,Universalの3つから選ぶ(ここではiPhone) UseStoryboards:StoryBoardをつかうかどうか(ここではチェックを入れる) Use AutomaticReferenceCounting:ARCをつかうかどうか(ここではチェックを入れ る)13年3月17日日曜日次の画面でプロダクト名などを記載しますProduct Name : アプリ名です。好きな名前を入力してください。Organization Name:作成者の名前です。Company Identifier:会社名などの組織名です。これも好きなものを入力してください。BundleName:Company Identifier+ProductNameでできた、iPhoneアプリを一意に決めるものです。プッシュ通信を受けるときなどに使います。Class Prefix:クラス名の前に付加される文字列です。ここでは入力しなくてもかまいません。Devices:対象となるデバイスです。iPhone・iPadを選択するとiPhone用、iPad用のアプリを作成できます。Universalを選ぶとiPhoneのときはiPhone向け、iPadのときはiPad向けの表示ができます。(一つのアプリで使い分けられます)UseStoryBoard:パーツの配置を行う際に、StoryBoardを使うかどうかを選択できます。StoryBoardはiOS5から入った機能なので、古いOSをサポートする場合は使いません。ここでチェックを入れないとxibファイルというファイルが作成されます。(古い本だと書かれていないかもです)Use Automatic Reference Counting:リファレンスカウンタを自動的に行うかどうかを選択できます。これもIOS5から入った機能です。これにチェックを入れないと、確保したメモリを自分で解放することになります。(解放しないと、メモリリークが発生します)ここでは、チェックを入れます。Include Unit Tests:UnitTestを行うことができます。とりあえずここでは使いません。
  • 10. このような画面が表示されたでしょうか? ファイルの内容を表示 ファイル名を表示する する13年3月17日日曜日プロジェクトを作成するとこのような画面が表示されます。EclipseとかのIDEを使っていればだいたいにたようなものだと思います。左側にファイル名、真ん中にファイルの内容が表示されます。右側はソースコードを編集しているときにはあまり使わないのですが、StoryBoardで部品の情報を編集するのに使います。だいたいイメージがつかめるかと思いますが、上の部分にあるRunというアイコンをクリックするとソースコードの実行を行うことができます。
  • 11. いったんこの状態で「Run」をクリックして みましょう こんな風に何もない画面が表示 されましたか?13年3月17日日曜日では、この状態で実行してみましょう。iPhoneシミュレータが起動されて、真っ白な画面が表示されたと思います。XcodeにはiPhone/iPadむけシミュレータが用意されており、Mac上で挙動を確認することができます。ただし、シミュレータでは確認できない機能(電話とか、カメラとか)もありますし、当然ながらiPhone端末よりもMacの方がスペックが高いので、最終的な確認は実機で行うようにしましょう。シミュレータではさくさく動いていたのに、実機に転送してみたらもっさりしていたなんてことはよくあります。
  • 12. さすがにそれだとつまらないので、ボタンを押したらHelloWorldを表示させるようにします。 MainStoryBoard.storyboardを選択してください。StoryBoardでパーツの配置ができます。13年3月17日日曜日さすがに何も表示されないアプリではつまらないので、ボタンを表示したらHelloWorldを表示させるようにしましょう。ONボタンを押したらHelloWorldを表示し、OFFボタンを押したら表示を消すという単純なアプリを作ってみることにします。左のWindowからMainStoryBoard.storyboardというファイルを選択してください。ラベルとボタンの配置を行います。右側のWindowから配置するパーツを選択し、ドラッグします。ここではUILabelというパーツとUIButtonというパーツを選択して真ん中のWindowにドラッグしてください。
  • 13. 右側のwindowにオブジェクトが記載されているの で、配置してみましょう13年3月17日日曜日UILabelを配置したらLabelという表記を削除しましょう。ここではボタンを押したら表記を変更するようにします。UIButtonを2つ配置し、Buttonと記載されている箇所を変更します。片方をON、片方をOFFにしてみましょう。
  • 14. 配置したら、ソースコードに反映します。13年3月17日日曜日パーツを作成したら、ソースコードを編集します。Objective-Cは拡張子が.hのヘッダファイルと.mののファイル(C言語でいう.c)があります。ヘッダファイルには変数やマクロを記載し、実際の処理を.mファイルに記載します。StoryBoardに配置した部品とソースコードをひもづけていきましょう。部品を選択して、Controlボタンをおしながらヘッダファイルにドラッグしましょう。そうすると、ウインドウが表示されるので、変数名などを記載します。labelを選択→Controlボタンを押しながらヘッダファイルにドラッグします。ConnectionはOutletを選択してください。Nameの箇所に好きな変数名を記載します。あとはそのままの状態にしてConnectボタンを押してください。buttonを選択→Controlボタンを押しながらヘッダファイルにドラッグします。ConnectionはIBActionを選択してください。Nameの箇所に好きなメソッド名を記載します。あとはそのままの状態にしてConnectボタンを押してください。
  • 15. ヘッダファイルの内容がこのようになったでしょうか。 @interface ViewController : UIViewController@property (weak, nonatomic) IBOutlet UILabel *label;- (IBAction)displayOff:(id)sender;- (IBAction)displayOn: (id)sender; @end ヘッダファイルの書き方は以下の通りです。 @interface クラス名:スーパークラス名{ インスタンス変数の定義} プロパティ名、メソッド名の定義 @end13年3月17日日曜日ヘッダファイルの内容について説明いたします。@interface ViewController:UIViewControllerという箇所でViewControllerというクラス名を定義しています。ViewControllerの隣に書いてあるUIViewControllerというのは親クラスで、このViewControllerというのはUIViewControllerというiOSのクラスを継承しています。@property(weak,nonatomic)IBOutlet UILabel *label;という箇所でlabelという変数を定義しています。@propertyとすることでコンパイラが勝手にsetterとgetterを作ってくれます。ヘッダファイルに記載した変数はpublicではないので、アクセスする場合はsetterとgetterが必要なのですIBOutletと記載したことでInterfaceBuiderで定義した部品と結びつけることが出来ます。-(IBAction)displayOff:(id)sender;という箇所でボタンが押されたときに呼び出されるメソッドを定義しています。IBActionと記載したことでInterface Builderでこのメソッドをactionとして認識できるようになります。ちなみにコンパイラないでIBActionはvoidに書き換えられますので、リターン値は特にありません。
  • 16. メソッド名の記載の仕方は以下の通りです。(リターン値の型)メソッド名:(引数の型)引数名(NSString*)hoge(NSString*)moge引数が二つ以上の場合は以下のように記載することが多いです。(リターン値の型)メソッド名:(引数の型)引数名 メッセージキーワード:(引数の型)引数名(NSString*)hoge2:(NSString*)moge moge1(NSString*)moge213年3月17日日曜日メソッド名の定義方法について説明します。例では- (IBAction)displayOff:(id)senderと記載していましたが、(リターン値の型)メソッド名:(引数の型)引数名と定義するのが基本です。引数が2つ以上の場合、メッセージキーワードを記載するのが普通です。無くてもエラーにはなりません。
  • 17. では、ソースコードを変更していきましょう。 このようになっているでしょうか。 #import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad{ [super viewDidLoad];}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning];}- (IBAction)displayOff:(id)sender {}- (IBAction)displayOn:(id)sender { } @end13年3月17日日曜日今度はViewController.mファイルを変更していきます。このように記載されているかと思います。viewDidLoadというメソッドとdidReceiveMemoryWarningというメソッドはUIViewControllerでていぎされているもので、ここではオーバーライドしています。独自に実装したい処理がある場合はここで定義します。ちなみに、viewDidLoadというメソッドはView(画面)が初期化されるときに呼び出されるメソッドで、didReceiveMemoryWarningというメソッドはメモリ不足になったときに呼び出されるメソッドです。定義したメソッドの内容を実装していきましょう。
  • 18. [self.label setText:@ Hello World ];//この書き方でも問題ありません。self.label.text = @ Hello World ;}メソッドの呼び出し方法(メッセージングという)[オブジェクト名 メソッド名:引数名 メッセージキーワード:引数名]例[hoge setHoge:moge moge2:moge2];13年3月17日日曜日Onボタンが押されたときに、ラベルの内容を変更します。[self.label setText:@”Hello World”];と記載することでlabelという変数のテキスト内容を変更することができます。setTextというのはtextというプライベート変数に対するセッターです。ただし、Objective-Cでは self.label.textというようにJavaのような記載をすることも出来ます。メソッドを呼び出すには [オブジェクト名 メソッド:引数名 メッセージキーワード:引数名]のように記載します。Objective-Cではオブジェクトに対して 「メソッド名」のメッセージを送るという処理を行います。
  • 19. では、Runボタンをクリックして実行してみましょう。 こんな感じになったでしょうか。13年3月17日日曜日
  • 20. こんな感じでHelloWorldすることが出来ま した。 それではもうちょっとかっこいいアプリを作 ってみましょう。13年3月17日日曜日
  • 21. おすすめ本などを紹介 Appleのサンプルコード https://developer.apple.com/library/ios/navigation/ index.html?section=Resource+Types&topic=Sample +Code 入門書はこれが好きです(英語です) Beginning iOS6 Development(Dave Mark) http://www.apress.com/9781430245124 Objective-Cについては以下の本が詳しいです(入門書では ありません) 詳解Objective-C2.0 第3版 萩原剛志13年3月17日日曜日最後におすすめの本などを詳解します。参考書を既に持っているという方はそれを使っていただいてかまいません。まず、AppleのDeveloperサイトにはサンプルコードがあります。使いたい機能を見つけてダウンロードしてみてください。入門書はいろいろあるのですが、個人的にはApressのBegininngiOSシリーズが好きです。何がいいかというと情報が早いのです。アルファプログラムではありますが、iOS6に対応しています。英語ですが、それほど難しい表現はありません。Objective-Cそのものについては 詳解Objective-C2.0 第3版 をお勧めします。決して入門書ではないので、あるていど出来るようになってから使ったほうがいいです。
  • 22. 本日はありがとうございました。13年3月17日日曜日

×