アイピーロジック株式会社 / エンジニア
朝活に特化したSNSアプリ(ポートフォリオ)を作成しました
朝活に特化したSNSアプリ(ポートフォリオ)を作成しました。 GitHubリポジトリ:https://github.com/taikyunn/asakatsusns URL: https://front.asakatsusns.com ○アプリの概要 基本的にはTwitterのような、投稿・コメント・いいね・フォロー機能のあるSNSですがそれに追加して 以下のような特徴のあるアプリケーションにしました。 目標起床時間を設定して、早起き達成日数を記録することができる 投稿にタグ付けしタグごとに朝活の共有ができる。 開発した背景 私自身1日を有意義に過ごすには、朝の動きがとても大事であると最近強く感じており、それは科学的にも証明されています。意識的に朝活を行うことでユーザーのQOLを上げたいと思い、朝活に特化したSNSを作成しようと考えました。 ○使用技術 - フロントエンド Vue.js 3.2.26,CSS,Bootstrap5.0,vue-fontawesome3.0 - バックエンド(API) Golang 1.15.2,Air (ホットリロード),Gin,Gorm,firebase authentication - インフラ CircleCi 2.1,Docker 20.10.12/ docker-compose 2.2.3,mysql 5.7.36 - AWS(EC2, ALB, ACM, S3, RDS, S3, ECS, ECR, CloudFront, Route53, CloudWatch, VPC, IAM, RDS) ○苦労した点 ログイン時の認証機能の作成に苦労しました。フロントエンドとバックエンドが分離しているため、sessionを利用した認証機能が私には実装できませんでした。 他の認証方法を調べていると、firebase authenticationを利用した方法を見つけました。実装のためfirebase authenticationの基礎学習から始めて、vue+firebase authenticationでAPIを叩くアプリの作成・Go+firebase authenticationでJWT認証するアプリの作成・と段階を踏んで実装した結果、認証機能作成ができました。 ○工夫した点 - データ量が増えれば増えるほどAPIへのアクセスが集中しサーバーが落ちてしまう課題です。フロント側のAPIへのリクエストの順番を制御することや、投稿内容を10件ごとに無限スクロールで読み込む形にした結果、サーバーへの負担が軽減しサーバー落ちを回避できた。 - 新機能は小さく始めることを徹底しました。理由はエラー発生時の問題の切り分けを小さくしたかったからです。新しい分野に挑戦する際は、まずは本番環境と同じ環境を別に用意して機能を実装したのち、本番のソースで実装するという流れを徹底しました。