私はPHP,Ruby,Javaなどを学生時代に書いていましたが、新卒での最初の仕事はSwiftでiOSアプリを開発することでした。もし私がもう一度始めから勉強するならばこういう手順でするだろう、ということを書きたいと思います。
はじめに
ある程度他の言語でプログラミング経験がある方ならば、Swiftは非常にとっつきやすい言語ですので基本的な文法はすぐに理解ができると思いますので、Storybaord(AutoLayout)、UIKit、Xcodeの使い方に多くの時間を使いましょう。文法をちまちま写経していくよりも、作りたいものがあるならばそれを作りながら学んでいくのが一番です。以下に文法・UIKit・Stoaryboardを学ぶ上でのオススメのサイトを紹介していきたいと思います。
##文法
####ドットインストール(Swift入門)
Swiftのレッスンがようやく登場しました。筆者が勉強し始める前はなかったので、載せようか迷いましたが今までお世話になっていましたので載せておきます。残念ながらPremium会員のみですが、この際登録してしまうのも良いと思います。とりあえずはこれで基本的な文法を写経してみましょう。
####公式ドキュメント(A Swift Tour)
ある程度書くのに慣れてきたら、Appleの公式ドキュメントを読み進めても良い頃でしょう。何も知らない状態で読むよりは、ある程度手を動かしてから読むほうが理解度が上がるので、今まで何気なく書いてきたコードの理解を深めるという目的を持って読むのが良いと思います。
UIKit
UIKitとはiOSのUIのコンポーネントです。
主に使うUIKitのクラスは
* UIViewController
* UIView
* UITableViewController
* UITableView
* UIScrollView
* UIButton
* UILabel
* UITextField
* UITextView
* UINavigationController
です。とりあえずこれらを使えれば一通り動くアプリを作ることが可能だと思います。テーブルビューを作ってみたり、ボタンを押すと画面の色が変わるといった実装をしてみてはどうでしょうか。以下のリンクではStoryboardを使わないでUIKitを使っていますが、慣れるためには良いと思います。
####Swift Docs
神サイトです。何か実現したいことがありましたら、とりあえずここを見てみましょう。コピペで動くものが作れてしまいますが、当然初めは理解しながら写経しましょう。このサイトは頻繁に更新されていますので、とても信頼がおけます。
####Swiftサラリーマン
虎の巻にどことなく似ていますが、サラリーマンの絵がすごい独特なサイトです。ここもサンプルコードを参考にするのに便利なサイトだと思います。とりあえずサンプルを動かしてみて、どういう挙動をするかを確認していったらいいと思います。
####iPhoneアプリ開発虎の巻
Objective-Cを書いたことがあるならば、誰でも知っているこれまた神サイトです。Swiftには対応していませんが、内容は豊富ですので使いたいクラスを調べて、Swiftで書くにはどうしたら良いかを改めて調べるのが良いでしょう。
####公式ドキュメント(UIKit)
いきなり公式ドキュメントを見ても理解しにくいと思いますが、ある程度慣れてきたら読んでいくのは大事だと思います。
Storyboard
先ほど紹介したサイトではUIKitをコードで表現しているのが多いと思いますが、実際開発していくうえでは、Storyboardを使ってUIを構成していくほうが良いです。StoryboardはAutoLayoutに慣れる必要がありますが、そこを乗り切れば非常に開発が楽になりますし、コードで書くよりもコード量が減らすことができます。AutoLayoutを学んでいく上で大事なキーワードは制約 (Constraints)です。以下にオススメな本とサイトを紹介しますが、正直、Storyboardの使い方は誰か知り合いにその場で教えてくれる人がいたら、2,3時間みっちり教えてもらうほうが効率が良いと思います。それで勘所をつかんでから本やサイトで勉強したら良いと思います。
####AutoLayout徹底攻略
Kindle本ですが、おすすめです。AutoLayoutをググってみてもよくわからずイライラしている人にはオススメの本です。
####今度こそ克服するAutoLayoutの使い方
凄い丁寧に手順が書かれています。Storyboardで作成した画面をPreviewで確認する方法も書かれているので一度目を通しておきましょう。この記事にもあるように、いきなりAutoLayoutを初めて苦労するよりも、初めはコードでUIKitを扱うほうがよいかもしれません。
##基本的な考え方
iOSアプリでは、なんらかのユーザーの操作(タッチ、スワイプ、スクロール)が行われると、メソッドが呼び出されるという流れが非常に多いです。Javascriptの経験があるならば、イベント駆動という概念が理解できていると思いますので、非常にわかりやすいと思います。例えば、「UIButtonにアクションを追加して、押されるとHello Worldが表示される」という流れを理解しておきましょう。Webアプリの経験しかない人にとっては、この流れが意外に馴染みのない可能性があります(私がそうでした)ので、そこは覚えておきましょう。
UIKitについて述べましたが、大事なのでもう一度言っておきます。UIKitを一通り使えるようになれば、基本的な開発はできると言っても過言ではありません。ですので、まずは第一にUIKitの理解を深めることに努めてください。SwiftでもObjective-Cでもそこは同じです。
以上になります。他にも良いサイトがあるかもしれませんので、見つけ次第更新するつもりです。今日からSwiftを始めてみませんか?