[ ][1] Code4Startup
Task26では、ドライバー側マップでドライバーの移動ロケーションを追加し、カスタマー側マップにも追加します。
そして、シミュレータを二つ立ち上げて、動きを見ることができますよと言うテクニック。
最後にTask27でdanielgindiのチャートコントロールを使ってグラフを表示します。
https://github.com/danielgindi/Charts
と言うわけで完了!長かった・・・
ただ、完成まではしないのですね・・・
例えば、ドライバーが配達完了すると、ステータスが変わる、と言うところは作りますが、その時のドライバー画面は白いままとか。
ともあれ、この画像でおめでとうと言われました!
https://www.google.com/search?q=congratulations!+gif&tbm=isch&tbs=rimg:Cf_126g8pSGmDIjj2cw58GhEDRb1Tm-QQfezqphKGfD1O0NL-e3qT_1YKO7LZvVAYaur8hA3bBucnHSIqfOWhf0o2EKyoSCfZzDnwaEQNFEaLGpRKdOq-YKhIJvVOb5BB97OoROM0rrFOchCUqEgmmEoZ8PU7Q0hGkQsPwogAEjSoSCf57epP9go7sEcYO1TRi5KJ5KhIJtm9UBhq6vyERQUG6cqDuGNMqEgkDdsG5ycdIihE6TOBfMSUADCoSCZ85aF_1SjYQrEe5Ue_1GH1SA_1&tbo=u&sa=X&ved=2ahUKEwiOhtjjxdXfAhXXAIgKHaCBBUsQ9C96BAgBEBs&biw=1765&bih=1034&dpr=2#imgrc=__bqDylIaYNUMM:
Code4StartUp ~ UberEatsを作ろう ~ ドライバーサイドアプリ
[][1] Code4Startup ここまでは、カスタマーサイドのアプリ。
Task24は、ドライバーサイドのアプリ。
このスピード感で画面を追加していける、というのがSwiftの強みだと思う。
そして、この段階で初めてCusotmerとDriverでディレクトリを分けていけるのもよい。
ということで、Task24がViewControllerで画面遷移のあたり。
Task25で、API部分で、注文のピックアップのあたり。
悩みながら、進めます。
Code4StartUp ~ UberEatsを作ろう ~ 地図上の経路描画
Code4Startup
Task23は、決済部分から、お店から配達先までの経路描画など、ある意味、講座のクライマックス。
経路は、import Mapkit しなければならないとすると、他の方式で開発する場合は、またちょっと苦労するということでしょうか。
画面作成の観点で、Swift最強だな、というのはひしひしと感じるわけですが、Android版も開発するとなった場合に、まるっきり別物の開発になってしまう、というのはやはり辛いなとも感じています。
Code4StartUp ~ UberEatsを作ろう ~ 地図
Code4Startup
年末なので、頑張ります。Task22まで来ました。
トレイ(ショッピングカート)画面で、注文者の住所を入力するところで、地図と連携。
とりあえず、キーワドとしては、
MKMapView
CoreLocation.Framework
info.plistの
Privacy – Location When In Use
Privacy – Location Always
CLLocationManager
というあたり。
次のTask23は決済部分で、Task24がお待ちかねドライバー機能、全27タスクの終わりが近づいてきました。
Code4StartUp ~ UberEatsを作ろう ~ 詳細画面からショッピングカート
Code4Startup
リスト画面から詳細画面呼び出し、そこからショッピングカート(この講座ではTrayという言葉)への追加。
途中のミニ講座は、「pyramid if」。
pyramid ifで調べても何も出てこないので、この講座独特の言葉でしょうか。しかし、「Pyramid of doom」という言葉はあるようです。
https://en.wikipedia.org/wiki/Pyramid_of_doom_(programming)
簡単に言えば、過剰な入れ子(ネスト)構造でしょうか。そこでなぜ「doom」なのかはやはり不明。
そして、ifの多重入れ子回避の対応として、Swiftでは「guard」があるよ、というお話です。
そして、この「ガード節による入れ子条件記述の置き換え」という方法は、ファウラー「リファクタリング プログラミングの体質改善テクニック」からきているのですか・・・。大昔に読んだ・・・
リファクタリング―プログラムの体質改善テクニック (Object Technology Series)posted with カエレバ マーチン ファウラー ピアソンエデュケーション 2000-05 Amazon 楽天市場 7net
Code4StartUp ~ UberEatsを作ろう ~ リストの実装
Code4Startup Task19はレストランリストの実装。
最初は、仮実装でリスト表示の枠組みを作っておいて、ここで、API連携により実際のデータを表示させます。
合わせて、サーチバーの実装でデータのフィルタリングを行い、Activity Indivatorという、Windowsで言えば砂時計を表示させます。
とりあえず、この辺は淡々と進めます。
Code4StartUp ~ UberEatsを作ろう ~ API呼び出し
Code4Startup
先に作ったFacebook連携用APIの呼び出し。
ここでログイン・ログアウトの機構を一気に作るので、ここをやっておかないとドライバー用アプリが進められなくなる。
が、とりあえず、一旦は一通りビデオを見てみることにする。
この先は、その他API呼び出しの部分なので、ある意味飛ばしても良いはず。
一つへーと思ったのは、API呼び出しで、httpだと怒られる訳ですが、info.plistで、App Transport Security Settingsの設定を追加することで接続できるようになる。
例えば、この辺の情報ですね。
https://qiita.com/uhooi/items/68939999c2c31e5f5557
Code4StartUp ~ UberEatsを作ろう ~ Facebook接続
Code4Startup
Task17ではFacebookへの接続。
色々なものをインストールしますが、それによりこんなに簡単にできるのだ、ということが感じられます。
ただ、やればできそうなので、一旦ビデオだけ見てスルーしてます。
そして、Task18に入ると、Asynchronousの世界の講義が始まりました。そして、Closureの解説。
Appleのドキュメントも読みましょうと。
https://docs.swift.org/swift-book/LanguageGuide/Closures.html
Code4StartUp ~ UberEatsを作ろう ~ デザインなど
Code4Startup
Task 16終了。
最後は、デザインの統一等を行いますが。
UIApplication.shared.statusBarStyle = .lightContent
は、Setter for ‘statusBarStyle’ was deprecated in iOS 9.0: Use -[UIViewController preferredStatusBarStyle]
という警告が出ます。しかし、
UIApplication.shared.preferredStatusBarStyle = .lightContent
はダメです。これはこのままにしておきます。
また、
UINavigationBar.appearance().titleTextAttributes
= [NSForegroundColorAtrributeName: UIColor.white]
はエラーとなり、コメント欄では、[NSAttributedStringKey.foregroundColor: UIColor.white]
にしたら良いというコメントがあるのですが、正しくは、
[NSAttributedString.Key.foregroundColor: UIColor.white]でした。
また、色選択の支援Webサービスが紹介されています。
http://uicolor.xyz/#/hex-to-ui
Code4Startup
Code4StartUp ~ UberEatsを作ろう ~ cocoapods
Code4Startup
さて、クレジットカード情報入力画面を作るにあたっては、cocoapodsなるものを導入するようです。
ターミナルで、sudo gem install cocoapodsを叩きます。
ビデオでは1 gem installedであっさり終わっていましたが、私の環境では結構な量のインストールログが流れて、28 gem installed。そもそも、ターミナルを立ち上げるのさえ初めてというまっさら環境ですから、そんな感じなのでしょうか。
次にpod initによって、Podfileというファイルができますが、それをVisual Studio Codeで開いて保存したらファイル名が「Pod file」になっていた。まあまあの驚き(何かの操作ミスかとは思いますが、そんなミスする??)。
さらに、pod installすると、ビデオではすぐにStripeのインストールが始まっていますが、私の環境では、Analyzing dependenciesから始まって、結構な量の何かをインストールし始めて、ちょっと不安になりましたが、無事完了。
そして、これをインストールすることにより、Viewにクラスを指定するだけで、クレジットカード番号入力欄が勝手にでき上がるというのはセンス良い!
という訳で、この辺も飛ばさずにやっておくべきですね。
Code4Startup