某プログラミングスクールの実装課題を完了したので、記録を残しておきます。
なお、私がかけた時間はトータル24時間強でした。スクールの定める予定時間を大幅に上回っていたため、恐らくかなりエラーに苦しめられた方だと思います。。
なぜ記録を残すのか
将来の私のために、初めてアプリを作った時の新鮮な感情を残しておきたいため。
また、同じように初めての実装で悩んでいて、挫折しそうな人に、考え方の参考として見ていただきたいため。
##実装を通しての学び
実装を通しての学びは以下の3つです。
- アウトプットの重要性
- プログラミングの勉強においてエラー対処は利点しかない
- エラーの解決手順
1.アウトプットの重要性
これはどんな学問に対しても当てはまることです。ただ、学生の頃の試験勉強と比較すると、プログラミングの勉強の方が、よりアウトプットは重要だと思いました。
理由としては、答えは一つではないものの、答えを導き出すためには明確な論理がある、からです。
プログラミングにおいて、答えは一つではなく、明確な論理を持って実装に当たる必要があります。
答えは非常に多くのパターンがあり、実装のためには様々なことを頭の中から出せる状態にしておける必要があると思います。また、勉強したことを実行すれば100点が必ず取れるような物でもありません。様々な要因からエラーが必ずおきます。
勉強したことをアウトプットできる状態にして、さらに予測不能なエラーに対処できる力を身に付ける。これがプログラミングにおけるアウトプットの意義だと思います。
2.プログラミングの勉強においてエラー対処は利点しかない
これはどんな人にとっても間違いないことだと思います。
なぜなら、エラーでは、不備の箇所を明確にしてくれるからです。
例えば、数学の問題を間違えたとして、どこが分かっていないかは、自分で考える必要があります。反対にプログラミングは、どこが間違っているかを明確にしてくれて(エラー文が表示されている場合)、どのように修正するべきかも提案してくれたりします(Did you mean)。
エラーってポジティブ要素に聞こえてきませんか?
3.エラーの解決手順
MVC実装程度のアプリ開発におけるエラー解決手順ですが、私が実際にエラー対処する中での解決手順です。
1)エラー文の解析
簡単なエラー文やDid you mean?が出ていれば、即解決です。複雑なエラー文であっても、検索すれば、簡単に解決できることも。
2)エラー文で指摘されているファイルのチェック
スペルミスや構文ミス(特にend抜け)がないかをチェック
3)MVCの流れをチェック
1),2)で解決しない場合は、 MVCの処理がおかしくなっているはずなので、流れをチェックします
4)分かっている人に質問する
1)~3)を実施して不可能な場合は大人しく諦めましょう。ただし、質問の仕方としては、参考資料を持って、こうしようとしたけど、思い通りにいかなかった、などしっかり考えた証を見てもらいながらだといいと思います。
1)〜3)については時間をかければかけるほど、4)での定着率は高まります。私はdevise導入時に、マイグレーションの
記述を消しすぎていることに気づかず、6時間以上ストップしていました。もう一生userモデルのマイグレーションファイルの記述をおざなりにすることはないと思います。
まとめ
グダグダと書いてきましたが、結論、僕が伝えたいことは、エラー発生はポジティブ要素だということです。
エラーにかける時間が長ければ長いほど、特にだと思います。
実装の達成感はとてつもないです。とにかくやり切ることが成長につながると思います。