新卒で自社開発企業にエンジニア就職

【3週目】テックキャンプ (エンジニア転職)の記録 【楽しい】

ノロ

どうも、テックキャンプ (エンジニア転職)卒業生のノロ(@noronoro_yurupoです。
記事の内容
・【3週目】テックキャンプ (エンジニア転職)の記録 【楽しい】
今回は3週目の振り返りをしてみたいと思います。
前提
・❶:コースは「エンジニア転職」。
・❷:フリーランスコースとエンジニア転職コースのカリキュラム内容は同じ。チーム開発のメンバーになることもある。
これからテックキャンプ (エンジニア転職)にいくか迷っている人はもちろん、テックキャンプ (エンジニア転職)に参加している人にも参考になると思います。

※ちなみに1週目の記事は以下になります。気になっている方はぜひ。
【1周目】テックキャンプ(エンジニア転職)記録 【スパルタ】
では実際に見ていきましょう。




テックキャンプ (エンジニア転職)3週目のスケジュールを公開

まずは3週目のスケジュールをざっくりと公開します。

15日目 Chat-Spaceインクリメンタルサーチの実装
16日目 Chat-Space自動更新機能の実装
17日目 AWSアカウントの作成&その他周辺知識習得
18日目 デプロイ&S3
19日目 EC2によるアクセス分散&ChatSpace終了
20日目 個人アプリ開発(DB設計)
21日目 個人アプリ開発(基本機能実装完了)

ざっくりとこんな感じです。

多くの人が苦戦するインクリメンタルサーチや自動更新を、それぞれ半日程度で終わらすことができたのは大きかったです。

しかし、メンターさんの力がなければここまで完璧に実装することは難しかったと思うので、反省は必要ですね。

やはり応用カリキュラムは難しかったなあと思い知らされました。基礎とはレベルが違いましたよ。
※基礎カリキュラムの内容について知りたい方は以下の記事をどうぞ。
テックキャンプ(エンジニア転職)の「基礎カリキュラム」の内容を紹介

・15日目:Chat-Spaceインクリメンタルサーチの実装

非同期通信を終えてひと段落したかったのですが、そんな間もありませんでした。

というのもインクリメンタルサーチという機能を実装するからですね。先輩方も苦労していたところなので内心ヒヤヒヤでした。

そして、インクリメンタルサーチとは具体的になにか?言葉だとわけわからないと思うので、下をご覧ください。


これは超有名なフリマサイトメルカリのブランド検索です。

これだと普通なのですが、メルカリのブランド検索には以下のような機能が実装されてるんですよね。


ある文字を打ったら、その文字に該当する商品を予測して出す感じですね。

この「インクリメンタルサーチ機能」をChatSpaceでも実装するわけです。

これがなかなか難しくて萎えました。Ajaxを用いるので一筋縄ではいきません。

Ajaxに関しては以下の動画がかなりわかりやすいので、気になる方は見てみてください。Ajaxはかなり大事です。

この動画は概念的なことではなく、かなり大雑把に説明している分理解しやすいです。僕は電車の中で3回見ました。

インクリメンタルは個人的に非同期通信の2倍程度難しいと思っていて、同期もかなり苦しんでいましたね。

この機能を実装するのに2日かかっていた同期もいたので、難しさは伝わるのかなあと。

ノロ

本当に難しかったです。
中には3時間とかいう超高速スピードで実装している人もいましたが、あれはかなり稀なケースだと思いますよ。

半日から1日かける人が大半で、僕も4〜5時間かかりました。ただ、終わった後の爽快感はたまりません。

MEMO
15日目はインクリメンタルサーチ機能を実装。

・16日目:Chat-Space自動更新機能の実装

インクリメンタルサーチが終わってひと段落したかったのですが、まあ無理でしたね。

理由は簡単で、インクリメンタルの後は「自動更新機能」が待ち構えていたからです。

自動更新機能を簡単に説明すると次のような感じ。

誰かが新しくデータを保存したら、更新ボタンを押さずとも、そのデータを見ることができる機能
身近なアプリだと「LINE」ですね。

LINEは誰かから連絡がくると、いちいちリロードしなくても自分の画面に連絡内容が表示されますよね。「既読」という文字もつきますよね。これが自動更新機能です。

これは中々難しくて僕は実装するのに4時間かかりました。

ノロ

やっぱりAjaxが絡んでくるので時間がかかりました。
とはいえど、この機能はいろんな場面で実装しないといけなくなってくるので、この段階で経験できてよかったです。

最初は慣れないので難しいですが、何回か実装していけばそこまで難しいことではないですね。やはり慣れは大事だと実感しました。

自動更新機能についてもう少し知りたい方は以下のQlita記事がわかりやすいです。今カリキュラムを実際に進めている方はどうぞ。
Railsでajaxを用いた簡単な自動更新機能を実装する

MEMO
16日目は自動更新機能を実装。

・17日目:AWSアカウントの作成&その他周辺知識習得

自動更新機能が終われば、ChatSpaceにおいてつける機能は全て終了です。

しかしまだこれで終わりではありません。デプロイもやらないとダメですし、画像保存先をS3にする等の作業が残っています。

ですが、この日はそこまでやりませんでした。やったことは以下。

・AWSアカウントを作成
・ChatSpaceの復習
・Progate
こんな感じです。

僕は期の中でもかなり進捗が早かったので、この日はカリキュラム内容以外のことを結構やりました。

Bootstrapをいじってみたり、APIについて深いところまで調べてみる等、技術的なことをかなり学びました。

ノロ

テックキャンプ(エンジニア転職)はかなり自由なので、カリキュラム以外のことをやっても全然OKなんですよね。
理解が浅いまま先に進んでもあれだと思ったので、ChatSpaceの復習もしましたね。

結果的に最終課題のときにも役立ったのでこの選択はよかったなあと。やっぱりアウトプットの反復は大事です。

MEMO
17日目はAWSアカウントを作成し、その他技術を学びました。

・18日目:デプロイ&S3

18日目はデプロイとS3をやりました。

この2つを簡単に説明すると次のような感じ。

・❶:デプロイ:システムを利用可能な状態にすること
→要は自分以外にもアプリ内容を見せれる状態にすること。ローカル環境からの脱却。世界への公開。
・❷:S3:容量が無制限なFTPサーバー
→要は画像の保存先を変えることで、サービスの負担を抑える。
ざっくりですがこんな感じです。この2つは中々難しかったんですよ。

というのもターミナルでの作業が多いからです。ターミナルは操作性が悪いので結構ストレス溜まりました。

そして、半角スペース1つあるだけでエラーが起こるので、慎重に作業しないといつまで経っても終わりません。
同期の中にはデプロイで1日潰している人もいたので「比較的高確率で苦戦する」という認識でいいと思います。

ただ、自分のアプリを公表するのにデプロイは絶対必要ですし、それをAWSでやるというのは価値高いことだと思います。

AWSができるのはかなりの強みですからね。ここで経験できてよかったです。

テックキャンプ (エンジニア転職)で学ぶAWSについてはこちらの記事で詳しくまとめたので、気になる方はどうぞ参考にしてください。
テックエキスパートで学べる「AWS」はどんな感じ?【卒業生です】

MEMO
18日目はデプロイとS3をやりました。

・19日目:EC2によるアクセス分散&ChatSpace終了

この日はEC2によるアクセス分散をし、ChatSpaceを終了しました。

EC2によるアクセス分散を簡単に説明すると以下です。

インターネット等の外部ネットワークからのリクエストを、複数のサーバに割り振る装置のこと。
これはロードバランサーというものなんですが、今回はわかりやすいように一色たんにしています。

要するに、1つしかサーバーがないとサーバーに負担がかかりすぎますよね。だから複数サーバーを作って負担を減らそうということです。

これも中々難しかったです。コードを書いたりはしないんですが、AWSコンソール内をいじるので結構苦戦します。

ノロ

僕は個人的にここが1番しんどく感じました。時間も1番かかったのかなと。
とはいえど、しっかりアクセス分散も行い、ChatSpaceの最終チェックも通過し無事終了しました。

結果的にカリキュラムを期の中で1番早く終わらすことができたので、1時間程度休憩して優越感に浸ってました。。笑

しかし、まだまだ技術力が未熟すぎるので、色々コードを書いて試行錯誤する時間は必要ですね。
MEMO
19日目はEC2によるアクセス分散をし、ChatSpaceを終了。

・20日目:個人アプリ開発(DB設計)

この日からは個人アプリ開発に入りました。

テックキャンプ (エンジニア転職)では、ChatSpace終了期限の1週間後に個人アプリ発表会というものがあります。

さらに

個人アプリは転職する際の自分の武器にもなるので、質の高いものを作る必要があるんですよね。
僕は大学生なので転職の武器にはなりませんが、自分の技術力の証明にはなりますしね。
追記(2020/04/07):就活のときにポートフォリオは高く評価されました。ポートフォリオは大事です。

いずれにせよ「質の高いポートフォリオ」は絶対に必要なので、個人アプリで妥協は許されないですね。

なので、僕はまず「DB設計」から始めました。以下のような感じで。

ぶっちゃけると、開発途中で何回もテーブルやカラムを追加したので、自分のDB設計のガバガバさには萎えました。笑

しかし、1からDB設計するという貴重な経験ができ、DBに対する理解もかなり深まりましたね。

ノロ

特にテーブル間の関係性である「アソシエーション」についての知識理解が深まりましたね。
この日はこのDB設計とトップページを少し作成するだけで終わりました。
MEMO
20日目は個人アプリのDB設計と、トップページを少し作成して終了。

・21日目:個人アプリ開発(基本機能実装完了)

3週目の最終日は個人アプリの基本機能を実装しました。

基本機能はなにかというと、次のようなもの。

スクリーンショット 2019-09-03 15.25.54.png
これですね。

そして、僕がこれらをどういう風につけたかというと

・❶:記事一覧表機能
→投稿した記事をeach文で表示
・❷:記事詳細機能
→showアクションを追加し、paramsでidをデータベースから引っ張る
・❸:記事投稿機能
→newアクションとcreateアクションを使い、form_forで作成
・❹:記事削除機能
→destroyアクションを使用。かつ他のユーザーは自分の投稿を消せないようにif文を追加
・❺:ユーザーログイン&ログアウト機能
→gemのdeviseを使用(gemを使わなかったら結構きついです)。
・❻:画像アップロード機能
→cariawaveを使用
・❼:ページネーション機能
→gemのkaminariを使用
・❽:単体テスト機能
→gemのrspecを使用
こんな感じです。

なんか難しそうですが、カリキュラムの概要をおおよそ理解できていれば、1日もあれば実装できると思います。

ただ、N+1問題等を見落としている等していたので、まだまだ技術力は甘いなあと実感しました。

ノロ

もっと色んなアプリを作って技術力を上げていきたいです。
この日は基本的な機能をつけて力尽きました。応用的な機能は日を追ってつけていきたいです。
MEMO
21日目は基本的な機能を実装して終わりです。

・テックエキスパート3週目の感想は「楽しい」。

最初はわからないことばかりでストレスも溜まっていましたが、今は基本的なことを理解できてきたので楽しいです。

・この機能はどうすればつけれるのか?
・ここをもっとこうすればよくなるかな?
・どうすればもっと綺麗にコードを書けるのか?
こんな風なことを考える余裕も出て来ました。

初めは初学者潰しの鬼カリキュラムに萎えてましたが、あのスパルタさにはほんとうに感謝しています。技術力は明らかにつきました。引き続きプログラミングに勤しみます。

4周目の記事はこちら(10周あります)

【4週目】テックキャンプ (エンジニア転職)の記録 【ワクワク】

追記:テックキャンプ (エンジニア転職)の口コミを羅列し、卒業生の僕が意見した記事です

テックエキスパートの口コミを羅列してみた【卒業生の記事です】

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA