更新情報

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

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

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

1.3ヶ月目「2014年10月」の学習サマリー

ちょうど一年前、私がRuby on Railsの学習を始めて3ヶ月目。学習した教材は、書籍とインターネット検索でした。

オンライン学習サービスはいくつかありましたが、この時期に参考になるものはありません。問題が発生した都度、書籍の該当の箇所を調べ、ネット検索をすることが中心でした。

発生した問題の大半、機能の実装をしたい際にどのように実装すべきか、エラー発生時にどうするかというものです。

私は当時、「ほめるタスク管理」をテーマにしたグループタスク管理システムを開発していました。そのため、以下の機能を実装していました。

・依頼したタスクについて、進捗を確認する機能
・ユーザ管理機能
・日毎の未読既読管理機能
・投稿にタグ付けする機能
・ホメた実績を共有しあえる機能
・ダッシュボードや統計グラフ機能
・統計情報を確認できるページを作成する機能
・依頼者と担当者の顔写真を双方タイムラインに表示させたい
・進捗確認すると、自動的にコメントが投稿されて、投稿されたコメントでやり取りができるようになる機能
・依頼があったらお知らせに通知されるようにする機能の実装
等です。

これらの機能は、要件は自分で定義し、実装に必要なコーディング知識は教材から学びました。

AmazonでRuby on Rails系の書籍で、比較的安価なものや役に立ちそうと感じたものを購入して、5つの教材をメインの参考書にしました。

①実践Ruby on Rails 4 現場のプロから学ぶ本格Webプログラミング
http://www.amazon.co.jp/dp/4844335928

②Rails3レシピブック 190の技
http://www.amazon.co.jp/dp/4797363827

③Ruby on Rails 3 アプリケーションプログラミング
http://www.amazon.co.jp/dp/4774146633

④Ajax on Rails
http://www.amazon.co.jp/dp/4873113326

⑤Railsレシピ
http://www.amazon.co.jp/dp/4873113121

ただし、特定の書籍を深く読むことは少なかったです。

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

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

2. 学習内容の詳細

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

2.1.    10月第1週

Ruby/Ruby on Rails
・create_withとは
・bundle update rails 時のエラー発生原因
・bin/bundle update rails時に発生したnokogiri に関するアラート
・開発環境用のseedデータの作成
等、細かいメソッドの使い方や意味を中心に理解を進めました。

PostgreSQL
・PSQLが実行できないエラーの解決法
・psglのある場所やバージョン確認方法
・PostgresSQLのパスワードを失念してしまった場合の対策
・sqlite3からPostgresSQLへの移行方法
・Rails用のPostgresユーザ作成方法
等、VagrantとVirtualBoxで仮想環境の構築をしたため、構築作業に起因するエラー対処や仕様の理解を進めました。

その他
・yum、cat、touch、sudo、pwd、rm -rf、sudo suコマンド
・ローカル開発環境(Vagrant, VirtualBox)の構築、仮想マシンの構築手順、vagrant up、vagrantユーザによるroleの作成
・centOS環境のvagrantユーザでPostgresへアクセスできるようにする方法
・node.jsの基礎
・コールバックの使い方
・homebrewの使い方
・カスタムドメインの設定方法
・rvm から rbenv への移行手順
等、VagrantとVirtualBoxで仮想環境の構築にまつわる学習を進めました。

2.2.    10月第2週

Ruby/Ruby on Rails
・redis-objectsとは
・RailsにてRedisを活用してお知らせ機能を実装する方法
・プッシュ通知とは
・メールを送信するためのやり方
・ActionController::RoutingErrorの発生原因
・リンク生成の方法
・複数カラムの値を一行で取得する方法
・テーブルの属性変更
・インストール済みアプリケーションのソースコード取得
・ソースのデバッグ ※サーバコンソールかブラウザで目視確認する
・method DELETEの仕組み Rails method DELETE destroy
・ローカル変数を使う意味と指定方法
・format.jsonとは
・部分テンプレートとパーシャルとは
・Ajax化する方法
・アクションからビュー表示までの処理について
・マイグレーションとは
・モーダルウィンドウを生成する方法とは?
・ActiveRecordとは
・routes.rbの書き方について
・ルーティングとは
・scaffoldの特徴
・Webアプリケーションフレームワークとその種類とは?
・Rails renderとは
・RHTMとは
・bundle install -j4とは
・データ更新時の処理の書き方
・データに対する処理をどこにかくべきか
・|f| をつける理由とは
・Rubyのお作法:マイグレーションファイルより
等、環境構築後に機能を複数実装していく過程でわからなかったことを学習していきました。

HTML/CSS/JavaScritなど
・HTMLの見た目の変更をしたい場合はデベロッパーツールを見る
等、Bootstrap3を活用したデザインをする際の小ワザを学習しました。

その他
・KVS、redisとは
・<%= yield %> とは
・heroku上のログチェックについて
・Heroku addon追加時に発生するエラーの原因と対策
・Herokuで絶対に使いたいアドオン
・git について
・vagrant up時のメッセージの意味、vagrant box、vagrantで複数の環境を個別に構築するやり方
・vagrantfileが読み込まれる処理の流れ、vagrantで新たにプロジェクトを作成するお作法
・チーム開発する際の手順
・インクリメンタルサーチ(incremental search)とは
・DSLとは
・HerokuのRubyバージョンの確認
・ssh keyとは
・O/Rマッピングとは
・RESTfulとは
等、機能実装を進める中でわからなかったことや小ワザを中心に学習しました。この時期に、「日本人の技術者は、6割弱しか挑戦したいことがない。」という文献を目にして、スタートアップに挑戦するエンジニアは稀有であるだろうという思いを強くしました。

2.3.    10月第3週

Ruby/Ruby on Rails
・ブラウザタブに表示される文字の変更方法
・テーブルのレコード内の要素間のスペースを調整したい
・日付表示をyyyy/mm/ddから変えたい
・直接SQLを実行して得たハッシュを取得する方法
・コントローラの作成方法とオプション
・ActiveRecord::Base.connection.select_all(“[SQL]”)で取得したデータをフォーム表示させる方法
・統計情報をSQL直接実行からのハッシュ値展開ではなく、モデルオブジェクトで取得する
・ハッシュからの値の取り出し方
等、機能実装に必要なことだけに絞って学習を進めました。

HTML/CSS/JavaScritなど
・src= とは
・CSSのセレクタとは
等、基礎的な内容で必須なものを学習しました。

その他
・branchから出る方法とは
・プルリクエストとは
・git checkout -b とは
・GithubとBitbucket の併用方法
・ローカルでトピックブランチを切る方法
・Bitbucketへの接続確認、クローンする手順
・ディレクトリ作成ができないエラー回避方法
・chmod 777とは
等、Gitを活用してリモートリポジトリ上でソースコード管理を行い、チーム開発をするイメージを掴みました。

2.4.    10月第4週

Ruby/Ruby on Rails
・ActiveRecord 同じテーブルへのリレーション
・Boolean型のデータをチェックでつける方法
・Template is missingエラーの原因と対策
・ソースコードレビューとは
・unlessとは
・valid?とは
・session[***]とは
・.clearとは
・レシーバとは
・delegate_allとは
・(1..).とは
・first_or_createとは
・filenameの指定の書き方とは
・before_actionエラーが発生した原因
・ログインログアウトはDevise実装で完了、サインアップは非表示にする
・deviseのログインリンクを画面上に常に表示させる
・ActiveRecord 同じテーブルへのリレーション
・テスト内にてフィクスチャを呼び出す方法とは
・メール本文のテンプレートファイルのパスとは
・newメソッドの使い方とは
・.update とは
・.attributes とは
・scope :named, lambda {|name| where :name => name}とは
・コントローラにインスタンス変数がセットされていることをテストする方法とは
・layoutファイルの配置規約について
・メディアタイプに合わせた出力フォーマットとは
・URLヘルパーについて
・resourceとresourcesの違いとは
・カラム削除のためのメソッドとは
・未保存の新規レコードをチェックする方法は?
・.tableizeとは
・.truncate(x)とは
・testを実行するためのコマンド
・Railsのコンポーネント名一覧は
等、機能の実装以外でRails3技術者ブロンズ試験対策をはじめました。細かいメソッドの使い方や式を実行した結果を確かめる習慣を身につけました。

その他
・herokuの環境変数の確認と設定
・herokuのサーバプロセス再起動方法とは
・PUTメソッドとは

以上が週ごとに(新たに)学習した内容のサマリーです。
10月に入ると、基礎中の基礎は理解できている状態になります。しかし、知識の絶対量が少ないため、機能実装をしている中で調べ物をする都度、わからないコトバが登場して検索して意味を理解する、といったプロセスの繰り返しがありました。

また、10月後半では、Rails3技術者認定ブロンズの試験対策をはじめました。資格試験は、取ることが目的化してしまいがちですが、メリットがあります。それは、自分自身の知識の「穴埋め」をすることができることです。

我流で学んだ脳内知識は、穴がところどころ空いていることが多いです。その穴を埋めるために、数ヶ月学んだ後に資格試験を受講されることを推奨します。

3.    まとめ

学びはじめて3ヶ月経つと、総学習時間は約600時間に登ります。ほとんどが我流の自習で学びました。教えてくれる環境は身近に存在せず、毎日孤独な中で学習を続けたことが記憶に残っています。

ただ、自力で学ぼうとする姿勢を見てくれていたエンジニアの友人が見つかり、時々一緒に作業をしながらアドバイスをくれることもありました。愚直に努力をし続ける姿を発信すれば、きっとどこかで見てくれている人がいます。

こ れから学習をしていき、エンジニアと会話をまともにできるようになりたいと考えている方、エンジニアとして働きたいと思っている方は、ぜひご自身で学習し ていることをfacebookやTwitterで発信し続けてみてください。きっと応援してくれる人や同じ課題を感じる人達に出会うことができ、一緒に学 ぶことができるでしょう。

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

お読みくださり、ありがとうございます。

それでは、また!