🌊

Cursor時代でも人的レビューは大事!フロントエンジニアがRailsデビューした話

2025/01/31に公開

こんにちは、エイジレスでエンジニアとして働いている本間です。

本間
2023年11月にジョイン、エイジレスのエンジニア部門に所属。
日々フルスタックへの道を歩む成長株。
趣味は競馬とソーシャルゲームの統計データ分析用のツール作成。
週1でカラオケに駆け込み、1人で熱唱するのはここだけの話。

皆さんは、最近「これを突破できたら、一皮剥けそう」みたいな挑戦、ありましたか?
僕は普段、フロントの実装をすることが多いのですが、ここ最近本格的なバックエンド(Rails)の開発に1人で挑んみました。

Google認証機能の実装という、セキュアな領域に関わるなかなかハードルの高いタスクです。
しかも既存サービスとの連携も必要で、複雑な設計になっていくとはつゆ知らず、「おいおい、僕ここまでやるなんて思ってなかったぞ!」と内心焦りました。
そんな感じで今日は、「うちのチームでは結構新しい経験をさせてもらえる環境だよ」ってことを伝えられたらなと思っています。

Google認証機能の開発タスクアサインまでの経緯

今作っている「インクルー」は、エンジニアとSIer,ITコンサル企業をつなぐ求人マッチングサービスとしてサービス展開しています。
せっかくウチを見つけてくれた求職者が「ちょっと使ってみようかな」と思ったタイミングで登録が面倒だと、そのまま離脱してしまう可能性が高い、こういう地味なストレスポイントを解決したいなと考えていました。

そんな課題を持っていたある日・・

綱頭「本間にGoogleログイン認証の開発を任せたいんだけど、どう?」

網頭
取締役。慶應卒、バイアウト経験ありの実力者。
本間とは大学時代からの友人。
でかい体を生かしたフィジカルモンスター。
な大学時代のイメージからは想像できないほど誠実な男。

本間「え、まじ!?」

綱頭「バックエンド側は初めてかもしれないけど、トライするにはいい機会じゃないかなと。
Rails経験はほぼないけど、認証基盤の設計をサポートしてくれてたし、本間ならいけるっしょ!」

本間「バックエンドそろそろ触りたいとは思ってたけど、いきなり重いのきたな〜・・
まあ認証基盤の設計にも絡んでいたし、なんとなく今イメージ湧くからやるわ!」

インクルーでAuth0を導入した際、設計から関わる機会があったため、認証基盤そのものに対しては一定の理解がありました。今回はこれまでの経験を活かしつつ、新たにGoogle認証機能を追加することで、一段とスキルを伸ばせるチャンスだと感じました。

栗田「僕より詳しそうなんで、きっとサクッといけちゃいますわぁ」

栗田
インクルー事業部開発リーダー
フロントからバックエンド、採用までオールマイティにこなす。
Rails自信ニキ。7年
いつも猫のパーカーかTシャツを着て出社してくる。

栗田さんのやんちゃな採用広報記事はこちら
https://zenn.dev/ageless/articles/ab051fc717a1a3

本間「めっちゃ煽るじゃないすかw」

認証機能はサービスの入り口、つまり第一印象です。ここでミスがあると、ユーザーは離れてしまいかねない。「スムーズにできて当たり前」それがインフラ的な機能です。
最初はシンプルなCRUD系のエンドポイントを作って慣れていこうと思っていたところ、ユーザーの離脱に繋がるしデータの取り扱いを慎重に行わないといけない領域の開発を任されてプレッシャーは感じましたが「フルスタックに開発できるようになりたいな...」と影ながら野心を持って思っていたので、

本間「せっかくだしやってみるか!(震)」

という流れで、バックエンドの実装に関わり始めるようになりました。

こんな感じで、エイジレスは難易度の大小あれど、フルスタックに開発に関われる機会があるのがいいところだと思いますね。チームに分かれてフロントだけ、バックエンドだけって会社もあるので、担当領域がジュニアレベルでも新しい開発に携わるきっかけが多いのは嬉しみです。

設計・実装

Google認証機能の開発においては、基本はAuth0が提供しているGoogle認証の拡張設定を入れるだけでGoogleアカウントによるログイン機能はできあがります。残りちょろっと細々した調整するくらいで終わるだろうと容易に考えていました。しかし思いがけぬ落とし穴が・・

本間(いやぁ、結構、一筋縄じゃいかなくて結構しんどいな・・・)

栗田「ん?」

本間「インクルー既存の機構やエイジレスフリーランス(弊社別サービス)との連携が絡んでて。」

栗田「ほう」

本間「Google認証機能追加のリファレンス通りには実装できなさそうなんですよ。結構自前実装しないといけないかも...」

と、紆余曲折ありましたが基本的な設計はできました。

さぁいよいよRailsで実装に入る段階。
ここでやはり頼りになるのは生成AI。
僕はCursorを使っていて、プライベートの開発や新しい言語・FWでコードを書くときは
「TypeScriptでいう〇〇のようなことをRailsで書いてみて」
と指示を出して、コードのヒントをもらうことが多いです。
これで書いてくれるからほんといい世の中になりましたよね。笑

おかげで、Rails初心者ながらも爆速で動くものを作り上げることができました。
そして、満を持してレビューへ…!

最初は「AIが結構書いてるし、動作確認もしっかり取れたからスムーズにApproveされるのでは???」
と少し心の余裕を持っていました。

…と思うじゃないですか。

栗田さんは、細かい関数の分割方法や、Railsっぽい書き方とか、いわゆる「チームで開発するときに必要なコーディング観点」も含めて、しっかり指摘してくれます。

栗田さんのレビュー:
例外発生は!をつけてね。そうすれば他の人も「ここでは例外発生しうるのか」って気づけるやん?
MVCに則ってコード分けてこ!責務分けて書くと読みやすくなるし書くとこも迷わなくなるよ!
forじゃなくてmapがいいと思うよ〜、ここの条件分岐、ifじゃなくてunless使ってね〜

本間:なるほどなぁ、TypeScriptのあれって、Railsでこうやって書くのか~

栗田さんのレビュー:
あ、ここ、変数名考えるのサボったでしょ笑 Railsは動的型付けだからTypeScriptよりも命名ちゃんとつけないと他の人が勘違いしちゃいますよ〜

本間:(やべ...自動生成でえいや!ってやった部分だ...バレてる...)「すんません直します!」
みたいに正直、痛いところを突かれることも。
Cursorに頼って、はやく動作仕様を満たすものを作ることも大事ですが、
生成AI頼りにしてしまうとチームとしてのコード自体の品質が甘くなってしまうのだと痛感しました。

レビューやそのレスは徐々に増え…「ふう!終わったあ!」とひと段落ついた時に見返すと、最終的なPull Requestのコメント数は100件以上!

いやー、栗田さんのレビューは細かi...

栗田「なんか言いましたか??」

本間「いや!レビューあざす!」

こんなやり取りもしましたが、栗田さんからは本当に丁寧なレビューをしてもらえたと感じます。これを機に、バックエンドの学習をもっと地に足をつけて進める必要があると感じていている本間です。

そんなこんなでコードレビューも無事に通り、検証環境での動作確認を始めた頃のこと。

綱頭:「ねえ、本間。Google認証で登録したユーザーがエイジレスフリーランス(既存サービス)側でパスワード変更ができないっていう状況発生してない?」

本間:「やべ、そこ考慮できてなかったわ…。2サービス間の整合性とれてるか、全部見直して改修するわ!」

ありますよね。意図していない別サービスでの不具合。
このタイミングで気づけたのは不幸中の幸いでした。
(設計の大幅な変更はなく、処理を少し追加するだけで済んで本当に助かった…!)

開発も終盤に差し掛かった頃…
本間:(よし、これで動作仕様は満たしてるし、大丈夫…だよな!)
一息ついてコードをコミット。

しかし、その直後。
本間:(ん?)
胸の奥に、何か引っかかる感覚がありました。
(あれ?ここの処理、今回スコープ外のあそこの処理と共通化できるな…。でも、レビュー依頼出しちゃったし、リファクタしなくてもいいか~。多分栗田さんも気づかないだろうし、早くリリースしちゃいたいし!)

ところが・・
栗田:「共通化してクラスメソッド作っちゃってください!」

本間:「いや〜やっぱ気づくかぁ〜笑 スルーするかなとw」

栗田:「スルーしても良かったけど、こういうのは早めに言っとくのが肝心なんで!笑」

本間:「・・・さすがっす!すんません!」

数知れずのレビューから、コードを書いているときに「もっと良くできるけど、もう見つからないでくれ!」と思ってしまうことも、実は何度かありました(笑)それでも、栗田さんの細やかな指摘に救われることが多く、妥協してはいけないなと改めて感じるところであります。
と思いきや、僕の得意分野であるフロントエンドにおいては

本間「ここのレイアウト、flex使いました?gridの方が適切だって前話したじゃないですか」

栗田「あ、ばれた??」

本間「今回は僕の勝ちですね。出直してきてください^^」

と逆に指摘することも全然ありますw
 

最終的に2週間ほどでGoogle認証機能は無事にリリースされ、ユーザーにとってスムーズにログインできるようになりました。

栗田:「結構レビューしましたねw」

本間:「初めてのRailsのレビュアーが栗田さんでよかったす!!あざす!」

綱頭「Googleはうまく行ったし、次はどのサービスで認証できるようにする?」

本間「LinkedIn認証やりたいかな!ログインだけじゃなくて、職歴情報も連携させてみたりしたいよね」

綱頭「LinkedInのデータが使えると、候補者も楽になると思うんだわ〜」

栗田「それできたらでかいっすね👍」

綱頭・栗田・本間 「よし!やりますか😎」

あとがき

という感じで、うちでは挑戦できる場数が多い&レビューをちゃんとしてくれる環境だった、というお話でした。
そういう環境かどうかって、一緒に働く上でも大事ですよね。(僕は結構大事!!)

栗田さんも、いろんな現場を経験してきたみたいなのですが、やっぱり「レビュー文化」については必ず聞くみたいです。

と、まあこんな感じで、キャッチアップしながら新しいスキルや経験にチャレンジしていきたいよって方は、雑談みたいなライトなお話だけでも構いませんので、聞きに、覗きにきていただけたら嬉しいです!

Discussion