TECH::EXPERTでWebエンジニアを目指す

Webエンジニアを目指す僕の日記です

TECH::EXPERT4週目を振り返る

f:id:yuuma_pg:20190510225847p:plain

こんにちは、ユウマです。

この記事を書いている時点で4週間が経ったので、TECH::EXPERTに通い始めてから約1ヶ月が経過したことになります。

それでは、今週の学習を振り返ってみましょう。

 

今週の学習時間

今週の学習時間は以下の通りです。(合計62.5時間)

  • 5/4(土)9時間
  • 5/5(日)9.5時間
  • 5/6(月)11時間
  • 5/7(火)11時間
  • 5/8(水)11時間
  • 5/9(木)2時間 ← 休みの日、でもちょっと勉強
  • 5/10(金)9時間

今週も1日休みにしましたが、気になることがあって本を読んで勉強したので2時間分加算しています。

今週の学習内容

  • チャットアプリの機能追加
  • チャットアプリのデプロイ
  • チャットアプリの開発完了
  • ミニアプリ発表

チャットアプリの機能追加

今週の前半は制作中のチャットアプリに追加で以下の機能を追加しました。

・非同期通信機能

インクリメンタルサーチ機能

・自動更新機能

・自動スクロール機能

現時点でのチャットアプリはページを再読み込みしないと新しい情報をページに反映させることができないので、再読み込みせずとも自動的に新しい情報を取得してページに反映するようにしました。

このような、ページ遷移 or 再読み込み(データ送信)のタイミングとページの変化(データ受信)のタイミングを合わせない通信の方法を非同期通信と呼びます。

また、インクリメンタルサーチ機能は検索欄にキーワードを入力すると、キーワードに一致する候補がリアルタイムに表示される機能です。(これも非同期通信の機能を利用します)

そして、Twitterのように再読み込みしなくても自動的にツイートを取得して常に最新の情報を表示するのが、自動更新機能です。

これらの機能はjQueryajaxという手法を利用することで実現できますが、これがまた難しく理解するのに時間がかかりました。応用カリキュラムの最初でajaxについては学習をするのですが、理解半ばにスルーしてしまったのでツケが回ってきたということですね。仕方がないので、復習をしてから実装という流れで進めました。

それと、自動スクロールは新しいメッセージが送信された際にそのメッセージのある場所まで自動的にスクロールする機能です。

単純なように見えて意外と複雑な事してるんですよ、これ。ajaxの理解にも時間をかけましたが、同じ時間自動スクロール機能の実装に時間をかけました・・・。

ちなみにアプリの様子は以下の通り。

https://gyazo.com/4dd13e720e1ec7c38d9f86b21b7fc99d

チャットアプリのデプロイ

アプリを作ったからには世の中に出さないと意味がありません。なので、実際のサーバーに作ったアプリをアップロードして他の人が使えるように公開します。これをデプロイと言います。今週の後半はデプロイに時間を費やしました。

今までは自分のパソコンに必要な環境を準備してアプリを実行していましたが、デプロイするには外部のサーバーを用意して、そこにアプリの実行環境を構築して自分の作ったコードをアップロードする必要があります。

これがまた大変でたくさんのエラーに悩まされました。

自分のパソコンの中であればエラーが出てもすぐに原因を特定できるのですが、外部のサーバーではエラーが起きても何が起きているのかわかりにくいのでエラーの対処にかける時間と労力が桁違いです。

そして数時間かけてエラーを特定すると、文字が抜けていたり、文字を間違えていたり、とかそんなレベルの原因だったりします。過去の自分を叱ってやりたくなります。

デプロイするときは慎重に作業しましょう。本当にまじで・・・。

チャットアプリの開発完了

応用カリキュラムのメインはこのチャットアプリの開発ですが、デプロイを持ってめでたく開発の完了です。やった〜!!!

チャットアプリの開発完了は受講開始から5週間となっていますが、4週間で完了したので1週間分巻いた結果になります。

この後のカリキュラムは、個人アプリの制作とグループで行う最終課題の制作です。少し時間に余裕ができたので、早めに個人アプリの構想を練りつつ、気になる技術があるので色々アプリを作って試していきたいと思います。

ミニアプリの発表

ミニアプリの発表については長くなるので以下の記事にまとめました。

yuuma-pg.hatenablog.com

チャットアプリの開発を終えて思うこと

Railsは便利すぎる

アプリを作っていると、

「ここはわざわざ指定しなくてもRailsが勝手にやってくれるのかぁ」

という場面に出くわします。

他のフレームワークでは指定してやらないとうまく動いてくれない部分もRailsでは忖度して思うように動いてくれる箇所があるようです。(他の言語やフレームワークを深く勉強したことがないので、単なる受け売りですが・・・)

これはTECH::EXPERTのエンジニアの方もおっしゃっていましたが、Railsは便利すぎるのでプログラミングに詳しくなくても簡単にアプリが作れてしまいます。ゆえに、Railsの勉強だけではスキルが伸びにくく、他の言語やフレームワークについても勉強する必要があるようです。

まだまだ知らないことがいっぱいある

わからないことがあった時に+αで気になったことや関連技術をあとで調べられるようにキーワードをメモしているのですが、メモが盛りだくさんです。

一通りアプリを開発しましたが、もっと便利な技術や面白い機能がRubyRailsにはあり、そのほとんどをまだ知らない状況にあると思います。

時間に余裕もあるので、今までのメモを見返しつつ自分の知らない技術について勉強を重ねていきたいと思います。

プログラミング楽しい

1日平均で9時間ほど勉強を続けていますが、苦に感じません。時間を忘れて勉強しているので気づいたら夜になっていて、

「もうこんな時間か!」

と毎日あっという間に時間が過ぎていきます。

コードの理解に苦しんだり、エラーに悩まされたり、苦労したアプリ開発でしたが、なんだかんだ言って楽しんで開発ができました。

まとめ

という感じで4週目の振り返りでした。これからは指定されたカリキュラムを読み進めるというよりは、ポートフォリオや個人アプリ作成のために自分の気になることを調べて勉強していくスタイルになると思います。

どんな個人アプリにするかはまだ決めていないので、構想を練りつつ勉強を続けていきたいと思います。それでは!