【2週目】未経験からTECH::EXPERTでプログラミングやってみた
Ruby on Rails
Twitterのようなアプリケーションを教材の指示に従いながら作りました。同じ要領で映画レビューサイトも作りました。
Railsチュートリアルを入学前に一周しててMVCの基本概念が頭に入っていたので、ここはわりとスムーズにいきました。でも周りを見ていると本当に未経験の場合ここが一番つまづくポイントみたいです。ModelとViewとControllerがどう連動しているのかを把握するのが難しいみたいですね…逆に言えば入学前にここを押さえとけばスタートダッシュできるかも。
僕はスクレイピングでちょっとつまづきました。
1ページの情報のみを取得するのは簡単なんですが、同じドメインの複数のページをスクレイピングするのが少し複雑でした。ブログとかで過去全部の記事の写真をスクレイピングしたいときなんかがこれと同じ状況ですね。
次へのボタンから次ページへ辿る動きをwhile分で基本trueで動くようにしておいて、次のページのリンクがなかったら(次へボタンがなかったら)breakさせるというロジックはすんなり理解したんですが、実際コードを書くとちょっと複雑な気がしました。
多分4年前ぐらいに自力でnokogiriというgem使ってスクレイピングしようと思って挫折したのがちょっと苦手意識つけちゃってるんだろうなと思います。
中間テスト
この時点で中間テストを受けました!
Rubyでコンソール上で動く簡単なアプリを作ったり、設計書通りにHTMLとCSSを組んだり、Railsのエラーを解きまくるという試験でした。
これは特に問題なくパスしたので、カリキュラムをもう一周しました。基本的に同じことをもう一回やるのは好きじゃないのですが、最終基礎試験に合格するために仕方なくCodecademyでReact.jsを息抜きにやりながらなんとか乗り越えました。
そしてそのまま最終基礎試験を受けました。この試験に合格すると次のステップへ進めます。合格しないとずっと同じカリキュラムを何回もやらなきゃいけないという恐ろしいことになります。
JavaScript
無事に試験に合格したのでJavaScriptとjQueryに入りました。JavaScriptの基礎から一気に非同期通信まで学びます。このセクションの最後にはあるサイトのお天気情報APIを取得し、フォームに入力があった街の天気を非同期で返すといったアプリを作ります。
JavaScriptに関してはN予備校でNode.jsを使ったタスクアプリ作成をやったことがあったので、すんなりいけました。ただjQueryはなんか書き方がごちゃごちゃして見づらいですね。なんとなくReactと比べて規模が大きくなった時の管理が難しそう…という印象を受けました。
非同期通信もN予備校で(たしか)やったので、特に理解に苦しむことはありませんでした。
なんかこれだけ見ると楽勝に見える…そんなことないのに。
学習環境について
ちなみに、TECH::EXPERTの学習環境はめっちゃいいです。
教室は新しくて綺麗でおしゃれですし、いつも静かで涼しくて、Wi-Fi爆速です(250Mbpsオーバー)。コーヒーメーカーもあるので1杯100円でそこそこのコーヒーが飲めます。椅子も疲れにくいし、文句なしです。
これだけで教室に来るモチベーションになりますね。
プロとしてのプログラミング
エンジニアになるということはよっぽどのことがない限りチームで仕事をすることになります。なのでいいエンジニアとは他人にとっても見やすいコードを書けるエンジニアでもあると思います。
そのためにはできるだけコードを短く、かつ動作は早く、綺麗に書くことが大切です。RubyにはRubyの書き方の規則がありますし、RailsにはRailsの規則があります。変数の命名、改行等少し工夫すればかなり可読性が上がります。
また会社ごとにも少しずつ規則は変わってくるはずなので、他人のコードを読んでどんな規則に則ってコードを書いているのか読み取る力も大事ですね。
TECH::CAMPでは単独作業の段階からメンターさんがどうやったらもっと綺麗なコードを書けるかレビューしてくれます。そのおかげで早い段階から他人の目を意識したコードを書けるようになります。
Git
エンジニアになるためにはコードが書ければいいわけではなく、その周辺ツールも使いこなせる必要があります。Gitは間違いなくエンジニアに必須のツールです。
むちゃくちゃ簡単にいうと、どこまで作業したのか履歴を残すことができます。チームでGitを使えばAさんは検索機能、Bさんは買い物かご機能をバラバラに実装して後でがっちゃんこしてもごちゃごちゃならないようにできます。
本当に良かったなと思うのは、N予備校でNode.jsを勉強した時もRailsチュートリアルやった時もGit使ってたんですよね。誰とも共同作業はやってませんでしたが、リモートリポジトリも作って時々プッシュしてました。なのでGitの基本的な使い方は困ることがなかったので助かりました。
SQL
もちろんしっかりSQLも学びました。データをうまく使いこなして初めてサーバーサイド言語が真価を発揮します。
SELECTやWHEREを使って望んだデータを引っ張ってくることができるようになるまで一通り勉強しました。JOINまではやってません。
正直Rails使ってるとSQLの存在を忘れちゃう感じはありますね。むちゃくちゃ簡単にデータ持ってこれるので、SQLが一番脳に定着しなさそうです。
チャットアプリ実装開始
ここからが本番です。試験を突破した後の目標はこのアプリを完成させることです。
今まで学んで来たことの応用なので、教材のサポートは最小限です!自分の力で実装していかなきゃいけません。わからなければ検索です。それでもダメだったらメンターさんが助けてくれますが…できるだけ自力で解決していきます。
フロント実装
まずはアプリの原型となるフロントの大枠を与えられた設計書通りに実装していきます。
今回はSassを使って書いていきます。CSSを便利にしたやつですね。変数使えるのでDRYな記述ができます。
できるだけBEMに則って書いていきます。BEMはフロントエンドの要素をBlock、Element、Modifierという三つの要素に分けて整理します。特にクラス名の規則が厳格です。クラス名が冗長になりがちな印象を受けましたが、コードの再利用性は高いと思います。
ふむふむ…と思いながら実装開始しましたが、なんでこいつがここに行かねえんだよ!とかおい!あいつちょっと見ないうちにどこ行きやがった!!みたいなことが頻発しました。正直全体を通してここが一番時間かけたとこだと思います。
やんちゃなdiv要素たちをなんとか手懐けてフロントエンドの大枠は固まりました。
2週目終わり
そんなこんなで2周目が終わりました。やることが多かったので苦労しましたが、だんだん慣れてきて実装にスピードが出るようになってきました!
この調子で3週目もスパッとこなしたいと思います。