Tag Swift

Update!

Swift: guard と defer についての覚書

Swift2 より登場した guard と defer ですが、if 文に慣れすぎてなかなか使おうとせず、覚えられなかったので、勉強を兼ねてメモしておきます。 目次 guard defer guard defer サンプル まとめ guard 条件式が false の場合の処理を記述することができる。if の else 部分のみの構文。 defer スコープを抜け出す際に、実行される処理を定義できる。 guard defer サンプル ViewController.swift 実行結果 まとめ guard と defer のセットを適切に利用すれば、if 文よりモダンかつスマートに処理が記述できますね。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。
Update!

Swift: デザインパターン > 構造パターン > Flyweight

オブジェクト設計において、定石となる手法をパターン化したものを デザインパターン といいます。 デザインパターンをきちんと勉強していない人でも、Web のおかげで知らず知らずのうちに使って(コピペして)その恩恵を享受しています。 自分自身パターン概要を一読しただけで、あいまいな使い方をしているものが多く、この際勉強を兼ねて GOF 23 パターンのなかでよく利用するものを Swift3 で記述していきたいと思います。 今回は 構造パターン の Flyweight について説明します。 目次 [構造] Flyweight パターン まとめ [構造] Flyweight パターン Flyweight とは、フライ級という意味で、生成済みのインタンスを共有し、機能が重複する新規インスタンスの生成を防止し軽量化をおこなうパターン。 サンプルコード FlyweightFactory.swift FlyweightObject.swift ViewController.swift 実行結果 まとめ インタンスを共有するという意味において Flyweight は Singleton と似たデザインパターンですが、Singleton は1つのインスタンスを保持するのに対し、Flyweight はキーと値(オブジェクト)を1対1で保存するといった違いがあります。 次回は 振る舞いパターン の Interpreter パターンを説明したいと思います。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Swift: デザインパターン > 構造パターン > Facade

オブジェクト設計において、定石となる手法をパターン化したものを デザインパターン といいます。 デザインパターンをきちんと勉強していない人でも、Web のおかげで知らず知らずのうちに使って(コピペして)その恩恵を享受しています。 自分自身パターン概要を一読しただけで、あいまいな使い方をしているものが多く、この際勉強を兼ねて GOF 23 パターンのなかでよく利用するものを Swift3 で記述していきたいと思います。 今回は 構造パターン の Facade について説明します。 目次 [構造] Facade パターン まとめ [構造] Facade パターン Facadeとは、正面という意味で、複数クラスをまたぐような処理を隠蔽し、1つのクラス(Facade=正面)を提供し、利用者にシンプルなインターフェースを用意するパターン。 サンプルコード Facade.swift ViewController.swift 実行結果 まとめ UserDefault の値の出し入れを Facade クラスのみから行うことができました。 次回は 構造パターン の Flyweight パターンを説明したいと思います。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Swift: デザインパターン > 構造パターン > Decorator

オブジェクト設計において、定石となる手法をパターン化したものを デザインパターン といいます。 デザインパターンをきちんと勉強していない人でも、Web のおかげで知らず知らずのうちに使って(コピペして)その恩恵を享受しています。 自分自身パターン概要を一読しただけで、あいまいな使い方をしているものが多く、この際勉強を兼ねて GOF 23 パターンのなかでよく利用するものを Swift3 で記述していきたいと思います。 今回は 構造パターン の Decorator について説明します。 目次 [構造] Decorator パターン まとめ [構造] decorator パターン Decorator(装飾者)パターンは、既存オブジェクトに機能や振る舞いを動的に追加できるパターン。 サンプルコード Player.swift Component となるクラス。 Hero.swift ConcreteComponent となるクラス。 Decorator.swift Decorator クラスには Player (Component) インスタンスをメンバ変数として保持するのがポイント。 Sword.swift ConcreteDecorator となるクラス。 PowerStone.swift ConcreteDecorator となるクラス。 ViewController.swift 実行結果 まとめ 上記サンプルのように Decorator パターンを利用すれば、Hero クラスを継承することなく動的に機能拡張を行うことができます。 次回は 構造パターン の Facade パターンを説明したいと思います。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Swift: デザインパターン > 構造パターン > Composite

オブジェクト設計において、定石となる手法をパターン化したものを デザインパターン といいます。 デザインパターンをきちんと勉強していない人でも、Web のおかげで知らず知らずのうちに使って(コピペして)その恩恵を享受しています。 自分自身パターン概要を一読しただけで、あいまいな使い方をしているものが多く、この際勉強を兼ねて GOF 23 パターンのなかでよく利用するものを Swift3 で記述していきたいと思います。 今回は 構造パターン の Composite について説明します。 目次 [構造] Composite パターン まとめ [構造] Composite パターン Composite とは合成、複合を意味し、Composite パターンでは再帰的な構造を表現し、階層構造で表現されるオブジェクトの取扱いを容易にする。 サンプルコード Branch.swift Leaf.swift ViewController.swift 実行結果 まとめ Branch クラスに Branch と Leaf クラスが属しています。 Branch と Leaf が execute により、Branch に Leaf や、別の Branch を含むことが可能になりました。 次回は 構造パターン の Decorator パターンを説明したいと思います。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Swift: デザインパターン > 構造パターン > Bridge

オブジェクト設計において、定石となる手法をパターン化したものを デザインパターン といいます。 デザインパターンをきちんと勉強していない人でも、Web のおかげで知らず知らずのうちに使って(コピペして)その恩恵を享受しています。 自分自身パターン概要を一読しただけで、あいまいな使い方をしているものが多く、この際勉強を兼ねて GOF 23 パターンのなかでよく利用するものを Swift3 で記述していきたいと思います。 今回は 構造パターン の Bridge について説明します。 目次 [構造] Bridge パターン まとめ [構造] Bridge パターン クラスなどの実装と、呼出し側との橋渡し(Bridge)するクラスを用意し、実装と機能を分離することで、実装の変更や機能追加を容易にする。 サンプルコード AbstractColor.swift ConcreteWhiteColor.swift ConcreteBlackColor.swift ImplementWhiteColor.swift ImplementBlackColor.swift ViewController.swift 実行結果 まとめ AbstractColor という抽象クラスと protocol Implementor の Bridge(橋渡し)により、実装と機能が分離されています。 これにより、サブクラス(実装)を追加しても、その都度機能を実装する必要がなくなるため、プロジェクトのメンテナンス性が向上します。 次回は 構造パターン の Composite パターンを説明したいと思います。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Swift: デザインパターン > 構造パターン > Adapter

オブジェクト設計において、定石となる手法をパターン化したものを デザインパターン といいます。 デザインパターンをきちんと勉強していない人でも、Web のおかげで知らず知らずのうちに使って(コピペして)その恩恵を享受しています。 自分自身パターン概要を一読しただけで、あいまいな使い方をしているものが多く、この際勉強を兼ねて GOF 23 パターンのなかでよく利用するものを Swift3 で記述していきたいと思います。 今回は 構造パターン の Adapter について説明します。 目次 [構造] Adapter パターン まとめ [構造] Adapter パターン 互換性のないインタフェースを持つクラス同士に手を加えず、共通のインタフェースを提供する。 サンプルコード Adapter.swift Adaptee.swift ViewController.swift 実行結果 まとめ Objective-C や Swift でおなじみの protocol を利用し、Adaptee クラスを継承することで、Adapter クラスで requiredMethod を実装しています。 次回は 構造パターン の Bridge パターンを説明したいと思います。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Swift: デザインパターン > 生成パターン > Abstract Factory

オブジェクト設計において、定石となる手法をパターン化したものを デザインパターン といいます。 デザインパターンをきちんと勉強していない人でも、Web のおかげで知らず知らずのうちに使って(コピペして)その恩恵を享受しています。 自分自身パターン概要を一読しただけで、あいまいな使い方をしているものが多く、この際勉強を兼ねて GOF 23 パターンのなかでよく利用するものを Swift3 で記述していきたいと思います。 前回は Factory Method パターンを説明しましたが、もう一つの Factory パターンである 生成パターン の Abstract Factory について説明します。 目次 Factory について [生成] Abstract Factory パターン まとめ Factory の概要 オブジェクトの 生成 と、オブジェクトの 実装 を 分離する するパターン。 プロダクトを発注する側は、工場内でどういった工程を経てプロダクトが完成するかを知らなくても、工場に対しプロダクトを要求すれば、プロダクトを受け取る事ができる。 この仕組みにより、プロダクト発注側はプロダクトの管理 に、工場側はプロダクトの生産工程 に集中できるようになる。 [生成] Abstract Factory パターン 複数の関連オブジェクトを、各具象クラス(ConcreteProduct)を明確にせず、オブジェクト生成の インタフェースのみを提供する。 Factory の原則と Factory Method パターンとの違い Factory の原則 オブジェクトを生成するとき、オブジェクトの生成のためのインタフェースを提供し、インスタンス化するクラスを決定する役割はサブクラスで行う。 Factory Method パターン オブジェクトを生成するとき、オブジェクトの生成のためのインタフェースを提供し、インスタンス化するクラスを決定する役割はサブクラスで行う。 Abstract Factory パターン オブジェクトを生成するとき、具体的なクラスを明確にせず(カプセル化)、生成のためのインタフェースを提供する。 パターンの概要 Product Protocol により抽象的に生成オブジェクト ConcreteProduct のインタフェースを決定する。 ConcreteProductA, B 具体的な Product を決定する。 サンプルコード ConcreteProductA.swift ConcreteProductB.swift ViewController.swift 実行結果 まとめ Abstract Factory パターンにより、具象オブジェクトの実装を気にすることなく、オブジェクトの生成と生成したオブジェクトの利用に専念できるようになり、コードのメンテナンス性が向上しました。 次回は 構造パターン の Adapter パターンを説明したいと思います。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Swift: デザインパターン > 生成パターン > Factory Method

オブジェクト設計において、定石となる手法をパターン化したものを デザインパターン といいます。 デザインパターンをきちんと勉強していない人でも、Web のおかげで知らず知らずのうちに使って(コピペして)その恩恵を享受しています。 自分自身パターン概要を一読しただけで、あいまいな使い方をしているものが多く、この際勉強を兼ねて GOF 23 パターンのなかでよく利用するものを Swift3 で記述していきたいと思います。 今回は 生成パターン の Factory Method について説明します。 目次 Factory の概要 [生成] Factory Method パターン まとめ Factory の概要 オブジェクトの 生成 と、オブジェクトの 実装 を 分離する するパターン。 プロダクトを発注する側は、工場内でどういった工程を経てプロダクトが完成するかを知らなくても、工場に対しプロダクトを要求すれば、プロダクトを受け取る事ができる。 この仕組みにより、プロダクト発注側はプロダクトの管理 に、工場側はプロダクトの生産工程 に集中できるようになる。 [生成] Factory Method パターン オブジェクトの生成のインタフェースを提供し、インスタンス化するクラスを決定するのはサブクラスで行う。 Factory の原則と Abstract Factory パターンとの違い Factory の原則 オブジェクトを生成するとき、オブジェクトの生成のためのインタフェースを提供し、インスタンス化するクラスを決定する役割はサブクラスで行う。 Factory Method パターン オブジェクトを生成するとき、オブジェクトの生成のためのインタフェースを提供し、インスタンス化するクラスを決定する役割はサブクラスで行う。 Abstract Factory パターン オブジェクトを生成するとき、具体的なクラスを明確にせず(カプセル化)、生成のためのインタフェースを提供する。 パターンの概要 Product 生成オブジェクト ConcreteProduct のインタフェースを決定 ConcreteProduct 具体的な製品を決定します。 サンプルコード Product.swift ConcreteProduct.swift ViewController.swift 実行結果 ※ XXX はプロジェクト名 まとめ 今回は ViewController の Protocol と Extension を利用して抽象クラスを実現していますが、次期 Swift では抽象クラスにも対応するみたいです。 次回は 生成パターン の Abstract Factory パターンを説明したいと思います。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。

Swift: デザインパターン > 生成パターン > Builder

オブジェクト設計において、定石となる手法をパターン化したものを デザインパターン といいます。 デザインパターンをきちんと勉強していない人でも、Web のおかげで知らず知らずのうちに使って(コピペして)その恩恵を享受しています。 自分自身パターン概要を一読しただけで、あいまいな使い方をしているものが多く、この際勉強を兼ねて GOF 23 パターンのなかでよく利用するものを Swift3 で記述していきたいと思います。 今回は 生成パターン の Builder について説明します。 目次 [生成] Builder パターン まとめ [生成] Builder パターン Builder はオブジェクトの生成(建築)過程を抽象化し、動的にオブジェクトを生成(建築)することを可能にするパターンです。 パターンの概要 Director Builder に提供されているインタフェースを使用しオブジェクトを生成(建築)する。 Builder オブジェクト生成(建築)過程のインターフェースを定義する。 ConcreteBuilder Builder が定義したインターフェースを実装する。 Product Builder により生成されたオブジェクト(成果物)。 サンプルコード Director.swift Builder.swift ConcreteBuilder.swift Product.swift ViewController.swift 実行結果 まとめ Director は ConcreteBuilder をすることで、Product が生成されていることが確認できます。 次回は 生成パターン の Factory Method パターンを説明したいと思います。 この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。