私の旅と勉強の記録

MENU

【こつこつ半年】働きながら独学でrailsアプリを作成した過程・成果・反省のすべて、学習継続のコツ【教材・サイトの紹介】

こんにちは。本記事は、プログラミングの独学をはじめて約半年たったときに、noteに記載したものと同様のものとなっております。 
 
半年前に書いた内容になりますが、少しでもプログラミングを勉強している方の参考になればと思います。
 
 

なぜこの記事を書いたのか?


①はじめて作ったRubyonrailsのアプリ「Tsukutta!」をツイッターのアカウントで公開してから1ヶ月半たったので学習の振り返りをしたい

②今からプログラミングの勉強をはじめる方に私の学習の過程や反省などを公開することで少しでも学習を進めるうえでの参考にしてほしい

 

という2つの理由があるからです。この記事は以下のようなことを書いています。 

 

1 完全未経験がどのように独学で勉強を進めたか
・約半年間のスケジュール

・働きながらどうやって時間を確保して勉強しているの?

・独学でどういう教材・どういう勉強方法?

・もっとこうすればよかったと思うこと

2 学習を継続する秘訣
・プログラミングは楽しい

・小さな成功体験を味わう快感(エラー解決、Hello World!が生まれた瞬間)

・決して一人ではない→ツイッターやコミュニティの先輩方に積極的に質問をする

・100daysofcodeで継続を可視化する

3 今後の目標

・2019年に転職する

・小さくてもいいからオリジナルアプリをどんどん作りたい

ちなみに私の場合はHTML,CSS,Rubyonrailsの学習者のため教材等については偏りがあるかもしれません。ご了承ください。

 

学習前と学習後の変化

 

2018年5月の私

・フロントエンド?バックエンドって何?

・開発環境・本番環境って何?

・ターミナルって何?

・cdって何?

ディレクトリって何?

のプログラミングのプの字も知らない状態


2018年12月の私 

railsアプリを1つリリース

・クラスやインスタンス変数の概念が大体わかる

MVCアーキテクチャの概要がわかる

・多対多の関連付けができる

・HTMLやCSSを使って簡単なデザインができる 等々

 

しかし、まだまだRubyに関する知識はなく、コードを真っ白な状態から自分で考えてかいたり、サンプルコードを改良したりといったことはできません。

 

なので自作のアプリもデザインもがたがたですし機能的に不十分なところが多々あります。

しかし約半年間こつこつ取り組めば、ゼロの状態からこれくらいにはなれるということです。

 

しかも私の場合は平日4時間(毎日ではない)、休日7時間くらいの亀ペースの勉強ですので、時間に余裕がある方であれば3~4か月くらいでここまでいけるのではないかなと思います。

 

これくらいの人間が約半年間で感じたこと・伝えたいことを書くと思っていただければと思います。

 

まず、本題に入るまえに軽く自己紹介を行いたいと思います。

私は、新卒で就職して社会人3年目の事務職員(26歳)です。

実生活では、稟議・紙だらけ・印鑑だらけのプログラミングとは無縁の仕事をしています。

2019年はエンジニアに転職したいと考えています(ボソッ)

 

もともと、中学生の頃、HTMLを使ってホームページをデザインしたりしていた私は、現在でもパソコンでいろいろなサイトを見るのが好きです。

 

最近話題になっているプログラミングってなんだろうと思い、「プログラミング入門講座」をメルカリで購入し、面白そうと思ったことがきっかけでプログラミング学習をはじめました。

 

完全未経験がどのように独学で勉強を進めたか

 

半年間のスケジュール

半年間のスケジュールということでタイトルをつけましたが、本格的にコードを書き始めてから半年間と考えていただければと思います。

 

その前から本を読んだりしていたのでそこからスタートします。

 

平成30年4月~ scrachのビジュアルプログラミングで遊ぶ

「プログラミング入門講座」(米田昌悟 著)を購入、「これからの時代、インターネットに使われる側ではなく、インターネットを設計したりする側に回ることが非常に大切になってくる」という言葉に刺激され、プログラミングを学ぶことを決意。

 

その中で紹介されていたscrachのマインクラフトを作るゲームのようなもので遊んだりし始める。

 

 

平成30年4月中旬~ いきなりUdemyに飛びつく

 

なぜかいきなりUdemyを始める。受講したのはこちらの「世界で7万人が受講!未経験からWebプログラマーになるための全て」2018年最新版です。

 

ただひたすら基礎的なコードを写経してわからないところや疑問点をノートにまとめていたりしましたが、ほぼ身についていることはないです。

今このコースの中身をのぞいてみるとかなり幅広く網羅されており、そりゃ初心者がやっても身につかないな・・・という感じです。

HTML,CSSについての理解は深まった気がします。これを1か月ほど続けていました。

 

ほかにもPythonやらjavascriptやらUdemyのコースを受講しましたが、実はコースは一つも完了したものがないです(笑)

 

平成30年5月中旬~ Progateとの運命の出会い

ネットを徘徊していると、progateに出会う。

HTML,CSSRuby、Rubyonrails、SQLPHPPythonなどのコースを一周する。

2か月ほど継続していたと思います。

今思えば、HTML,CSSなどについてはprogateでかなり理解が深まったと思います。

 

 

 

平成30年6月下旬~ railsチュートリアル開始

railsチュートリアルを始める。

11章くらいまで無心で写経をする。

写経していても何をやっているか全く理解できず、12章に入る前にやめてしまう。 

 

平成30年7月中旬~ 自作アプリを作り始める

 

railsチュートリアルを写経で進めるも全く理解していないことに焦り、自作アプリを作成し始める。

ネット上でのチュートリアルをまねしてはコピペし、ブートストラップをコピペし、エラーが発生し、原因を解決し、の繰り返しの日々。

 

・途中で「わかばちゃんと学ぶGit」を読んでGitについて理解を深める。これはとても勉強になりました。

 

 

 

平成30年11月 3か月後、自作アプリの大枠が完成、Twitterで公開

アプリを公開。その前に個人的な理由でスピードダウンしたり、仕事が忙しくなったり壁がいくつかありましたがなんとか続けることができました。

 

最初の公開時は・新規登録機能・ログイン・ログアウト機能・cookie機能・記事投稿機能・コメント機能くらいしか備えておらず、レスポンシブ機能もついてないですし、画像投稿すると画面いっぱいにはみ出たり、画像が本番環境で保存されていなかったりとトラブルばかりのアプリでしたが、現在も少しずつ実装を進めて、少しずつ改善されています。

 

平成30年12月 Qiita投稿・自分のアプリについて説明できるようになる練習

 

最近では自分のエラーをQiitaに投稿することでアウトプットも意識しています。

 

また、自作アプリは、ほかの方のコードを写経して機能を追加しているような状態なので、自分が書いたコードは・なぜこう書いたのか?・もっとコードをすっきりさせることができないか?・自分のアプリを0から説明できるのか?という観点に切り替えて基礎的な勉強を平行して行っています。

 

学習当初はフレームワークに乗っかり写経してばかりで、基礎的な部分をほとんど勉強しないままだったので、今最初から勉強して自分のコードの意味がわかるという変な状況になっています(笑)

 

私の1日の学習スケジュール

23時:就寝

~7時間睡眠~

6時:起床

6時30分:朝ごはん、仕事の準備を完了

7時30分:1時間勉強(エラーが多発したらあきらめてオンライン英会話に切り替える)

7時40分:家を出る(職場が自転車で10分のところなので…)

ランチタイム:20分でご飯を済ませ、残り40分はQiitaの記事などを読む18時:退社

~21時:近くの大学の図書館または自宅でコードを書く。

~23時:就寝まで時間があればコードを書く。

 

こんな感じのスケジュールでした。

一日のうち4時間近くできればいいほうです。

もちろん個人的な用事やたまに残業、会社の飲み会もあるのでこの通りとはいきません。

ただまだまだ勉強したいと思っていて、最近では・無駄な飲み会はいかない・スマホ依存症阻止アプリを使ってスマホ時間減・定時で帰れるように全力で仕事を計画し遂行することを心掛けています。

 

ここが無駄だったと思うこと

Progateでいろんな言語をまんべんなく学ぶのは効果的ではない

Progateを否定するわけではないですし、素晴らしい学習教材ではありますが、何周もしたりいろんな言語を学ぶのは少し遠回りかなと思います。

全部の言語を書くことにあまり意味はないし、力がつかない。

じゃあどれを学べばいいの?と思われる方は私はDaiさん(@never_be_a_pm)の以下のnoteをお勧めします。

無料で読めると思います。【保存版】プログラミングで何を学べばどんなアプリを作れるのかまとめてみました。

私もこれを参考に学ぶ言語を選びました。

 

学習初期の段階でのUdemyでの文法の暗記(2か月くらいやっていたがほぼ覚えていない)

すべてとはいいませんがあまり記憶に残っているものはないです。やはり記憶に残り、かつ次に実用できることで意味を持つと思うので…1~2で2か月は余裕ができたかなあと思います。特にUdemy…

 

もっとこうすればよかったと思うこと

はやい段階最終的な成果物を決めておく(これ大事)

これができていないと、延々とprogateを何周もしてレベル上げに徹したり、いろんな言語に浮気しまくってしまいます。

成果物が決まったら、思い切って1つの言語に絞る。(HTMLとCSS等とサーバーサイドの言語1つ)フロントエンドか、サーバーサイドかによりますが、自分の主な言語をまず一つ覚悟を決めて選び、とにかくやる!でいいと思います。

 

特に学習したてのことに浮気すると何をやっているのかわからなくなると思います。

 

私の場合Udemyでいろんな動画を購入し、2~3つ同時並行で進めていましたが、何も身に付きませんでしたし、かなり後悔しています。

 

それよりもアプリを作成しながら全体の中のどの部分をしているのぼんやりとイメージがつく学習法がおすすめです。

 

プロダクトに必要な機能・デザインを自分なりに実装していくことでかなり力がつきます。

 

アプリに必要な機能を追加するためにコードを学習するほうがやっていることの意味が見いだせるので丁寧にやろうという気がおきます。(体験談)

流れとしては、

①自分の作りたいアプリやサービスを選ぶ
②使われている言語を知る
③その言語で作られているチュートリアルを探す
④サンプルができる
⑤実装をし、自分流にアレンジする

 

<例:私の場合> 

Airbnbクックパッドが好き

 

railsで作られていると知る

 

①のポイントとしては、最初からあまりハードルをあげないことです。簡単なものから選び、違う種類のものを複数作るといいのかなと思います。

私は一つのものにこだわりすぎて半年たった今でも成果物があまりないので。

 

③UdemyでAirbnbのクローンを作るという教材があったのですが、途中でなぜか消えてしまいどうしようと思っていたところにrailsチュートリアルを見つける

 

railsチュートリアルで、簡単な画像投稿サイトが完成

 

 ⑤ ④を改良させ、クックパッドチックにアレンジしたのが「Tsukutta!」です。(まだまだ改善の余地ありまくりで言うのが恥ずかしいですが)

 

改良するときはとにかく実装方法をググります。

 

 

 

⑤で生きてくるのがprogateで学んだHTMLやCSSの知識です。

 

私はフロントエンド系の勉強は全くしていませんでしたが、progateで学んだことでデザインを自分流にアレンジすることができました。

 

その際にほかにもこんなサイトを活用しました。

コメント投稿機能や、一覧表示でのBootstrapはほかのサイトから参考にしたものも多かったです。 

 

◎投稿機能やBootstrapのインストール

RubyOnRailsで投稿アプリを作ろう②(画面作成編)

◎投稿一覧画面のイメージ作り

インスタグラムクローン

◎Bootstrapの導入の際参考

Bootstrap 3 Tutorial

◎デザインの参考になるサイトがいっぱいのったQiita記事

非デザイナーエンジニアが一人でWebサービスを作るときに便利なツール32選

Twitterのような機能の参考に

初めてのRuby on Rails。Twitterみたいなサイトを作成しよう

 

2 Qiitaやブログなどで自分のエラーや毎回悩むところを書き残しておく

 

これは慣れてからでないと無理かもしれませんが私も最近始めました。自分が躓くところは何度も躓きます。

何か書き残しておくことでそこを見直せばいいだけなので時間の節約になります。

 

検索すると決まって複数のサイトからの回答を寄せ集めないとエラーが解決しないことが多々あるので、それを自分なりにコピペでもいいので簡単にまとめておくとかなり後からやりやすいと思います。

 

少し遠回りになって焦るかもしれませんが、私はあのときまとめておけばよかったと何度も後悔することになってからQiitaでまとめ始めました

 

学習を継続する秘訣

 プログラミングを楽しむこと

 

最初に<h1>Hello World!</h1>を画面に表示させたとき、うわっ!すごい!と思いましたし、気分が高揚したのを覚えています。

えー!私でもWebページ作れるんだ!と驚きました。

その後も、Progateやネットでのエラー解決方法をみてエラーを解消するとき、思わずガッツポーズしたり、うおおお!みたいになりました。

 

私は自分の手で自分で何かを生み出すこの高揚感を楽しみながら勉強をしています。

 

最初はエラーが出るとうわっ!となっていましたが今はだいぶ抵抗力もついてきました。(半分嘘)↓はじめてrailsの画面が出た日はとても嬉しかった↓ 

 

小さな成功体験を積み重ねて自分に自信をつける

 

私が考えるに、勉強過程は小さな岩がたくさん転がっている山を少しずつ上登っていくこと(滑落することはない知識の積み重ね)だと思います。

 

まずは頂上から目を下ろし足元の岩をまたぐことを考える。そのためにも何か一つのアプリを作成する際は、やることを細分化し一つ一つ解決することが大事だと思います。 

 

独学でも1人ではない!エラーは考えすぎず、自分より知っている人に積極的に質問してみる。(teratail、twitter等にたくさん先輩がいます。)

 

プログラミングをしていると、一歩踏み出せばエラーの沼にはまります…(笑)

 

5分考えてわからなければネット上で質問するのがいいと思います。質問する過程でも自分の思考の整理になるのでいいです。

 

私の場合、railsのコミュニティに入っており、質問をすると丁寧に教えてくれる方々に囲まれ非常にありがたいです。

 

またtwitterでもふとした疑問をつぶやくと優しく教えてくれる先輩方がたくさんいらっしゃいます。本当に心より感謝します。

 

継続を可視化させることで自信をつける

twitterでの100daysofcodeはとてもいい例で、自分の学習の継続が目に見えるととても自身がつきます。自分のノートやスケジュール帳に記録することでもいいと思います。

 

2019年の目標

Twitterで3つの目標を掲げました。

・転職活動を開始する

・転職資金を貯める

・転職する

 

とエンジニアに転職するための目標を掲げました。将来的には、クックパッドのような人々がお互いの知恵やスキルをシェアできる、生活に密接したWebサービスの開発に携わりたいと考えているため、そのための学習をしつつ転職活動を行っていきたいと考えています。

 

また2018年は本当はあと一つくらい簡単な開発をしたかったのですが、一つ目のアプリで精いっぱいだったので、2019年は簡単でもいいので小さくたくさん作っていきたいと思っています。

 

あとがき

ずいぶんと長い文章になりましたが、最後までお読みいただきありがとうございました。何かお役に立てることがありましたら幸いです。 

 

そして、実はこの記事を書いた3か月後に挫折をしており(泣)、以下の記事も書いておりますので、よかったら読んでください!笑