SlideShare a Scribd company logo
1 of 24
Download to read offline
0
Swift 入門
エスキュービズム・テクノロジー
エンジニア勉強会
February 4,2015
S-cubism Technology Inc.
Swiftって何?
Swiftって何?
Swift(スウィフト)は、
アップルのiOSおよびOS X
のためのプログラミング言語。
アップル製OS上で動作する
アプリケーションの開発に
従来から用いられていた
Objective-CやObjective-
C++、C言語と共存すること
が意図されている。
AppleはSwiftの発表に際し
て「モダン、安全、高速、
インタラクティブ」を大き
な特徴として挙げた。
ウィキペディアより
http://ja.wikipedia.org/
wiki/Swift_(プログラミン
グ言語)
Swiftって何?
特徴
・強い静的型付けのオブジェクト指向コンパイル言語
・クラス、メソッド、プロトコル(インターフェース)、継承、
イニシャライザ(コンストラクタ)
・varによる普通の変数とletによるリードオンリーな変数(定数)
・型推論あり
・文字列連結が"文字列1" + "文字列2"!!!!!
・文末にセミコロンがいらない
・nil不可な普通の型とnilを受け入れるOptional型
・各種プロパティ(ストアド、遅延ストアド、コンピューテッド)
・プロパティ監視構文
・ジェネリック
・Extension(既存の型に対してメソッドを追加)
・演算子オーバーロード、カスタム演算子
・Objective-Cとの互換性
Swiftって何?
なんか、「あの言語」に似てるよね。
Swiftって何?
あなたが思い浮かべた「あの言語」は?
1. C#
2. Ruby
3. Python
4. Objective-C
etc...
Swiftって何?
結論
現代プログラミング言語の
いいとこ取り+α
Swiftのいいところ
Swiftのいいところ
・Objective-Cのクラスや関数がそのまま呼び出せる。
逆もOK※逆の場合、若干制限あり
・型サポートが豊富。配列や辞書にもしっかり型がつく。
ジェネリクスで汎用性も確保。
・Optional型とOptional Chain
・外部引数名
・遅延プロパティ、コンピューテッドプロパティ、プロパテ
ィの監視
・(Objective-Cと比べて)文字列操作が簡単
Swiftのいいところ
・Objective-Cのクラスや関数がそのまま呼び出せる。
逆もOK※逆の場合、若干制限あり
・型サポートが豊富。配列や辞書にもしっかり型が
つく。
ジェネリクスで汎用性も確保。
・Optional型とOptional Chain
・外部引数名
・遅延プロパティ、コンピューテッドプロパティ、
プロパティの監視
・(Objective-Cと比べて)文字列操作が簡単
Swiftのいいところ
Optional型とOptional Chain
var num1: Int = 1 // 普通にInt型
var num2: Int? = 1 // Optional <Int>型のエイリアス
num1 = nil // コンパイルエラー
num2 = nil // OK
var a1: Hoge = Hoge()
var a2: Hoge? = nil
var a3: Hoge! = nil
a1.b.c.d // dプロパティの値が返ってくる
a2?.b?.c?.d // コンパイル時に?か!をつけろと怒られる。a2、
b、cのいずれかがnilならエラーは起きずにnilが返る
a1.b.c.d // コンパイルで怒られないけど実行時ぬるぽ
Swiftのいいところ
外部引数名
class Hoge {
func fuga (a: Int, b: Int) {
}
}
let hoge = Hoge()
hoge.fuga(1, b: 2)
Swiftのいいところ
遅延プロパティ
class Hoge {
// ストアド・プロパティ
var fuga: Int = 1
// 遅延ストアド・プロパティ
// 呼ばれるまで初期化しない
lazy var heavy = HeavyClass()
}
Swiftのいいところ
コンピューテッド・プロパティ
class Hoge {
private var fuga = 0
// コンピューテッド・プロパティ
// C#とかで言うプロパティ
// 他ならゲッター、セッター
var computed: Int {
get {
return fuga * 2
}
set {
// newValueはset内のキーワード
fuga= newValue
}
}
}
Swiftのいいところ
プロパティ監視
class Hoge {
//プロパティの監視
// willSetで代入前
// didSetで代入後
// いろいろするならdidSetの方が良さげ?
var foo: Int = 0 {
willSet {
println( newValue)
}
didSet{
println( oldValue)
if foo < 0 {
foo = 0
}
}
}
Swiftのいいところ
文字列操作が簡単
let text1 = "hoge"
let text2 = "huga"
println(text1 + text2) // hogehuga
println("¥(text1)¥(text2)") // 変数の展開
// substringはNSStringに変換するか、String型のままでするか
(text1 as NSString).substringToIndex(2)
text1.substringToIndex(advance(str.startIndex, 2))
// for inで一文字ずつ取得
for char in text1 {
println(char)
}
Swiftやってみよう
Swiftやってみよう
ブラウザで動くSwiftのPlayground
http://swiftstub.com
Swiftやってみよう
FizzBuzzいってみよう
・3の倍数なら"fizz"
・5の倍数なら"buzz"
・両方なら"fizzbuzz"
を出力する
Swiftで使えるライブラリ
Swiftで使えるライブラリ
Realm クライアントデータベース
Swiftで使えるライブラリ
Alamofire HTTP通信
Swiftで使えるライブラリ
Bolts Framework 非同期処理
ご清聴ありがとうございました!
23

More Related Content

Similar to Swift入門

Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応Tomoki Hasegawa
 
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介Yoshito Tabuchi
 
iOS 8/Swift 概要 #ios8yahoo
iOS 8/Swift 概要 #ios8yahooiOS 8/Swift 概要 #ios8yahoo
iOS 8/Swift 概要 #ios8yahooHiramatsu Ryosuke
 
【Swift】 それ、enumとstructでやってみましょう!!
【Swift】 それ、enumとstructでやってみましょう!!【Swift】 それ、enumとstructでやってみましょう!!
【Swift】 それ、enumとstructでやってみましょう!!Yu Tanaka
 
iOS開発でのおすすめライブラリと管理
iOS開発でのおすすめライブラリと管理iOS開発でのおすすめライブラリと管理
iOS開発でのおすすめライブラリと管理Tomoya Hayakawa
 
【デブサミ関西2014】Web技術で作るエンタープライズアプリ
【デブサミ関西2014】Web技術で作るエンタープライズアプリ【デブサミ関西2014】Web技術で作るエンタープライズアプリ
【デブサミ関西2014】Web技術で作るエンタープライズアプリアシアル株式会社
 
クロスプラットフォーム開発入門
クロスプラットフォーム開発入門クロスプラットフォーム開発入門
クロスプラットフォーム開発入門minazou67
 
Swiftってどうよ!!(cocoa勉強会関西@20150228)
Swiftってどうよ!!(cocoa勉強会関西@20150228)Swiftってどうよ!!(cocoa勉強会関西@20150228)
Swiftってどうよ!!(cocoa勉強会関西@20150228)Akinobu Yamamoto
 
クロスプラットフォーム開発を可能にするMonacaとそのセキュリティ対策
クロスプラットフォーム開発を可能にするMonacaとそのセキュリティ対策クロスプラットフォーム開発を可能にするMonacaとそのセキュリティ対策
クロスプラットフォーム開発を可能にするMonacaとそのセキュリティ対策Monaca
 
Swift を振り返ってみよう #cswift
Swift を振り返ってみよう #cswiftSwift を振り返ってみよう #cswift
Swift を振り返ってみよう #cswiftTomohiro Kumagai
 
Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法Tomoki Hasegawa
 
個人アプリ開発
個人アプリ開発個人アプリ開発
個人アプリ開発kentarokuroda
 
20140822 Swift 勉強会 vol.3 - はぢめての Swift
20140822 Swift 勉強会 vol.3 - はぢめての Swift20140822 Swift 勉強会 vol.3 - はぢめての Swift
20140822 Swift 勉強会 vol.3 - はぢめての SwiftMori Tetsuya
 
Swiftビギナーズ勉強会 第1回 @Co-Edo
Swiftビギナーズ勉強会 第1回 @Co-EdoSwiftビギナーズ勉強会 第1回 @Co-Edo
Swiftビギナーズ勉強会 第1回 @Co-EdoMegumi Otani(Czenhe)
 
Scala採用の背景とその後 @ hitomedia night #5
Scala採用の背景とその後 @ hitomedia night #5Scala採用の背景とその後 @ hitomedia night #5
Scala採用の背景とその後 @ hitomedia night #5Jiro Hiraiwa
 
開発中のiOSアプリ紹介 #okamoba
開発中のiOSアプリ紹介 #okamoba開発中のiOSアプリ紹介 #okamoba
開発中のiOSアプリ紹介 #okamobaishikawa akira
 
iOS13 SDK による 全機能置き換え Part1
iOS13 SDK による 全機能置き換え Part1iOS13 SDK による 全機能置き換え Part1
iOS13 SDK による 全機能置き換え Part1Kaname Noto
 

Similar to Swift入門 (20)

Swift Library
Swift LibrarySwift Library
Swift Library
 
Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応
 
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
C#でのクロスプラットフォーム モバイル開発環境 Xamarin のご紹介
 
Study Swift
Study Swift Study Swift
Study Swift
 
iOS 8/Swift 概要 #ios8yahoo
iOS 8/Swift 概要 #ios8yahooiOS 8/Swift 概要 #ios8yahoo
iOS 8/Swift 概要 #ios8yahoo
 
【Swift】 それ、enumとstructでやってみましょう!!
【Swift】 それ、enumとstructでやってみましょう!!【Swift】 それ、enumとstructでやってみましょう!!
【Swift】 それ、enumとstructでやってみましょう!!
 
iOS開発でのおすすめライブラリと管理
iOS開発でのおすすめライブラリと管理iOS開発でのおすすめライブラリと管理
iOS開発でのおすすめライブラリと管理
 
【デブサミ関西2014】Web技術で作るエンタープライズアプリ
【デブサミ関西2014】Web技術で作るエンタープライズアプリ【デブサミ関西2014】Web技術で作るエンタープライズアプリ
【デブサミ関西2014】Web技術で作るエンタープライズアプリ
 
クロスプラットフォーム開発入門
クロスプラットフォーム開発入門クロスプラットフォーム開発入門
クロスプラットフォーム開発入門
 
Swiftってどうよ!!(cocoa勉強会関西@20150228)
Swiftってどうよ!!(cocoa勉強会関西@20150228)Swiftってどうよ!!(cocoa勉強会関西@20150228)
Swiftってどうよ!!(cocoa勉強会関西@20150228)
 
クロスプラットフォーム開発を可能にするMonacaとそのセキュリティ対策
クロスプラットフォーム開発を可能にするMonacaとそのセキュリティ対策クロスプラットフォーム開発を可能にするMonacaとそのセキュリティ対策
クロスプラットフォーム開発を可能にするMonacaとそのセキュリティ対策
 
Swift を振り返ってみよう #cswift
Swift を振り返ってみよう #cswiftSwift を振り返ってみよう #cswift
Swift を振り返ってみよう #cswift
 
Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法
 
個人アプリ開発
個人アプリ開発個人アプリ開発
個人アプリ開発
 
20140822 Swift 勉強会 vol.3 - はぢめての Swift
20140822 Swift 勉強会 vol.3 - はぢめての Swift20140822 Swift 勉強会 vol.3 - はぢめての Swift
20140822 Swift 勉強会 vol.3 - はぢめての Swift
 
Swiftビギナーズ勉強会 第1回 @Co-Edo
Swiftビギナーズ勉強会 第1回 @Co-EdoSwiftビギナーズ勉強会 第1回 @Co-Edo
Swiftビギナーズ勉強会 第1回 @Co-Edo
 
Scala採用の背景とその後 @ hitomedia night #5
Scala採用の背景とその後 @ hitomedia night #5Scala採用の背景とその後 @ hitomedia night #5
Scala採用の背景とその後 @ hitomedia night #5
 
開発中のiOSアプリ紹介 #okamoba
開発中のiOSアプリ紹介 #okamoba開発中のiOSアプリ紹介 #okamoba
開発中のiOSアプリ紹介 #okamoba
 
iOS13 SDK による 全機能置き換え Part1
iOS13 SDK による 全機能置き換え Part1iOS13 SDK による 全機能置き換え Part1
iOS13 SDK による 全機能置き換え Part1
 
Swift の問題点
Swift の問題点Swift の問題点
Swift の問題点
 

More from エンジニア勉強会 エスキュービズム

Azure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみたAzure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみたエンジニア勉強会 エスキュービズム
 

More from エンジニア勉強会 エスキュービズム (20)

エスキュービズム新技術発表資料
エスキュービズム新技術発表資料エスキュービズム新技術発表資料
エスキュービズム新技術発表資料
 
小売りにおけるAIの可能性
小売りにおけるAIの可能性小売りにおけるAIの可能性
小売りにおけるAIの可能性
 
React Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリングReact Redux Redux-Saga + サーバサイドレンダリング
React Redux Redux-Saga + サーバサイドレンダリング
 
Azure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみたAzure container service上でコンテナベースでオートスケールの検証をしてみた
Azure container service上でコンテナベースでオートスケールの検証をしてみた
 
はじめての品質
はじめての品質はじめての品質
はじめての品質
 
Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発
 
機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow
 
Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。
 
ほんのりTDD
ほんのりTDDほんのりTDD
ほんのりTDD
 
IoTで何をやったか
IoTで何をやったかIoTで何をやったか
IoTで何をやったか
 
2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)
 
Dockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについてDockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについて
 
VRのコンテンツ
VRのコンテンツVRのコンテンツ
VRのコンテンツ
 
Azureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについてAzureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについて
 
レイアウトについて
レイアウトについてレイアウトについて
レイアウトについて
 
アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)
 
何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか
 
IoTのIを考えてみる話
IoTのIを考えてみる話IoTのIを考えてみる話
IoTのIを考えてみる話
 
AzureのIaaSとかの話
AzureのIaaSとかの話AzureのIaaSとかの話
AzureのIaaSとかの話
 
【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】品質ってなんなのさ【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】品質ってなんなのさ
 

Swift入門