【4週目】未経験からTECH::EXPERTでプログラミングやってみた

f:id:b1840943:20180527115522p:plain

 

ついに入学から一ヶ月経ったかー!としみじみ感じています。好きなことやってると時間って過ぎるの早いですね。

ずっと座りっぱなしなのでジムに通い始めたんですが、スクールとジムだけでほとんど1日の予定埋まるので充足感ありますね。QOL急上昇中です。

 

基礎的なカリキュラムはもう終えてしまったので、ここからは応用編的なところを進めていきます。

 

React公式チュートリアル

カリキュラムではインフラからHTML&CSSRailsを学ぶんですが、モダンなフロントエンドは入っていません。ですがエンジニアになる上で避けて通れないとこだと思うので、自分でReactを勉強することにしました。

 

こちらの記事で公式のチュートリアルがいいと紹介されていたので、とりあえずそれをやってみることにしました。

 

student-engineer.net

 

作ったのはこんな感じの○×ゲームです。

 

f:id:b1840943:20180527120300g:plain

 

Reactは状態をフロント側で保持しておくことができるってことなのかな?サーバーサイドがなくてもそういったことはできるんですね。あとjQueryよりもメンテナンス性が高いんだろうなと感じました。

 

でも深く仕組みを理解できてないからか、使いどころがまだわかってません。ある程度フロントが複雑になったら初めてReactを導入すべきなのか、jQueryを使うのであればもう絶対最初っから組み込んだ方がいいのか…

 

Stack Overflowでよっぽど古い会社じゃない限りjQueryはもう使ってないみたいな意見も目にしたので、気になります。

 

ポートフォリオサイト

実際にReactを使って他にも何か作ってみたいなと思い、いろいろ考えました。自分が転職目的でスクールに入ったので、せっかくならそれに役立つものを作ろうと思い、ポートフォリオを作成することにしました。

 

portfolio-a8cd0.firebaseapp.com

 

Reactの練習目的だったんですが、使った時間は

  • React: 10%
  • Deploy: 20%
  • CSS: 70%

こんな感じになりました…^^;

でもキャリアアドバイザーさんにすごくいいと褒められたので、よしとします。

 

react-routerで振り分けてコンポーネントごとにコードを書いているので、見通しはすごくいいな、という印象です。確かにこれやってみるとサーバーサイドからJSONでデータ渡してあげるだけで結構スムーズにフロント側でいじくり倒せそうだなと思いました。

これ自体はある動画を参考にして制作したので、また違うデザインで作ってみたいなーと思ってます。

 

チーム開発

スクールの醍醐味の一つであるチーム開発がスタートしました。

4~5人構成のチームに分かれて、チームでアプリを一つ作り上げます。アプリはログイン機能、投稿機能があって、その投稿にコメントとタグ付けができるといったものです。

 

チーム開発はアジャイルという手法を実践しながら開発していきます。

企画、要件定義、設計、実装、テストといった流れを上流から下流に水が流れていくように開発していくモデルをウォーターフォール型と呼びます。

一方アジャイルは設計、実装、テストを小刻みに何回も繰り返しながら開発していく手法です。なのでバグがあってもバグ発生前までに戻る手数が少ないですし、仕様変更があったときなんかに対応しやすくなるといったメリットがあります。

実際に現場で取り入れられている開発手法をチームで実践しながらできるのはTECH::EXPERTの良いところだと思います。

 

チーム開発は全ての開発期間においてペアプログラミングでやっていきます。

これが一番大きな特徴かもしれません。1台のコンピュータを2~3人で使いまわして開発していきます。僕たちのチームでは30分ごとにキーボードを打つ人を交代するようにしてます。

キーボードを触らない人も見ているだけじゃなくて、「こうした方がいいんじゃないか」とか「なぜそこのコードはそうなってんの?」とかを話しながら進めていきます。

 

スクールに入った理由の中の一つがチーム開発だったのですが、その考えは大当たりでした。

まず他の人のコードを読みながら開発できるってのは他の人の頭の中を見れるような感じなので、「ああ、こういう風に考えながらコード書いてるのか」というのがわかります。

また自分の頭の中も丸裸なので、いかに自分が無思考で書いてるかがわかります。なぜここのコードはこうなのかをきちんと言語化できるようになりますし、それができなければわかるまで調べて説明しなきゃいけないのでめちゃくちゃ理解が深まります。感覚としては個人開発の6時間とペアプログラミングの1時間が同等ぐらいの密度があると思いました。

それだけじゃなく、チーム開発をどう進めていくかをチーム内で議論する機会があるので一人で開発している時には得られない経験がたくさんあります。

・commitはこれぐらいの粒度で区切った方がいいんじゃないか

・プルリクのレビューの作法を事前に決めよう

・ペア内で今何を考えて書いているのかを把握するためにコードを書く人は喋りながら書いてみよう

こういう個人開発だとなかなか意識しないところを考えるので、普段とは違う脳の領域が活性化してすごくいいです。

 

終わり

今週はこんな感じでした。

 

1ヶ月が過ぎて若干のベテラン感が出始めてきて、もはや渋谷のランチは行き尽くしました。多分。そのうち渋谷のおススメのランチでも紹介したいなと思います。

 

また来週頑張ります👨‍💻