13
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初の個人開発

Last updated at Posted at 2024-11-18

はじめに

今回は初めて個人でWEBサービスプロ野球投手VS野手対戦成績検索サービスをリリースしました。まだまだ改善点はあるものの、ひとまず形にはなったので、開発した経験について紹介します。少しでも参考になれば幸いです。

自己紹介

  • 27歳
  • 大卒(化学系)
  • 公務員:1年半
  • エンジニア:3年(現在)

サービスの内容

プロ野球の特定の投手と野手の対戦成績を検索できるWEBアプリです。
年度やチームを絞り込んで検索可能です(通算検索などいくつかの検索ができます)。
スクリーンショット 2024-12-08 20.17.59.png
打率やOPSなどの検索結果をチームと打席数順に表示します。
選手のリンク押下で、NPBの選手紹介ページに遷移します。
スクリーンショット 2024-12-08 20.18.19.png

なぜ作ったか

日々の仕事では設計、実装、テスト、リリースの工程をアジャイル開発で繰り返してきましたが、全体の開発プロセスを経験したことがありませんでした。そのため、個人開発を通じて、開発プロセス全体を経験し、知識を深めることを目標にしていました。

自分が興味を持って取り組める題材にしたく、好きな野球をテーマにすることにしました。中継中に紹介される「投手と野手の対戦成績」を自分でも簡単に調べられたら野球をもっと楽しめるのではと考え、このシステムを作ることにしました。また、同様のサービスがほとんどなかったため、開発をスタートしました。

使用技術

このサービスでは以下の技術を使用しました

  • バックエンド:Java、Spring Boot
  • フロントエンド:Vue.js、JavaScript、Bootstrap、HTML、CSS
  • データベース:MySQL
  • インフラ:Heroku(basic)、RDS、CloudFlare

簡単な設計の紹介

  • フロントエンド:Vueのcomputedやwatchを利用し、選手のプルダウンは選択した年度とチームに応じて動的に変化させました。multiselectをカスタムし、漢字やひらがなでプルダウンの選択肢を絞り込み可能にし、空白の有無も許容しました。
  • バックエンド:ストリームやラムダ式の活用、ロジックの分離をして保守性を高めました。セキュリティの向上も意識し、 cros設定などでエンドポイントの設計に注力しました。入力値のバリデーションチェックやPreparedStatementを使用してセキュリティの向上に努めました。また、データベースのインデックスを適切に付与し、初期表示と検索の処理速度を向上させました。
  • データ更新:SpringのScheduledアノテーションを用いてNPB公式の試合結果を日次でスクレイピングし、常に最新の情報を提供しています。
  • ER図:今後の改修に合わせて修正予定
    スクリーンショット 2024-11-16 14.02.25.png

課題

個人開発を通じて、以下の課題が見えてきました

  • インフラの知識不足:Heroku、RDS、CloudFlareを用いて簡易的にインフラ構築を行いました。インフラに関する知識があれば、よりパフォーマンス、セキュリティ、コスト面を考えられたインフラ設計ができたと感じています。
  • データ依存:NPB公式サイトの構造に依存しているため、サイトの変更があった場合には改修が必要です。ただし、2005年以降大きな変更は1度のみなので、頻繁な対応は必要ないと見込んでいます。

改修

今後、以下の改修を行いたいと考えています

  • インフラ改善:AWSなどのインフラ周りの知識を深め、パフォーマンス向上を図りたい。
  • 機能追加:一球ごとのデータを取り込み、投手と野手の得意・苦手ゾーンを可視化するなどの機能を実装したい。

今後(おわりに)

今回の個人開発を通じて、「自分が作りたいサービスを作る」という楽しさを再認識しました。
事前の調査不足(スクレイピングするサイトの構成理解やインフラ周りでの使用技術選定)により手戻り作業が発生したため、開発前の下調べや要件定義の重要性を改めて実感しました。また、開発中に新機能のアイデアが次々と浮かんだ結果、仕様が二転三転してしまったので、最初にプロジェクト範囲を明確にすることも大切だと感じています。

さらに、今回の経験を通して、野球データを扱う中で統計や分析手法への関心が一段と高まりました。単純な成績表示から一歩踏み込んで、統計学的知見や機械学習的アプローチを取り入れることで、データから得られる情報は格段に増えると感じています。今後はインフラ周り等の上流工程のスキルに加え、統計・分析技術を磨き、幅広い知識を提供できるエンジニアを目指したいと思います。

以上、初めての個人開発を通じての学びと経験です。最後までお読みいただきありがとうございました!!


Qiitaでの初投稿、温かいコメントやフィードバックをお待ちしています!

13
3
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
13
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?