オーマイガー東京

オーマイガー東京というブログを24歳東京暮らし新卒2年目のエンジニアが書いています。

【独学のコツ】効率的なプログラミング勉強方法のまとめ

f:id:maru_33:20180511014426p:plain

効率的なプログラミングの勉強方法を模索してる人たちへ

プログラミングを勉強するにあたりどのようなやり方がいいのか模索してる方も多いと思います。

今回はそんな疑問に対して、こんな効率的な勉強方法があるよ!というのを答えていきたいと思います。

自分の独学経験からベターな勉強方法を紹介

自分は、プログラミングを独学で初めて半年で第1志望の企業に内定し、現在プログラマとして働いています。

その過程の中で、

  • これはやってよかった!とか
  • こうしたら良かったな!とか

をまとめて伝えたいと思います。

実践すれば戦える力がつくはず!

この記事を読んで、実践することが出来たら半年でかなり実力をつけることが出来ると思います。

もし紹介する勉強方法が自分に合いそうであれば試してみてください。

では、僕なりのプログラミングの効率的な勉強方法を解説していきます。

効率的なプログラミングの勉強方法

作りたいものを決める

まず大事なのは何を作りたいのかを明確にすることです。
作りたいものによって、言語や使うライブラリなどまったく変わってきます。

WEBサービスを作りたいなら、RubyやPHP、JavaScriptを勉強するべきですし、 アプリを作りたいなら、SwiftやJava、GOなどを勉強するべきです。 データ系の成果物を出したいなら、python。組み込み系やるなら、CやC++。

など、というように作りたいものから使用する言語が定まります。

またどんな機能を持たせるのかによっても必要な技術が変わってきます。

・ログイン機能はいるのか? ・ソーシャルログインはつけるのか? ・画像は扱うのか? ・アニメーションさせるのか? ・DBと接続する必要はあるのか?

などなど、他にもたくさんあります。

これらは、全てあなたが何を作りたいかを決めることで決まります。

自分で作りたいサービスでもいいですし、誰かにお願いされた企画でもいいですが、

これから何を作りたいのか?を決めることで、今あなたに必要な技術だけを最短で学ぶことが出来ます

勉強してから作るという方法ももちろんありますが、私には向いていませんでした。

作るために必要な技術を調べる

さて、作りたいものが決まったので次は作りたいものを作るために必要な技術を調べます。

機能ごとに分解していく

まず、作りたいものを機能ごとに分解していきます。

たとえば、簡易版Facebookを作りたいと思った時にはこんな感じです。

  • ユーザー登録機能
  • ログイン、ログアウト機能
  • 友達機能
  • 記事投稿機能
  • 記事一覧表示機能
  • …etc

分解した機能をどのように実現するか決定する

機能を洗い出すことが出来たら、それぞれの機能をどう実現していくか考えます。
まずは以下の2つを自分自身に問うてみたらいいと思います。

  • 自分で実装するのか?
  • ライブラリを使用して実装するのか?

上記の問いには、
自身のスキルと課題の難易度を照らし合わせて、
スケジュールを意識しながら決めるといいと思います。

今時はだいたいライブラリがあるので、まずは使ってしまうとかでもありな気がします。
(カスタマイズが必要になった時に、内部の実装を意識するとかでもいいかも)

自分にとっての新技術を使って雑に動くものを作る

さて、機能開発の方針が決まりました!

それでは、開発に入ります。
その際に大事だと思うのが、まずは雑でもいいからシンプルに動くものを作ること。

全体感や雰囲気も掴めてないうちから、
良いコードを書こうとすると手が止まってしまうということが何回もありました。

まずは、シンプルにシンプルに動くものを作ることを意識しましょう。

リリースする

さて、シンプルな機能群が出来上がりました!
そしたら、リリース作業です。

必死にググりながらリリースしましょう。
awsをいきなり触っても良いんですが、
初心者にはほぼほぼtoo muchだと思います。
(あと従量課金だから知らぬうちにお金が結構行ってる時があるかもです。

個人的には、最初のデプロイ先はさくらVPSがおススメです。
環境設定や、デプロイのチュートリアルなども充実していますし、なにより安い。

リリースしたら、Twitterなどで告知して色んな人に使ってもらいましょう!

最近ではprogateのTwitterコミュニティなどがあって、
うまく友達が作れれば最初からかなりの人に使ってもらえるみたいです。

リリースにさしあたりひとつだけ気をつける必要がある

リリースするにあたって、
クリティカルなバグだけは直しておく必要があります。

ここでいう、クリティカルとは以下のような場合です

  • クレジットカード情報が漏洩する
  • お金を支払ったのに、から決済されてしまう
  • ユーザー情報が漏洩する
  • …etc

つまりは、金銭周りと個人情報周りの処理だけは気をつけて開発するということです。

ボタンを押しても記事が投稿されないなどのバグは
アプリとしては致命的ではありますが人生的には致命的ではありません。

金銭関係で失敗すると、
人生的に致命的な場合があるので気をつけましょう。

過去にはこんな事例がありました。

togetter.com

勝手がわかったところで綺麗に書き直す

さて、以前まででリリースもできてたくさんフィードバックが得られたと思います。
もっとこう直したいなぁ。とか、こんな機能つけたいなぁ。とか。

そしたら、それを1つずつ継続的に開発していきましょう。
そして、その過程であなたは気付くはずです。

  • コードが汚くて開発しづらい
  • 重複コードがたくさんあって修正が辛い
  • もっと柔軟な書き方にすればよかった
  • リリース手順は毎回手作業だとしんどい
  • 環境構築もプログラマブルにやりたい

こんな風に色々思うことが出てくると思います。
それこそ、まさに伸び代ですね。

とまぁ、こんな風に作りながら学んでいくと
必要なことが明らかになっていきます。

周辺知識は全体感を掴み興味を持ってから勉強する方が理解が早いと個人的には思います。

理論を勉強してから開発する!のも良いですが、
個人的にはなにかを作りながら学んでいくスタイルをお勧めしています。

何のためのプログラミングなのかを忘れてはいけないと思います。

綺麗なコードをかけるようになるには

コードが汚くて書きにくいという経験したあなたが
一歩上のプログラマになるために必要な本がこちらです。

名著中の名著。リーダブルコード

どんなコードが良いコードで、
どんなコードが悪いコードなのかを例付きでガッツリ教えてくれます。

この本を読む前と読んだ後では全然コードの書き方が変わると思います。

必読の一冊です。

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

  • 作者: Dustin Boswell,Trevor Foucher,須藤功平,角征典
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2012/06/23
  • メディア: 単行本(ソフトカバー)
  • 購入: 68人 クリック: 1,802回
  • この商品を含むブログ (138件) を見る

独学の書き方からプロの書き方へ

独学でやっていると業界のスタンダードな書き方を知らずに
進んで行ってしまう可能性があります。

そんな時には、このような本をやるといいでしょう。
私はrailsを勉強していたのでこの本は大変勉強になりましたし
自信にもなりました。

実践Ruby on Rails 4 現場のプロから学ぶ本格Webプログラミング

実践Ruby on Rails 4 現場のプロから学ぶ本格Webプログラミング

rails以外にも探せばこのような本はあるはずなので
何か一冊やってみましょう。

まとめ

プログラミングを独学で効率的に学ぶ方法は
作りながら学んでいくことだと私は思います。

作っていく過程で必要な技術と出会えるし
作り終える過程で自分に足りないスキルも判明します。

ただ漠然と勉強するよりも、目的を持って勉強し開発することで
ぐんぐん成長していけると思います!

合わせて読んで欲しい記事↓

www.ohmg.tokyo