質問: Androidアプリ初心者です テキストを1冊購入 ↓ テストアプリをいくつか作成 ↓ アプリを1つリリース ↓ (半年くらいのブランク) ↓ 2つ目のアプリを作成中 という段階です 1つ目のアプリを作っているときに、当たり前ですが、テキストに書いてない知識が必要になりました その都度、ネットで検索→記事を読む→自分のアプリで実装とやっていたのですが、勉強の仕方がこれでいいのか不安になってきました 1つのテキストで必要なことが全て網羅されていないのは当然ですが、毎回検索するのもなんだか効率が悪いような気がしています 何かおすすめの勉強法/Androidプログラミングの本などあれば、教えてください
回答: **前提** プログラミングをする上で調査をすることは避けられません。 言語や言語の動作環境について完全に暗記することは不可能ですし、そもそも公式ドキュメントにミスがあったり、言語そのものにバグがあることもあります。 かつ、学習の仕方は人によって異なるので自分にあった学習方法を見つけるしかないと思います。 という前提に立つと 「如何に効率よく調査出来るようになるか、調査する能力を鍛えるか」という点を考えて学習方法を模索してみると言うのが一つの方法になるかなと思います。 **私の場合** 私の場合、以下の様な事が役立ったように思います。 思いついたままに書いたのでレイヤーもばらばらですが、何かの役に立てば幸いです。 * まずは数をこなす 同じフレームワークでも言語でもいいので、いくつもアプリケーションを開発すると、だんだんと手癖で開発が出来るようになってきます。ちょっと分かった気分になり、自分に自信が持てたり、思いついたものをパッと作れるようになるので作る事自体が楽しくなってきます。(作る事自体が楽しく無い場合は、義務感であったり使命感、対価に見合った労働としてプログラミングをすることになり、その場合の対応方法はどちらかというとビジネス書で方法論を探したほうが早そうです。) * コーディング以外の部分の知識も得てみる コーディングについての知識や経験が足し算として働くとすると、デザインパターンや設計手法、開発手法、ドキュメント作成方法、情報処理全般の知識などの直接コーディングに関わらない部分は掛け算として機能すると思っています。 最初は理解できなくていいので、とにかく詰め込んでおくと、実際に開発している時にふと理解したり腑に落ちたりして、視野が一気に広がることがあります。 視野が広がると、検索したいことが全体のどのあたりに存在しているものなのかが把握しやすくなり、検索の手探り感が減ってきて、未知の分野でも調査/検索をしやすくなったりします。 例えば、IPAの情報処理技術者検定なんかは教科書も豊富にあって浅く広く、体系的に知識を得るのに役立ちます。 * コピペで終わらせない 少なくとも、自分でコードを書いた部分(たとえその元のコードが検索してたどり着いたものでも)については、「わからない部分がわかっている」状態までは理解してから組み込む。もちろん、わからない部分が存在しないことがベストですが、自分で責任を取れる範囲であれば理解を後回しにするのもありだと思います。 * 外部仕様をきっちりと決めてから作リ始めてみる それなりに経験を積んでいるプログラマ(30代とか)でも、結構な割合で外部仕様を考えてから作り始めるということが出来ない/しない人が居ます。 そういう人は多くのケースで調べるのが下手だったり、調査に時間がかかったりする傾向があるように感じます(逆に、コーディング自体は早くて正確だったりします) 最初にアプリケーション全体の仕様を考えるのが難しければ、ある一連の処理だけ、それも難しればクラスだけ、メソッドだけ、メソッドの中のある処理だけ でも、先に外部仕様をきっちり決めてからコーディングをするようにすると、「実現したいこと」を整理する能力が獲得できると思っています。 「実現したいこと」が整理できていれば、実現したいことを構成する要素や要件を整理できてくるので、調査が効率的に行えるようになりますし、そのものずばりなコードが検索で見つからなくても何とかなるようになってきます。 * 他人に開発させる、チームで開発する 一人で開発をしていると、手を動かしていればいつかは完成する(してしまう)ので、なかなか問題点などに気付けないです。複数人でコミュニケーションをとりながら分担して開発する、お互いに指示やレビューをしあうという経験が出来るととても勉強になります。 他人が必要になる事なのでなかなか難しいのですが、他の方法では得られない成長の仕方が出来ます。