Swift(スウィフト)とは、「迅速な」「即座の」を意味する英単語である。
曖昧さ回避
英語で「素早い」の意から
- Appleが開発したプログラミング言語。本記事で解説
- シカゴ大学とアルゴンヌ国立研究所により2007年に発表された並列スクリプト言語
- アマツバメ - アマツバメ目アマツバメ科の鳥で、スズメ目ツバメ科の「ツバメ」とは異なる。
- スズキ・スイフト - スズキが製造・販売するハッチバック型自動車
- ポケモンのわざ「スピードスター」の英語名
- 『カスタムロボ』シリーズに登場するロボ「リトルチック」の英語名
頭字語
固有名詞
概要
Appleが次世代のアプリケーション開発用言語として設計した。Objective-Cの後継を目指しており、最新トレンドの採用といかにもApple的な独自路線の融合が特徴。2014年6月2日に行われたWorldwide Developers Conference 2014で発表された。
Appleは Swift = Objective-C - C としており、ベース文法がC言語系列から離れたものとなっている。感覚的にはRustやGoogle GOといった2000年台後半設計言語の系統に属する。
主なフィーチャーは以下のとおり
- Objective-Cクラスとのブリッジ
- 原則として静的型。型推論あり
- switchでのパターンマッチ
- Generics
- 演算子オーバーロード
- Tupleによる多値関数
- クロージャ
- Automatic Reference Counting
- 関数型に近い nil の扱い
Swiftで開発されたアプリケーションを動作させるにはiOS 7以降、またはOS X 10.9以降が必要となる。
2016年9月13日バージョン3.0がリリースされた。C言語時代から継続するforループの書式が廃止されるなど互換性を損なう変更も行われた。
Hello World
println(“Hello World”)
コンパイル型言語で伝統的なメイン関数はなく、トップレベルで書き下すとスクリプト言語のようにそのまま実行される。複数のモジュールでプログラムを書く場合は、main.swiftに書かれたものがエントリーとなる。
特徴的な機能
クラス
基本的にはD言語辺りに近い静的OOPクラスとして動作する。virtualなし、final, overrideありのイマドキ設計。ただし、
等の条件を満たす場合はobjc互換となり、メッセージパッシングで動くようになる。objcとのメソッド名ブリッジ等はややこしいので省略。基本的にコンパチなクラスは相互呼び出しが可能である。
関数、メソッド
Swiftの非常に特徴的な要素の一つが関数の引数周りの設計である。C言語的な引数の値のみを渡す文法と、Objective-C的なメッセージ引数的な文法が混在し、状況によってデフォルトの扱いが違うという癖のある作りになっている。
基本ルール
func f(v1: Int, v2: Int) -> Int
{
return f1 + f2
}
// -> 外部パラメータ名なしで呼び出す f(1,2)
(B) Objective-Cスタイル
func f(left v1: Int, right v2: Int) -> Int
{
return v1 + v2
}
// -> 外部パラメータ名付きで呼び出す f(left: 1, right: 2)
(B’) Bの略記形
func f(#left: Int, #right: Int) -> Int
{
return left + right
}
※混在も可能
func f(v1: Int, #plus: Int) -> Int
{
return v1 + plus
}
// f(1, plus: 2)
ややこしいのはデフォルトの扱い。
なんでこんな事になるかというと、オブジェクトに属するメソッドはメソッド名自体が先頭引数の意味を説明することが多いのでわざわざ書かないようにしたい、しかしイニシャライザは名前がinit(呼び出す方はClass()のようにコンストラクタ呼び出し)で統一されているので先頭も必要・・・という理由による。ちなみにイニシャライザは外部パラメータ名によってオーバーロードされるので、同じ型シグネチャに対して複数の異なるイニシャライザを定義することも可能である。
なお場合によっては外部パラメータ名を付けたい場合と付けたくない場合があると思うが、そういう時は、(B)の記法を使って強制的に外部パラメータ名を付けたり、外部パラメータ名をアンダースコアにすることで省略扱いすることもできる。まさにApple。
その他
細かいことはApple様がiBooksで配布しているマニュアルを読もう。
また、iBooksだけではなくwebでもドキュメントは公開されている。
- The Swift Programming Language
- Using Swift with Cocoa and Objective-C
- Swift Standard Library Reference
オープンソース
Apache 2.0ライセンスでソースコードやubuntu用コンパイラなどが公開されている。swift.org
外部リンク
関連項目
- Apple
- Objective-C
- プログラミング言語
- オープンソース
- macOS / iOS / watchOS / tvOS
- Linux
- Worldwide Developers Conference
- プログラミング関連用語の一覧
- 2
- 0pt