【DIVE INTO CODE】スクール通って2ヶ月間のプログラミング学習進捗について

投稿日:

【Railsでアプリ開発中】プログラミング初心者の勉強ブログ #52

プログラミング未経験から勉強し始めて3ヶ月目突入。オリジナルwebアプリもリリースできたので、この2ヶ月間DIVE INTO CODEに通って学んだことの詳細と感想を書きます。習熟度や2ヶ月間の成果物、勉強方法の良かった点と悪かった点をまとめてみました。

目次

 

2ヶ月間の成果物

完成したアプリとして提示できる成果物は2つです。1つは現在通わせていただいているプログラミングスクール 「DIVE INTO CODE」で課題として提示されていた、「インスタグラム・クローン」、もう一つは、オリジナルで開発したwebアプリ「運転免許問題集」です。開発はプログラミング言語「Ruby」のフレームワークである「Ruby on Rails」で行なっています。どちらも実物のリンクを貼ります。

インスタグラム・クローン「P. Y. M.」

インスタグラム・クローンといえば体が良いですが、初心者が1〜2ヶ月程度でInstagramをそっくりそのままは作れません。基本のブログ投稿機能とログイン機能に加え、画像アップロード機能、お気に入り機能を実装したものになります。

 

運転免許問題集

オリジナルアプリとしては一作目です。JavaScriptとjQueryのアウトプットのために自分で設けた課題です。開発からリリースまでの流れを経験できました。独自ドメイン設定、SSL適用、OGP設定、プライバシーポリシー・利用規約制定、アドセンス広告挿入と、「開発後→リリース」間にやらなければならないことがたくさんあったので、経験しておくべきだと思いました。

 

まだまだどちらも大したものではありませんが、以下、今までの学習過程を書いていきます。これからのプログラミング学習者の参考になればと思います。

 

勉強開始前の状況

まず、勉強開始前の僕がどんな奴でどのレベルだったかをお話しします。

どんな奴か

自分について文字に起こしてさらけ出すことに抵抗や違和感はありますが、自分の「経験談」を具体的に説明するための要素として、過去の勉強経験であったり性格についての情報がある方が、適切な判断基準になると思ったので書きます。

  • 1993年生まれの現在25歳
  • 公立高校、私立大学(経営学系)と経て、新卒で営業職サラリーマン
  • 英語は単語調べれば読める程度
  • 考えることが好き
  • サボりぐせあり
  • 家でYouTubeみてるのが幸せ

こんな感じです。会社辞めたのも、同世代で活躍しているYouTuber見て、「サラリーマン以外の働き方なんかできるんじゃないかな」っていうきっかけがあります。もちろん金融の営業職が自分に合ってなかったのが一番の理由ですけど。

 

プログラミングや情報系の知識

ほぼ0からのスタートでした。Rubyなんてものは愚か、HTMLとかOSとかブラウザが何なのかもわかってませんでした。趣味でパソコンに興味があったとか、ブログ書いてWordPress使ってたとか、そういうのもなかったので、あくまで「ユーザー」としてのパソコンの使い方しか知りません。WordとExcelを会社で使ってはいましたが、タッチタイピングもできませんでしたし、営業職は大体外回りに出てるので、パソコンに触れる時間がそもそもなかったです。

 

このような状況からのプログラミング学習のスタートです。前情報ありきで見ていただいた方がリアルが伝わると思います。

 

学習内容・時間

2018年7月末に最終出勤し、8月頭よりスクールに通い、プログラミングの勉強に専念してます。退職前と退職後に分けて書いていきます。

会社退職前の準備

がっつり勉強に取り組み始めたのは退職後ですが、会社に勤めている間にも参考書等で少しつづ勉強を開始していました。がっつり勉強する前にプログラミングの訳わからない文字と数字の羅列に少しでも抵抗を無くすためです。以下、実施した内容です。

 

ドットインストール

  • ドットインストール HTML入門 (全24回)
  • ドットインストール CSS入門 (全23回)
  • ドットインストール 実践!ウェブサイトを作ろう (全17回)
  • ドットインストール Ruby入門 (全26回)
  • ドットインストール Ruby on Rails 5入門 (全28回)

会社退職後通う予定であったプログラミングスクールがRubyでの開発だったため、ドットインストールもRubyを見ています。ドットインストールは本来動画見ながらエディタに書き込んで手を動かすべきですが、このときは動画をとりあえず見るだけでした。1動画3分くらいなのですぐ終わります。プログラミングがどんなものか知るための「入り」として大変わかりやすく、無料で気軽にできるのでとりあえず見てました。

 

書籍

  • HTML5&CSS3レッスンブック
  • 3ステップでしっかり学ぶ Ruby入門
  • たった1日で基本が身に付く! Ruby on Rails 超入門

この3冊は読みました。(名前だけですみません。)ここでも今思うとあまり手を動かして勉強するというよりは、とりあえず読んで内容をインプットする形で学習してました。仕事の外回りの移動中に読んでたりしてた気がします。ただ、「HTML5&CSS3レッスンブック」だけは手動かして、見本のwebサイト作りました。成果がわかりやすく目に見えてあらわれるのが、HTMLとCSSの楽しいところです。

 

その他

  • タッチタイピング

これは必要かわかりませんが、好きだったのでやってました。これから永遠とパソコン使うんだったら入力速いに越したことないと思ったので。タッチタイピングの練習は「ミカタイプ」でやりました。始めた当初はタッチタイピングできず、WPM(一分間に何文字打てるか)がローマ字入力で120くらいだったのですが、会社やめる頃にはローマ字入力200ぐらいまで上がってました。タイピングの速さがそこまで大事ではありませんし、プログラミングは英単語打ち込むのでローマ字早くしても微妙ですが、単純にパソコンに慣れる作業として良かったかなと思います。

 

退職後の学習

退職後はプログラミングスクール「DIVE INTO CODE」にて本格的に学習を開始しました。基本的に学習時間は1日10時間以上、DIVE INTO CODEの自習室が空いていない毎週木曜日以外は、毎日勉強してきました。また知識のアウトプットとして、学習した日は必ずブログを書いてました。

1日の勉強の流れ

  • 9時頃起床
  • 10時頃「DIVE INTO CODE」自習室(もしくは最寄りのドトール)到着
  • 午前中は前日の学習内容のブログ記入
  • 20時〜22時頃勉強終了
  • 12時半〜1時就寝

もちろんあくまで目安です。2ヶ月間、オフの木曜日以外を除いて平均すると、このような毎日を過ごしてきました。自習室が開くのが10時なのもあり、結構夜型です。正直途中から最寄りのドトールからのスタート多めです。てかやばい生活ですね、客観的に見ると。

 

 プログラミングスクール 「DIVE INTO CODE」学習内容

「DIVE INTO CODE」で学べる内容です。現状やってみての感想と身についた力、習熟度、各内容のボリューム感などをまとめました。一応カリキュラムは全て終わってます。

HTML 基礎的な内容。2カラムのHP作成が課題として出され、手順に沿って作成する。それぞれのタグの使い方や意味、HP構成の知識、フォームやラジオボタンなどを使用したお問い合わせ機能等、基本的なHPに必要な画面は一通り作成できる力が身につく。
CSS 基礎的な内容。2カラムのHP作成が課題として出され、手順に沿って作成する。ヘッダーやフッター、ナビゲーションバー、ボタンなど細かい作り方が身につく。CSSライブラリであるBootstrapもかじるので、Bootstrapを使ったレスポンシブデザインは作れるようになるが、メディアクエリなどは独学でやるしかない。
Ruby 後述するRuby on Railsも含ると、DIVE INTO CODEのカリキュラムでもっとも取り扱うボリュームが多い言語。というよりほとんどこれ。DIVE INTO CODEでちゃんと課題クリアして行けば、書けるようになる。アルゴリズムを考え、フローチャートに起こし、メソッド(関数)をコーディングするという、段階を踏みながらRubyのコーディングに慣れていくスタイル。その後はRailsのフレームワークを実践していく中で覚えていくので、RubyのメソッドなのかRailsのメソッドなのかごっちゃになることがよくある。
Ruby on Rails 基礎から応用まで。DIVE INTO CODEでの学習のほとんどはRailsの学習であり、僕の成果物ぐらいのものであったら一人で作成が可能になる。ブログアプリを作成し、機能をどんどん拡張していく形で学習が進む。最終的に卒業課題としてオリジナルアプリ課題を提出する前の段階で、「インスタグラム・クローン」が作成する。ログイン機能、画像アップロード機能、メール自動送信機能、お気に入り機能、フォローフォロワー機能、非同期通信コメント機能などを持ったアプリが作成できる力が身につく。また、機能だけでなく、本番環境(Heroku、AWS)へのデプロイ手順やリファクタリングの方法、アプリ作成手順(カタログ設計、テーブル設計、ER図)などの知識もつき、開発からリリースまでの大まかな流れは掴める。API実装、RSpec、Oauthなども任意カリキュラムに入っているので、やる気次第ではさらに機能を加えたハイクオリティな卒業製作アプリを作成できる。
JavaScript 基礎的な内容。書き方は大体インプットでき、課題では「成績判定プログラム」を考え、JavaScriptで関数を作っていく。ボリュームはRubyと比較すると少ない。また、学習に当たってアプトプットするチャンスが少なく、実際に動くJSをwebサイトに実装するためには、自身で学習を進めていく必要がある。現時点ではReactやVue.jsがカリキュラムに入ってなくVue.jsは今後導入されると聞いた。そしたらJSのアウトプットチャンスは増えるかもしれない。
jQuery 基礎的な内容。JSと同じく書き方は教わるものの、アウトプット機会が少ないため、使えるようになるには独学が必要。上にリンクを貼った成果物「運転免許問題集」の一問一答のような、モーダルウィンドウやAjaxでの表示はDIVE INTO CODEのカリキュラムではなく、独学によるもの。jQueryを使えるようになるためには、アウトプットチャンスを自分で課題を設けて作るしかない。
Linux カリキュラムの一つとして設けられている。RailsアプリをHerokuにデプロイして使っていくにあたって必要な最低限のLinuxコマンドが身につく。DICのカリキュラム上、最初は開発環境として「cloud9」を使用し、その後ローカル環境に移管していく。開発していく中でアプリにSSLなどを適用するような、外部とやり取りをする場合、自分で調べなければならないところが出てくる。
Sinatra Rubyの軽量フレームワーク。DIVE INTO CODEではユーザー登録ページの作成を行い学習する。正直やった記憶があまりない。ほとんどRailsに時間を費やすので、忘れてしまっている。カリキュラム上それくらい影が薄い。
SQL SQLのクエリの書き方も基本的に学べる。しかし、RailsではActive RecordがDBと仲介してくれるため、自分が直でSQLをかくようなアウトプットは少ない。今の所RailsのメソッドでDBのデータ引っ張ってくれば解決するので直で使えなくて問題は生じていない。逆に言えば、Active Recordはそれくらい使えるようになってくる。

 

大まかにはこんな感じです。漏れている部分もあると思いますが、僕のようなフルタイムで学習を行える状況だと、2ヶ月でこれくらいの力は身につきます。

 

プログラミング勉強方法

プログラミングを勉強するに当たって意識したことを書きます。勉強内容ではなく、「勉強方法」です。努力の舵の取り方です。僕も勉強するにあたり、どのような方針でプログラミングを学習していくか色々調べて実践していったので、その経験談を話します。

 

手を動かす

ネットで「プログラミング 勉強法」を調べると、必ず出てきます。その通りだったのでここでも書きます。目で見て頭で理解しても、コーディングすることはできないです。まずは手本を見ながら書きます。テキストエディタ(DICの場合Atom推奨)を使って、とにかく書きます。

 

暗記はしない

これもネットで「プログラミング 勉強法」を調べると出てきます。こっちは不安だったのですが、暗記はしないほうがいいです。むしろスピード感を意識したほうが効率が上がりました。プログラミングのコードは学校のテストや資格試験とは違い、カンニングし放題です。コピペも許されます。無理して覚えず自然に覚え、どんどん先に進めることが大事です。

 

とにかく開発する

見本に沿って手を動かしてコーディングして、内容を理解した後は、時間をとにかくアウトプットに費やしたほうが効率が上がります。とにかくアウトプットです。勉強全般に言えることだと思いますが、自分が「これどうすればいいんだ?なんだっけ?」っていう機会を意図的に増やすことが大切です。オリジナルアプリ開発をすれば、そういうアウトプットチャンスがたくさん転がってきます。そのチャンスを一個一個丁寧に処理していく根気が、プログラミング初学者として一番大事なことであり、意識すべきところであると考えます。一人ゴリゴリコーディングタイムばかりやってました。

 

得た知識を文書化し、発信する

この作業もアウトプットの1つとして、有効に働いたと考えます。プログラミングや情報系の概念は、抽象的で、具体的に目で見えるようなものではないため、知識の整理を定期的に実践しないと、曖昧になったりごっちゃになってしまうことが多いです。また、「人に伝わる形での文書化」という作業が、インプットの段階で抜けていた点を埋めて、理解を深めてくれます。自分メモより「読む人」を意識した文書でアウトプットすべきだと考えます。

 

困ったら人に聞くべきか、自己解決すべきか

わからないこと・手が止まったときどうするか問題は、色々悩みました。アウトプットチャンスの処理方法です。時間をとるなら「人に聞く」、問題解決能力を上げるなら「自力」です。

そもそも周りに聞く人がいない場合は強制的に「自力」ですが、DIVE INTO CODEでは、自習室に行けばメンターさんが常時いるので、いつでも人に聞くことができます。

初めのうちは、「15分悩んで無理だったら聞く」をやってました。そう教わったからです。実際には30分ぐらいは使ってたかもしれませんけど。

ただ、DICカリキュラムが終わってからは、わからないことは自力で調べてやっていくスタイルを徹底してました。どうしてもわからないときだけメンターさんに相談しましたが、人に聞くことを最小限にし、Googleに聞きました。効率の面で考えると悪かった部分もありますが、「問題解決能力」を伸ばす方を取りました。

理由は2つあります。1つは「DIVE INTO CODE」学習カリキュラム外の質問は、メンターさんでも回答に時間がかかることです。現役バリバリのエンジニアに聞けるわけではない点が理由の一つです。もう1つは、目標が「就職」ではなく、「一人で開発できる力を身につける」ことだったので、時間かかってでも「課題解決能力」強化を重視してます。

ですので、ここに関しては学習者の目標次第なところだと考えます。

 

 

今後の課題

2ヶ月間の学習内容を書いていきましたが、現状の進め方で自分が感じる課題です。

webデザイン関係の知識不足

アプリ開発をすると、webデザインの作業が必ずあります。現状、

バックエンド・・・Rails(Ruby)

フロントエンド・・・HTML/CSS、JavaScript(jQuery)

で学習しておりますが、フロントエンドのさらに前に「webデザイン」があります。友人に聞きましたが、実際の現場ではwebアプリケーション開発を大きく分けると、「フロントエンドエンジニア」と「バックエンドエンジニア」と「webデザイナー」がいるそうです。

「webデザイナー」分の業務スキルについて、全くもって学習を取り入れられてないことが課題としてあります。学習内容の一つとして、もう少し時間を割くべきだった要素だなと思います。

 

横のつながり

もともと人付き合いを増やすことに乗り気にならないことが災いしていますが、プログラミング関係のつながり作りをまるで行ってないない点です。「横のつながり」や「コネ」みたいなものは、今後独立して仕事を貰うためには大事な要素だと聞くのですが、実践しておりません。

一人でゴリゴリするだけでなく、たまにはプログラミングの勉強会やセミナーに参加するのも大事かもしれないと感じてます。

 

まとめ

人それぞれ勉強方法はあると思いますので、一概にこれが良いというわけではありませんが、2ヶ月ほとんどプログラミングしかしてこなかった経験として、これからプログラミングの勉強を始める方の参考になればと思います。(気づいたらかなり真面目に書いてしまった。)

楽したがりですが、パソコンに向き合ってる時間が苦でないので今の所続けられてます。まだまだ先長いですが頑張ります。

以上ありがとうございました。

 

 

-DIVE INTO CODE
-, ,

Copyright© s u p ? , 2019 All Rights Reserved.