【個人開発】テニスのダブルスの組み合わせを生成するアプリケーションのiOS版をリリースしました
関連記事

【Fuse.js】Next.jsのブログに検索機能を実装してみた



以前、個人開発として公開した「インスタントマッチ」というWebアプリケーションについて、iOS版アプリをリリースしました。さらに、Webアプリケーション/iOS版ともに2面での組み合わせの対応を実装し、より実用的なアプリケーションへと進化させることができました。本記事では、iOSアプリのリリースに至るまでの経緯と、実装内容についてお話しします。

【個人開発】テニスのダブルスの組み合わせを生成するアプリケーションを作ってみた
はじめに 個人開発として、インスタントマッチというWebアプリケーションを開発し、公開したので、
インスタントマッチは、テニスのダブルスの組み合わせを生成して、試合結果の登録・集計ができるWebアプリケーションです。
インスタントマッチ|ダブルス乱数表作成サービス
テニス仲間とのダブルス練習に最適!人数と試合数を入力するだけでバランスの良い対戦表を自動作成。
テニスをするときに、毎回ダブルスの組み合わせを考えるのが面倒だったので、開発したアプリケーションです。数人で集まってテニスをする時に、このアプリを使って楽に組み合わせを生成し、試合結果をまとめて管理できます。
iOSアプリをリリースした理由は以下の通りです:
基本的に自分の興味からiOSアプリをリリースしましたが、自分で触ってみた感覚だと、モバイルアプリの方が使いやすくなったと感じています。
iOSアプリは React Native を使って実装しました。React Native を選択した理由は以下の通りです:
アーキテクチャは下記の通りです。

基本的な構成は以前のものと同じで、iOSアプリのReact Nativeが追加されただけです。(少し前にRemixからReact Routerに変更したのもありますが)
全体の構成は以下の通りです:
Web
Typescript: 実装言語React + React Router: フレームワークTailwind CSS: CSSフレームワークDaisy UI: コンポーネントライブラリMobile
Typescript: 実装言語React Native: モバイルフレームワークReact Navigation: ナビゲーションライブラリRust: 実装言語Actix Web: フレームワークGCP
Cloud Run: アプリケーションのデプロイ先Firestore: NoSQL データベースCloud Scheduler: バッチ処理の定期実行Artifact Registry: コンテナイメージレジストリCloudflare: DNS + CDNGithub Actions: CI/CD パイプライン(Web/Backend のみ)Docker: コンテナ化
Docker Compose: ローカル開発環境Cloud Native Buildpacks: Rust イメージのビルドFastlane: iOS ビルド・TestFlight へのアップロード(手動実行)Github Copilot: 開発支援今回初めて、iOSアプリを App Store にリリースしたので、なかなか手間取りました。以下、リリースまでの流れをざっくりとまとめます。
local_build)ビルド周りはSwift + Xcodeであればもう少し簡単にできたのかもしれないので、次回アプリをリリースする際は、ネイティブで実装するのも選択肢に入れるかもしれません。
インスタントマッチの iOS 版をリリースし、並行して Web 版と共に 2 面対応に対応させることで、より実用的なアプリケーションへ進化させることができました。モバイルアプリケーション化することで、ユーザーにとってより使いやすいプロダクトへと改善されたと考えています。
今後も、ユーザーのフィードバックに基づいて、さらなる機能追加・改善を行っていきたいと思いますので、下記のリンクからぜひアプリを試してみてください!
インスタントマッチ|ダブルス乱数表作成サービス
テニス仲間とのダブルス練習に最適!人数と試合数を入力するだけでバランスの良い対戦表を自動作成。