Swift 4

パワフルなプログラミング言語でありながら、簡単に習得することができます。

Swiftは、iOS、macOS、tvOS、watchOSのためのパワフルで、なおかつ使いやすいプログラミング言語です。Swiftのコーディングはインタラクティブで楽しく、構文はシンプルでいて表現力に富んでいます。さらに、デベロッパが求める最新の機能も用意されています。安全性を重視しつつ非常に軽快に動作するソフトウェアを作り出すことができます。それがSwiftです。

Swift 4の導入

ソリッドなSwift 3をベースとしたSwift 4は堅牢性や安定性によりいっそう優れており、Swift 3とソースコードの互換性が保たれています。標準ライブラリの改善や、スマートキーパスやシリアライズなどの機能を追加しつつ、開発時間の短縮やアプリケーションバイナリのサイズ削減を実現しています。

iPadでSwiftを学ぶ

Swift Playgroundsでは、「プレイグラウンド」と呼ばれる小さなプログラムを作成し、記述したコードの結果をすぐに確認することができます。たった1行のコードで素晴らしい変化をもたらすことができます。インタラクティブなレッスンを通してコーディングの主なコンセプトを学ぶことができ、課題やテンプレートを追加することで、刺激的な新しい方法でコーディングに触れ、自分だけの作品を作り上げることができます。プレイグラウンドには、Bluetoothでロボットやドローンなどのハードウェアアクセサリとつないで操作できるものもあります。出来上がった作品を友達に共有したり、プレイグラウンドが動作する様子を録画して投稿したりするのも簡単です。

iPad用Swift Playgroundsについてさらに詳しく

オープンソース

Swift.orgでオープンソースとして開発されたSwift 4では、ソースコード、バグトラッカー、メーリングリスト、定期的に提供される開発用ビルドを誰でも利用することができます。Apple内部だけではなく外部の開発者も含めた幅広いデベロッパーのコミュニティが、協力してSwiftをさらに優れた言語へと成長させています。SwiftはすでにAppleの全プラットフォームとLinuxに対応していますが、コミュニティのメンバーがさらに多くのプラットフォームへの移植を精力的に進めています。より安全かつ軽快に動作するソフトウェアを開発し、プログラミングをいっそう楽しいものにするため、Swiftにはさらに多くの可能性があります。

オープンソースのSwiftコミュニティについて詳しくは、Swift.orgをご覧ください。

ソースの互換モード

Swift 3ではソースレベルの安定性が確立され、Swift 4では今後に向けてソースの互換性が実現されました。Swift 4では、新バージョンのコンパイラを使用するためにコードを調整する必要はまったくありません。新しいSwift 4のコンパイラを使用すれば、Swift 4の新機能を活用しながら一度に1モジュールずつ、自分のペースで移行を進めることができます。

新しいSwift 4のコンパイラでは、以下の3つのモードを利用することができます。

  1. Swift 3モード:既存のコードのためのデフォルトのモードで、Swift 3のコンパイラでビルドされたソースコードをビルドできます。
  2. Swift 4モード:Swift 4の新機能に加え、最適化されたパフォーマンスの恩恵を受けられます。移行が必要になる場合がありますが、前回のSwift 2.2からSwift 3への移行に比べるとさらに簡単なものになっています。
  3. 混合モード:同じコンパイラでビルドされたバイナリ間で相互に運用させることができます。このモードは、Swift 3で書かれたパッケージとSwift 4で書かれたパッケージが混在するプロジェクトに適しています。ただし、すべてのパッケージがSwift 4のコンパイラでビルドされている必要があります。このモードを使用すると、デベロッパはコードの特定の部分を一定期間にわたって少しずつSwift 4に移行することができます。

Swift 4の新機能

  • Unicodeを正確に保持するString型をより高速かつ簡単に使用でき、部分文字列を作成、使用、管理するサポートが新たに追加されました。
  • スマートキーパスにより、タイプセーフで効率的、拡張可能なキー値でSwiftの型をコーディングできます。
  • 辞書やSet型の作成および操作機能が強化されました。
  • アーカイバルやシリアライズのサポートが構造体やenumの型にも拡張され、JSONやplistのような外部フォーマットへのシリアライズにおける型安全性が実現しました。
  • メモリへの排他的アクセスが強化されました。

最新

Swiftは、プログラミング言語に対する最新の調査結果と、数十年にわたるAppleプラットフォームの構築経験を活かして生み出されました。Objective-Cから採用したネームドパラメータは明快な構文で表現され、SwiftのAPIを一段と読みやすく、メンテナンスしやすいものにしています。型推測も行われるため、コードの記述が明快で、誤りの発生が低減されます。モジュールからはヘッダが排除され、ネームスペースが利用できます。メモリ管理は自動で、セミコロンを入力する必要すらありません。このような先進的なコンセプトによって、簡単かつ楽しく使える言語が生まれました。

extension String {
						var banana : String {
							let shortName = self.dropFirst()
							return "\(self) \(self) Bo B\(shortName) Banana Fana Fo F\(shortName)"
						}
					}
					
					let bananaName = "Jimmy".banana		// "Jimmy Jimmy Bo Bimmy Banana Fana Fo Fimmy"

Swiftには、より表現力豊かなコードを書くための機能がほかにもたくさんあります。

  • 関数ポインタと統一されたクロージャ
  • タプルと複数の戻り値
  • ジェネリクス
  • 特定の範囲またはコレクションに対する高速かつ簡潔な反復処理
  • メソッド、エクステンション、プロトコルに対応した構造体
  • 関数型のプログラミングパターン(マップやフィルタなど)
  • try / catch / throwを使用したネイティブなエラー処理

XcodeにおけるPlaygroundとREPL

iPad用Swift Playgroundsと同様、XcodeのPlaygroundでも、Swiftのコードを驚くほどシンプルかつ楽しく記述することができます。コードを1行記述すればすぐに結果に反映されます。結果はクイックルック機能でコードの横に表示でき、コードのすぐ下にピン留めすることもできます。結果のビューにはグラフィック、結果のリスト、値の時系列グラフを表示させることができます。タイムラインアシスタントを開くと、複雑なビューが展開してアニメーション表示される様子を見ることができます。新しいUIコードを試したり、コーディングしながらSpriteKitのシーンをアニメーション再生したりするときに効果的です。Playgroundでコードが完成したら、あとはそのコードをプロジェクトに移すだけです。

Read-Eval-Print-Loop(REPL)

XcodeのLLDBデバッグコンソールには、Swift言語のインタラクティブバージョンが搭載されています。Swiftの構文を使用して実行中のアプリケーションを評価したり操作したりすることができます。また、スクリプト形式の環境で新しいコードを記述して動作を試すことも可能です。この機能はターミナルのXcodeコンソールから利用できます。

Package Manager

Swift 3で導入されたSwift Package Managerは、Swiftのライブラリや実行形式ファイルをビルドするためのクロスプラットフォームツールです。このツールを使用することで、依存関係を簡単に作成したり管理したりすることができます。Swift 4では、ワークフローの新しい特長や、より多くのAPIがSwift Package Managerに追加されました。これにより、最初の公式リリースをタグ付けする前に、複数のパッケージを並行して開発することが容易になりました。複数のパッケージの分岐を同時に処理したり、コントロールしない依存関係のソースコードをローカルで変更したりすることができます。パッケージの作成者は、新しいAPIを使うことで、クライアントがパッケージ内のどの製品を利用できるようにするかを指定したり、ソースをディスク上でどのように配置するかをカスタマイズしたりすることができます。また、パッケージの作成に使用されるAPI全体がさらに分かりやすくなりました。同時に古いパッケージとのソースの互換性も保たれています。

速くてパワフル

Swiftは最初のコンセプトから、高速性を目指して構築されました。驚くほど高性能なLLVMコンパイラを使用することで、Swiftのコードが最適化されたネイティブコードへと変換されるため、最新のハードウェアの性能を存分に引き出すことができます。構文や標準ライブラリにも調整が加えられ、最も直感的な方法でコードを記述し、最高のパフォーマンスが得られるようになっています。

Swiftは、CおよびObjective-Cの両方の後継となる言語であり、型、フロー制御、演算子といった低レベルのプリミティブが含まれています。また、クラス、プロトコル、ジェネリクスのようなオブジェクト指向の機能も利用できるため、CocoaやCocoa Touchのデベロッパが求めるパフォーマンスやパワーを得ることもできます。

安全性を重視したデザイン

Swiftでは安全でないコードをすべて排除しています。変数は使用前に必ず初期化され、配列と整数にはオーバーフローのチェックが行われ、メモリは自動で管理されます。構文も、意図した通りの定義を簡単に行うことができるよう調整されました。たとえば、シンプルな3文字のキーワードで変数(var)と定数(let)を定義することができます。

また、安全性を確保するため、Swiftではデフォルトでオブジェクトをnilにすることができません。実際、nilのオブジェクトを作成したり使用したりしようとするとコンパイルエラーとなり、コンパイラの処理が停止する仕様になっています。これにより、コードの記述がより明快かつ安全になり、アプリケーション内でランタイムクラッシュが大量に発生することを防止できます。とはいえ、正当かつ適切な目的でnilが用いられる場合もあります。そのような状況のため、SwiftにはOptional型という革新的な機能があります。Optional型はnilにするこもできますが、その場合デベロッパには、?構文を使用して、この型の動作の理解と安全な取り扱いをコンパイラに示すことが求められます。

Objective-Cとの相互運用性

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

Swiftの利用を開始するには、Xcodeをダウンロードして、「リソース」タブにあるチュートリアルに従ってください。