SlideShare a Scribd company logo
エンジニアインターン 就活イベント
Swiftアプリ制作
nakasen_20th
目指すところ
• Swift言語の特徴を知る
• Swift言語でiOSアプリを作る
前提
• 他言語でのプログラミング経験がある
• Xcode 6.3以降がインストールされた

Macintoshを持っている
• メモリは4GB以上
スケジュール
1. Swift言語概要
2. Xcode基礎
3. Swift基礎
4. UIKit基礎
5. シューティングゲームアプリ作成
1. Swift言語概要
• Apple社が開発、2014年6月発表
• OS X、iOSアプリ開発用言語
• Objective-C言語からの移行に配慮
• 他言語の長所を吸収、基本的に関数型
• 言語仕様がまだ流動的
(なぜSwift言語が誕生したのか?)
iOSのバージョン
• Swift言語はiOS7(& OS X 10.9)以降に対応
• 今回はiOS8以降のみを対象
‣ iOS8動作機種
• iPhone4S以降
• iPad 2以降、iPad mini全て
• iPod Touch 第5世代以降
フレームワーク
• https://developer.apple.com/legacy/library/
documentation/Cocoa/Conceptual/
CocoaFundamentals/CocoaFundamentals.pdf







• アプリケーションを作るというのは、

ソフトウェアスタックの一部に触れることに過ぎない

(自分で全部作るのは通常あり得ない)
2. Xcode基礎
• Apple社純正統合開発環境
• バージョンは最新(6.4)にしておく

(20150711現在)
• Swift言語の基礎を学ぶ時は「Playground」で
• iOSアプリ構築時は「Project」で
• 画面構成を覚える
Playground画面
• 「File」→「New」→「Playground」
• エディタエリア(初期画面)
• Assistant Editor画面を表示

「View」→「Assistant Editor」→

「Show Assistant Editor」
• ソースコード入力で自動実行
Playground画面
Project画面
• 「File」→「New」→「Project」
• 通常のiOSアプリは

「Single View Application」で
• 大きく分けて3つのエリア
✦ Navigators Area
✦ Debug Area
✦ Utilities Area
Project画面
• 主に左右に3分割で把握













Storyboard
• エディタエリアの初期状態を確認
• Document Outlineを表示
View Controllerがひとつ
その上にViewがひとつ
Object library
• UIパーツを確認
• ドラッグでView上に配置
Label
Button
View Controller
セグエで連結
• Buttonから次のView Controllerへ

Control + ドラッグ
• セグエの種類は「Show」
• 最初のView ControllerにNavigation
ControllerをEmbed In
• もう一度Document Outlineを確認
Navigation Controller
• View Controllerの遷移を記録して管理
• 画面上部のNavigation Barに戻るボタンを

自動生成
• Embed InしたView Controllerから記録開始
Attributes inspector
• Viewの属性を変えてみる
• Labelのテキストを変えてみる
• Buttonの種類を変えてみる
• Segueの種類を変えてみる
ビルド、実行
• ここで実行してみる(iOSシミュレータの起動)
• ハードウェアを選択
• 画面の向きを変えてみる
3. Swift基礎
a. 変数と定数、型
b. 式、演算
c. 構文
d. 関数
e. クラス
f. オプショナル型
g. その他の型
a. 変数と定数、型
• 変数と定数は値の入れもの
• 変数は値の変更あり、定数は値固定
• 可能であればなるべく定数で宣言
• 宣言時、型は省略可能(型推論が可能な場合)
a. 変数と定数、型
• 代表的な型
✦ Int(整数)
✦ Double、Float(実数)
✦ Bool(真偽)
✦ String(文字列)
変数、定数の宣言
b. 式、演算
• 式と演算は他の言語とほぼ同じ
✦ 各種演算子(代入、算術、比較、論理…)
✦ 演算順序
✦ 実例で習得
c. 構文
• if文
✦ 条件式の書き方に注意
• for文
• while文
• Switch文
if文、for文
switch文
列挙型とswitch文
d. 関数
• 数学の関数との違い
• 引数と戻り値
• 引数がない場合、1つある場合、

2つ以上ある場合
• 戻り値がない場合、ある場合
• 関数の型
関数の書き方
(1) func 関数名{}
(2) func 関数名(引数リスト){}
(3) func 関数名(引数リスト) -> 戻り値の型 {}
(4) func 関数名(引数リスト) -> 戻り値の型 {

処理(戻り値を求めるなど)

}
関数の書き方
• 引数リストの指定
✦ 引数がない場合

()
✦ 引数が1個の場合

(引数名: 型名)
✦ 引数が2個以上の場合

(引数名1: 型名, 引数名2: 型名・・・)
関数の書き方
関数の書き方
• 関数の実行(呼び出し)
✦ 関数名(引数名: 値・・・)











e. クラス
• クラスは変数と関数からなる設計図
• クラスでの変数はプロパティ、関数はメソッド
• 設計図をもとに作られた実体がインスタンス
• Swiftではクラス(とクロージャ)のみ参照型
• 継承とイニシャライザ
クラスの書き方
(1) class クラス名{}
(2) class クラス名: スーパークラス名{}
(3) class クラス名: スーパークラス名{

プロパティ宣言

メソッド宣言

}
クラスの書き方
クラスの書き方
• クラスの利用(インスタンス作成、実行)













f. オプショナル型
• nilの存在(値が何も入っていない状態)

(空白、""、0はnilではない)
• nilにアクセスすると実行時エラー
• nilをうまく使うプログラミングも可能

nilは必要
オプショナル型
• 変数宣言時に「?」をつけるとオプショナル型

(変数をラップ)
• オプショナル型から変数の中身を取り出すとき
は「!」(アンラップ)
• nilの存在を気づかせてくれるのがオプショナル型
オプショナル型
オプショナル型の書き方
• オプショナル型を「!」で宣言すると

アンラップ時「!」が不要(暗黙的アンラップ)



• オプショナル型変数のプロパティに

アクセスする時に「?」を付加

(オプショナルチェーン)
g. その他の型
• Array(配列)
• Dictionary(辞書、連想配列、ハッシュ)
• Any、AnyObject(様々な型を含められる)
• さまざまな数値型
• その他新たな型をどんどん作れる仕組みあり

(クラス、構造体、列挙型、プトロコル・・・)
Array
Dictionary
型の変換
• 数値計算での型合わせ(型変換)













型の変換
• スーパークラス、サブクラス間の型合わせ

(アップキャスト、ダウンキャスト)











4. UIKit基礎
• UI(ユーザインターフェース)の役割
情報の伝達
ユーザの誘導
総合的なユーザ体験
• UIで迷ったらAppleのドキュメントに立ち返る

「iOSヒューマンインターフェースガイドライン」

https://developer.apple.com/jp/devcenter/ios/library/
documentation/userexperience/conceptual/mobilehig/
BasicsPart/BasicsPart.html#//apple_ref/doc/uid/
TP40006556-CH2-SW1
StoryboardでUI構築
• UI構築作業をStoryboardに任せる
• もう一度Object libraryでUIパーツを確認
• もう一度Attributes inspectorの項目を確認
ViewControllerグループ
• UIViewControllerクラス
• UINavigationControllerクラス
• UITableViewControllerクラス
• その他
Viewグループ
• UILabelクラス
• UIViewクラス
• UIImageViewクラス
• UITextViewクラス
• その他
Controlグループ
• UIButtonクラス
• UISegmentedControlクラス
• UITextFieldクラス
• その他
その他グループ
• UITableViewCellクラス
• UIGestureRecognizerクラス
• その他
UIKit重点項目
• UIViewControllerクラス
ライフサイクル
Navigation Controllerによる管理

遷移してきた画面(ViewController)を配列で記憶

pushで追加、popで取り出し(戻る)
• UITableViewControllerクラス
構成要素
代表的なメソッド
セルの生成方法
UIViewController
• 各メソッドの呼び出されるタイミング

http://d.hatena.ne.jp/glass-_-onion/20120405/
1333611664

など、良記事がたくさん
viewDidLoad
viewWillAppear:
viewWillDisappear:
prepareForSegue::
didReceiveMemoryWarning
UITableViewController
• 各メソッドの機能

http://blogios.stack3.net/archives/604

(UITableViewの解説)など、良記事あり
セクション数を返すメソッド
各セクションのセル数を返すメソッド
各セル表示の際に呼び出されるメソッド
各セルの高さを決定するメソッド
各セルのクリック時に呼び出されるメソッド

など
UIKitをSwiftで利用
• フレームワークのインポート
• クラスメソッドの利用
• クロージャの利用
フレームワークのインポート
• Single View ApplicationではUIKitをインポート







• さまざまなフレームワーク(Apple)

https://developer.apple.com/jp/
documentation/iOSTechOverview.pdf
クラスメソッド
• クラスメソッド・・・各インスタンスに共通の

クラスそのものの性質に関する処理
• class func メソッド名 ・・・
• フレームワーク利用の際に呼び出すことが多い
クラスメソッドの呼び出し
• インスタンスを生成せずに呼び出せる

(クラス名.メソッド名)











クロージャの利用
• クロージャ・・・関数を変数として扱う時の

関数定義部分
• Appleのクロージャ定義







Apple Inc. The Swift Programming
Language より抜粋
クロージャの利用
クロージャの利用
• フレームワーク使用の際のクロージャ利用では

簡単に考える



「メソッドの引数に直接処理を書く」

 { 引数名 in 処理 }
5. アプリ作成
• 簡単なシューティングゲームアプリを作成

https://github.com/nakasen/Codeal-Seminar-Swift
• 画面上をランダムに動くUFOをタッチする
• 1秒ごとにUFOが画面内を移動
• UFOをタッチするとUFOが爆発
• 宇宙空間、UFO、UFO爆発の画像は用意済み
• 爆発音も用意済み
アプリ作成手順1
• Single View Applicationで新規作成
• プロジェクトに画像とサウンドのファイルを追加
✦ Project Navigatorでフォルダを右クリック
✦ Add Files to ∼ で画像フォルダ、サウンド
フォルダを追加
アプリ作成手順2
• Storyboardで画面作成
✦ ViewControllerのFile inspectorで

Auto Layoutのチェックをはずし、iPhoneを選択する
✦ ViewControllerのAttributes inspectorで

Simulated MetricsのSizeを

iPhone 4.7-inchにする(iPhone6の画面サイズ)
✦ 画面全体にImageViewを配置
✦ ImageViewのAttributes inspectorで

imageを背景用宇宙空間画像に
アプリ作成手順2の図説
アプリ作成手順2の図説
アプリ作成手順3
✦ 画面上部にButtonを配置
✦ ButtonのAttributes inspector画面で

TypeをCustomに
✦ 同じくTitleの文字列「Button」を消去 
✦ State Config「Default」時のImageを

通常時のUFO画像、「Highlighted」時の
Imageをタッチした時のUFO爆発画像に
アプリ作成手順4
• Storyboardでソースコードとのひも付け
✦ Assistant EditorでButton画像に名前を設定

(UFOのIBOutlet名「target」)
✦ Assistant EditorでButtonにActionを設定

(UFOタッチ時のIBAction名「smash」)
アプリ作成手順4の図説
アプリ作成手順5
• ViewControllerクラスのプロパティを設定

(class ViewController行の直後に)





• UFOを画面内で動かすために画面サイズを取得

(viewDidLoad()メソッドの中で)



アプリ作成手順6
• タイマーから呼び出される空のメソッドを定義



• タイマー処理を設定

(viewDidLoad()メソッドの中で)









アプリ作成手順7
• タイマーから呼び出されるmove()メソッドで、

UFOをランダムに動かす処理を定義



• 移動を滑らかにするために、上記3行目を

UIViewクラスのクラスメソッドの第2引数の

クロージャに入れる





アプリ作成手順8
• 爆発音のサウンドファイル名をプロパティ名と

ひも付けする(viewDidLoad()メソッドの中で)



• UFOをタッチした時に呼び出されるIBActionで

爆発音を再生する



アプリのカスタマイズ
• 難易度を調整する
✦ 動きのスピード(タイマー呼び出しの調整)
✦ 動きの範囲(乱数発生の引数の調整)
• スコアを表示(Labelを用いて)
• ミスショットで減点(画面全体の透明ボタン)
付録:GitHub
• バージョン管理
• Gitコマンド基礎
• GitHubにアカウント作成
• GitHubでのバージョン管理
• GitHubでの分散バージョン管理
バージョン管理
• ソースプログラムのライフサイクル
• 終わりなき更新
• 過去に戻れるか
• 本体 + 差分 + 管理情報
Gitコマンド基礎
• まずはローカルから
じっくり取り組むならここ(宣伝)

http://engineer-intern.jp/archives/11957
• 3つの段階を理解
ワーキングツリー
インデックス
リポジトリ
ローカルでGitコマンド
• git config で初期設定
• git init でリポジトリ作成
取り消しは rm -r .git
• git status で状態確認
• ファイル作成(修正)でワーキングツリーへ(赤文字)
取り消しは

rm ファイル名(作成時)または

git chekout --ファイル名(修正時)
ローカルでGitコマンド
• git add でワーキングツリーからインデックスへ

(緑文字)
取り消しは

git rm -- cached ファイル名(作成時)または

git reset HEAD ファイル名(修正時)
• git commit でインデックスからリポジトリへ
取り消しは

git reset -- soft HEAD^(修正時のみ)
状態を見るGitコマンド
• git log でオブジェクトIDと日付を確認
• git diff で差分を確認
• gitk で経過を確認
GitHubにアカウント作成
• ソーシャルコーディング
• 無料のアカウントはソースが常にさらされる

(かえって勉強になる)
• 他の人のソースもじっくり見る
• git clone でリポジトリごとコピー
GitHubでのバージョン管理
• リモートリポジトリ作成(New repositoryボタン)
じっくり取り組むならここ(宣伝)

http://engineer-intern.jp/archives/12305
• 公開されることを覚悟して名前をつける
• 後々のことも考えて設定する
• git remote でリモートリポジトリの設定
• git push でリモートリポジトリにプッシュ
GitHubで分散バージョン管理
• もう一人になり切って分散開発の疑似体験
• 2人目が git clone でリポジトリコピー
• git add、git commit 後 git push
• 1人目が git pull で2人目の修正取り込み
• わざとコンフリクト発生
• git pull、修正、git push でコンフリクト解消
手っ取り早くGitHubにアップ(1)
• フォルダを作成し、そこでgit init
• プロジェクトごとそのフォルダにコピー
• git add .
• git commit -m First commit
• GitHubにアカウント作成
• git config --global user.name "あなたのユーザ名"
• git config --global user.email あなたのメールアドレス"
手っ取り早くGitHubにアップ(2)
• GitHubにログイン後、緑の「+ New repository」

ボタンを押す
• Repository name(リポジトリ名)をつけて緑の

「Create Repository」ボタンを押す

(Initialize this repository with a READMEの

 チェックは外すこと!)

(リポジトリ名はソースの中身をきちんと表すこと)
• git remote add origin https://github.com/あなたのID/あな
たのリポジトリ名.git(ここからは画面の指示に従えば良い)
• git push -u origin master

More Related Content

PDF
Swift入門
PDF
Study Swift
PDF
Swift勉強会
PDF
iOS豆知識ver0.0.5
PDF
Xcode 6の新機能
PDF
これからはじめる SwiftPlayground入門
PDF
Swift 3 その基本ルールを眺める #cswift
PDF
Xcode 7 の新しいところ #cm_ios9
Swift入門
Study Swift
Swift勉強会
iOS豆知識ver0.0.5
Xcode 6の新機能
これからはじめる SwiftPlayground入門
Swift 3 その基本ルールを眺める #cswift
Xcode 7 の新しいところ #cm_ios9

What's hot (20)

PDF
iOS 8/Swift 概要 #ios8yahoo
PDF
もしiOS8のカスタムキーボードがガジェットのSDKを搭載したら Ver.#ios8yahoo
PDF
既存アプリのiOS8対応 #ios8yahoo
PDF
Swift : クラス継承とプロトコル拡張を比べてみる #yidev
PPTX
【Swift】 それ、enumとstructでやってみましょう!!
PDF
Firefox mobile for android internals
PDF
NSNotification in Swift #cocoa_kansai
PDF
Xcodeを便利に使って爆速開発する #yxcm
PDF
iOS 8 Widget ~ 導入から Tips まで
KEY
PlayFramework1.x基礎編
PDF
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
PDF
Swift ドキュメントコメント
PDF
ABS2015 のセッション紹介
PDF
iOS開発でのおすすめライブラリと管理
PDF
Objective-C Generics
PDF
Swift 構造体の時代 #yidev
PDF
ようこそ! Swift Playgroundsへ
PDF
SwiftでSioriを開発した体験記
PDF
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
PDF
Xcode グループとフォルダー参照 #yhios
iOS 8/Swift 概要 #ios8yahoo
もしiOS8のカスタムキーボードがガジェットのSDKを搭載したら Ver.#ios8yahoo
既存アプリのiOS8対応 #ios8yahoo
Swift : クラス継承とプロトコル拡張を比べてみる #yidev
【Swift】 それ、enumとstructでやってみましょう!!
Firefox mobile for android internals
NSNotification in Swift #cocoa_kansai
Xcodeを便利に使って爆速開発する #yxcm
iOS 8 Widget ~ 導入から Tips まで
PlayFramework1.x基礎編
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
Swift ドキュメントコメント
ABS2015 のセッション紹介
iOS開発でのおすすめライブラリと管理
Objective-C Generics
Swift 構造体の時代 #yidev
ようこそ! Swift Playgroundsへ
SwiftでSioriを開発した体験記
Java エンジニアチームが始めやすい Scala コーディングスタイル #ichigayageek
Xcode グループとフォルダー参照 #yhios
Ad

Similar to Swiftアプリ制作入門 かんたんシューティングゲーム (20)

PPTX
勉強会用Swift授業2018-0126
PPTX
iPhoneアプリ開発の歩き方〜Swift編〜
PDF
iPhone develop for Beginner
PDF
はじめてのiOSアプリ開発 ①
PDF
DevLOVE iPhoneアプリ勉強会
PDF
Swiftビギナーズ勉強会 第1回 @Co-Edo
PPTX
第一回iOSアプリ勉強会
PDF
Swift入門おさらい
PDF
iPhoneアプリ開発Swift講座無料セミナー(appcre.com)
PDF
Swiftのアプリ開発でハマったこと
PDF
Swiftビギナーズ勉強会 第一回@Co-Edo
PDF
オープンセミナー2013@広島
PDF
iPhoneとAndroidのアプリ開発最新潮流
PPTX
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)
PDF
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
PDF
開発技術対決! Dots.カンファレンス エキシビジョン iOS代表
PDF
無料体験セミナー
PDF
アプクリ無料体験セミナー
PDF
アドベント2015ios基礎
KEY
iPhoneアプリ開発を楽に楽しくするサイトまとめ
勉強会用Swift授業2018-0126
iPhoneアプリ開発の歩き方〜Swift編〜
iPhone develop for Beginner
はじめてのiOSアプリ開発 ①
DevLOVE iPhoneアプリ勉強会
Swiftビギナーズ勉強会 第1回 @Co-Edo
第一回iOSアプリ勉強会
Swift入門おさらい
iPhoneアプリ開発Swift講座無料セミナー(appcre.com)
Swiftのアプリ開発でハマったこと
Swiftビギナーズ勉強会 第一回@Co-Edo
オープンセミナー2013@広島
iPhoneとAndroidのアプリ開発最新潮流
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
開発技術対決! Dots.カンファレンス エキシビジョン iOS代表
無料体験セミナー
アプクリ無料体験セミナー
アドベント2015ios基礎
iPhoneアプリ開発を楽に楽しくするサイトまとめ
Ad

More from 聡 中川 (15)

PDF
AW 学び続ける力 スライド
PDF
先端技術 プレテスト
PDF
先端技術 No sql
PDF
先端技術 Hft
PDF
先端技術 データサイエンティスト
PDF
先端技術トピックス 言語ランキング
PDF
先端技術 競技プログラミング
PDF
先端技術 スーパーコンピュータ
PDF
先端技術 セキュリティ最前線
PDF
先端技術 関数型プログラミング
PDF
先端技術 気象とコンピュータ
PDF
先端技術 量子コンピュータ
PDF
先端技術ガイダンス
PDF
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
PDF
iOSアプリ制作のためのObjective-C入門
AW 学び続ける力 スライド
先端技術 プレテスト
先端技術 No sql
先端技術 Hft
先端技術 データサイエンティスト
先端技術トピックス 言語ランキング
先端技術 競技プログラミング
先端技術 スーパーコンピュータ
先端技術 セキュリティ最前線
先端技術 関数型プログラミング
先端技術 気象とコンピュータ
先端技術 量子コンピュータ
先端技術ガイダンス
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
iOSアプリ制作のためのObjective-C入門

Swiftアプリ制作入門 かんたんシューティングゲーム