学習の経緯
エンジニアスクールでHTML/CSS/JavaScript/Java/PHP/SQLを学んだ後、独学でRubyの学習に取り組みました。学んだ内容のアウトプットとして、同じ仕様のWebアプリケーションをJava(スクールで学んだ技術)とRuby(独学分野)の両方で実装し、比較しながら理解を深めました。
制作物:「二人の請求帳」(PairBill)
カップルや同居人など2人の間で発生した立替金を登録・承認し、月単位で差額を相殺して精算できるWebアプリケーションです。
- 会員登録・ログイン、招待コードによるペア機能
- 請求の登録・承認・却下フロー
- 月次精算(差額計算、承認後の対象月ロック)
- ダッシュボードでの集計・グラフ表示、アプリ内通知
同じ要件を2つの技術スタックで実装
Java版 / Ruby版
フレームワーク
Spring Boot + MyBatis + Thymeleaf
/
Ruby on Rails + Active Record
DBアクセス
SQLを手書き(MyBatis)
/
ORM(Active Record)
同じ要件でも、SQLを手書きするMyBatisと自動生成のActive Recordとでは設計の考え方が大きく異なることを実際に手を動かして体感し、比較できたのが大きな学びでした。
工夫した点
- 不正な閲覧・更新を防ぐため、画面の出し分けだけでなくService層でも権限チェックを徹底
- 招待コード参加や月次精算では、DBの行ロックを使って二重処理を防止
- 精算確定時の金額はスナップショットとして保存し、後から請求データが変わっても整合性が崩れない設計
- 単体テストに加え、実際のMySQLに接続してエンドツーエンドで動作確認を実施
リポジトリ
- Java版: https://github.com/Nemoto-Manato/pairbill
- Ruby版: https://github.com/Nemoto-Manato/pairbill-rails
-むすび
現在25歳、プログラマとしての実務経験はまだありませんが、スクールでの学習と独学を通じて、ここまで一人でWebアプリケーションを設計・実装できるようになりました。今回のように未経験の技術(Ruby)にも自分から挑戦し、形にしていく姿勢を大切にしています。至らない点も多いと思いますが、その分吸収力と意欲には自信があります。まずはお話しさせていただければ嬉しいです。面接、お待ちしております。