Flutter アプリ開発者が iOS ネイティブに入門する
先日買った M1 Mac が届きました。
今回購入した理由の一つが、速いマシンで iOS ネイティブの開発に入門したかったことなのでやっていこうと思います。
自分の iOS ネイティブ開発の経験
- Swift で Hello World はした経験はある
- アプリをまるまる作った経験なし
- Flutter 開発中にプラグイン作成でアラーム機能などを実装したことはある
今回の方針
- SwiftUI でどこまで作れるのか体験したい
- LazyVStack, Combine ってやつを使ってみたい
- 書籍は良さそうなのがあれば買う
- ARKit 使ってアプリ作りたい
Swift に入門する
言語仕様をさらっておかないと、詰まりそうなので軽く触れておこうと思います。
XCode の Playground 機能を使って小まめに実行結果を確認しながら進めていこうと思います。
とにかく今の時点で、知らなさ過ぎて不安に思ってるポイントを潰しておこうと思います。
- Int, String など基本的な型
- struct, class など構造体を作るための型
- 関数、制御構文 ...など
最初は「Swift らしい書き方」を目指すことは諦めて慣れることを念頭に置こうと思います。なので雰囲気を掴んだら、SwiftUI のチュートリアルなどに進もうと思います。
(Swift実践入門 という書籍を参考に進めてます。めちゃくちゃ分かりやすいです🙏)
ある程度文法をさらったので、色々飛ばして Swift実践入門 の「第18章 実践的なSwiftアプリケーション ── Web APIクライアントを作ろう」という章を進めていきます。
Github Search API のクライアントを作るハンズオン形式で、Swift でレスポンスをどのように構造化するのか等から学べるようです(以下コード例)。めちゃくちゃ面白い & Swift すげえ。
import Foundation
// A data structure for github repository
struct Repository : Decodable {
let id: Int
let name: String
let fullName: String
let owner: User
enum CodingKeys: String, CodingKey{
case id
case name
case fullName = "full_name"
case owner
}
}
本の GithubApi のクライアントを写経していますが、CompletionHandler の記法がよく分からない...
session.dataTask(with: urlRequest)
の後に {
が続く書き方どういう意味なんだろう。Completion Handler を書くための記法なのかな。
import Foundation
class GithubClient{
...(省略)
func send<Request: GithubRequest>(
request:Request,
completion: (Result<Request.Response, GithubClientError>) -> Void){
let urlRequest = request.buildURLRequest()
// 以下の Completion Handler の記法よくわからない。
let task = session.dataTask(with: urlRequest){
data, response, error in
/// Some task
}
task.resume()
}
}
Trailing Closureってやつですね!
ありがとうございます!🙏
なるほど...!! 最後の引数がクロージャの時にこのように書けるんですね...
混乱していたので、とても助かりました🙇♂️
なんとか動くところまでいったので、一旦 Swift実践入門終わります。引く続き参照して、日本語での文法把握に役立てます🙏
やったこと
- 基本文法の把握
- Github API クライアントのハンズオン
感想
- Swift 書くの楽しい
- きれいにキッチリ書くための機能が沢山あって、深堀りしていくと楽しそう
Xcode のオートコンプリートが対象のコードからめちゃくちゃ遠くに表示されるようになったのだけど、XCode を再起動したら直った。
Swift の文法の雰囲気が掴めたので、次は SwiftUI に入門しようと思います。
このままスクラップが続いちゃうと後で追いづらくなりそうなので、別スクラップを立てることにします。続く...
追伸:
moga🍳 さん、調べにくい文法について教えてくださり有り難うございました🙏