Posted at

Apple公式のiOS開発チュートリアルをやってみた(Andoridエンジニア視点)

More than 1 year has passed since last update.

隙間時間に細々とやっていた以下のApple公式のiOSアプリ開発チュートリアルが終わったので、復習も兼ねて内容をまとめておきます。

Start Developing iOS Apps (Swift)

普段は仕事でAndroidアプリを作っているので、同じように、Android開発者だけどiOSもやってみたい、という方に興味を持っていただければ幸いです。

とてもよくできたチュートリアルなので、英語を読むのが苦でなければオススメです。


前提知識

Swiftが初めての人は事前に「Swift Playgrounds」というiPad向け学習アプリか

A Swift Tour」をやっておく必要があります。

僕はiPadを持っていなかったので、「A Swift Tour」の方をXCodeのPlaygroundに打ち込みながらざっと確認しました。


作るもの

「FoodTracker」という料理の名前、写真、評価を管理するアプリを開発するチュートリアルです。

写経したコードはこちら

スクリーンショット 2017-05-06 14.49.24.png

具体的には、Mealというモデルを作成して、一覧/詳細表示、作成、編集、削除ができるようにします。

イメージとしては、Railsのscaffoldでできる基本的なCRUD機能とほぼ同じ感じです。


学べる内容

大きく「UI構築」と「モデル操作(リスト表示等)」の2パートに別れています。

イメージしやすいように、Androidでいうと○○という形でまとめておきます。

※厳密に対応するわけではないのであくまでイメージです


Building the UI


  • Build a Basic UI


    • XCodeの使い方 => AndroidでいうとAndroidStudio

    • Storyboardを使ったUI構築 => Androidでいうとres/layout以下のxmlファイル



  • Connect the UI to Code


    • Outlet/ActionによるUIとコードの紐付け => AndroidでいうとfindViewByIdやButterknife

    • Protocolの実装 => Android(Java)でいうとInterface



  • Work with View Controllers


    • ViewControllerのライフサイクルとコールバックの実装 => AndroidでいうとActivityの実装

    • Assets(画像ファイル)の使い方 => Androidでいうとres/drawable以下のファイル



  • Implement a Custom Control


    • カスタムコントロール(独自View)の作り方 => AndroidでいうとViewを継承した独自View



  • Define Your Data Model


    • モデルの定義 => Android(Java)でいうとPOJO/Bean...

    • XCTestを使用したユニットテスト => AndroidでいうとJUnit




Working with Table Views


  • Create a Table View


    • 2つ目のViewController => AndroidでいうとActivity

    • TableViewを使ったリスト表示 => AndroidでいうとListView/RecyclerView



  • Implement Navigation


    • NavigationController, Segueによる画面遷移 => AndroidでいうとstartActivity/startActivityForResult



  • Implement Edit and Delete Behavior


    • プッシュとモーダルの違い

    • TableViewControllerの編集モード



  • Persist Data


    • NSCodingによるデータの永続化 => AndroidでいうとSharedPreferences、SQLite




感想

基本的なCRUD操作の実装パターンを掴めたので、あとは永続化をRealmにしたりRestAPIにしたりと必要に応じて部分的にブラッシュアップしていけば、プロダクションレベルのアプリが作れそうな気がします。

Android開発と比べると、Storyboard周りでかなりGUI操作が多いと感じました。この辺は慣れるまで結構大変そう。。

今回は時間をかけ過ぎて肝心の序盤のUI構築を忘れつつあるので、モデルを少し変えてまた似たようなメモアプリでも作ってみたいと思います。