Contents 非表示
1. はじめに
学び直そうと思ったきっかけ
SwiftでJSONを扱う = Codable がほぼ標準の今の時代だけど、最近入ったプロジェクトでバリバリObjectMapperベースで実装されてたので、学び直そうと思ったというのがきっかけ。
割とObjectMapperを学び直す必要がある場面は意外とあると感じた今日この頃。
- 長年運用されている レガシーiOSプロジェクトにアサインされた時
Codableでは表現しづらい 柔軟なJSON構造のとき- キー変換や型変換が多く、
Decodableが煩雑になっているケース - すでにObjectMapper前提で書かれたAPI層の保守・改修
ObjectMapper =「新規では使わないけど、読めないと困るライブラリ」という認識かなという感じです、おそらく。
この記事の対象読者
- SwiftでのJSONパース経験がある人
Codableは使ったことがあるが、ObjectMapperは曖昧な人- 既存プロジェクトのObjectMapperコードを理解したい人
- 「なぜ昔はObjectMapperが使われていたのか」を知りたい人
※ Swift初心者でも読み進められますが、struct / class / Optional の基礎は前提とします。
2. ObjectMapperとは?
ObjectMapperの概要
ObjectMapper = JSONとSwiftのModelを相互変換するためのライブラリ
最大の特徴は、
👉 JSONの構造とModelのマッピングをコードで明示的に書けること
その中心となるのが Mappable プロトコルです。
protocol Mappable {
init?(map: Map)
mutating func mapping(map: Map)
}この2つを実装することで、JSON ⇄ Model の変換が可能になります。
どんな場面で使われてきたか
ObjectMapperが広く使われていたのは、Swift 2〜4時代だそう (その時はまだエンジニアですらなかったのでググって知っただけ)
当時の状況:
Codableが存在しない or 実用的でなかった- JSONの構造が複雑(ネスト・キー不一致・型揺れ)
- API仕様が頻繁に変わる (これは今もな気がするけど)
といった背景があり、
柔軟に対応できるObjectMapperは非常に重宝されていたらしいです。
強みを発揮するケース:
- ネストしたJSONをフラットなModelにしたい
- JSONキーとプロパティ名が一致しない
- 日付やEnumのカスタム変換が多い
現在の立ち位置(Codable登場後)
Swift 4以降、Codable が登場し状況は一変:
| 観点 | ObjectMapper | Codable |
|---|---|---|
| 記述量 | 多い | 少ない |
| 柔軟性 | 高い | やや低い |
| 標準対応 | ❌ | ✅ |
| 新規開発 | △ | ◎ |
現在のObjectMapperは、
- 新規開発で積極採用するライブラリではない
- 既存コードを理解・保守するために知っておくべき存在
というポジションに落ち着いているという感じ。
3. ObjectMapperの導入方法
CocoaPodsでの導入
レガシープロジェクトでは、今でもCocoaPodsが使われていることが多いです。
pod 'ObjectMapper'Swift Package Managerでの導入
最近のXcodeでは、SPMが主流です。
- Xcode → File > Add Packages
- リポジトリURLを入力
https://github.com/tristanhimmelman/ObjectMapper - バージョンを指定して追加
導入時の注意点
- メンテナンスは最低限(活発ではない)
- Swiftの最新機能(Macros / Observation等)には非対応?
structを使う場合、mutatingが必要
次から、基本的な使い方やよく使うマッピング手法を学んでいきましょう。

