これからプログラミングをゼロから学び始める人たちへ(0〜200時間編)

2018年 1月16日(火)から 3月16日(木)の2ヶ月間、CODEBASE主催のプログラミングスクールに通っていました。この2ヶ月間で、本当にたくさんのことを学んだので、僕のように、これからプログラミングを0から学んでいこうと思っている人たちに向けて、このスクールで学んだことを紹介できればと思います。ここでの話は、僕がプログラミングスクールに通い学んだ体験が前提となりますが、ゼロからWebアプリケーションを作れるようになるまでの知識やスキル、それらを学んでいく順序などが、この講義の中ではすごく考慮されていていたので、プログラミング未経験者がスタートラインに立つまでに(プログラミング経験0〜200時間までに)やるべきことの参考になるのではと思い、講義内容を整理してまとめてみました。独学で勉強している/独学で勉強しようと思っている人たちにも参考になっていただけるといいなあと思います。

これからプログラミングを0から学び始める人たちへ

  • この2ヶ月間でやったこと(学習時間/CODEBASE School講義)
  • プログラミングを学ぶ前と今とでどう変わったか
  • 今後どうしていきたいか

この2ヶ月間でやったこと(学習時間/CODEBASE School講義)

  • 総勉強時間

普段の業務をこなしながらの勉強だったので、平日に1日2時間〜3時間、週末に7時間〜10時間の学習時間を確保するのが限界でした。2ヶ月間で総勉強時間はだいたい200時間ぐらい程度です。(この200時間って言ってるのはコードを書いてない時間も含めてて、講義を受けてる時間や環境構築だったりツールの使い方だったりを調べてる時間も含んでます)

まずは、プログラミングを学ぶための環境作りとウェブのしくみを学ぶ。自分のコンピューターでプログラムを動かせるようにする準備、Webサイト(Webアプリケーション)がどうやって動いているのかっていう概要を知る。ちゃんとプログラムを動かせる環境を用意できないと、プログラミングの勉強を始められないっていうのと、ウェブの仕組みを知らないと自分が書くプログラムって何してるんだっけ?ってなると思うので、このあたりを最初に学ぶのは重要だと思いました。

shimabukuromeg.hatenadiary.jp

  • 第3, 4回 HTML, CSS, Bootstrap

HTML, CSSは、Webサイト/アプリケーションのページを表示するのに使うものなので、Webアプリケーションを作るために必須となる知識です。概念的にはわかりやすいので、ざっくり理解するのは難しくないと思いますが、実際手を動かしてデザインするってなるとすごく難しいです。個人的には、ここでたくさん手を動かして、少しでも理解を深めることが重要だと思います。(Progate HTMLのコースを2周ぐらいしたらいいかも)まあまあ慣れたらBootstrapのサンプルページのコードを読んだり、コピペで動かしてみたりするのも、理解深めまると思います。

shimabukuromeg.hatenadiary.jp

  • 第5, 6回 オリジナルサイト制

HTML,CSSにまあま慣れてきたら、実際にオリジナルのサイト制作をやってみる。テーマはなんでも良いのですが、自分でオリジナルのものを作ってみることで、ワイヤーフレームを考えたり、他のサイトがどうなっているのかをみてみたり、今までインプットしたものをアウトプットするにはどうすればいいかを考えるようになるので、すごく勉強になると思います。

shimabukuromeg.hatenadiary.jp

JSは今回の200時間で一番時間使えてなかったなと思っている部分ですが、最低限 ProgateのJavaScriptjQueryのコースは一通りやるのをオススメします。あんまり意味がわかってなくてもBootstrpとかを使うと、いい感じに動いてくれたりしますが、JSやjQueryを使うときのリンクの貼り方や基本的な仕組みは、理解しておいたい方が良いと思います。(たまに動かなくなった時に、知識なさ過ぎたら、調べることもできなくなるので、それはまずいです)

shimabukuromeg.hatenadiary.jp

  • 第9, 10回 PHP入門

ここからがサーバーサイドです。今回はPHPを勉強しました。ここでも手を動かすのがすごく重要です。ProgateのPHPのコースを2周ぐらいするのと、詳細!PHP 7+MySQL 入門ノートっていう本のサンプルコードをとりあえず1周写経する。理解が浅いところを繰り返すっていうのがおすすめです。あと今回PHPを学ぶにあたってPHPStormっていうエディタを使ったんですが、補完機能だったり、色々多機能で、初心者な人ほどこのエディタを使うべきだと思います。学習効率がめっちゃ上がります。

shimabukuromeg.hatenadiary.jp

  • 第11, 12回 Slim入門

マイクロフレームワークを使ってWebアプリケーションを書いていきます。マイクロフレームワークは最低限のHTTPの実装をしているプログラムなので、マイクロフレームワークを使うことでHTTPが何なのかを知ることに繋がっていきます。ここから、MVCという概念も出てきます。ただ、個人的にこのMVCをちゃんと理解するのは難しい気がしてて、ざっくりどういうものか理解しておいて、これから先リッチなフレームワークを使うタイミングで手を動かしながらちゃんと理解するのがいいのかあと感じてます。ここでも手を動かすことが重要なので、nunulk さんがqiitaにあげているSlimチュートリアルを全部やりましょう。このチュートリアルはほんとわかりやすかったです。めちゃめちゃおすすめです。

shimabukuromeg.hatenadiary.jp

  • 第13, 14回 DB、DB設計、アプリケーション設計、セキュリティ

アプリケーションをゼロから作っていくためにはどうすれば良いのか、何を考えれば良いのか、っていう設計の話をまとめてます。Webアプリケーションの設計プロセスはすごく重要で、これからWebアプリケーションを作ろうと思った時に、ここに書いてあることを振り返るようにしたいと思っています。ただ、設計についていきなり考えるのは難しいので、すでに世の中に出ているサービスがどうなっているのか、ER図とかURLとか想像してみるのが、理解を深めるのに取っ掛かりとしておすすめです。

shimabukuromeg.hatenadiary.jp

  • 第15, 16回 自作アプリケーション開発

これまで学んできたことHTML,CSS,JS,PHPを使っての集大成。特に13,14回週で学んだことを意識しながら、作るものを考えるのが重要だと感じました。個人的には、この時点で、自分が持ってるスキルを使ってできる最低限のものをまず作ってみて、そこから少しづつ改良していくようなやり方が良いかなと思っています。(ちょっと最初から難しことやっちゃうと、手が止まっちゃうのであんまりよくない感じがしてて、例えばnunulkさんのチュートリアルをベースに、改良を加えていくなどしたら、良いのではと思います)

shimabukuromeg.hatenadiary.jp

  • 第17 Git入門/GitHub入門

これまでの学習である程度コードがかけてきたら、Git/GitHubソースコードを管理していきましょう。単純にソースコードを管理するだけじゃなくて、普段自分がどれだけコードを書いているかを見える化できたり、チームでコードを書いていく際には、必須の知識だったりするので、普段から使っていくことをオススメします。取っ掛かりとしてはチュートリアルをやってみたりして、あとは実際にどんどん使っていって、色々ハマって、調べて上達するのが良いかなと思っています。

shimabukuromeg.hatenadiary.jp

プログラミングを学ぶ前と今とでどう変わったか

2ヶ月間(200時間)プログラミングを勉強してみて、個人的には成長できたと思っています。卒業制作でそれなりに動くものを作れたのはものすごく感動でした。ですが、対外的には正直これと言って語れる成果を出せてないの現状です(笑)そんな中、この2ヶ月間でプログラミングを学びながら、大きく影響されたこと、自分の意識が変わったことが2つあるのでぜひ紹介させてください。

  • 1000時間を積むこと

講義の中で、プログラミングを習得するのに必要な時間についての話があって、それがだいたい1000時間らしいです。プログラミングはセンスとか才能とか全然不要で、本当に取り組んだ時間に比例して上達するので、自分がプログラミングに対して1000時間投資するためにどうやって時間を抽出して、計画するかが重要という話でした。やっぱり才能だったり、始めるタイミングだったりが重要だったりするだろーなって、少なからず思っていたので、めちゃめちゃ励みになりました。何か新しいことを学びたいと思った時に、プログラミング以外のことでも同じことが言えると思います。

  • やる気ってあんまり重要じゃない

講義のなかで「何かあたらしいことを身につけようと思ったときに、やる気ってあんまり重要じゃなくて、いかに自分を中毒状態にできるかってのが大事」って話がありました。個人的にも、なんかやる気が出ないなーとか思うことがよくあったので、やる気だけで何かを乗り換えていくって結構大変なことなのでは?と思ってました。なので、自分を中毒状態にする仕組みを、これから意識していきたいなあと思いました。

ぼくは何か学習したいと思ったら、毎日それを習慣にして、無意識に耳に入れたり、それをやってる人と何度もあったり、それに関するtweetを頻繁に目にするようにしたり。結構外的トリガーを整理して環境を作ると内的トリガーに切り替わりやすいという自分の中の実体験、自分の脳の仕組みを少し理解してるつもりなのでそういう感じで仕向けます

やる気って過大評価されますけど、やる気ってあまり関係なくて、脳を中毒症状に持っていければ勝手に自動的に学習する習慣がつきます(たぶん

saboyutaka.hatenablog.com

今後どうしていきたいか

  • まずは1000時間を積んでいきたいと思っています。この1000時間積むために、中毒性っていうのがすごくポイントだと思っていますが、それに加えて、適切な目標設定をできるかってのも重要だと思っています。1000時間積むために何をやればいのか?が見えなくなってきたら要注意な気がするので、自分の立ち位置とゴールを見誤らないようにしたい(多分、実務をこなすってのが一番だと思うけど、、、この辺りはもう少し考えないとなー)

  • もうちょっと長期的なふわっとした目標設定なんだけど、ソフトウェアエンジニアリングで課題解決できる能力を身に付けたいと思ってます。あとは、身近な人が喜んでくれるようなものを、作っていけたらなーって思ってます。

まとめ

  • 今回のCODEBASE School で学んだプログラミング0から200時間までにやったことを書きました。参考になれば嬉しいです

  • とは言っても僕も初心者から200時間勉強しただけなので、まだまだ1000時間までは長いです。挫折しそうになってたら助けてください笑

終わりに

最後にこのCODEBASE School の二期生を募集してるとのことです!!!現役のフリーランスエンジニアの [twitter:@saboyutaka] さん、[twitter:@kanbo0605] さん を講師に迎えて、現場感のある情報を講義の中で触れれるのはものすごく良かったなーと感じてます。まじでめちゃめちゃ学びが多いので、プログラミングをこれから始めたいと思っている人やWEBの世界に興味がある人はぜひ応募して見てください。

peraichi.com