0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GWだし、Rustで個人開発のリポジトリに30回プルリクエストしてみた話

Posted at

GitHubリポジトリ


はじめに

「GWの間に100本くらいPRを出せるだろ」と軽い気持ちで始めたRustでの個人開発でしたが、実際に出せたのは30本。Web開発の実務経験はなく、これまでの個人開発も未完成に終わることが多く、Gitもmainに直接コミットするようなやり方で、実務とはほど遠いものでした。

今回はそうした自分を変えるため、あえてブランチを細かく分けて、一つずつ積み上げていくスタイルに挑戦しました。「まず手を動かす」ことを優先し、立ち止まらず進むことを重視した取り組みです。

Rust初挑戦と開発スタイルの変化

Rustの型、所有権、非同期処理などに苦戦しながらも、ChatGPTや公式ドキュメントと向き合い、トライアンドエラーを繰り返しました。Cargo.tomlやSQLも明示的に書くスタイルが自分に合い、安心して開発できました。

実務を意識した開発姿勢

PRベースで進めたことで、ただ“動く”ではなく“保守しやすく、共有しやすい”コードを意識。

  • 責務、再利用性を考える
  • クライアントを意識したAPIレスポンス設計
  • 単体テストと統合テストの住み分け
  • SwaggerでのAPIドキュメント生成

コードの“前後関係”や“誰のための実装か”を考えるようになりました。

トレードオフを知った

「DDDを取り入れればいい」「テストを厚くすればいい」──以前の自分は、そんな理想論だけで満足していました。実際に手を動かさずに、実務を分かった気になっていたのです。

しかし今回、小さくブランチを切って少しずつ積み上げる中で、ようやく現実が見えてきました。

  • 拡張性を求めるとコード量が増える
  • DIやモックの導入タイミングに迷う
  • スピードと品質のバランスを取る難しさ

Rustでは、型によるバリデーションは単体テストに、DB操作はDocker Compose+curlで実際に動かして確認するという、現実的で無理のない戦略を選びました。頭で考えるだけでは見えなかった“現実の開発判断”に触れた実感があります。

まだまだ入り口

CI/CD、フロントエンド連携、レビューやチーム開発は未経験。例えるなら入門書の第1部が終わったような感覚。でもその先にある壁を見て、もっと熱くなれそうだと感じています。

この取り組みの動機

就活のためだけではありません。自分のプロダクトを作りたい、人に使ってもらえるものを届けたい。その思いが原動力です。

だからこそ、小さなブランチで進みやすくしながら、今後も着実に積み上げていきます。AIを活用した学びの環境も整ってきた今、実務に携わりたいという思いが一層強くなっています。


主な変更内容

  • 認証の整理: JWT認証の追加や、ログイン機能の実装、認証モジュールのリファクタリングを行いました。

  • APIの改良: エンドポイントの追加(GET/POST/PUT/DELETE)、CORS制限の強化、APIレスポンスのフォーマット統一、エラーハンドリングの改善。

  • テストとドキュメント: API統合テストの追加、Swagger UIの設定、READMEにAPIドキュメントを追加。

  • データベース: PostgreSQL接続の設定、DBのエラーハンドリング、partsテーブルのマイグレーション、CRUD操作の実装。

  • ロギング: 構造化ログの追加、エラーログの改善。


読んでいただき、ありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?