Nerdvana を達成: Big Nerd Ranch で iOS 向け Swift を学ぶ

Nerdvana を達成: Big Nerd Ranch で iOS 向け Swift を学ぶ

NeXTを起源とするBig Nerd Ranchは、世界で最も尊敬されるiOSアプリ開発会社の一つです。先日、BNRが主催したコーディングリトリートで、私は人生で最も集中的な7日間のプログラミング研修を無事に終え、その体験記を執筆することができました。

Appleが今年6月のWWDCでSwift 2.0を発表した後、Swiftが多くの支持を集め、言語としてほぼ安定したことに気づきました。9月にSwiftを使ってiOSを教えるためには、Swiftを早く習得する必要がありました。そこで、カリフォルニア州パシフィックグローブのアシロマ・カンファレンス・グラウンドにあるBig Nerd Ranchの西海岸拠点で、Swiftを使ったiOSの1週間の学習コースに申し込みました。

到着した土曜日、講師のスコット・リッチー氏に会いました。彼は元NeXT社とApple社に勤務し、Cocoa/Cocoa Touchの達人で、Facebook社やGoogle社などの企業研修も担当しています。彼はとても社交的で、人当たりが良く、ユーモアのある方でした。さらに、実験の時間にギターを持ってきてくれると言ってくれました。膨大な量のコードを書いてしまい、ちょっと息抜きしたい時のためにね。本当に素晴らしい点でした。授業前の休憩時間にクラスのみんなとビーチで過ごした後、人生で最も集中的な学習週間となるであろうこの一週間に備えて、少し休むことにしました。ありがたいことに、アシロマの宿泊施設は素朴な雰囲気ですが、清潔で快適、そして比較的静かでした。

私たちはすでに、基本的な型とプログラム制御を扱う事前課題の最初の 8 章を読んでいたので、最初の 2 日間は、オプション、配列、辞書、セット、関数、クロージャ、列挙、構造体とクラス、プロパティ、初期化、プロトコル、拡張機能、ジェネリック、自動参照カウントなど、Swift のより複雑な側面を理解することに費やしました。

言うまでもなく、iOSの明示的なコンテキスト以外では、最初の2日間はかなり抽象的な言語の解説が多かったのですが、プログラミング言語として、Swiftはより安全で信頼性が高く、再利用性の高いコードを書くための機能を備えています。例えば、LabelがiPhoneの画面上で初めてインスタンス化されるときのように、値を「nil」(つまり、値がない状態)に設定する必要がある場合もあります。Optionalsは、値が値を返さなかったことをプログラマが認識できるようにするSwiftの機能です。Objective-Cでは、メッセージがnilを返しても実行を継続できるため、プログラム側でこれを検出する方法がありませんでした。

Swift は、初期化時にすべての変数に値を持たせることでコードをより安全にし、値がないことが問題になる可能性がある場合、それを潜在的なバグとして隠して後で修正するのではなく、プログラマーに通知することができます。Swift は、初期化時にすべての変数に値を持たせることでコードをより安全にし、値がないことが問題になる可能性がある場合、それを潜在的なバグとして隠して後で修正するのではなく、プログラマーに通知することができます。さらに、Objective-C では多重継承(1 つのクラスが複数のクラスを継承すること)はサポートされていませんでした。Swift では、クラスやその他の型は複数のプロトコルに準拠できます(それ自体が他のプロトコルを継承し、機能を拡張できます)。

授業の形式は、スコットがスライドを使って概念を解説し、その後、各章の例題をコーディングする時間を与えるというものでした。これは章を読むという意味ではなく、単に例題コードを入力するというものでした。私はコーディングしながら章を読もうとするというミスを犯し、すぐに遅れを取ってしまいました。章の長さにもよりますが、例題のコーディングにかかった時間は20~30分程度でした。授業が進むにつれて、全員がコーディングを終えたかどうかに関係なく、新しいトピックが次々と登場し、時間的にどんどん足りなくなっていきました。

しかし、スコットが質問にいつでも答えてくれたので、当初考えていたほど問題にはなりませんでした。彼のプレゼンテーションは明快かつ簡潔で、時には難しい概念も素晴らしい例やイラストを使って分かりやすく説明してくれました。2日目の講義はあまり得るものはありませんでした。というのも、その日の午前9時頃に、3年間開発を続けてきたアプリが審査に入ったという通知を受け取ったため、一日中そのことで頭がいっぱいだったからです。そして午後には、アプリがApp Storeで承認されたという通知を受け、ラボの残りの時間はほぼそのことで頭がいっぱいになりました。

Swiftを2日間学んだ後、火曜日にコースのiOSコンポーネントを開始し、金曜日のコース終了まで続けました。まずはシンプルなクイズアプリをゼロから構築することから始めました。ここで言う「ゼロから」とは、Xcodeのシングルビューテンプレートを作成するという意味ではありません。BNRでは伝統的に、App DelegateファイルにUIWindowを作成することから始めて、アプリをゼロから構築することを好んでいます。コーディングの経験がない方にとって、これはXcodeの便利な「ストーリーボード」機能(XIBファイルを1つのエディターペインで連結できる機能)を使用する代わりに、この章を丁寧に教えてくださったからです。スコットはこの章を非常に丁寧に教えてくれたので、私は数分のうちに、最小限の要素から、自分だけのクイズアプリを構築することができました。

クイズアプリから、CGRectクラスとUIPickerViewを活用したより高度なタブバーアプリを構築し、その後、アイテムの編集やカメラやフォトライブラリから撮影した写真の表示を可能にする詳細ページを含む、より複雑なUITableViewアプリケーションへと移行しました。週の後半には、Storyboardsを活用し、UISliderクラスを使ってビューコントローラーのRGB値を変更するColorPaletteアプリを作成しました。

また、タッチイベントの処理、ジェスチャー認識、メニューコントローラー、そしてコレクションビューについても学びました。コレクションビューは、Flickr APIからデータを取得して写真のコレクションビューに表示するPhotoramaアプリの作成に使用しました。夜はラボでコーディングを続け、時にはビーチで夕日を眺めるために休憩を取ることもありました。

1週間が終わる頃には、その週に学んだデザインパターンを使って、シンプルなクイズアプリをゼロから作るのにかなり慣れていました。また、iOSアプリ開発の経験レベルやバックグラウンドが異なる他の受講生たちと、有益な繋がりを築くこともできました。この1週間で一番良かったのは、Big Nerd RanchがiOS開発者を目指す人々に提供する、没入型の雰囲気でした。即興のディスカッション、講師との質疑応答、そして皆で抱負や懸念、夢を語り合う時間など、すべてがアシロマでの7日間を人生最高のプログラミング週間にしてくれました。

iOS 向けアプリケーションの構築技術を本当に深く学びたい方には、Big Nerd Ranch を強くお勧めします。