![キュリオシティソフトウェア書店](https://booth.pximg.net/c/48x48/users/2878005/icon_image/416aa9f0-889b-4f4f-9b4e-b6ac8b44fb33_base_resized.jpg)
Effective Swift
- 無料サンプル版PDFDigital0 JPY
- 電子書籍版 PDF/EPUB形式Digital2,200 JPY
![Effective Swift](https://booth.pximg.net/6659d72b-bc28-4e49-8381-0125328aa64a/i/3755447/328b3662-e24f-48eb-b002-0799c656d30b_base_resized.jpg)
プログラミング言語Swiftを使ったアプリ開発について、実践的かつ効果的な観点からその技法をまとめた書籍です。 - PDF&EPUB 形式 - ページ構成: PDF形式 A5サイズ96ページ
# 対象読者
本書が対象とする読者は、『クロージャが何か』『DispatchQueue を用いた非同期処理についてのコードを見てどのような順序で処理が起こっているか』『オプショナルを実現している Optional 型』などについて知っていることを推奨します。 他には『RxSwift研究読本』『VIPER研究読本』『Combine framework ガイドブック』などの書籍を読んで、さらにSwiftについて知りたくなった方が読むことも想定しています。 https://swift.booth.pm/items/1076262
# 目次
まえがき 本書について 本書がカバーする範囲 本書の構成 本書が想定する読者 本書内の表記について 本書の読み方 免責事項 序章 本書で用いる用語 関数(メソッドおよびFreeFunction) インスタンス 関数の主作用および副作用 その他の用語 第1章 Swift に慣れよう 1.1 可能な限り型推論させよう 1.2 guard 文は条件を反転させて考えないようにする 1.3 条件を必要とする分岐ではその条件を明確にしよう 1.4 可能ならletを使おう 1.5 Array を let として宣言することで要素の操作をできなくする 1.6 可能ならselfを省略しよう コラム: プロパティへのアクセスを明確にするために self を省略したくない? 1.7 ID を持つエンティティには Identifiable を積極的に採用する 1.8 配列を返すメソッドで 0 件の場合 nil を返すのではなくカラ配列を返す 1.9 オプショナルにする必要のない引数はオプショナルにしない 1.10 nonmutation かつ計算量が O(1) ならプロパティを検討する 1.11 汎用的かつ確立されたドメインには Free Functions を使う 1.12 関数でデフォルト引数を利用する 1.13 デフォルト動作のためにデフォルト引数を利用する 1.14 オプショナルよりカラのクロージャを利用する 1.14.1 クロージャのエスケーピングとは何かを理解する 1.14.2 なぜクロージャをオプショナルにするとエスケーピングされるのかを理解する 第2章 参照カウント方式を理解してメモリリークを避ける 2.1 参照についての基礎を理解する 2.1.1 値型と参照型を理解する 2.1.2 参照カウンターを理解する 2.1.3 ARCについて理解する 2.1.4 参照型の参照方式を理解する 強参照 弱参照 非所有参照 参照カウントは1種類だけとは限らない 2.2 循環参照を理解する 2.2.1 クラス同士の循環参照を理解する 2.2.2 弱参照により循環参照を解決する 2.2.3 クロージャによる循環参照を理解する 2.2.4 キャプチャリストを理解する 値型をキャプチャリストに記載する キャプチャリストがキャプチャするタイミング 参照型のキャプチャ 2.3 クロージャによる循環参照が強参照でも解決されるパターンを理解する 2.4 勘違いしやすい点を理解する 2.4.1 エスケーピングされたクロージャで強参照しても必ず循環参照するわけじゃない 2.5 強参照の参照カウントを出力して確かめる 2.6 まとめ コラム:unownedの使い所 第3章 型の命名 3.1 enumによる名前空間を検討する 3.2 能力を表すプロトコルは動詞の接尾辞に able,ible をつける 3.3 プロトコル名が抽象的概念として解釈できれば名詞でもいい 第4章 4.1 命名には役割を示す 4.2 可能であればuuidという変数名は避ける 4.3 変数名や定数名はローワーキャメルケースにする 4.4 strongSelf などせず self をシャドーイングしても問題はない 第5章 関数の命名 5.1 イニシャライザおよびFactoryメソッド 5.1.1 可逆性のある変換のイニシャライザではラベルを省略してよい 5.1.2 ナローイング変換はラベルを省略せずその絞りこみ方法をラベルとする 5.1.3 Factory メソッドの命名は"make"で始める 5.1.4 Factory メソッドの命名はラベルに前置詞を含めない 5.2 関数の呼び出し元を意識した関数の命名 5.2.1 Bool を返す関数は呼び出し元が検証するような名前にする 5.3 ラベルに前置詞を使うことを検討する 5.3.1 明確な関数名のためにあいまいさを避けて必要な前置詞を含める 5.3.2 前置詞だけでは引数の意図が明確でない場合前置詞句を使う 5.3.3 英文法として正しくても引数が行う意味をラベルで伝える必要がある 5.4 型による制約と表現力を考慮する 5.4.1 明確な関数名のために不必要な情報は省略する 5.4.2 型付けが弱い引数の場合は明確さのため補足する 5.5 複数の引数を持つ関数 5.5.1 引数を区別する必要があればラベルを省略せず表現する 5.5.2 引数が関数の中心でない場合は流暢さを妥協する 5.5.3 引数を区別できなければすべてのラベルを省略する 5.5.4 複数の引数が 1 つの前置詞に対して必要なら前置詞をメソッドに含める 5.6 副作用を持つ関数 5.6.1 nonmutating な関数は名詞句のようにする 5.6.2 mutating な関数は命令形の動詞句とする 5.6.3 mutating と nonmutating な関数を持つ場合に動詞で統一するならed/ingを適用する 5.6.4 mutating と nonmutating な関数を持つ場合かつ名詞での表現が自然ならformをメソッド名に加える 5.7 省略した内容 第6章 Foundation を利用した実用的なテクニック 6.1 単位を扱う際には用意された型があることを知っておこう 6.2 Codable 利用時には CodingKeys で lowerCamelCase にする 付録A 開発のためのドキュメント A.1 公式ドキュメント A.1.1 LanguageGuide A.1.2 APIDesignGuideline A.1.3 SwiftFourms A.1.4 Xcode A.2 Swift情報Webサイト A.2.1 HACKINGWITHSWIFT A.2.2 SwiftbySundell A.2.3 SwiftLee A.2.4 ASCIIwwdc/wwdc-session-transcripts 謝辞 ベータ版コントリビューター&レビュアー swift-developers-japan Discord Twitter その他 Licences 押絵 あとがき
# 無料サンプル
サンプルとして無料版PDFをダウンロードできます。本文を断片的に収録しており、内容は最新でない可能性があります。
# フィードバック
本書へのフィードバックやご感想は下記ページにてお待ちしています! https://github.com/CSBooks/EffectiveSwiftBookSamples/discussions
# サンプルコード
書籍のコードについてはXcode 13.2.1で確認しています。(書籍内のコードはコピー可能なので必要性が無いとは思いますが)随時下記リポジトリに追加する予定です。 https://github.com/CSBooks/EffectiveSwiftBookSamples
# フィードバック
## ベータ版ユーザから - 第一章読ませていただきました。非常にわかりやすく勉強になる内容でした!ありがとうございます!!(shin-usu) ## 購入者から - 本は本当に楽しく読ませていただいています Swiftでの書き方が説明されているちょうどいい量の本がなく困っていたので、後輩に勧める第一候補になりました!(@MobileAppDevEwa)
# 更新履歴
## 2022.5.16 - 第一章でリーダブルコードでは要約変数として説明されていることを追記 ## 2022.4.1 - fix typo: formとすべきところをfromとしてしまっていたのを修正 ## 2022.3.30 - 図2.5 Swift の参照型インスタンスのライフサイクルで弱参照をtypo修正 ## 2022.3.29 - リリース