Swift (プログラミング言語)

出典: フリー百科事典『ウィキペディア(Wikipedia)』
ナビゲーションに移動 検索に移動
Swift
Swift
Swiftのロゴ
パラダイム 関数型言語命令型プログラミングオブジェクト指向プログラミング、マルチパラダイムプログラミング、block-structured programming ウィキデータを編集
登場時期 2014年6月2日 (2014-06-02)
開発者 クリス・ラトナー、アップル ウィキデータを編集
最新リリース 5.1.2 / 2019年11月30日[1]
型付け 強い静的型付け型推論
影響を受けた言語 RustHaskellRubyObjective-CPythonC SharpCLU ウィキデータを編集
プラットフォーム MacOSIOSLinux ウィキデータを編集
ライセンス Apache-2.0 ウィキデータを編集
ウェブサイト
拡張子 swift ウィキデータを編集
テンプレートを表示

Swift(スウィフト)は、アップルiOSおよびmacOSLinuxで利用出来るプログラミング言語Worldwide Developers Conference (WWDC) 2014で発表された。アップル製OS上で動作するアプリケーションの開発に従来から用いられていたObjective-CやObjective-C++、C言語と共存することが意図されている[2]

Swiftは、マルチパラダイムのコンパイラプログラミング言語であるが、XcodeのPlaygroundsの上やターミナルでインタラクティブにデバッグする事が可能である。

LLVMコンパイラが使われており、ライブコーディングに対応していることが特徴[3]

並列スクリプト言語のSwift (並列スクリプト言語)英語: Swift (parallel scripting language)とは名称を同じくするが、別言語。

歴史[編集]

Swiftは2010年にLLVMClangの始祖であるChris Lattner英語版によって開発が始められた。その後アップル社内での4年間の開発期間を経て、2014年のWWDCにおいて一般に発表され、同時にアップルに開発者登録している開発者に対してベータ版の提供が開始された。

WWDC 2016の基調講演で、アップルはSwiftでのコード作成方法を教えることを目的とした、Swift Playgroundsという名称のiPad専用アプリ開発を発表した。2016年9月にリリースされた[4]このアプリは3Dビデオゲームのようなインターフェイスで表示され、コードの行が特定の順序で配置され実行されたときにフィードバックを提供する。2017年3月21日、Swift 3.1に対応し、日本語を含め5カ国語に対応したことを発表[5]。Swift 3.1は、2017年3月27日にリリースされた[6]

2017年現在、Project Leadは、Chris Lattner同様にLLVMとClangの開発者である、AppleのTed Kremenekである[7]

2017年9月19日、Xcode 9.0とともにSwift 4がリリースされた[8]

2018年3月29日、Xcode 9.3とともにSwift 4.1がリリースされた[9]

2018年6月4日、Xcode 10 betaとともにSwift 4.2がリリースされた [10]

特徴[編集]

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

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

サンプルコード[編集]

Hello World[編集]

print( "Hello, World!" )  // これだけで動いて、Hello, World! と出力される。

[編集]

/* 
 * コメントはCスタイルの複数行コメントと…
 */
// C++スタイルの一行コメントの双方をサポートしている

// var name: Type = value でType型の変数nameを宣言し、valueで初期化する
var explicitDouble: Double = 70 // 70.0
 
/// 型が省略された場合は、型推論により初期値の型が適用される
var implicitInteger = 70    // Int
var implicitDouble = 70.0   // Double
 
// let name:Type = value でType型の定数nameにvalueを設定する。
// 型推論可能な場合、型の表記は省略できる。
let theAnswer = 42

// 識別子にはたいていのUnicode文字を用いることができる。
let リンゴの数 = 3
let みかんの数 = 5

// 文字列リテラル"..."の中にある\(expr)には、式exprの内容が展開される
let リンゴ説明 = "私は\(リンゴの数)個のリンゴを持っている。"  // ”私は3個のリンゴを持っている。"
let 果物説明 = "私は\(リンゴの数 + みかんの数)個の果物を持っている。" //"私は8個の果物を持っている。"

// Swiftでは辞書も組み込みでサポートされている。
// 以下は Dictionary<String, Int> 型の定数辞書の定義の一例である。
let people = ["Anna": 67, "Bety": 8, "Jack": 33, "Sam": 25]

// 辞書の内容の列挙は for (key, value) in dict { ... }
for (name, age) in people {
    print("\(name) is \(age) years old.")
}

// メソッドや関数は "func"文法を使って宣言する。
// パラメータ名の付け方に注意。-> で戻り値の型を宣言する
func sayHello(to personName: String) -> String {
    let greeting = "こんにちは、" + personName + "さん"
    return greeting
}
// "こんにちは、サーバーさん"を出力
print(sayHello(to: "サーバー"))

メモリ管理(Automatic Reference Counting)[編集]

Swiftでは自動参照カウント(Automatic Reference Counting)ARC でアプリが使うメモリを追跡管理する。
ARCはクラスインスタンスが使われなくなった時に自動的にそれが使っていたメモリを開放する。


相互運用性[編集]

SwiftはcocoaObjective-Cをシームレスに使えるように設計されている。[11]SwiftとObjective-Cの間はどちらのAPIからでもお互いに使う事が出来る。

モジュールとしてアクセス可能などんなObjective-Cフレームワーク(又はCライブラリ)でもSwiftに直接インポートできる。

import Foundation

初期化の例

OBJECTIVE-C
UITableView *myTableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
Swift
let myTableView: UITableView = UITableView(frame: .zero, style: .Grouped)

C言語APIとの互換[編集]

SwiftからLibcを呼ぶ例

puts("Hello from libc")
let fd = open("/tmp/scratch.txt", O_WRONLY|O_CREAT, 0o666)

if fd < 0 {
    perror("could not open /tmp/scratch.txt")
} else {
    let text = "Hello World"
    write(fd, text, strlen(text))
    close(fd)
}

出典[編集]

  1. ^ 出典URL: https://github.com/apple/swift/releases/tag/swift-5.1.2-RELEASE, 閲覧日: 2019年12月1日, 題名: Release 5.1.2, 出版日: 2019年11月30日
  2. ^ Williams, Owen (2014年6月2日). “Apple announces Swift, a new programming language for iOS”. The Next Web. 2014年6月2日閲覧。
  3. ^ Introducing Swift”. Apple. 2014年6月2日閲覧。
  4. ^ Swift Playgrounds、App Storeで提供開始
  5. ^ Swift Playgrounds、さらに5か国語に対応
  6. ^ Swift 3.1 Released! - swoft.org (2017年3月27日)
  7. ^ [swift-evolution Update on the Swift Project Lead] - Chris Lattner (2017年1月10日)
  8. ^ Swift 4.0 Released! - Ted Kremenek (2017年9月19日)
  9. ^ 「Xcode」をMac App Storeで” (日本語). Mac App Store. 2018年4月2日閲覧。
  10. ^ Xcode 10 includes Swift 4.2, which compiles your software more quickly, helps you deliver faster apps, and generates even smaller binaries. Xcode 10” (英語). Developer. 2018年6月12日閲覧。
  11. ^ Using Swift with Cocoa and Objective-C (HTML)”. Apple Inc.. 2014年9月2日閲覧。

外部リンク[編集]