iOS

【Swift】Typealiasを使って分かりやすくコードを書こう

どうもiOSアプリばっか作ってますmaniです。

最近Qiitaの記事を読んでたら「typealias」とかいうヤツが出てきて頭が真っ白になったので今回さっくりとまとめようと思います。

typealiasは、一言で言うと「型に名前をつけることができる予約語」です。

typealiasはiOS開発の入門書にも乗ってなかったり、Qiitaの記事でもあまり見かけなかったりして「なぁにこれ☆」ってなるかもしれませんが、実はコードを読みやすくしてくれるめっちゃいいヤツです。

そんなわけで、typealiasの使い方・使い時を解説していきたいと思います!

typealiasの使い方

typealiasって何?

typealiasの使い方を説明する前に、「そもそもtypealiasってなんなの?」ってところを説明しておきます。

記事の初めでも書きましたが、typealiasは「型に名前をつけることができるもの」です。

Int型やString型といったデータ型に、自分の好きな名前をつけることができます。

typealiasを使ってみる

そんなわけでtypealiasを実際に使ってみましょう!

今回は簡単に「りんごの値段と個数から代金を計算する」という処理をPlaygroundsで書いてみます。

まぁ何も難しくないコードなので説明するよりは読んでくれという感じなのですが(笑

やっていることとしては、単純に本来なら普通に「Int型」を指定している所を、typealiasを使って区別できるようにしているということですね。

typealiasの使い所

さて肝心な使い所ですが、さっきのコード読んで

「普通にInt型のままのほうが分かりやすいんだけど…」

ってなる方がいると思います。僕もそう思いました(爆)

さっき見せたコードのような簡単な処理では、typealiasを使う意味は正直ないと思います。

ですが「コードが複雑で解析しにくい処理」や「チーム開発などで複数人でコードを書く場合だとtypealiasはかなり有効になってきます。

チーム開発などで理解しやすいコードを書く時

さっきは名前をつける方がInt型そのものだったので使う意味が無いように感じたかもしれませんが、これがクロージャなど複雑な設定ができる型になってくると結構変わってきます。

例としてよくあるAPI通信をtypealiasを取り入れて書いてみるとこんな感じ。(一部だけ紹介します)

通信処理終了時には「通信で取ってきたdataを使って処理をするクロージャ」、いわゆるCompletionHandlerと同じような(Any?)->()型のクロージャを「FinishHandler」という型として扱います!

という感じで宣言してあげてます。StartHandlerとErrorHandlerも同様ですね。

実際にControllerで実行する場合にはこんな感じで使えます。

ハンドラの設定方法はもっとやりようがある気がするので改善します(白目)

とはいえtypealiasは実際使ってみて結構ユースケースはありそうだし、下手に「@escaping (Any?) -> ()」と書くよりは読みやすいと個人的には思ったのでこれから積極的に使っていこうと思います。

ぜひ皆さんも使ってみてください!