Swiftをもっと深く学ぶ

Swiftをもっと深く学ぶ

Swiftの基本を学ぶ」では、変数や定数から始めてクラスまでを学んできました。ここでは、まだ紹介していないプロパティ(Properties)や、メソッド(Methods)等々を詳しく説明していきます。ここでも、公式Swiftマニュアル「The Swift Programming Language」の構成を参考にします。


「The Swift Programming Language」(英語)はiBooksから無料でダウンロード出来ます。

できる限りオリジナルのサンプルプログラムと、その解説を多めに入れて行こうと思います。

2016/10/05 追記: Swift 3に対応開始しました。基本的にサンプルコードは全てSwift 3対応に変更する予定ですから、Swift 2.xでは動かない場合があります。

プロパティ | Properties

Swiftのプロパティ(Properties)
プロパティ(Properties)です。基本的には変数や定数のことですが、ある特定の型(クラスなど)が保有している変数などを、特別にプロパテ...
Swiftの格納プロパティ(Stored Properties)
格納プロパティ(Stored Properties)はクラスと構造体内部で使えるプロパティです。列挙型では使えません。端的に言うと、格納プロ...
Swiftの計算プロパティ(Computed Properties)
Computed Propertiesです。和訳すると「計算プロパティ」でしょうか。これは、値を保持するための箱ではなくて、型(クラスなど)...
Swiftのプロパティ監視(Property Observers)
プロパティ監視(Property Observers)は、プロパティにセットされる値が、どのように変更されるかをモニター・応答する機能です。...
Swiftの型プロパティ(Type Properties)
型プロパティ(Type Properties)です。これは、型自体に付随する特殊なプロパティです。このプロパティは実体が1つだけですので、あ...

メソッド | Methods

Swiftのメソッド(Methods)
メソッド(Methods)です。メソッドとは(基本的には)関数のことですが、型(クラスなど)が持っている内部関数のことを、特別にメソッドと呼...
Swiftのインスタンスメソッド(Instance Methods)
インスタンスメソッド(Instance Methods)です。その名前の通り、ある型(クラス、構造体、列挙型)のインスタンスが保有するメソッ...
Swiftの型メソッド(Type Methods)
型メソッド(Type Methods)です。これまで紹介したメソッドは、ある特定の型(クラスなど)のインスタンスが保有するメソッドでした。イ...

サブスクリプト | Subscripts

Swiftのサブスクリプト(Subscripts)
サブスクリプト(Subscripts)です。これまでコレクション型へのアクセスで何気なく使っていました。独自型(クラスなど)で定義できる構文...

継承 | Inheritance

Swiftのクラス継承(Inheritance)
継承(Inheritance)です。継承はクラス特有の機能で、構造体や列挙型では使えません。そういう意味では、継承はクラスをクラスたらしめて...
Swiftのクラス継承 | オーバーライド(Overriding)
オーバーライド(overriding)です。クラス特有の機能で、派生先のサブクラスでプロパティやメソッドに独自の実装を加えたい時に必要になり...

初期化 | Initialization

Swiftの初期化(Initialization)
初期化(Initialization)です。初期化というのは、インスタンス生成前に実行される「プロパティの初期化」です。Swiftでは、初期...
Swiftの初期化 | 初期化のカスタマイズ(Customizing Initialization)
ここでは初期化のカスタマイズに関して詳しく説明していきます。具体的には、インプットパラメータの指定、オプショナル型のプロパティの初期化、また...
Swiftの初期化 | 値型の初期化子の委譲(Initializer Delegation for Value Types)
初期化子の委譲(Initializer Delegation)です。和訳しても今いちピンとこないですが、要するに初期化子が別の初期化子を呼び...
Swiftの初期化 | クラスの初期化子の委譲(Initializer Delegation for Classes)
クラスは継承できるので、その初期化プロセスは構造体などに比べると複雑になります。クラスの持つ格納プロパティは、スーパークラスの持つモノも含め...
Swiftの初期化 | 初期化子の継承とオーバーライド
初期化子もクラスが持つ機能の1つですから、当然継承したりオーバーライド出来ます。クラスは2つ初期化子があって、その継承ルールもちょっと複雑で...
Swiftの初期化 | Failable Initializers
Failable Initializersです。これは「初期化が失敗する可能性がある(optionalsになる可能性がある)」ことを明示して...
Swiftの初期化 | Required Initializersとデフォルトプロパティ値のカスタマイズ
初期化子の最後はrequired initializersです。Requireというのは「要求する」「必要とする」「命じる」等の訳が当てられ...

Deinitialization

Swiftの終了処理と終了子(Deinitialization)
初期化との対比で書けば、「Deinitialization」は「終了化」またはもっと分かりやすく言うと「終了処理」でしょうか?Swiftにお...

自動参照カウント | Automatic Reference Counting

Swiftの自動参照カウント(Automatic Reference Counting)
Automatic Reference Counting(ARC)はSwiftのメモリ管理機能で、日本語にすると「自動参照カウント」です。カ...
Swiftの循環参照(Strong Reference Cycles)| クラスの場合
循環参照です。普通は「circulating references」とか「reference cycles」だと思いますが、Swiftでは強...
Swiftの循環参照 | クロージャの場合
循環参照の続きで、今回はクロージャ(Closures)の場合です。クロージャは関数をもっと一般化(抽象化?)したようなもので、実はクロージャ...

オプショナルチェイン | Optional Chaining

Swiftのオプショナルチェイン(Optional Chaining)
オプショナルチェイン(Optional Chaining)です。これまではオプショナル型の何か(プロパティなど)に対してのアクセスを取り扱っ...

型キャスト | Type Casting

Swiftの型キャスト(Type Casting)
型キャスト(Type Casting)です。型変換と和訳しても良いのですが、明示的に型自体を変換する訳では無いので、ここでは型キャストと呼ぶ...

機能の拡張 | Extensions

SwiftのExtensions(機能の拡張)
Extensions(エクステンション)です。Extension(s)は和訳すると「拡張」「延長」「拡大」という意味です。Swiftでのex...

プロトコル | Protocols

Swiftのプロトコル(Protocols)
プロトコル(Protocols)です。和訳すると「外交儀礼」「手順」「手続き」「(コンピュータの)通信規約」などの意味があります。Swift...
Swiftのプロトコル | 型としてのプロトコルと委譲デザインパターン
プロトコルはインターフェイスを提供する機能ですが、プロトコル自体をクラスや構造体のような独自型として取り扱うことが可能です。プロトコル内部に...
Swiftのプロトコル | プロトコル拡張
Extensionとプロトコルを組み合わせると、大きく分けて2通りの拡張が可能です。1つはプロトコルを採用しつつ既存の型を拡張する方法、もう...
Swiftのプロトコル | プロトコルの合成
プロトコルの合成(Protocol Composition)です。複数のプロトコルにまとめて準拠させる場合に便利な構文になります。 こ...
Swiftのプロトコル | プロトコル準拠のチェック(Checking for Protocol Conformance)
型キャスト(type casting)はプロトコルに対しても使用出来て、その場合プロトコルに準拠しているかどうかのチェックになります。型キャ...
Swiftのプロトコル | オプショナルプロトコル要求(Optional Protocol Requirements)
オプショナルプロトコル要求(Optional Protocol Requirements)です。実装しなくても良いプロパティやメソッドを提供...