プログラミングのおすすめ学習方法と挫折しないコツ
プログラミングは最初のハードルが一番高く、とにかくわからないことだらけだし、"Hello World"から自分のつくりたいものへの距離は果てしなく遠いし・・・ということで非常に挫折しやすいのではないかと思います。
私はいまでこそエンジニアとして食べて行けていますが、もちろん初学者の頃はわからないことだらけでした。私がiOSエンジニアなのでiOSアプリ開発の話になってしまいますが、最初のハードルを超えるまでの自分の経験と、そこから導き出した「サンプルドリブン勉強法」「挫折しないコツ」について書いてみたいと思います。
入門書購入
iOSアプリ開発を始めるにあたって、まず入門書を数冊買いました。はじめてのMacbookを買った帰り、書店の技術書コーナーでパラパラめくって、「話が理解できそうなもの」を選んだ記憶があります。
スクリーンショット付きで本に載っていた手順通りにXcodeのボタンをポチポチ押してプロジェクトをつくり、本に書かれている3行程度のプログラムをそのまま(※意味は理解していない)打ち込んで、本に書いてある通りにビルドのボタンを押すと・・・シミュレータで「ブラウザアプリ」が動作したのです。これはちょっとした感動でした。
第一作目のアプリ
その後「ビルドして実機で動作させる」手順まで覚えた僕が次にやったのは、本の通読・・・ではなく、先程書いたコードの意味を理解しようとする・・・ことでもなく、
・手元にある書籍のサンプルコードを一通りビルドして試してみる
・そのサンプルコードからの改変でつくれそうなアプリを考えてみる
ということでした。
で、つくってストアでのリリースまで漕ぎ着けたのが、「余命電卓」というアプリです。(2009年リリース。iOS 11ではDLできません)
「iPhone SDKの教科書」という書籍に収録されていた、年齢を計算する「Age」というサンプルが元になっています。
このサンプルは次のような機能が実装されています。
・ピッカーで誕生日を設定できる
・設定した誕生日から算出した「現在の年齢」が表示される
僕のつくった余命電卓は、単にこ
の「現在の年齢」の代わりに「余命」を表示するようにしただけでした。
{余命} = 78 - {今の年齢}
ちなみに"78"というのは日本男性の平均寿命から来ています。(女性の平均年齢は?という点については後述します)
このサンプルコードの改変に必要だった知識は、
・アイコンなどの画像を入れ替える
・ボタンを押したら設定画面に遷移するようにする
・引き算、割り算、掛け算(余命の計算 → 時間・分・秒等に換算)
・タイマーで秒数カウントダウン
これぐらいです。画面遷移やタイマーの実装は、同様の機能を実現している他のサンプルから該当するコードを持ってきました。
挫折しないコツ1: ぜんぶ理解しようとしない
iOSアプリをつくろうとすると、Xcodeプロジェクトを新規作成するだけで、わらわらとわけのわからないファイルがたくさん生成され、実際にプログラムを書くファイルである xxxx.h や xxxx.m (今だと xxxx.swift)にも最初からわけのわからないことが色々と書かれています。
そういうのを全部理解しようとしなかった、のが途中で挫折しなかった秘訣かなと。
Objective-Cでいうと、@interface, @implementation って何なのかとか。assign だとか nonatomic とか。
もちろん大事ではあるのですが、プログラミングを始めたばかりの人がそういうのをひとつひとつしっかり理解してから前に進もうとすると、動くものをつくれるようになるまでが遠すぎて、挫折してしまうのかなと。
挫折しないコツ2: できないことはあきらめる
余命電卓の最初のバージョンでは、日本男性の平均寿命78歳から誕生日を引く、という超シンプルなロジックだったのですが、次に僕がやろうとしたのは、「性別を選ぶと男女それぞれの平均寿命から引き算する」というものでした。
男/女の選択には UISegmentedControl というのを使えばいい、というのは他のサンプルでわかったので、そのへんのコードをコピペで持ってきて、ビルド成功!
・・・が、なぜかクラッシュする・・・
当時の僕は解決方法がわからなくて、その機能をあきらめました。
プログラミングにおいて、的確にトラブルシューティングを行うことは、(ものにもよりますが)しっかりした理解と経験を必要とするわりと高等な技術です。ここで挫折して二度とプログラムをやらないよりは、あきらめて別のできそうなことを探す、というのもひとつの手かと。
サンプルドリブン勉強法
そんなわけで、僕が書籍のサンプルコードから初めてのアプリをつくってリリースしたように、
・最初からある程度機能があって、動くコードから始めて、
・そこに書いてある色んなわけのわからないことには目を瞑りつつ、
・画像を入れ替えてみるとか、足し算してるところを引き算にしてみるとか、そういう わかること/できることだけでまずはやってみる
というのも、挫折せずにプログラミングの楽しさを知る=入門するためのひとつの方法かなと、僕の経験から思います。
入門書の選び方
上記の経験をふまえつつ、個人的に入門書を選ぶ際の観点としては以下をオススメしています。
・自分がつくりたいアプリに近いサンプルが載っている
・出版年月が新しい
- 古いと、サンプルが動かない可能性がある
- 動かないサンプルを動くようにするのは入門者には厳しいかも
・パラパラとめくって、自分にとって説明がわかりやすそうか?をみる
- 人によって前提知識は全然違うし、文章の好みとかもあるので
まとめ
自分で手を動かしてものをつくれることに憧れて、自分がアプリ開発を始めたころの経験について書きました。もちろんこれは普遍的な話でも正解でもなくて、「僕の場合はこうでした」という話にすぎませんが、どなたかの参考になれば幸いです。