Swift

Swiftは、すべてのAppleプラットフォームに対応し、直感的に使えるパワフルなプログラミング言語です。シンプルでありながら表現力豊かな構文と最新の機能を備え、簡単に使い始めることができるSwiftは、デベロッパの皆さんを魅了することでしょう。Swiftでコーディングすれば、安全性を確保しながら、スピーディに動作するソフトウェアを開発することできます。

Swiftについて

豊かな表現力

Swiftの構文は表現力豊かで読みやすいため、開発初心者のデベロッパでも主要なプログラミング概念をすばやく理解できます。さらに、Swift TutorialsSwift Coding ClubSwift Playgroundなどのリソースを活用すれば、初めてプログラミング言語を学ぶ場合でも、かつてないほど簡単にSwiftを使い始めることができます。

Appleが提供しているSwiftの教育リソースについてさらに詳しく


経験豊富なデベロッパも、ほかのプログラミング言語で使い慣れているモダンな機能をストレスなく利用し、パワフルで安全なSwiftでの開発をすぐにスタートできます。

struct Player {
	var name: String
	var highScore: Int = 0
	var history: [Int] = []
	
	init(_ name: String) {
		self.name = name
		}
}

var player = Player("Tomas")

新しい型をモダンかつ明快な構文で宣言し、インスタンスプロパティにデフォルトの値を指定して、カスタムイニシャライザを定義します。

extension Player {
mutating func updateScore(_ newScore: Int) {
	history.append(newScore)
	if highScore < newScore {
		print("\(newScore)! A new high score for \(name)! 🎉")
		highScore = newScore
	}
}
}

player.updateScore(50)
// Prints "50! A new high score for Tomas! 🎉"
// player.highScore == 50

Extensionを使って既存の型に機能を追加し、カスタム文字列の補間処理を用いて定型コードの出現頻度を低減します。

let players = getPlayers()
// Sort players, with best high scores first
let ranked = players.sorted(by: { player1, player2 in
	player1.highScore > player2.highScore
})
// Create an array with only the players' names
let rankedNames = ranked.map { $0.name }
// ["Erin", "Rosana", "Tomas"]

効率的なクロージャを使って、パワフルなカスタム変換を実行できます。

extension Player: Codable, Equatable {}

import Foundation

let encoder = JSONEncoder()
try encoder.encode(player)
print(player)
// Prints "Player(name: "Tomas", highScore: 50, history: [50])"

カスタム型を簡単に拡張し、JSONの自動エンコーディングやデコーディングなど、パワフルな言語の機能を利用することできます。

安全

Swiftでは安全でないコードをすべて排除しています。変数は使用前に必ず初期化され、配列と整数にはオーバーフローのチェックが行われ、メモリは自動で管理されます。また、コンパイル時にはデータ競合の可能性も検出されます。さらに、Swiftは値型(特に一般的に使われるArray型やDictionary型など)をしっかりと活かすことで、特定の型が指定されているオブジェクトをコピーしても、別の場所で改変されることはありません。

Swiftでは、コード内の欠損値を安全に処理することもできます。Optionalを使用すると、値が欠損している可能性があることを明示的に宣言できます(nil)。また、if letguard let?? などのツールにより、これらの値を返そうとする前に安全にチェックできるため、nil 値が返された場合に予期しない結果やクラッシュを避けることができます。

if let bestPlayer =players.highestScoringPlayer() {
	recordHolder ="""
		The record holder is \(bestPlayer.name),\
		with a high score of \(bestPlayer.highScore)!
		"""
}else {
	recordHolder ="No games have been played yet."
}
print(recordHolder)
// The record holder is Erin, with a high score of 271!

let highestScore =players.highestScoringPlayer()?.highScore ?? 0
// highestScore == 271

安全かつ効率的に任意の値を扱えるようにするため、Optionalバインディング、Optionalチェーン、nil併合といった機能も用意されています。

スピーディ

Swiftは最初のコンセプトの段階から、高速性を目指して構築されました。驚くほどハイパフォーマンスなLLVMコンパイラテクノロジーを使用することで、Swiftのコードが最適化されたマシンコードへと変換されるため、最新のハードウェアの性能を存分に引き出すことができます。構文や標準ライブラリにも調整が加えられ、最も直感的な方法でコードを記述できるようになっただけでなく、手首に着けたApple Watchからサーバ群に至るまで、最高のパフォーマンスが得られるようになりました。Swiftは、C++の次に学ぶ言語にうってつけです。型、フロー制御、演算子といったローレベルのプリミティブが含まれており、クラス、プロトコル、ジェネリクスのようなオブジェクト指向の機能も利用できます。

相互運用可能

Swiftを使えば、まったく新しいアプリを今すぐ作成したり、Swiftのコードを使用してアプリに新しいフィーチャーや機能を実装したりすることできます。Swiftのコードは同じプロジェクトの中で既存のObjective-CファイルやC++ファイルと共存し、Objective-CとC++のAPIも利用できるため、簡単に取り入れることができます。

C、C++、Swiftを安全に併用する方法

また、swift-java相互運用性プロジェクトにより、SwiftをJavaプログラムに変換できるようになりました。その逆も可能です。自分のペースでSwiftを導入し、これら2つのランタイム間で相互運用性のある安全でパフォーマンスに優れたコードを記述できます。

SwiftとJavaの相互運用性の詳細

適応可能

Swiftは、組み込みデバイスなどの制約のある環境でも使用できるほど効率的で、サーバやクラウドインフラストラクチャまで拡張できるほどパワフルです。

その他のリソース

Swiftを使った開発のために構築されたフレームワーク、ツール、プログラムをご確認ください。

Swiftはオープンソースとして開発されています。Swiftプロジェクトおよびコミュニティについて、詳しくはSwift.orgでご確認いただけます。