コンテンツにスキップ

Swift/改廃された技術

出典: フリー教科書『ウィキブックス(Wikibooks)』

改廃された技術

[編集]

Swiftの改廃された技術や利用が推奨されない技術は、言語の進化や新しい要求、パフォーマンス向上の必要性に応じて置き換えられます。以下に、代表的な技術を示します。

unowned参照

[編集]
  • サポート開始年: 2014年(Swift 1.0)
  • サポート終了年: 2021年(Swift 5.5以降、非推奨化)
廃止または衰退の理由
unowned参照は、予期せぬクラッシュを引き起こす可能性があるため、代わりにweak参照の使用が推奨されるようになりました。
代替技術
weak参照を使用し、強い参照サイクルを防ぎつつ、参照の解放タイミングを管理してください。

NSDataNSString

[編集]
  • 対象: NSDataおよびNSStringクラス
廃止または衰退の理由
Swift 3以降、これらのクラスはDataおよびStringに置き換えられました。
代替技術
DataおよびStringを使用してください。これにより、Swiftの型安全性とパフォーマンスが向上します。

@objc属性による互換性

[編集]
  • サポート開始年: 2014年(Swift 1.0)
  • サポート終了年: 2020年(Swift 5.3以降、制限的な利用が推奨)
廃止または衰退の理由
Swiftの進化により、Objective-Cとの互換性が必ずしも必要でなくなり、@objcの使用はより限定的な場面に絞られました。
代替技術
Swiftの新しい機能(例: protocol)を利用し、Objective-Cとの相互運用を最小限に抑えてください。

++および--演算子

[編集]
  • サポート開始年: 2014年(Swift 1.0)
  • サポート終了年: 2015年(Swift 2.0で削除)
廃止または衰退の理由
自増自減演算子(++および--)は、コードの可読性を低下させる可能性があり、より明示的な方法が推奨されるようになりました。
代替技術
明示的な加算(+=)および減算(-=)を使用してください。

Cスタイルのforループ

[編集]
  • サポート開始年: 2014年(Swift 1.0)
  • サポート終了年: 2016年(Swift 3.0)
廃止または衰退の理由
冗長でエラーが発生しやすい構文であったため、削除されました。
代替技術
for-inループを使用してください。

NSURLConnection

[編集]
  • サポート開始年: 2009年(iOS 3.0)
  • サポート終了年: 2016年(iOS 9.0以降、非推奨化)
廃止または衰退の理由
NSURLConnectionは、非同期通信に関する新しいAPIであるURLSessionに置き換えられました。
代替技術
URLSessionを使用して非同期通信を行うことが推奨されます。これにより、より効率的で柔軟なネットワーク操作が可能になります。

NSErrorベースのエラーハンドリング

[編集]
  • 対象: NSErrorを使用したエラーハンドリング
廃止または衰退の理由
Swift 2以降、エラーハンドリングはtry/catch文を使用するように変更され、より簡潔で安全なエラーハンドリングが可能になりました。
代替技術
Swiftのdo-try-catch構文を使用して、エラーハンドリングを行ってください。

varによる暗黙の可変性

[編集]
  • 対象: varキーワードによる暗黙的な可変性
廃止または衰退の理由
Swift 3以降、letvarの使い分けがより厳密にされ、明示的な可変性の制御が推奨されるようになりました。
代替技術
不変オブジェクトを使用するためにletを積極的に使用し、必要な場合にのみvarを使用してください。

var キーワードによる関数スコープの変更

[編集]
  • サポート開始年: 2014年(Swift 1.0)
  • サポート終了年: 2016年(Swift 3.0)
廃止または衰退の理由
関数引数のvarキーワードが予期せぬ副作用を引き起こす可能性があるため、非推奨化されました。
代替技術
引数を変更可能にするには、ローカル変数を作成してください。

@IBOutletおよび@IBActionの強制的な接続

[編集]
  • サポート開始年: 2014年(Swift 1.0)
  • サポート終了年: 2020年(Swift 5.3以降、制限的な利用が推奨)
廃止または衰退の理由
@IBOutletおよび@IBActionの強制的な接続は、コードの可読性を損なう場合があり、よりクリーンな方法に置き換えられました。
代替技術
宣言的なUI構築(例: SwiftUI)を使用し、UIコンポーネントとコードの結びつけを簡素化してください。

NSDataのファイル読み書き

[編集]
  • 対象: NSDataを使用したファイルの読み書き
廃止または衰退の理由
Swift 3以降、Dataに置き換えられ、より型安全で効率的なファイル操作が可能になりました。
代替技術
Dataを使用して、ファイルの読み書きやバイナリデータの操作を行ってください。

NSTimer (Timerの旧名称)

[編集]
  • サポート開始年: 2014年(Swift 1.0)
  • サポート終了年: 2016年(Swift 3.0で名称変更)
廃止または衰退の理由
Cocoa APIのモダン化の一環として、Swiftネイティブの命名規則に合わせるために名称が変更されました。
代替技術
Timerクラスを使用してください。

AnyObject のプロトコル要件の変更

[編集]
  • サポート開始年: 2014年(Swift 1.0)
  • サポート終了年: 2016年(Swift 3.0)
廃止または衰退の理由
型安全性を高め、誤用を防ぐために変更されました。
代替技術
新しいSwiftプロトコルの設計を使用してください。

Implicitly Unwrapped Optionals (IUO)

[編集]
  • 対象: !を使用した暗黙的アンラップオプショナル
利用推奨されない理由
予期しないクラッシュを引き起こすリスクがあるため、新規コードでの使用が推奨されなくなりました。
代替技術
必要に応じて明示的にアンラップするか、安全なオプショナルチェーンを使用してください。

ストリングのインデックス型操作

[編集]
  • 対象: インデックスへの整数アクセス(例: string[0]
利用推奨されない理由
インデックス型がUnicodeスカラーを考慮したものに変更され、整数インデックスは非推奨化されました。
代替技術
string.index(string.startIndex, offsetBy: n)を使用してください。

ArrayによるNS系クラスの置き換え

[編集]
  • 対象: Objective-CのNSArrayなどのコレクション型
利用推奨されない理由
Objective-CのNS系クラスはSwiftの型安全性を損なう可能性があるため、推奨されなくなりました。
代替技術
SwiftネイティブのArrayDictionarySetを使用してください。

オブジェクトのWeak参照

[編集]
  • 対象: Objective-Cで使用されたunsafe_unretained
利用推奨されない理由
ARC(Automatic Reference Counting)を導入した後、メモリリークやクラッシュの原因となるunsafe_unretainedの使用は非推奨化されました。
代替技術
weakまたはunownedキーワードを使用してください。