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

SwiftエンジニアになるべくRailsエンジニアの私が実践している学習方法

More than 3 years have passed since last update.

Swiftという艶美な響きに心奪われ、Swiftエンジニアとして成長するために日々、
新しいことや興味のあることを勉強している方が多いと思います。

今回はWebエンジニア(普段はRails4,Ruby2系の開発がメインです。)の私が実践していてオススメだと思う学習方法をinput編、output編に分けて紹介させていただきます。

input

その1 ライブラリのコードを読む

以前はObjective-Cと比べるとSwiftはライブラリが少なかったのですがXCodeのバージョンアップに伴いSwiftもどんどん改善されていったこと、Swiftの魅力に取り憑かれてオープンソースが盛り上がってきたことでどんどんライブラリの数が増えてきました。
それに対して使うのはもちろんのこと、
「どのような書き方」で「どのような設計になっているか」という観点でコードを読むと
これは試してみたい!とか後でじっくり読みたい!と思ったライブラリなどをはてブして週末や時間のある時に見て学習しています。

僕のようなiOSの知見がなくSwiftから始めた方はこちらあたりがオススメです。

cocoapods.org

スクリーンショット 2015-12-19 16.02.40.png

swifttoolbox

スクリーンショット 2015-12-19 16.05.35.png

cocoacontrols

スクリーンショット 2015-12-19 16.07.50.png

その2 動画を見る

今では本だけでなく著名なエンジニアがQiitaを通して多くの有益な情報を発信してはいますが
どうしても実際に動かいてるのを見た方が分かりやすい、動画の方が理解しやすいサンプルなどがあります。
その際にはyoutubeに多くのサンプルアプリ作成動画を見ながら自分の作ってるサンプルに近いアプリを見てイメージするということをしています。
また英語であってもXcodeの使い方やコードがベースなので問題なく理解することが出来ます。
(4Gだと速度的にもお金的にもしんどいのですがwifiがあるカフェであれば出先でもスマホで見ることが出来るのも良い。)

youtube

スクリーンショット 2015-12-19 16.21.03.png

その3 綺麗なコードを書くための仕組みなどを勉強する

仕事で使おうとなると「自分以外の人が理解しやすいコードになっているか」、「保守性はどうか」、「品質はどうか」、「ドキュメントや自動化をどうするか」といったアプリが作れることはもちろんのことその他以外のことを求められます。
まだまだ僕も出来ていないのでもっとやっていかないといけないところです。

コードの保守性:SwiftLint

スクリーンショット 2015-12-19 18.27.44.png

ドキュメント自動化:jazzy

スクリーンショット 2015-12-19 18.27.55.png

テスト系まとめ:SwiftからiOSアプリ開発を始めた人に読んでほしいテスト系リスト

スクリーンショット 2015-12-19 18.30.57.png

その4 Swift勉強会に参加する

shibuya.swiftなどの著名なiOSエンジニアの方々が参加する勉強会に参加し、
「どんなライブラリを使ってますか?」、
「何人体制でどんな設計でコードを書いてますか?」、
「(コード見せつつ)〇〇を実装するときにもっと上手く書けそうな気がするんですがどう思いますか?」といったCodeの話や会社のフェーズや組織体制が異なる場合の書き方に関する質問などもしています。
そうすることで、社外の人だから聞ける情報やSwiftの新発見に出会うことが出来ます。
その度に「自分はまだまだだなー。。。」とは思うのですが今の自分では絶対気づけないことを教えてくれるので積極的に参加しています。

shibuya.swift

スクリーンショット 2015-12-19 18.29.31.png

次にアウトプット的な学習方法です。

output

その1 自分の知識をベースにサンプルコード的なアプリを作る

一気にしっかり作ろうとすると時間の確保や体力の確保などその他諸々の調整があるのですが、
サンプルコードレベルであれば難易度の差はあれど土日の空いてる時間などで作ることが出来ます。
この前は休日にRealmを使ったToDoアプリを作りました。

【初心者向け】徹底詳解!cocoapod + RealmでToDoアプリを作るチュートリアル (全4回)

スクリーンショット 2015-12-19 18.24.24.png

その2 自分の知識をベースに軽めのライブラリを作って公開してみる

これも「その1」と似ているのですがポイントとしては実際に公開してみることです。
「cocoapodに上げる」、「READ MEを英語にする」といった課題はありますが、
公開してみたことで@jollyjoesterさんから人生初のプルリクを頂くことが出来ました。

Swift2.0対応済!Swift用のDebugライブラリ「Debug」を作りました

スクリーンショット 2015-12-19 18.18.22.png

その4 Swift勉強会のLTに「登壇者」として参加する

inputでの勉強会参加と異なりLTを行うことでそのために必要な周辺情報や「参加者に理解してもらえるように説明するためにどのような情報が必要か」といったことを調べることで今まで抜け漏れていた
情報をカバーすることが出来ました。

この変更は嫌だったXcode7〜ハマる前に知って欲しいこと〜

スクリーンショット 2015-12-19 18.23.01.png

その5 スマ検を受ける

Swiftを体系立て理解するために詳解Swiftなどを読見返したりはしたのですがなかなか頭に入ってこず、理解出来ているつもりになっていました。
そのため、スマ検というサイトを使い、問題形式で回答することで、用語やコードの書き方、Swiftの基本的な概念などの基礎部分の再学習を行いました。
(スマ検なのにスマホに適したUIになっていないのでPCでの閲覧をオススメします。)

スマ検

スクリーンショット 2015-12-19 18.21.11.png

最後に

私はSwiftに出会えたことで一生作れないと思ってたアプリを作る事ができ、
リジェクト祭りになると予想していたアプリをリリースする事ができ、
アプリ経由から一定の売上を上げれるまで多くの方々に利用して頂くことが出来ています。
今ではWebエンジニアであった僕が女性限定のプログラミング講座をSwiftメインで教えることさえ出来ています。
Swiftを始めるには始めたが今の会社が全くアプリに興味がなく一向にアプリを出す予定がないからといってどうやって勉強しようかと悶々としている人にこの記事を少しでも参考にして頂き、
プライベートだけでもアプリをリリースするという経験に役に立てて頂ければ幸いです。

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