Category Note

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で共有していただければ幸いです。

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で共有していただければ幸いです。

CSS3: 印刷時の改ページ部分をコントロールする

Web ページを印刷した時、プリント用の CSS が定義されていて、出力結果が綺麗な場合、そのサイトで扱っているコンテンツに対する信用は向上します。 今回はそんなプリント・PDF 出力時に、改行する位置を指定する CSS プロパティについてメモしておきます。 目次 印刷時の改ページ部分をコントロールする まとめ 印刷時の改ページ部分をコントロールする 改ページの CSS プロパティ説明の前に、header 内で print 専用の CSS を読み込みたい場合のサンプルコードを記載しておきます。 print.css を読み込むためのサンプルコード 改ページに関する CSS before 要素プロパティ プロパティ 値 説明 page-break-before auto 制御しない (初期値) always 直前で改ページさせる avoid 直前の改ページを禁止する 改ページに関する CSS after 要素プロパティ プロパティ 値 説明 page-break-after auto 制御しない (初期値) always 直後で改ページさせる avoid 直後の改ページを禁止する まとめ print.css もしくは @media print を使用し、HTML 要素に対し page-break-before もしくは page-break-after で改行位置を指定します。 プリント時のプレビューを確認しながら、区切りのいい位置で div や hr タグに対しこれらのスタイルを定義すれば、PDF 出力時にも適用されます。 普段は見過ごされてしまいがちな印刷時のスタイルを定義しておけば、Web コンテンツ自体の品質・信用の向上につながると思いますので、積極的に導入してみてください。 この記事がみなさんのお役に立ちましたら、下記「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で共有していただければ幸いです。

siro:chro 無料ゲーム SQN をリリースしました

img_sqn_00

sirochro 初の無料ゲームアプリ SQN をリリースしました。
記事:SQN: iOS 無料ゲームアプリ SQN - Sequential Numbers をリリース
ちょっとした時間に楽しめる完全無料のゲームなっていますので、是非ダウンロードして遊んでみてください。

↓SQN のダウンロードはこちらから