この記事でわかること
- SwiftでJSONを扱う際の効率化ツールを知れる
- JSONPlaceholderの基本的な利用方法がわかる
- quicktypeの基本的な利用方法がわかる
動作確認済みの環境
【XCode】15.3
【Swift】5.10
【iOS】17.5.1
【macOS】Sonoma 14.4.1
はじめに
アプリ開発において、Webサービスとの通信やデータ保存のためにJSONを用いるシーンは頻繁にあります。
今回の記事では、JSONを利用する際に作業を効率化してくれる2つのツールとその具体的な使い方についてご紹介します。
JSONPlaceholder
1つめはJSONPlaceholderです。
Web上で利用可能なツールで、APIを利用することであらかじめ作成されたダミーのJSONデータをダウンロードできます。
このツールを利用することで、アプリの機能テストを行う際、ダミーデータを自分で用意する手間を省くことが可能になります。
利用方法
画面を下にスクロールし[Resources]に移動します。
ここに各種ダミーデータが格納されています。ためしに/postsをクリックしてみましょう。
合計100件の投稿データを確認することができます。
投稿データの他にも、JSONPlaceholderには以下のデータが用意されています。
/posts: 投稿データ100件
/comments: コメントデータ500件
/albums: アルバムデータ100件
/photos: 画像データ5000件
/todos: Todoデータ200件
/users: ユーザーデータ10件
例えば投稿データを用いて機能テストを行いたい場合には、https://jsonplaceholder.typicode.com/postsからデータを取得するコードを書くことで、JSONPlaceholder上のダミーデータを利用することができます。
<参考>データダウンロードを行う機能の実装例
//URLを作成
let url = URL(string: "https://jsonplaceholder.typicode.com/posts")!
//データを取得
URLSession.shared.dataTask(with: url) { data, response, error in
//正しくデータ取得できているか確認
guard
let data = data,
error == nil,
let response = response as? HTTPURLResponse,
response.statusCode >= 200 && response.statusCode < 300
else{
return
}
//JSONデータのデコード
guard let posts = try? JSONDecoder().decode([Post].self, from: data) else{
return
}
//デコードしたデータを出力
for post in posts {
print("User ID: \(post.userID)")
print("ID: \(post.id)")
print("Title: \(post.title)")
print("Body: \(post.body)")
print("----------")
}
}.resume()
基本的には上記の2STEPだけで利用することが可能です。
より細かい仕様については公式ガイドをご覧ください!
quicktype
2つ目はquicktypeです。
こちらもWeb上で利用できるツールで、JSONデータをコピペすることで、エンコード・デコード用のSwiftカスタム構造体の定義を自動で生成してくれます。
JSONの構造が複雑になると、構造体側のCodingKey・イニシャライザ・メソッドの実装が複雑になりがちですが、quicktypeを使えば実装の手間を省くことができます。
さっそく使い方を見てみましょう。
利用方法
デコード・エンコードを行いたいJSONデータをquicktypeにコピー&ペーストします。
例えば、先ほど紹介したJSONPlaceholderで以下のデータを取得し、デコード・エンコードを行うとします。
その場合、このJSONを丸ごとコピーします。その後quicktypeを開き、以下の順で作業を行います。
①[Name]欄にデータの名称(今回はPost)を入力します。
②Source Type欄はJSONを選択します。
③白線の四角の中に、先ほどコピーしておいたJSONデータをペーストします。
④入力されたJSONデータを元に、quicktypeが最適な形のSwiftカスタム構造体の定義を作成し、表示してくれます。
あとは表示されたコードをXcodeに貼り付けるだけで、簡単に構造体の定義が完了します!
おわりに
今回は、JSONを利用する際に作業を効率化してくれる2つのツールとその使い方についてご紹介しました。
本文中で紹介しきれなかった細かい仕様に関しては、以下の参考文献をご覧ください!
以上、参考になれば嬉しいです。
ここまでお読みくださり、ありがとうございました????
※本記事は、著者が学習した内容をまとめたものとなります。内容の精査につきましては、執筆時の技術力で可能な限りの注意を払っていますが、万が一誤りがございましたらフォームからご一報いただけると幸いです????????
参考文献
- Swiftful Thinking. “Download JSON from API in Swift w/ URLSession and escaping closures | Continued Learning #22”. Youtube. 2021-04, (参照 2024-06-12)
- JSONPlaceholder. “Guide”. JSONPlaceholder. 2024, (参照 2024-06-17)
→データの絞り込み方については本文中に記載していない。頻繁に利用する場合は追記予定。 - glideapps. “quicktype”. Github. 2024, (参照 2024-06-17)
→各種オプションの使い方については本文中に記載していない。頻繁に利用する場合は追記予定。
コメント