作成アプリ

Swiftで『Uber』のクローンアプリを作った!

 

※ 現在は『Swift』から『SwiftUI』に移行しています。

 

その他のクローンプリはこちら

Swift初めて半年で、『Twitter』のクローンアプリを作った! ※ 現在は『Swift』から『SwiftUI』に移行しています。 その他のクローンアプリは...
Swiftで『Tinder』のクローンアプリを作った! ※ 現在は『Swift』から『SwiftUI』に移行しています。 その他のクローンアプリはこちら https...
Swiftで『Instagram』のクローンアプリを作った! ※ 現在は『Swift』から『SwiftUI』に移行しています。 その他のクローンプリはこ...

 

コードの超ざっくり全容

ファイルの一覧

基本的にHomeController上のマップを操作する仕様なのでControllerの数は少なめです!

 

 

実装内容

ログイン、新規登録画面

 

・画面下のボタンでログイン画面と新規登録画面を行き来できる

・今回は UISegmentedControl を使って『ドライバー』か『乗客』かを選択できるようにしました。

ホーム画面

アカウントのタイプが『ドライバー』か『乗客』かで見た目と機能を変えています(同じHomeController上でUIと機能を適宜変えている感じですね)

・左が『ドライバー』、右が『乗客』です。

・『ドライバー』は自分の現在地のみ。『乗客』は自分の現在と自分の半径10km圏内にいるドライバーを表示します。

・ドライバーの動きに合わせて『乗客』側のドライバーの位置もリアルタイムで反映させるようになってます!

1.検索

・『乗客』のみ検索ができます。

直接「住所」「店名」を検索しなくても近くにある関連の場所が検索結果に出てきます!便利!!

・さらに検索結果をタップするとピンが刺さってルートが表示されます

検索結果をタップした際に現在地と目的地がいい感じになるようにズームして見やすいように!

2.リクエスト

・ルート表示後下の「CONFIRM UBERX」ボタンを押すと、周辺にいるドライバーにリクエストを遅れます

・ドライバーはアニメーションの間に「ACCEPT TRIP」ボタンを押さなかった場合、リクエスト拒否とみなしリクエスト画面は消えます。

 

3.マッチング

・ドライバーが「ACCEPT TRIP」ボタンを押すと双方の画面が切り替わります。

・『ドライバー』の画面は乗客の位置にピンが刺さりルートが表示され、『乗客』の画面はマッチングしたドライバーと自分にフォーカスを合わせてズームされます。

・『乗客』にはキャンセルボタンが表示され、押すとお互い初期画面に戻ります。

4.合流

・ドライバーが乗客の半径100m圏内に入るとお互いの画面上の文字が変わります。

5.移動中

・ドライバーが乗客を乗せて「PICKUP PASSENGER」ボタンを押すと双方のボタンが変わり、『ドライバー』側は目的地のピンとルートが表示されます。

6.到着

・ドライバーが目的地の半径100メートル圏内に入るとボタンの表示が変わります。

・(今回ドライバーの座標しか変更していないので乗客が移動していませんが、実際はGPSで常に各ユーザーの位置情報を変更するので実機の端末の場合は乗客も目的地にちゃんといます!)

・ドライバーが乗客をおろして「DROP OFF PASSENGER」ボタンを押すと、『ドライバー』は初期画面に、『乗客』はアラートが表示され初期画面に戻ります。

 

 

サイドメニュー

 

・クローンアプリ初のサイドメニュー!

・ちょっとレベルアップして、サイドメニューの開閉に合わせて上のバッテリー等の表示を隠したり出したりしています。

設定画面

  

・こちらの設定画面からHomeとWorkの2つ位置情報を登録して保存することができます!

・ここで設定しておくと検索画面で「Favorite Locations」欄に表示させるので、よく使う場所はいちいち検索しなくてもすぐにリクエストを出せるようになります!とても便利!

 

振り返り

今回初めてマップを使うアプリを作ったんだけど、感想としてはめっっっっっちゃくちゃ大変だった!!!

本当に大変で終盤何回か拒絶反応が出そうになったけど、頑張ってやり切ったよ!

Twitterクローンを作った時もAPIの勉強をした時も初めはとにかく難しくて折れそうになるんだけど1回やり切ってしまったら1回目の復習でそうでもなくなってそれ以降は何も見ずに鼻歌歌いながらでも実装できるようになってたから、絶対に途中で折れない!最後までやりきる!!って思って頑張ってました。

 

マップは本当にまったくの別ジャンルだから、初めて勉強する人は慣れるまでかなり大変だと思う。

でも使えるようになればきっと強い武器になると思う!

 

僕はオリジナルアプリでマップを使いたいアプリがいくつかあるから、そっちで活用していきます!

それじゃっ