見出し画像

スタンフォードのiOSアプリ開発入門1週目を終えて

はいどうもUIデザイナーのうっくんです〜。

仕事終わりにちょこちょこ進める感じだったので、実際は1週間以上かかってしまいましたが、現在スタンフォード大学のiOS開発入門講座1週目を終えたようなところでございます

一応リンク発見しましたので下記に掲載しておきます。

今回はその内容をおさらいしていきます。

授業で学べることその1 "オブジェクト指向プログラミング"

オブジェクト指向プログラミングは実はこの授業をとる上で事前の必修科目になっています。なので、この授業で「オブジェクト指向とは」と言うのを集中して教えてもらえる訳ではありません。

私も、このスタンフォード大学が以前より公開している昔のiOS開発授業や、留学時代にUCアーバイン校で履修したiOS開発授業を通して、なんとなくオブジェクト指向をふんわり分かっているぐらいの状態で学習を開始しました。

1週目の授業を通して、さらにオブジェクト指向に関する理解度が一気に深まりました。

オブジェクト指向プログラミングを簡単に説明するのは非常に難しいのですが、あえて言うと
「世の中の全ての物を'オブジェクト'と定義し、オブジェクト間の相互的なやりとりやオブジェクト内のデータの操作によってプログラムを記述する方法」と言ったところですか。

オブジェクトクラスインスタンス化といったキーワードがとても重要なのですが、そもそも日本語にろくに翻訳されていない時点で理解するのが難しいポイントになってきます。なので、最初から英語で勉強した方が、ある程度英語ができる人なら理解が進むのではと思っています。英語と日本語を両方読みながら学習するのも効果的かと思います。とにかくやってみて、コード書きながら、何をやってるのか後から調べていくと言う感じで進めていくのもアリです。

 うっくんも、Objective-Cの時代から数えて、このような初歩的なプログラムは何回か書いているのですが、ようやく意味が分かってきたと言うような状態です。

授業で学べることその2 "Swift"

この授業では、Swiftの言語を使い実際にiOSアプリ(絵文字を使った神経衰弱のアプリ)を作っていきます。ビデオを停止しながら、写経のように先生のコードを真似しているだけで、予想外のエラー(先生の画面では動いてるのにこっちでは動かない)に遭遇することなく、スムーズに進めることができました。先生は説明しながらコードを書いていくのですが、それでもスピードが早く、ただ写経してるだけなのに結構置いていかれてしまいました。後から巻き戻して、何をやってるコードなのかもう一度確認するといったことができるのは実際の大学にはないメリットですね。

SwiftではObjective-Cと比べて、いわゆる「呪文(意味が分からなくてもいいからとりあえず絶対に書かないといけないコード)」が圧倒的に少なくなったので、余計なところでつまづくケースは減っていると感じました。Objective-Cの時は、実際はあまり気にしなくていいけど何か色々書いてあって、理解するのにいちいち深いところまで勉強しないといけないイメージだったのに対し、Swiftはそういったことが少ないのでプログラミング初心者にもとてもいいと思います。

1週目の課題で、AppleのSwiftドキュメンテーションを読んでこいと言われます。これがなかなかの量で、結構真面目に読みましたが、最後らへんは諦めました。

UCアーバインで受けた授業でも宿題の大半はリーディングで、非ネイティブには厳しい分量でした。放課後ずっと本を読んでいた記憶が蘇りました。

1週目では、オブジェクト指向プログラミングで重要になる、クラスやメソッドの定義の仕方、インスタンス化、変数へのアクセスや利用、基本的な条件分岐とループ処理などを実際にSwiftコードを書いて学ぶことができます。

その中でもSwiftに特有、もしくは新しい言語に特有の書き方や考え方があるので、その部分は結構詳しく教えてくれます。例えば「オプショナル」という考え方は割とSwiftに特有らしくちょっと理解が難しいところです。

var surveyAnswer: String?

このコードは、surveyAnswerという変数の型はString (文字列) だよ。でも空の場合があるから「オプショナル」ですよ。と言う意味になります。?をつけることによってこの変数が空である状態を許可できます。これは、変数には何らかの初期値を入れておかないとデフォルトではエラー(コンパイルできない)になるので、うっかり値が必要なところに空のデータが飛んできてプログラムがクラッシュする、と言ったリスクをなくすための仕様とのこと。

授業で学べることその3 "MVC (Model-View-Controller)"

iOSアプリ開発(のみならずほとんどのアプリ開発)で推奨されているModel-View-Controllerと言う開発メソッドを学びながら実際にそのメソッドに即してコードを書いていきます。

Model View Controllerとはその名の通りModel とViewとControllerを分離させて、それぞれの役割分担を破らないようにプログラムを設計していく手法です。ざっくり言うと、モデルがデータの変更や出力を担当し、ビューがデータの表示を担当し、コントローラーがユーザーからのを入力モデルに伝える役割を担当します。死ぬほど簡単に言うと、「一つのファイルに大量のコード混ぜるなーーー!」と言う感じ。(雑)

そうすることによって、役割がはっきりしているのでデバッグがしやすかったり、コードがメンテナンス困難なほどに複雑になることを避けることができます。

授業で学べることその4 "Xcodeとデバッグ"

アメリカの大学の授業は(さまざなケースがありますが)、日本と違い1週間に複数回に渡って行われるのが一般的です。この授業も例外ではなく、おそらく月水金、週3回の授業になっていると思います。

3回目、つまり金曜日の授業はTA (先生のアシスタント。だいたい大学院生とか上級生がアルバイトでやる)が、Xcodeの使い方をレクチャーしてくれるセッションです。教授がやるセッションよりは情報量は少ないですが、デバッグの基本を教えてくれるので勉強になりました。

以上で1週間目は終わり。

宿題

前述した通り、Apple によるSwiftのドキュメンテーションが主な課題図書ですがそのほかにもMVCに関する課題図書なんかもあった気がします。(そっちは読んでません)

さらに、プログラムを変更して、機能を追加する宿題も。授業で書いたコードを写経すれば、神経衰弱のアプリはとりあえず動くようになります。

しかし、そのままではゲームをリセットする機能がないので、リセット機能を作ってね、と言うのが宿題の一つ。

シンプルなようなのですが、ちゃんとMVCと授業で書いたコードの意味が分かっていないとできないのでとてもいい宿題だと思いました。意外と苦戦しました。

もう一つは「このままだとUI部品が画面サイズによってグチャグチャになっちゃうので、オートレイアウト機能を使って綺麗に配置してみてね」という宿題。なんだかんだググりながらやってみたらできたと言う感じ。前に少し触ったことがあったので、そこまで困りませんでした。ただ、宿題の提出タイミングはオンラインだといまいちわかりませんね。これらが全部1週目の宿題かどうかは不明。

以上が1週目です。noteに書くことでモチベーションになるかなと思い、今回はレポートしてみました。

2週目も頑張るぞーー!!


UI/UXデザインに関する情報発信をしています。この分野のコミュニティに貢献できるように、全てのnoteは無料で公開しています。サポートしていただけましたら、デザインのツールを購入するのに使いたいと思います。ツールの使い方や、レビューを投稿しておりますのでぜひご覧ください。