iosはじめにやはり社会人になると他の人と一緒にチームを組んで開発することがほとんどだと思います。個人で開発していると、オレオレ流のコードを書いていまい、自己満足なコードになってしまいます。そのような書き方、設計思想に慣れてしまうと社会人になったときに痛い目に合うのでOSSを作っている優秀な人たちのコードのみて学ぶ必要があると感じました。基準としては以下のようなものがあります。実際に実装するケースが多いようなUIを持っていることできるならswift4.0、妥協してswift3.0開発は盛んであることまた、今回は以下の記事で上がっているものから選定しました。実際に選ぶそして今回選んだOSSがこちらです。github.comYoutubeのクローンになっています。インストールする以下のようにインストールしてXcodeで開きます。git@github.com:aslanyanhaik/youtube-iOS.gitそして依存関係をインストールします。勉強方法のすすめ以下のような方法で挑戦します。ビルドするまず、ビルドしてみると以下のような画面が見えます。画像が大きいですが、まあ基本的なものは見れるのでよいとしましょう。勉強するUIレイアウト例えば先ほどのホーム画面は以下のようになっています。StoryBoardでは以下の通りです。赤い部分はNavigationViewでできていて他はTabelViewで定義しているということです。み、これくらいは想定通りです。他にものぞいてみましょう。アカウント設定画面は以下のようになっています。ストーリーボードでは以下のようになっています。お気に入りチャンネルは以下の通りです。実際の具体的なコードはあとで見ていきます。以下のようなディレクトリわけになっていました。ViewControllers今度から真似てみようと思います。コードから学ぶ本記事では以下のHomeViewControllerについて学ぼうと思います。一つでも画面を押すと以下のようになっていて、動画が再生されるようになっています。HomeVC.swiftは以下のようになっています。}}そこまで長くありません。解説プラス自分がまだアプリエンジニアとして新米なところがあるので勉強しようと思います。普通のコードであるということを言っておきます。DataSourceなども一緒に書かれていて、extentionを使ってい分ければいいのになと思いました。...}のように同じファイルにセルを定義しています。僕だったらファイルを分けるのにな、というような感じです。MVVMの方法は以下の本に詳しく載っていました。単行本この商品を含むブログを見るここから内容に入ります。コードの内容properties以下のようなプロパティを持っています。0.0(1)ここでは以下のような構成なので、このようになっています。あとのプロパティはそこまで重要ではありません。viewDidLoadViewのライフサイクルの中でもっとも大事な項目といっても過言ではありません。79行目からは以下のようになっています。}つまり、このメソッドを追えばいいわけです。これ以降は、メソッドの呼び出しがあったとしても、節を分けて書くようなことはしません。customization()関数は以下の通りです。}すべてTableViewの設定(カスタマイズ)をしています。contentInsetscrollIndicatorInsetsrowHeigthestimatedRowHeight詳しいことは以下の記事でご覧ください。qiita.comfetchData()以下のようなものです。}VideoクラスのfetchVideosメソッドを使っています。model/Video.swiftの中には以下のようになっていました。funcはオーバーライドできないことを知りました。@escapingを知らなかったのですが、以下の記事で理解しました。qiita.com引数としてクロージャを受け取る時にattributeとして使用します。使い道としては、クロージャがスコープ外で強参照をされるときクロージャを非同期で実行する時に必要です。関数に以下のように渡す必要があります。...}クロージャを知らない人は以下のようなものをクロージャと呼びます。}コードに戻りますがまず(1)で動画の初期化をしています。(2)で、動画のリンクを設定しています。(3)では、動画をみているときに出てくるサジェスト動画を設定しています。[SuggestedVideo]()に代入します。(6)で引数として渡ってきたコールバック関数を定義します。ここでのweakSelfとはHomeVCクラスを指しています。weakSelf.tableView.reloadData()ではテーブルビューを実際に設定しています。仕様以外で学んだことは以下の通りです。@expectedとweakここらへんはあまり理解できていません。非同期でやりたいから?とぐらいしか思うことができませんでした。viewDidLoadを簡潔にまとめようこのコードは以下の短さです。次回、このシリーズのエントリーを書くときはアカウント周りをやろうと思います。»プロフィール学生エンジニア。忘れてしまうので備忘録です。flaskでServerlessにホストするTelepresence概論スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。