SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler offline
iPhoneアプリ開発入門

              ∼簡単なiPhoneアプリを作ってみよう∼




13年3月17日日曜日

iPhoneアプリ開発の入門ということで勉強会を開催させていただくことになりました。
3時間という短い時間ですが、よろしくお願いいたします。
今日の目標
              iPhoneアプリ開発の楽しさを知っ
              ていただく

              iPhoneアプリの本を読めるように
              なる
              好評だったらシリーズ化(できたらいいな・・・)




13年3月17日日曜日
本日の目標は、
iPhoneアプリ開発の楽しさを知っていただくこととiPhoneアプリの本が抵抗なく読めるようになることです。
iPhoneアプリ開発に興味はあるけれど、いまいち取っ付きにくいと感じているのではないでしょうか。
本日一緒に勉強することで少しでも抵抗がなくなればと思います。
好評だったらシリーズ化したいなと思っています。。。
アジェンダ

              iPhoneアプリ開発に必要なもの

              お決まりのHelloWorld

              簡単なアプリを作ってみる




13年3月17日日曜日

本日は、まずiPhoneアプリ開発に必要な環境や知識を少し説明し、
HelloWorldアプリを作成しながら、基本的なXCodeの使い方、実機転送の仕方の説明をいたします。
実際に手を動かしながら行うのが一番身に付くので、一緒に手を動かしましょう。
Macが人数分なくて申し訳ないのですが、交代で使ってください。
どうやって開発しているの?

              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で開発します。
Objective-Cって何者?

              C言語をベースにSmalltalk型のオブジェクト
              指向機能を持たせた上位互換言語(Wikipedia
              より)→そもそもMac向け

              C言語はそのまま使用することが出来る

              構文など実践的なことは後ほどやりますの
              で、ご安心を・・。



13年3月17日日曜日

ちょっと敷居が高いといわれているObjective-Cが何者かということについて軽く説明いたします。
Objective-CはC言語をベースにして、オブジェクト指向機能を持たせたものです。
こういうとC++と変わらないような気もしますが、Mac向けに特化しているのが特徴です。
C言語をベースにしているということもあり、中でそのままC言語を使うことができます。
必要なもの

              Mac

              Xcode(Macにインストールしてますか?)

              実機転送およびAppStoreへの登録をするに
              は、AppleDeveloperへの登録(年間99ド
              ル)が必要




13年3月17日日曜日
開発に必要なものを説明します。
開発にはMacを使います。
なので、本格的に開発するというのであればMacを用意してください。
Mac上でXcodeというIDEを使います。Xcode自体はフリーでダウンロードできますが、AppleDeveloperに登録して年間99
ドルを払うと、β版を入手できます。
あと、実機転送やAppStoreへの登録(公開する)ためにはAppleDeveloperへの登録が必要なので、注意してください。本
日は私が登録しているIDを使って実機転送をしてみます。
では、お決まりの・・・


        HelloWorldを作成してみます。




13年3月17日日曜日

あまりぐだぐだと説明しても退屈なので、お決まりのHelloWorldを作成してみましょう。
Xcodeを起動して、新
              規プロジェクトを作成す
              る(ここでは
              SingleViewApplication
              を選択してください)




13年3月17日日曜日

まず、Xcodeを起動してください。
FinderのアプリケーションというところにXcodeと書かれているアイコンがあるので、クリックしてください。
起動したら、「Create new Xcode Project」をクリックして新しいプロジェクトを作成しましょう。
いくつか種類があるのですが、ここでは「Simple View Applications」を選択してください。
プロジェクト名を記載して、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を行うことができます。とりあえずここでは使いません。
このような画面が表示されたでしょうか?




                          ファイルの内容を表示
        ファイル名を表示する
                              する




13年3月17日日曜日
プロジェクトを作成するとこのような画面が表示されます。
EclipseとかのIDEを使っていればだいたいにたようなものだと思います。
左側にファイル名、真ん中にファイルの内容が表示されます。

右側はソースコードを編集しているときにはあまり使わないのですが、
StoryBoardで部品の情報を編集するのに使います。

だいたいイメージがつかめるかと思いますが、
上の部分にあるRunというアイコンをクリックするとソースコードの実行を行うことができます。
いったんこの状態で「Run」をクリックして
         みましょう


         こんな風に何もない画面が表示
         されましたか?




13年3月17日日曜日
では、この状態で実行してみましょう。
iPhoneシミュレータが起動されて、真っ白な画面が表示されたと思います。
XcodeにはiPhone/iPadむけシミュレータが用意されており、Mac上で挙動を確認することができます。
ただし、シミュレータでは確認できない機能(電話とか、カメラとか)もありますし、当然ながらiPhone端末よりもMacの
方がスペックが高いので、最終的な確認は実機で行うようにしましょう。
シミュレータではさくさく動いていたのに、実機に転送してみたらもっさりしていたなんてことはよくあります。
さすがにそれだとつまらないので、

ボタンを押したらHelloWorldを表示させるようにします。
 MainStoryBoard.storyboardを選択してください。



StoryBoardで
パーツの配置が
できます。




13年3月17日日曜日

さすがに何も表示されないアプリではつまらないので、ボタンを表示したらHelloWorldを表示させるようにしましょう。
ONボタンを押したらHelloWorldを表示し、OFFボタンを押したら表示を消すという単純なアプリを作ってみることにしま
す。
左のWindowからMainStoryBoard.storyboardというファイルを選択してください。ラベルとボタンの配置を行います。右
側のWindowから配置するパーツを選択し、ドラッグします。
ここではUILabelというパーツとUIButtonというパーツを選択して真ん中のWindowにドラッグしてください。
右側のwindowにオブジェクトが記載されているの
       で、配置してみましょう




13年3月17日日曜日

UILabelを配置したらLabelという表記を削除しましょう。
ここではボタンを押したら表記を変更するようにします。
UIButtonを2つ配置し、Buttonと記載されている箇所を変更します。
片方をON、片方をOFFにしてみましょう。
配置したら、ソースコードに反映します。




13年3月17日日曜日
パーツを作成したら、ソースコードを編集します。
Objective-Cは拡張子が.hのヘッダファイルと.mののファイル(C言語でいう.c)があります。
ヘッダファイルには変数やマクロを記載し、実際の処理を.mファイルに記載します。
StoryBoardに配置した部品とソースコードをひもづけていきましょう。
部品を選択して、Controlボタンをおしながらヘッダファイルにドラッグしましょう。
そうすると、ウインドウが表示されるので、変数名などを記載します。
labelを選択→Controlボタンを押しながらヘッダファイルにドラッグします。
ConnectionはOutletを選択してください。
Nameの箇所に好きな変数名を記載します。あとはそのままの状態にしてConnectボタンを押してください。
buttonを選択→Controlボタンを押しながらヘッダファイルにドラッグします。
ConnectionはIBActionを選択してください。
Nameの箇所に好きなメソッド名を記載します。あとはそのままの状態にしてConnectボタンを押してください。
ヘッダファイルの内容がこのようになったでしょうか。
 @interface ViewController : UIViewController@property (weak, nonatomic)
 IBOutlet UILabel *label;- (IBAction)displayOff:(id)sender;- (IBAction)displayOn:
 (id)sender;
 @end


 ヘッダファイルの書き方は以下の通りです。
 @interface クラス名:スーパークラス名{
 インスタンス変数の定義}
 プロパティ名、メソッド名の定義
 @end




13年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に書き換えられますので、リターン値は特にありません。
メソッド名の記載の仕方は以下の通りです。


(リターン値の型)メソッド名:(引数の型)引数名
(NSString*)hoge(NSString*)moge



引数が二つ以上の場合は以下のように記載することが多い
です。
(リターン値の型)メソッド名:(引数の型)引数名 メッセ
ージキーワード:(引数の型)引数名

(NSString*)hoge2:(NSString*)moge moge1(NSString*)moge2




13年3月17日日曜日
メソッド名の定義方法について説明します。
例では- (IBAction)displayOff:(id)senderと記載していましたが、
(リターン値の型)メソッド名:(引数の型)引数名と定義するのが基本です。
引数が2つ以上の場合、メッセージキーワードを記載するのが普通です。
無くてもエラーにはなりません。
では、ソースコードを変更していきましょう。
 このようになっているでしょうか。
 #import "ViewController.h"@interface ViewController ()@end@implementation
 ViewController- (void)viewDidLoad{ [super viewDidLoad];}-
 (void)didReceiveMemoryWarning{
 [super didReceiveMemoryWarning];}- (IBAction)displayOff:(id)sender {}-
 (IBAction)displayOn:(id)sender {
 }
 @end




13年3月17日日曜日

今度はViewController.mファイルを変更していきます。
このように記載されているかと思います。
viewDidLoadというメソッドとdidReceiveMemoryWarningというメソッドはUIViewControllerでていぎされているもの
で、ここではオーバーライドしています。
独自に実装したい処理がある場合はここで定義します。
ちなみに、viewDidLoadというメソッドはView(画面)が初期化されるときに呼び出されるメソッドで、
didReceiveMemoryWarningというメソッドはメモリ不足になったときに呼び出されるメソッドです。
定義したメソッドの内容を実装していきましょう。
[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ではオブジェクトに対して 「メソッド名」のメッセージを送るという処理を行います。
では、Runボタンをクリックして実行してみましょう。
  こんな感じになったでしょうか。




13年3月17日日曜日
こんな感じでHelloWorldすることが出来ま
  した。


   それではもうちょっとかっこいいアプリを作
   ってみましょう。




13年3月17日日曜日
おすすめ本などを紹介


  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版 をお勧めします。決して入門書ではないので、あるていど出
来るようになってから使ったほうがいいです。
本日はありがとうございました。




13年3月17日日曜日

Mais conteúdo relacionado

Semelhante a iPhone develop for Beginner

MacRuby を使ってみました
MacRuby を使ってみましたMacRuby を使ってみました
MacRuby を使ってみました
Yoshiyuki MIYAGI
 
スマートフォンの方式検討に関する基礎知識
スマートフォンの方式検討に関する基礎知識スマートフォンの方式検討に関する基礎知識
スマートフォンの方式検討に関する基礎知識
Yugo Yamamoto
 
20101127 Android Usability Seminar
20101127 Android Usability Seminar20101127 Android Usability Seminar
20101127 Android Usability Seminar
Visso株式会社
 
テレニコツイ
テレニコツイテレニコツイ
テレニコツイ
jz5 MATSUE
 

Semelhante a iPhone develop for Beginner (20)

Beginning iPhone Vol2
Beginning iPhone Vol2Beginning iPhone Vol2
Beginning iPhone Vol2
 
オープンセミナー2013@広島
オープンセミナー2013@広島オープンセミナー2013@広島
オープンセミナー2013@広島
 
iPhoneアプリ無料勉強会 vol3
iPhoneアプリ無料勉強会 vol3iPhoneアプリ無料勉強会 vol3
iPhoneアプリ無料勉強会 vol3
 
Weekend Androidのススメ
Weekend AndroidのススメWeekend Androidのススメ
Weekend Androidのススメ
 
MacRuby を使ってみました
MacRuby を使ってみましたMacRuby を使ってみました
MacRuby を使ってみました
 
プロ文.com 勉強会 Phase 1
プロ文.com 勉強会 Phase 1プロ文.com 勉強会 Phase 1
プロ文.com 勉強会 Phase 1
 
iPhone開発者初心者向け資料「XcodeのStoryboardで画面を作ろう!」
iPhone開発者初心者向け資料「XcodeのStoryboardで画面を作ろう!」iPhone開発者初心者向け資料「XcodeのStoryboardで画面を作ろう!」
iPhone開発者初心者向け資料「XcodeのStoryboardで画面を作ろう!」
 
スマートフォンの方式検討に関する基礎知識
スマートフォンの方式検討に関する基礎知識スマートフォンの方式検討に関する基礎知識
スマートフォンの方式検討に関する基礎知識
 
WPFことはじめ
WPFことはじめWPFことはじめ
WPFことはじめ
 
Appsheet基礎講座.pptx
Appsheet基礎講座.pptxAppsheet基礎講座.pptx
Appsheet基礎講座.pptx
 
I phoneアプリ入門 第4回
I phoneアプリ入門 第4回I phoneアプリ入門 第4回
I phoneアプリ入門 第4回
 
iOSアプリ制作のためのObjective-C入門
iOSアプリ制作のためのObjective-C入門iOSアプリ制作のためのObjective-C入門
iOSアプリ制作のためのObjective-C入門
 
20101127 Android Usability Seminar
20101127 Android Usability Seminar20101127 Android Usability Seminar
20101127 Android Usability Seminar
 
cochica
cochicacochica
cochica
 
Not free
Not freeNot free
Not free
 
iphoneアプリ開発 その1:導入〜初アプリ
iphoneアプリ開発 その1:導入〜初アプリiphoneアプリ開発 その1:導入〜初アプリ
iphoneアプリ開発 その1:導入〜初アプリ
 
Unityとスマートフォンアプリの最適化
Unityとスマートフォンアプリの最適化Unityとスマートフォンアプリの最適化
Unityとスマートフォンアプリの最適化
 
Swift歴2ヶ月でアプリを8本リリースしてみた話
Swift歴2ヶ月でアプリを8本リリースしてみた話Swift歴2ヶ月でアプリを8本リリースしてみた話
Swift歴2ヶ月でアプリを8本リリースしてみた話
 
テレニコツイ
テレニコツイテレニコツイ
テレニコツイ
 
今から始めよう!WordPressで作る女子ウケ★スマホサイト
今から始めよう!WordPressで作る女子ウケ★スマホサイト今から始めよう!WordPressで作る女子ウケ★スマホサイト
今から始めよう!WordPressで作る女子ウケ★スマホサイト
 

iPhone develop for Beginner