テックキャンプに通いだして2ヶ月目です。この記事ではiPhoneアプリコースの概要や学べることを整理したいと思います。
自分がやりたいと思っていたことはLesson5までの内容でできましたので満足しています。Lesson6~8も一応学習しておきました。
各レッスンで学べることを整理しますので受講を考えている方は参考にしてみてください。
iPhoneコースの受講にはMacが必要
iPhoneアプリを開発するためにはなんとMacのPCが必要なのです。
XCodeというApple社製の開発環境をPCにインストールしてその上でプログラミングを行う必要があるからですね。
受講自体はWEBなのでWindowsでも教材は見れますけど。
テックキャンプiPhoneレッスン1で学ぶこと
テックキャンプのいずれのコースでもレッスン1はガイダンス的な内容になっています。
主にテックキャンプの教材や講師に質問をする方法とか、各地にある教室の使い方を読んでいくだけです。
それから開発環境の準備です。iPhoneコースではiOS開発環境ということでXcodeというツールを使いますので、それのインストール方法などを学びました。
レッスン1はとくに躓くような部分は無いですね。
テックキャンプiPhoneレッスン2で学ぶこと
レッスン2から本格的な学習に入っていきます。
開発はXcodeを使ってプログラミング言語Swiftを使って行っていきます。
XCodeには様々なツールがあって、まずは「Playground」というのを学びます。Playgroundについてはこちらの記事にまとめました。
これを使うと最も簡単にSwiftのコードの結果が得られます。この章ではiPhoneの画面は使いません。iPhoneの画面やシミュレーターは次の章からです。ここでは画面に携わらない基本的なプログラミングの基礎を学びます。
どのプログラミング言語の学習でもやりますが以下のようなことを学びます。
・足し算引き算、除算、乗算など演算子の扱い方
・配列と辞書型の扱い方
・条件分岐のif文、Switch文、Whileループ文、forループ文
・関数
・クラスとインスタンスの考え方、扱い方
ここを学んでおけばSwift以外のプログラミング言語でも応用が効きますし。逆に他のプログラミング言語を熟知している人ならこの章はスムーズに進められる事でしょう。
加えてSwift特有のOptionalという型の使い方も学びます。
テックキャンプiPhoneレッスン3で学ぶこと
ここからスマホの画面(シミュレーター)を使った教材になっていきます。
まずはXCodeのInterface Builderという機能を使います。いよいよここから本番です。
Interface BuilderはXCode上にスマホの画面枠が現れて、そこにボタンやラベルや画像(オブジェクトと呼びます)なんかをGUIでマウス操作で配置していくような画面です。これを使うことでスマホで見たときにどのようにボタン等が配置されるかを指定することができます。
この時点ではソースコードを記述しないのでプログラミング無しで、Interface Builderを使えば最も単純なスマホアプリを作れるとも言えますね。
またそれだけでは勿論終わりません。
Interface Builderで配置したオブジェクトとソースコードの紐づけも学びます。これによってソースコード上で各種オブジェクトの値(色とかサイズとかフォントとか)を変えたりすることを学びます。
それからiOSが搭載された機器には様々あり、iPhone6, 7, 8, Xなど番号付きのものからiPadも含みます。これらの機器は画面サイズが異なるので、1つのアプリをそれぞれの機器で立ち上げると画面の見た目がおかしくなります。
画面の見た目をうまく調整する「制約」という方法もここで学びます。これをAutoLayoutといいます。
テックキャンプiPhoneレッスン4で学ぶこと
ここではInterface Builderを使って簡単なオブジェクトについて学びます。
Label、Button、画像、TextFiled、TextViewの使い方です。
- Labelはスマホ上に1行の文字列を表示します
- TextViewはLabelとは違い複数行の文字列を表示します
- Buttonはスマホ上にボタンを配置して、それをタップしたら何かしらのアクションを起こすような処理です
- 画像は、パソコン内にある画像をXCodeに取り込み、それを表示する方法を学び
- TextFieldは文字入力欄を提供します
これらを簡易的なアプリを実装しながら習得していきます。
これで次のようなアプリを作ることができました。
入力欄に文字を入力したら、画面上にそれが右から左へ流れていく、いわばニコニコ動画のようなアプリです。レッスン4はここまで来るのに約20時間かかりますがじっくり取り組んでいけばできます。
テックキャンプiPhoneレッスン5で学ぶこと
レッスン5からはより実戦形式になっていきます。簡易なアプリを作りながら要所要所のテクニックやClassやメソッドを学んでいきます。
この辺から苦戦しましたが画像にエフェクトをかけるアプリを作れました。
あとはアプリ内にWEBページを表示させる手法、テーブルやリストを配置するクラスも学びました。
そして前半の最難関と思われる「デリゲート」と「プロトコル」について学んでいきます。
デリゲートとプロトコルについては自分で何度も復習して他の教材とかも見ながら整理することができました。その時の記事はこちら→【Swift】Delegate
僕が習ったことがある他の言語では聞き慣れない言葉ですが、この仕組みは覚えておかないといけないと思いました。
iPhone特有なのかと思うのですが、簡単に言うとイベントをキャッチして何かの処理をさせる、ようなことが出来るようになります。例えば窓を閉じた時とか、タップされた時とか。Buttonみたいにタップされる前提のオブジェクトならイベント処理は簡単なのですが、それ以外のオブジェクトだとデリゲートという機能(クラス)を使う必要があります。ここはちょっとややこしいけど処理図を書いてなんとか理解できました。
テックキャンプiPhoneレッスン6で学ぶこと
レッスン6は画面遷移についての学習です。
iPhoneは画面1個で作れるアプリもありますが(自分が作ってるのは画面遷移のない簡単な赤ちゃん向け知育アプリ)、だいたいのアプリは画面遷移をします。
このレッスンでは画面遷移について学びます。
例えば
A→B
A →C →D
というふうにA画面からBやCやDへ遷移したり。そこから戻ったり。(これをModalと呼ぶ)
スマホのヘッダー部分から画面Aに行ったりBに行ったり。(これはNavigation Controller)
タブを使って画面を切り替えたり。(これはTab Bar Controller)
画面遷移の仕方はこの3つなのでここでしっかり基本を学べるようになっています。
テックキャンプiPhoneレッスン7で学ぶこと
レッスン7ではTodoアプリを作ります。Todoと言えば「今日のタスクリスト」ですね。ビジネス向けのアプリを作りながら学んでいきます。
ここでMVCという有名な開発方針(設計手法)について学びます。MVC自体はXcodeでもSwiftでも関係なくプログラミングの世界では標準的に使われている用語です。
MVCというのはModel View Controllerの頭文字を取ったものです。
Modelというのはデータのことです。例えばTodoアプリなら「何月何日にどこどこへ行く」のようなタスクの内容もデータです。
Viewというのは画面のことです。ユーザーにどんな画面を見せるか、どんな操作をさせるかこの画面のことですね。
ControllerというのはModelとViewの間にある橋渡し役と考えればよいです。データを取ってきてどのように画面渡します。
MVCに従って開発するとそれぞれの開発担当を分業できたり、仕様変更にも柔軟に(仕様変更は嫌だけどね)対応できたり、といったメリットがあります。
例えばModelに関してはAさんが顧客と要件を詰めて設計してプログラミングするけど、画面周りはデザインが得意なBさんがやったり、といったことができます。
それからここでデータの保存についても学びます。今まではアプリを立ち上げて終了すればデータも消えてしまいましたが、Todoアプリは日程を登録していくので、それが消えてしまっては意味がありません。タスクリストをスマホ内に保存するための手法を学びます。
テックキャンプiPhoneレッスン8で学ぶこと
いよいよ最後がレッスン8です。このレッスンの後に応用編があるので実質最後ではないのですがメインカリキュラムは8までです。ここまでで87時間かかる目安が表示されています。けど初心者のかたは100時間とかかかるかもしれません。僕も色々と回り道をしながら調べながら、またブログにアウトプットしながら来てるので2ヶ月ぐらいかかりました。
さて最後のレッスンではニフティクラウドという外部サービスを使ったデータベース連携について学びます。
データをスマホ内部に保存する方法はレッスン7で学びましたけど、これだと他の人とデータの共有まではできません。そこでWEB上にあるデータベースと連携してAさんのスマホでもデータが見れるし、Bさんのスマホでも同じデータが見れるようにします。
クラウドサービスは他にもありますが、ニフティクラウドだとクラウド側もiPhoneと同じプログラミング言語のSwiftで実装できる、ということでこれが選択されています。
今後他のクラウドサービスでも代用されるかもしれません。
まとめ
ここまでで一通りのカリキュラムは終わりです。基本的な部分はまかなえていると思いますがプログラミングは日々の研鑽、新しいClassやメソッドに触れて書いて調べて書いての繰り返しが必要です。
印象ですがここまでくれば新入社員で入社して半年後ぐらいのスキルになれるのではないかと思いました。