Help us understand the problem. What is going on with this article?

Swift集中トレーニングを受講した感想を書いてみる

記事の概要

今月7月に村本章憲氏主催の

【iOS】Swift集中トレーニング!!iOSエンジニアを最速で目指そう!を受講してSwiftUIを学習していました。

2019年6月のWWDCで発表されたSwiftUIが出てiOS界隈に大きなインパクトを与えました。残念ながら私は諸事情でWWDCに参加できませんでしたが、
AppleのプレゼンとTwitterのiOS界隈のタイムラインを追っているだけで「あー、将来は従来のiOSアプリの開発スタイルが変わってしまうな」と確信してしまいました。

おそよ6年位前の2014年にAppleが新しいプログラミング言語「Swift」を発表したときにもiOS界隈に大きなインパクトを与えた時と同じ印象です。当時はiOSアプリ開発と言えばObjective-C の開発がメインで私もObjective-Cでアプリを開発していましたが、今ではObjective-Cのコードを書いていません。

6年もの年月でObjective-CコードがSwiftコードに置き換わりそれまでのソースコードや設計が一気に覆りました。
ちなみに私は当時はそうは行ってもObjective-Cの開発も無くなりはしないだろうと勘ぐっていましたのその予想を裏切られました。

1年ぐらい遅れのSwift2.0くらいからSwiftのコードを書くようになりました。
そのため、今回はその反省の意味も込めて今回はSwiftUIはこれからのiOSアプリ開発ではマストだと予想して1ヶ月ぐらい前に村本氏が上の講座のプランをMentaで作って頂きましたのでこれを機会にSwiftUI を先取りしようと思ったのが受講のきっかけです。

ちなみに今回のエントリーはMentaとか上の講座の宣伝ではありません。

本当は平日や休日にちょっとずつ作業していけば良いのですが、平日は仕事で忙しいし休日はサボりたい気持ちがどうしても出てしまって絶対進まないので勉強時間に投資するという意味で上記の講座に申し込みしました。

その感想としては非常にコスパが良かったと断言します。

本村氏がApple公式のチュートリアルの説明では気づかなったポイントを丁寧に教えてくれたおかげで

  • SwiftUIの設計思想
  • SwiftUI独特のアノテーションの意味と使い方(@Stateとか)
  • SwiftUIとCombineとの組み合わせの書き方

の概念が非常に理解できました。

実はAppleのチュートリアルもなかなか良い感じに丁寧なのでそのチュートリアルを2周ぐらい写経して英語のドキュメントを眺めるだけで大体のコツは掴めたりできます。
ですが、今のプライベートのスケジュールだとどうしても独学だと9月の正式にXcode13がリリースされるタイミングくらいにやっとちょっとだけ理解できる進捗だと思うのでコスパがよくないと思いました。

この文章だけだと宣伝みたいな記事なのでちょっとSwiftUIのチュートリアルについて私なりにまとめてみます。

SwiftUIのチュートリアル

基本的には公式ページに書かれているポイントがそのままですが、

SwiftUI Essentials

  • Creating and Combining Views(Viewの作り方について学べます)
  • Building Lists and Navigation (UITableViewの代わりとなるListと画面遷移について)
  • Handling User Input (@State, BindableObject と @EnvironmentObject でのデータバインディングについて)

Drawing and Animation

  • Drawing Paths and Shapes (位置関係の調整やViewの描写について)
  • Animating Views and Transitions (アニメーションの実装方法について)

App Design and Layout

  • Composing Complex Interfaces (横スクロールの実装方法とか)
  • Working with UI Controls (そこまで理解度が及んでいません)

Framework Integration

  • Interfacing with UIKit (そのままですがUIKitとの連携について)

Handling User Inputまでをグルグル学習すればSwiftUIにおけるレイアウトの組み立て方を理解することができました。
@State@EnvironmentObject との違いが分かれば例えばUIKitでいうUITableViewのリロード方法がはっきりわかります。

Drawing and Animation を理解すれば複雑なデザインを実装できるようになるような気がします。

それで1ヶ月間ぐらいSwiftUIを触ってみての大まかな感想ですが、これはもう他のiOSアプリエンジニアの方の意見と同じでSwiftUIはAppleがMVCを脱却するために編み出したMVVM用のフレームワークです。私は去年8月頃からブロックチェーンのトレンドを追う次いでに認知したFlutterもMVVMですがコンポーネントの思想といいFlutterの影響を受けている印象しかないです。

逆に言えばSwiftUI に慣れたら自ずとFlutterも違和感なくかけるようになりそうだし早いうちにSwiftUIに慣れた方がメリットしかないように思います。

これからのiOSアプリ開発はFatViewControllerを卒業してメンテナンスが辛くなる苦痛から解放される予感がしますね。

SwiftUIにして今後流行るかもしれないトレンド

AppleがSwiftUIを発表したことで今後流行るかもしれないトレンドを予想してみました。

  • Storyboardの廃止
  • Autolayoutのdepricated
  • ユニットテスト (UIをコードで書くスタイルに戻りそうなので)
  • AndroidのXMLみたいな差分がわかりやすいUIファイル

できればAndroidみたいにレイアウトを組み立てられたら幸せかなと思いました。
ということで今後もApppleがどんな技術を発表するのか楽しみです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away