# 学生向け就活SNSサイトの構築
テックリードとして要件定義から参画し、以下の領域を担当
- 担当領域
- 要件定義
- 基本設計
- UI設計
- DB設計
- バックエンド構築(Golang)
- フロントエンド構築(React.js)
- Firebase構築
- 運営保守
- 教育
- 開発言語選定
***
### **開発言語選定について**
モダンな技術で作成したいという思いと、サービスが大きくなったときの拡張のしやすさを求め
バックエンドはGolang フロントエンドはReact.js を選定いたしました。
どちらも、開発・学習ともに未経験だったのですが開発の着手2週間以上前から自己学習をし
GolangとReact.jsの基礎を身につけることによってスムーズに開発の着手を行うことができました
***
## **開発について**
開発メンバーが自分一人だけの期間が発生してしまったことも時期もあり
朝から深夜まで、開発に向き合うことも多々ありました。
大変な時期では、ありましたが
確実に自身のスキルアップにはつながったと思います。
現在は、無事リリースも終え
運用・保守段階です。
開発メンバーも4名ほどに増えたおかげで
テックリードとして、開発メンバーに技術の共有、コードレビュー、メンバーの管理など
自身の仕事の幅を広げています。
***
## **システム設計・構築について**
### バックエンド(Golang)
- フレームワークにEchoを使用したREST fullなAPIサーバーの構築
- Gormを使用したMysqlとの接続
- 複数の組み合わせを対応した、検索機能のロジック
- REST fullなCRUD作成
### React
- Firebaseと連携し、ユーザー認証、ファイル保存、チャット機能の実装
- ReactHookを使用したstate管理でのDOMの書き換え、API通信
- タイムライン投稿、ユーザー情報登録、求人登録、スカウト機能、オファー機能、フォロー機能など
Goで作成したAPIと連携するシステムのメイン機能の実装
### Firebase
- Authenticationでユーザー認証の追加
- Storageで画像やPDFファイルの複数枚投稿を実装
- Cloud Functionにメール送信機能を実装
- Cloud Firestoreを利用しチャット機能の実装
***
## **開発時について**
拙い文章にはなりますが
以下は本案件に特に実装が大変だった機能について幾つか書かせていただきます。
## 1. **チャット機能・スカウト送信機能の実装**
チャット機能はGoのAPIを使わず、ReactとFirebaseのCloud Firestoreを利用することにし
ユーザー目線からでもリアルタイムアップデートによる通信することを務めました。
チャットシステムにおいて双方が同じコレクションにチャットデータを格納していくロジックを考えてから実装に至るまでや
様々なチャットシステムを参考にして、UIをどのようにしユーザーが一番使いやすいか
チャット機能とスカウト機能は、同じロジックを使うのでどのようにフラグ分けをするかなど
設計・実装フェーズどちらにおいても作り甲斐がありました。
***
## 2. **Golangでの検索機能の実装**
どのサービスにも必要不可欠な検索機能ですが
今回は、学生が就職活動に使うことのできる就活SNSを目的として実装したので
学生が登録できる項目が他の会員サービスよりも必然的に多くなりました。
その際に検索機能の実装が慣れないGolangでの検索機能の実装となり
GolangのO/RマッパーでもあるGORMでの実装をしていたのですが
複雑なコードになり、他のエンジニアがコードを見てすぐに理解出来なくなると感じ
GormでのSQL Builderを使用した、SQLの実装となり、沢山のコードを記入するのには苦労しました。
それでもテーブル同士をJOINすることが多くなってしまったので
今後、検索機能を実装、アップデートする際は、設計段階から作りこみが必要だと、反省点も多くあります。
***
## **今後の課題**
### 1**モバイルアプリケーション化**
学生に多く使ってもらうのを前提としているのに
モバイルアプリケーションでの開発ではないので、iOS、Androidの開発技術を学び
モバイルアプリケーション化を実現したいです。
***
### 2**エンジニア側からの企画・要望出し**
また、開発していると要望のあった機能以外に
実装した方が良い機能が見えてきたので、
弊社の営業やシステム利用者に提案をし、エンジニア側からのシステム構築の企画をしていきたいです。
***
上記を進めていきたいです。