1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

スネークケースをキャメルケースに変換する方法

Last updated at Posted at 2019-11-28

みなさんこんにちは!!
この記事ではSwiftにおいてスネークケース:snake:をキャメルケース:dromedary_camel:に変換する方法について解説していきます!!
(初めての本格的な技術的な記事なので稚拙な文章、知識の浅さがありますがお許しください!というかご指摘ください:bow_tone1:

##今回の目的
先人の方が投稿している記事にはなぜ理解しておかなければならないのか?どういったところで活用するのかが初学者の私には難しかった:sweat_drops:
そのため理解していなかった昔の自分に説明するつもり噛み砕いて説明しようと思ったからです!(考えを整理するためでもあります!)

##そもそもの話(スネークケース:snake:、キャメルケース:dromedary_camel:とは??)
####キャメルケース:簡単にいうとSwiftで推奨されている形です

CamelController.swift


final class ViewController {

private func camelSample() {
    print("ラクダ")
}

このcamelSampleをみて感じることがありませんか。。。?
そうなんです。。。凸凹しているでしょ????
だんだん見えてくるんですラクダに!!:dromedary_camel:
つまりラクダみたいな塊=キャメルケースなのです:innocent:

####スネークケース:JSONとかでよく返ってくる奴ら

Sample.JSON
{
first_name: "蛇塚"
last_name: "太郎"
}

APIを叩いてる時などに目にする形です。。。
先ほどのキャメルケースと違う点はどこでしょうか??
単語のつなぎ目が大文字ではなく_で繋がれています!
もう見えてきますよね!!!
_って蛇なんです:snake:
つまりは単語の区切り目を_でつないでいる=スネークケースなのです:innocent:

##Swiftにおけるスネークケースの取り扱いかたについて(CodingKey)
ざっくりとキャメル、スネークケースについて理解ができたところでどんな場面で扱うことのかを解説していきます!

先ほどのデータをCodableを使用して表示することを考えていきますと。。。

SampleResponse.swift
struct User: Codable {
    let first_name: String,
    let last_name: String
}

と初学者のみなさんは直感的に書くと思います(実際に私がそうでした:baby_tone1:
しかしこれで書いてしまうと大きな問題が存在します。。。
それはコード上にキャメルケースとスネークケースが混在する危険があるということです!
Swiftではキャメルケースが推奨されているのでスネークケースがコード上に介入してくのはよろしくありません:disappointed_relieved:
(スキーに海パンでいくようなものです。。。)

気持ちが悪いですよね。。。
キャメルケースとスネークケースが混在してしましました:scream:

######これを解消するのがCodingKeyです!!

SampleResponse.swift

struct User: Codable {
    let firstName: String,
    let lastName: String
    
    enum CodingKeys: String, CodingKey {
        case firstName = "first_name"
        case lastName = "last_name"
    }
}

これによりスネークケースをキャメルケースにすることができました!!
特定の値を取り出す時に自らがcaseで設定したもの命名から取り出すことができます!
→コード状にスネークケースが介入するのを防げました:v:

##:snake:最後に:dromedary_camel:
今回は概要を理解するための簡単な内容でした。。。
なぜそのままJSONの名称を使うのがよろしくないかについては名称が縛られてしまうためです。。。
→名称は解読性に大きな影響を与えてします→x自分で考えてつけたいですよね!!
まだまだ本来は奥が深いものですが先人様達の記事を参考にして勉強していきます!

今回は概要だけ、さらには稚拙な文章でしたが役に立つことができれば幸いです:relaxed:

次回の記事は本格的なAlamofierの使い方について解説していきます!!(今回の具体的なコードも掲載する予定です)

質問点やご指摘があればどしどし絡んできてください:bow_tone1:(虐めないでくださいね。。。)

1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?