更新情報

こんにちは。タイムシフトの野呂です。

私は、34歳で約2ヶ月間集中して自習してWebアプリケーションの開発を行い、Rails3技術者認定ブロンズを一発合格した経験があります。本業では、初心者向けのプログラミング・スクール「Dive into Code」の運営と講師を務めています。

前回に引き続き、経験ゼロからWebエンジニアになるまでの2ヶ月目の過程についてお伝えしていきます。初学者の方にとって、何から手をつけるべきかを検討する一つの材料にしていただけましたら幸いです。

1.    2ヶ月目「2014年9月」の学習サマリー

ちょうど一年前、私がRuby on Railsの学習を始めて2ヶ月目。学習した教材は主に2つでした。

①Ruby on Rails チュートリアル(第1章〜第11章まで)
http://railstutorial.jp/

はじめて取り組んだ時は、ほぼ写経でした。
意味がよくわからないままにコマンドをコンソールに打ち込み、コードをファイルに書き込みました。いつか、理解が深まると思い取り組んでいたことを思い出します。

中でも
・第8章サインイン、サインアウト
・第11章ユーザーをフォローする
を参考にできたことが特に役に立ちました。

「ユーザーをフォローする」実装の仕方、アソシエーションの組み方は、他のインターネット上のサイトや文献にもあまり載っていませんでした。
これを独力で発想するには、非常に多くの時間がかかったであろうと思います。

Ruby on Rails チュートリアルからは、ユーザ同士がつながり、交流するWebアプリエーションを開発する上では欠かせないエッセンスをいただきました。

ただ、仮想環境の構築やテストの解説は、理解が進まず非常にストレスが溜まりました。まずプロトタイプをカタチにしたいという思いで学んでいる人にとっては、テストはすべて飛ばして良いと思います。

②HerokuではじめるRailsプログラミング入門
http://www.amazon.co.jp/dp/4797371838

私の当時のゴールが、「インターネットにWebアプリケーションを公開すること」であったため、そのゴールをHerokuにアップすることで達成できるであろう本書のタイトルに惹かれ、学びました。

中でも特に「Ajaxを使った更新リンクを貼ろう」の箇所と「ミニSNSアプリを作ろう!」という応用編の演習が役に立ちました。これを写経で何度も作りながら内部のつながりの理解を深めていきました。

ただ、本書で使用しているRuby on RailsのバージョンがRails3だったため、構築した開発環境のRails4とのコードの書き方の違いに悩まされ、何度もつまづきました。
Rubyのバージョン差は、対してコードの書き方に影響しないものの、Railsのバージョン差はかなり影響を受けることを実感しました。バージョンの確認をおろそかにすると不用意につまづく原因になると痛感しました。

以上、2つの教材をメインの参考書にしました。

これら以外にも随時インターネットを駆使して検索をして、知らない知識、忘れてしまったことをすべてメモにとり、残しながら学習を進めていきました。

以上が、私が学習したことのサマリーです。

2.    学習内容の詳細

サマリー内の詳細な内容は、週別にまとめると以下の内容でした。主な内容を順不同で書き出しています。

2.1.    9月第1週

Ruby/Ruby on Rails
・RailsTutorial第1章〜11章まで写経
・FB友達リストの取得とDB反映方法
・友達管理機能の実装
・メールアドレスチェックの実装方法
・コールバックの実装方法
・ユーザ認証機能の実装方法とログイン状態の活用方法
・パスワード暗号化の方法
・rails console –sandboxの使い方
・スコープの概念
・エラーメッセージが格納されるオブジェクト
・Strong Parametersの役割と生まれた背景
・Gemファイルの使い方
・エラー原因と対処法
・Rubyの構文や感嘆符などの意味合い、使い方

HTML/CSS/JavaScriptなど
・タグづけ方法全般
・CSSの書き方全般
・bootstrap-sassの活用方法
・ロゴ画像を利用する時の格納先について
・ドロップダウンメニューを実現する方法
・Ajaxを自動的に使用するようにする方法

その他
・Gravatarとは何か
・Webブラウザ上でAjaxのデバッグ情報を表示させる方法

2.2.    9月第2週

Ruby/Ruby on Rails
・ルーティングの書き方全般と応用方法
・respond_to do |format| 〜を記述する意味
・render 〜を記載する意味
・リダイレクト先の指定方法
・form_forなどヘルパーメソッド全般
・レイアウトやパーシャルについて
・アソシエーションを元にしたオブジェクト生成方法
・モデルを介したデータベース操作全般
・モデルへのバリデーションの設定方法
・マイグレーションファイルの使い方
・View側のdebug方法
・paginateする方法
・エラーメッセージ等を画面表示させる方法
・エラーメッセージ等を日本語化するための方法
・Comment投稿を実装する方法

HTML/CSS/JavaScritなど
・HAMLとは?
・オリジナルボタンの実装方法
・いいねボタン機能の実装方法
・Ajaxで画面を再読み込みせずに描画更新する方法

PostgreSQL
・データベースへレコードの登録を行う処理の基礎情報

その他
・Webサービスのレスポンスタイムを調査確認する方法
・JSONとは?
・「ポップアップを表示しない」でも確認削除させる方法
・フラッシュで画面上に「登録成功!」等を表示させる方法
・日付入力フィールドの加工方法
・締切日表示用の入力欄カレンダーを創る方法
・Table表示させる際のルール
2.3.    9月第3週

Ruby/Ruby on Rails
・生SQLを実行する方法と取得できる値の内容について
・テーブルの属性変更やカラムタイプの変更方法
・アソシエーションの設定方法
・facebook認証の実装方法
・フォーム間のパラメータの受け渡し方法
・ワークフロー機能の実装

HTML/CSS/JavaScritなど
・Bootstrap3の活用方法
・Ajaxを活用したボタンやコメントの動的投稿方法

PostgreSQL
・データ型とDSLなど

その他
・ワークフローの実装方法

2.4.    9月第4週

Ruby/Ruby on Rails
・友達つながり機能の実装と関連した制御方法
・faviconの設定方法
・facebookのプロフィール画像を取得し表示する方法

HTML/CSS/JavaScritなど
・画面の段組み方法

以上が週ごとに(新たに)学習した内容のサマリーです。最初の週の方が浅く広く学んでいます。学につれて徐々に深く理解をしていくように変化していきます。

そのため、最初が一番学習することが辛いです。大概のことが「知らない」ことのため、知らなさすぎて何が発生しているのかがわからないため、解決策までたどり着きにくくストレスが溜まるためです。

そんな時は、単語の意味、メソッドの意味など焦らず一つずつ理解すると良いでしょう。まずは、何がわからないのかを認識すること。わからないことを一つずつ意味を調べるなどして積み重ねていくことが大事です。

3.    まとめ

学習初期は、Ruby on Rails チュートリアルや書籍など既存の文献にはとても助けられました。先人のナレッジを得て学習する効果を体感することができました。

開発したいWebサービスに必要なログイン機能や友達つながり機能の実装をする際に、学んだ内容を応用して簡単に実装することができました。

これらの教材とインターネットを駆使して並行学習しながら学んだことがあります。それは、必要な知識はすぐに引き出せれば良いということです。

自 分の頭の中にすべてを記憶する必要はありません。頭の中に入っていなくても、インターネット検索やメモ帳を見返して、思い出せればそれで良いです。特にイ ンターネット上に載っている断片的な情報は、”その情報をいかにして使うか”の理屈や応用方法の考え方をつかめば、頭の中に記憶しなくても使えるようにな ります。

時間をかけてじっくり取り組みたい方は、頭の中に完全に入るまで取り組んでもよいかもしれません。しかし、経験ゼロでも自力で学ぼうとしている初学者が、短期間で学習したいのには理由があることが多いです。

・新しいWebサービスを創りたい
・Webサービスを開発して起業や新規事業の立ち上げの足がかりにしたい
・休職期間中に自分のポートフォリオとなるものを開発したい

思いは様々ですが、短期間で脳内に記憶としてすべて保存するには量が多すぎます。効率よく学ぶためには、時に”暗記することを放棄する”ことも必要です。脳内ではなく、一度調べたことをどこかに記録しておき、読み返せれば良いです。

なんでもかんでも自分の頭で覚えようとせず、メモや書籍のページ数をすぐに引き出せるようにして効率よく学習しましょう。

私のこのコラムでは、私自身がアラサー経験ゼロの非エンジニアからWebエンジニアになるまで挫折せずに到達できた過程とそれぞれの過程で何が重要だったかをコラムとしてお伝えしていきます。

それでは、また!