noteタイトル_20190422

フリーランスエンジニアを目指してプログラミングスクール「TECH:EXPERT」に通ってみた(最終課題編)(1日目〜8日目)

こんにちは、かとたくです。

今回から約1ヶ月弱かけて最終課題を進めていきます。

では、何を作るのかということですが、ズバリ・・・・・

「メルカリ」を作ります!!

メルカリURL→https://www.mercari.com/jp/

おそらく知らないとはほとんどいないと思いますが、肝心のぼくはほとんど使ったことがないので、まずどんなレイアウトなのかそこから知る必要がありますが、歴代の卒業生のクオリティを見ると1ヶ月とは思えないくらいの高水準なので、そこまでできるかものすごい不安です。
しかも、今回はぼくともう1人のたった2人で開発作業を進めなければいけないのでめちゃくちゃ大変です。セキュリティ面がクリアできれば公開しますが、あまり多機能を実装できないので期待はしないでください・・・(笑)

まず、4/22にやったことは以下の通り。
・VSCodeの環境構築
・タスク管理ツール「Trello」の設定
・チーム開発における役割分担

今まで「SublimeText」というエディタでやっていましたが、より現場で働くことを想定して変更しました。Qiitaとかでオススメのプラグインをぶち込んで自分オリジナルの使い勝手の良いものにカスタムしました。
そして今まで聞き馴染みのなかったものなのですが、「Trello」というタスク管理ツールの設定も行いました。

TrelloのURL→https://trello.com/home

IT業界限らず、仕事において使えそうなツールだなあというものなので、ぜひ導入してみましょう!

そしてチーム開発(といっても2人だけですが)役割分担も決めました。
ぼくはいわゆる会議とかを進行する「スクラムマスター」というボジションで、基本的に縁の下の力持ち的な役割です。また、ソースコードをデプロイする役割も兼任する形となります。

というのも理由があって、ここに通い始めてWeb系のエンジニアになりたいと言いましたが、サーバーサイド(単にAWSを使いたいだけですが)もありかなと考えるようになったので、あえてなりました。
となると必然的に相方の人が開発を進めることになるので、かなり負担がいってしまうのでそれをカバーできるようには頑張ります。

あと、全くの余談ですが、今回相方となるメンバーは高校時代の先輩です(笑)
途中で知ったのですが、2つ上なので在籍期間も1年被っていました。知らなかった・・・。

4/23にやったことは以下の通り。
・Githubの設定
・SlackとGithubの連携
・アプリの雛形の作成

SlackとGithubの連携はそこまで重要ではないですが、個人的にメッセージを見逃す可能性があったので、やっておきました。
あとはひたすら設定するだけなのですが、たまにミスることもあるのでそこは注意したいところですね。

4/24にやったことは以下の通り。
・AWSのEC2インスタンス作成
・AWSでのRubyの設定
・AWSでのMySQLの設定
・Unicornの設定

基本的にデプロイがメインの役割なので、淡々とAWSの設定をやっていました。が、git pull origin masterコマンドを入力した時に「error: Your local changes to the following files would be overwritten by merge:
Gemfile.lock
Please commit your changes or stash them before you merge.」というエラーが出てかなり面倒なことになりました。簡単にいうと「Gemfile.lock」というファイルが競合をおこしているので、それを直してからマージしてくださいねというもの。ファイルを一時的に退避させることも考えましたが、今後自動デプロイする際にGemは随時追加するので退避するのも如何なものかなと・・・。

4/25にやったことは以下の通り。
・AWSのNginxの導入
・自動デプロイツール「Capistrano」の導入
・本番環境への自動デプロイ化

本番環境へのデプロイまで、後一歩だったのですが、以下のエラーがかなり大変でした・・・。

SHKit::Runner::ExecuteError: Exception while executing as ec2-user@54.178.215.55: git exit status: 2
git stdout: Nothing written
git stderr: fatal: current working directory is untracked
tar: これは tar アーカイブではないようです
tar: 前のエラーにより失敗ステータスで終了します

東京のメンターの人にも聞いたのですが、すぐに回答が返ってこずなので相当厄介です。
また、2人とはいえGit上で競合も起きるのでかなり苦労しますね。

4/26にやったことは以下の通り。
・AWSのインスタンスの再設定
・自動デプロイ

元のインスタンスでとりあえずやって見たものの、どうやっても解決できなかったので、新しくインスタンスを作り直したら、自動デプロイまで行くことができました。あとはS3を入れてどうなるかといった感じですが、最低限の流れは作れてよかったです。

4/27にやったことは以下の通り。
・AWSの画像アップロード用ツール「S3」の導入
・ユーザー周りの作成

S3を導入した際に本番環境では問題なかったのですが、ローカル環境に以前作成したAWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEYが残っていた状態だったので、一旦削除してメルカリの方に合わせました(多分S3はなくてもchat-spaceは動くので問題ないと思いますが・・・)。困るとしたら案件の面談の際にアプリをちゃんと動かせない可能性もゼロではないですが、とりあえずこのまま進めていきます。

4/28にやったことは以下の通り。
・ユーザー周りの設定(サーバーサイド)

そこまでがっつりした作業はしていないのですが、Github上で競合を起こしてしまったので、そこに苦戦しました・・・。慣れないとなかなか難しいのと、ターミナル上の方が操作がやりやすいので、それを調べる時間がかなりかかってしまいました。

4/29にやったことは以下の通り。
・ユーザー周りの設定(サーバーサイド)

主にバリデーションやルーティングで必要そうなのをとりあえず書いてみました。しかし、デプロイ時にまたAWSのアクセスキーでエラーが起きたのでさすがにおかしいと思ってvimファイルを確認したら完全に自分の書き間違えでした・・・。最終的にインスタンスを作り直さなくても自動デプロイはできそうなので安心しました。

4/30にやったことは以下の通り。

・ユーザー周りの設定

ここにきて気づいたのですが、片方がフロント、もう片方がサーバーに専念すると作業効率がめちゃくちゃ悪くなることがわかったので、機能単位で役割を分担する方針に変えました。ぼくはユーザー(ログイン・新規登録など)で、相方の人には商品の出品・購入を担当してもらうことになりました。

まだ全然進んでおりませんが、卒業までにはなんとか頑張ります!

最後までご購読していただき、ありがとうございます!

また次回も読んでいただけると嬉しいです!!