スパルタコースでは毎週何かしらのイベントを開催しています。

今回もまた「Railsポートフォリオレビュー会」です。

週に一人くらいまでなら無償でレビューできると思うのでお気軽にお声がけください。

動画

駆け出しエンジニア向けSNS ポートフォリオレビュー会 | TechEssentials

Image from Gyazo

雑なメモですが、こんなフィードバックをしました。

6/20 ポートフォリオレビュー会

githubのリポジトリ

https://github.com/kosimaru1997/my_portfolio

オンラインエディタで確認できるやつ
https://github1s.com/kosimaru1997/my_portfolio

サイトのURL

http://18.214.60.110/

だいそん

サービスに関して

未経験エンジニアとして、プログラミングスクールに在籍していますが、
スクールに在籍することで、未経験ながらエンジニアを目指している仲間達の存在を実感でき、
学習を進める上で大変励みになりました。
1つのスクールだけではなく、オンライン上で様々な未経験エンジニアの方々と繋がれるコミュニティが欲しいと思い、
今回のアプリ開発に至りました。

こういう原体験から作るアプリは良いと思った。

無限スクロール系の実装は結構めんどいがそれを実装されていて良い。

チャンネル的な要素がないと投稿の垂れ流しになって情報が汚れて結局だれも見なくなりそう

Slackのワークスペースと何が違う?Slackではなくこのアプリを使う理由はなんでしょうか?

通知の削除は必要でしょうか?既読・未読管理ができた方が良い
通知時はメールなども送るようになっているか

chatの機能は良いと思うが、ActionCableを使うなりしてリアルタイムに相手側にも通知させないとあまり意味がないかも

実装に関して

Gemfile

- rubyのバージョンが2.6.3で古い。セキュリティ的によくない。
- railsのバージョンもあえて5系を使用する理由はなにか

  • fakerはproductionでも必要?
  • coffee-scriptは必要?
  • credentialsではなくdotenv-railsを利用している理由は?
  • refileを採用した理由は?
  • 何かとDBはdevとprodで合わせておいた方が良い

    スキーマ

    外部キーがintegerになってる。というか外部キー制約がついてないのでそもそも外部キーにすらなれてない。references型を使うべき。(sqlite使ってるとreferences型使っててもinteger型になってしまうかも)
    https://github.com/kosimaru1997/my_portfolio/blob/e8dec4452462550a0153d6c520258db8150f8ca1/db/schema.rb#L16

not null制約など制約に関する意識が甘い
https://github.com/kosimaru1997/my_portfolio/blob/e8dec4452462550a0153d6c520258db8150f8ca1/db/schema.rb#L50

ルーティング

チャットのURLがこうなっているが、これだとグループチャットも実装したくなったときに詰む。
/users/4/chats

/rooms/:id/ とかにしといたほうが後々楽だと思われ。

コントローラ

publicというネームスペースを切った理由はなんでしょう?

chats_controllerなのにroomの一覧を取ってきてるのが違和感あり。コントローラってリソース単位で作るのが基本なのでリソースの切り方を間違えている気がする。

class Public::ChatsController < ApplicationController

  def index
    my_rooms = current_user.user_rooms.select(:room_id)
    @rooms = UserRoom.includes(:chats, :user).where(room_id: my_rooms).where.not(user_id: current_user.id).reverse_order
  end

モデル

class User < ActiveRecord
    def following?(user)
      relationships.pluck(:followed_id).include?(self.id)
    end
end
<% if current_user.following?(other_user) %>
  フォローを外す
<% else %>
  フォローする
<% end %>

yu-ki

コントローラー

使用していないコントローラーは消した方がいいんじゃないかと感じました。Devise使ったことがないから間違ってたらすいません。
https://github.com/kosimaru1997/my_portfolio/blob/main/app/controllers/users/unlocks_controller.rb

 ### 挙動
コメントした後にコメントの削除をした場合の挙動がおかしい気がしました。コメント削除した後はコメント作成時のflashメッセージは消えていて欲しいと感じました。
https://gyazo.com/e058521b64b6ae5b649b3130ea2b7edb


こんな感じで毎週勉強会をやってます。
スパルタコースはサポートの質が落ちないように少数のコミュニティとして活動しています。
実際に未経験からRailsの業務委託で仕事をしている人もいるくらいなのでちゃんと学習すればスキルはつきます。

普段はSlackでやりとりしてますのでリンクを貼っておきますね。
Slackコミュニティへの招待リンク

ではでは。