【Swift】Swiftってどんな言語?〜Swiftの言語特徴と便利技〜

[当記事はこのテキストをもとに作成しています]

詳解Swift 第3版 [ 荻原 剛志 ]

詳解Swift 第3版 [ 荻原 剛志 ]

価格:3,456円
(2017/1/3 01:58時点)
感想(0件)

SwiftってiPhoneのアプリを作れるプログラミング言語でしょ?…

と、なんとなく知っている方は多いのではないでしょうか。

しかし、どんな特徴を持っていて、どんなことができて、どんな可能性を秘めていて、今後どうなっていくのか、そういったことまで知っている人はなかなかいないかもしれません。

というのも、このSwiftというプログラミング言語は誕生からまだ日が浅いです。

情報も海外の情報(英語)が多く、プログラミング初心者にはなかなか難しいですよね。

そこで今回Swiftという言語について徹底的に解説していきます。

 

Swiftの誕生


SwiftはApple社が2014年のWorldwide Developers Conference (WWDC)で発表した新しいプログラミング言語です。

iPhoneやMacなどのApple製品のアプリをはじめ、Webアプリケーションまで開発することができます。

さらに2015年には、全世界にSwiftのコードが公開されました。

それによって、Swiftは誰でも自由に改良できるようになったため、様々な可能性を秘めています。

Fast・Modern・Safe・Interactive

AppleはSwiftの発表に際して「モダン、安全、高速、インタラクティブ」を大きな特徴として挙げた。

modern
クロージャやタプル、ジェネリックプログラミング、Optional型の採用などが挙げられる。
safe
静的な型チェック、変数の初期化の強制、数値型のオーバーフローの検査、自動参照カウントによるメモリ管理などが挙げられる。
また、if文のブレースの省略禁止、switch-case文は明示的に指定されない限りフォールスルーしないなど、既存のプログラミング言語において記述ミスによるバグが発生しやすかった部分を文法的に解決している。
interactive
Swiftはコンパイラ言語でありながら、インタプリタとしてスクリプトを実行することも可能で、対話実行環境(REPL(英語版))も用意されている。
Swiftと同時に発表されたXcodeバージョン6では、コードの実行結果をグラフィカルに確認しながら開発できるPlaygroundsが実装された。

Swiftは型の制約に厳しく暗黙的変換は一切行わない

数値型あるいは数値の変数についても暗黙の型変換(cast)が行われることはなく、型の違う数値同士の演算、右辺と左辺で型の異なる代入は全てコンパイルエラーとなる。
Int32型からInt64型への変換や、64ビット環境におけるInt64型からInt型への変換など、通常の言語であれば暗黙的に変換してくれるシーンでもSwiftでは全てコンパイルエラーとなります。

これは、意図しない型変換や直感的に理解しにくい型変換が行われ、バグが埋もれないようにする為、いわゆる”安全性”を保障した機能です。

 

Swiftはnil(何も値がない状態を表すもの)に関して厳しい

どの言語でもnilはアプリやシステムを稼働させる上で、不具合の原因になることがしばしばあります。

その為nilを許容するかどうか、nilであるかどうかを常にプログラマーに意識させる為の機能としてオプショナル型というものがあります。

nilが入る可能性のある変数に関してこのオプショナル型を使用します。

1度オプショナル型として宣言した変数はUnwrapして使用しないとコンパイルエラーとなります。
※オプショナルに関しては奥が深い闇を抱えているので近日詳細を記載した記事を書きます。。。

 

Swiftのプロパティオブザーバ(PropertyObservers)が便利

プロパティオブザーバ(Property Observer)は、プロパティにセットされる値が、どのように変更されるかをモニター・応答する機能です。プロパティ監視には2種類あって、willSetとdidSetです。

プロパティオブザーバを使用したコードは以下になります。

class Wallet {
    var money: Int = 0 {
        willSet {
            println("財布の中身が\(newValue)円になりました。")
        }
        didSet {
            if oldValue < money {
                println("\(money - oldValue)円増えました")
            } else if oldValue > money {
                println("\(oldValue - money)円減りました")
            }
        }
    }
}

var w = Wallet()
w.money = 100
// 財布の中身が100円になりました。
// 100円増えました
w.money = 150
// 財布の中身が150円になりました。
// 50円増えました

従来ではプロパティを定義して、セッターメソッド、ゲッターメソッドを作って、その中で前の値の保存などのロジックを書いて。。。
なんて処理が必要でしたがSwiftでプロパティオブザーバを使用すると簡潔に記述することができます。

【参考資料】

詳解Swift 第3版 [ 荻原 剛志 ]

詳解Swift 第3版 [ 荻原 剛志 ]

価格:3,456円
(2017/1/3 01:58時点)
感想(0件)

【スポンサーサイト】


広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中