Code4Startup
さて、Swiftでの開発、ViewController、segue等の基本的な概念を、あまり理解せずに進めているので、これで一人で作れるのかと言ったら微妙ですが、それでも色々繰り返していくうちに何となくは解ってくるようには思われます。
で、一番興味があるのは、ドライバー用の地図と連携する部分なので、途中で一旦そちらに飛んでみたのですが、いつの間にかMVCのグループ分けがされていたり、ソースを流用したりするところがあるので、やはりそれは無理があるようです。
ですので、ちょっと書くのは飛ばしながらでも一通りは見ていかないとダメかなということで、続行していきます。
そして書きながら、Android版は全く作り直しだよな、と、やはり悩みは続きます・・・
Code4Startup
Code4StartUp ~ UberEatsを作ろう ~ iMac購入して続行
Code4Startup iMac購入 一旦Xamarinを始めたわけですが、そして第一印象はさほど悪くもなかったのですが、結局iOS版を作成するためにはXcodeの入ったMacが必要になるということで、熟慮した結果(1日ほど)iMacを購入しました。 iMac MK462J/A 一体型 PC 27型 Retina 5K Late 2015 Core i5 6500 3.2GHz 24GB HDD1TB High Sierra 10.13 中古ですが全く中古感なし。それでいてメモリが標準8GBのところ24GBに増設されており、値段は標準新品より7万円位安い。 12インチMacBookの整備品も魅力はありましたが、使用中のThinkPad T430sも全然現役で使えることと、値段も上記中古品ならあまり変わらなくなってしまうということで、ちょっとだけ贅沢品を買いました。 快適そのものです。 swift開始 ということで、すぐさまXcodeをインストールし、と思ったらOSアップデートが必要と言われたのでアップデートし、環境を整えました。 ちなみに、エディタどうしようかと思い、Macのエディタを検索したらいまだにCotEditorとか上位に出てきて、ムムとなりましたが(以前Mac使ってた時にはCotEditor派でしたけど)、素直にAtomとVSCodeで悩んでVSCodeにしました。 始めてみると、やはりこのデザインツールは素晴らしい。ここまでサポートしてくれると、やる気の出方が違います。 とりあえず4レッスンやってみてのハマりポイントは二つ。 一つは、FoodTaskerMobile-Bridging-Header.hのファイルの場所。レッスンの中ではこれをLibディレクトリに移動するのですが、参照できませんというエラーになります。
これを参照できる場所に戻しても良いのですが、やった対応は、プロジェクトのBuild SettingsのObjective-C Bridging Headerの記述を削除すること。これで、このエラーは解消しました。
(2018/11/04) さすがにこれはダメ。後で、self.revealViewControllerというところの参照ができなくなります。 FoodTaskerMobile/Lib/FoodTaskerMobile-Bridging-Header.h とすることで正常動作になります。 もう一つは、画面遷移しても目的のページが表示されず、白いままになってしまうこと。これは、実はView Controllerのページが表示されていたのですが、なぜそうなるか。結論は、このコントローラに対しては、クラスSWRevealViewControllerを指定しなければならないのですが、それが漏れていたため。ビデオではちゃんと設定することになっているので、その部分で居眠りしていたかもしれません。 ということで、基本的な画面の作り方と、遷移の仕方は完了。 ついでに言うと、レッスンで使用しているアイコンはどこかで手に入れられるのか??謎。 Code4Startup
Code4StartUp ~ UberEatsを作ろう ~ Stripeの使用
Code4Startup
自作サービスの決済手段として何を使うか、PayPalは開発者にやさしいなと思っていましたが、Stripeも十分良さそうです。
[][1]トップメニューに「開発者」があり、このサービスの向き先が伺える ちなみに、日本のサービスで、申込・審査を行わずに利用できるサービスはあるでしょうか??
ちょっと違うんだよなーと思ってしまいます。
もちろん、そういうビジネスはそれでありなのですが、違うビジネスが展開されないのはなぜだろう、ということです。
そして、PayPal。
開発者向けサービスも充実しているし、無料でテストサイトでの決済を確認することもできるし、実際に運用する際の手数料も安いとは思いませんが(弱小サイトを前提とする場合)許容できるのではないかと思いますし、非常に使いやすいと思います。
[][2]PayPalも開発者にやさしい ただ、唯一最大の問題が、決済サービスをしようとするためにはpaypalの会員登録が必要ということ。
私のように一度登録してしまっている人としては、そういうものだと分かって使うのでよいのですが、paypalに縁のなかった人がいきなり支払いを行おうとしたらpaypal会員登録から始まってしまうというのは、ちょっとハードル高いのではないかと思われます。
それに対して、Stripe。
普通にクレジットカード情報を送信することにより(実際は端末にStripeのトークンが返されて、これをサービスに送信することで、サービスがそのトークンとサービスのAPIキーを紐づけて)決済されるので、違和感なしで決済完了できるということです。
なお、開発中のアプリでは、ユーザ認識にユーザトークンのやり取りをしているので、トークントークン言われて分からんわ、という感じになりそうですが(実際それを間違えて送信しているというコーディングミスをしたり)、冷静になれば特に問題はありません。
なお、開発者向けドキュメントの中でデモ機能が用意されていて、そこでダミーのカード情報を送信することによりStripeのトークンを取得できる(そして、それを使って開発サービスのテストができる)わけですが、講義の中で紹介されているURLは既に変わってしまっており、stripe docs→Payments→Stripe.js and Elements→Quickstart (Card Element Quickstart)
https://stripe.com/docs/stripe-js/elements/quickstart
から利用できるようになっています。
これは、別件のWordpressからの決済でも使ってみたいと思います。
Code4StartUp ~ UberEatsを作ろう ~ Chart APIなど
Code4Startup
Task14までdone。
途中結構長い時間はまったのが、
Order.objects.filter・・・
とすればよいところを
OrderSerializer(Order.objects.filter・・・
としてしまったために、発生したエラー。
他からのコピペで無意識についてしまったわけですが、これを探りながらの他のバグにも気づいたし、まあよいか。
Task14ではレポート画面と言ことで、グラフを出力するために、
Chart.js
を使います。
これはこれでよいなと思いますが、
Google Charts
もあるからね、とは思ってしまいます。
そして、いよいよTask15でPythonは終了となりますが、一つの山場と考えているStripe連携。
ここまで連休中に終わらわせておいて、Swiftに入りましょう。
Code4StartUp ~ UberEatsを作ろう ~ Postmanのはまりポイント
Code4Startup
Task11で、27分の長丁場のレッスンがあります。
いったん全部見てから、書いてみたのですが、途中ではまりました。
「AccessToken matching query does not exist.」
これは、結構な人がはまっているようなのですが、なかなかまともな回答がついていないように思われます。
正しい回答はこちら。
https://uploads.disquscdn.com/images/bcf707b4c65186dcfcc293547fc57bbae63e2fa0fbddc89aa6b82dbdb7418f69.png
Postmanのパラメータ指定時に、Body→form-dataを指定する必要があります。
そうしないと、request.POST.get(“access_token”)がNoneになってしまうのでした。
改めて、ビデオを見返すと、ちゃんと説明してくれてますなぁ><
そして、同じ質問が、teratailに上がっていたので、初めて回答してみました。
もう少し飛ばしていきたいのですが、必ずどこかではまりますね・・・
Code4StartUp ~ UberEatsを作ろう ~ 久しぶり
Code4Startup
色々並行ででやっていると、再開方法を確立しておかないと忘れますね。
source myvirtualenv/foodtasker/bin/activate
cd foodtasker/
python manage.py runserver xxx.xxx.xxx.xxx:8000
これでhttp://xxx.xxx.xxx.xxx:8000/が動くようになる、という感じですね。
ということで、Task10まで終わらせました。
とありあえず、Task15まで一気に進めて、Tsk16からのSwiftによる顧客向けモバイルアプリ作成を早く試してみたい。
ちなみに、Pythonやってるなら、こちらも面白そうですね。
Pythonで学ぶ『ブロックチェーンプログラミング入門』が良すぎた話
関連記事 Code4StartUp ~ UberEatsを作ろう ~ Swift環境 Code4StartUp ~ UberEatsを作ろう ~ 淡々とページ追加 https://www.programmers-office.ml/?s=code4
Code4StartUp ~ UberEatsを作ろう ~ 淡々とページ追加
Code4Startup
Task 8、9の辺りは、ひたすらページ作成のコーディングをしていきます。
こういうドリル的なこと:写経も必要。
すんなりいかないところとして、
modelの作成で
restaurant = models.ForeignKey(Restaurant, on_delete=models.CASCADE)
講義の中では、on_deleteは記載していませんが、必要と怒られます。
offsetの書き方は注意
https://www.programmers-office.ml/2018/04/03/code4startup-%ef%bd%9e-landing-page%e3%82%92%e4%bd%9c%e3%82%8d%e3%81%86/
Code4Startup
シェアリング・エコノミー ―Uber、Airbnbが変えた世界 宮崎 康二 日本経済新聞出版社 2015-07-23 売り上げランキング : 88013 by カエレバ
Code4StartUp ~ UberEatsを作ろう ~ Bootstrapの適用
以前もstaticの読み込みがうまくいっていなかったのですが、settings.pyを終始して戻して保存したら、style.cssを読んでくれたようです。まだ、完全に同じ見た目にはなっていませんが。もやもや・・・
Bootstrap4 講義はBootstrap3ベースになっていますが、最新のBootstrap4を使おうとすると、色々調べながら進める必要があります。
まず、jquery等の読み込みですが、講義で参照しているbasic templateは使用できないので、Introductionを見ると、そこにStarter templateがあります。
必要なJS読み込みは
となっています。
さらに、django-bootstrap3をインストールしていますが、ここはpip install django-bootstrap4にします。
シェアリング・エコノミー ―Uber、Airbnbが変えた世界 宮崎 康二 日本経済新聞出版社 2015-07-23 売り上げランキング : 28003 by カエレバ
Code4StartUp ~ UberEatsを作ろう ~ Bootstrapの適用
Code4Startup
以前もstaticの読み込みがうまくいっていなかったのですが、settings.pyを終始して戻して保存したら、style.cssを読んでくれたようです。まだ、完全に同じ見た目にはなっていませんが。もやもや・・・
Bootstrap4 講義はBootstrap3ベースになっていますが、最新のBootstrap4を使おうとすると、色々調べながら進める必要があります。
まず、jquery等の読み込みですが、講義で参照しているbasic templateは使用できないので、Introductionを見ると、そこにStarter templateがあります。
必要なJS読み込みは
となっています。
さらに、django-bootstrap3をインストールしていますが、ここはpip install django-bootstrap4にします。
スタイルの読み込みがちゃんとできていないので見た目はもやもやしますが、とりあえず進めます。
Code4Startup
シェアリング・エコノミー ―Uber、Airbnbが変えた世界 宮崎 康二 日本経済新聞出版社 2015-07-23 売り上げランキング : 28003 by カエレバ
Code4StartUp ~ UberEatsを作ろう ~ Facebook認証
Code4Startup
続いて、oauthによるFacebook認証。
この辺の実践感がこの講座の良いところ。
https://developers.facebook.com/
スタートガイド→Facebook for Developersアカウントを作成するところから始めます。
画面構成は講義ビデオの時からは大分変っているようですが、何とか進められます。
で、django-rest-framework-social-oauth2==1.0.4をインストールすることになっているのですが、
ImportError: No module named ‘social_django’
となります。
↓
https://teratail.com/questions/115059
pip install social-auth-app-django
↓
ImportError: No module named ‘braces’
↓
pip install django-rest-framework-social-oauth2 -U
→django-rest-framework-social-oauth2==1.1.0
↓
OK
という感じで(分かりますか(^_^;;;))、結局最新バージョンでないとライブラリ間の構成が合わないという話。
requirements.txt の記述は
django-rest-framework-social-oauth2==1.0.4
のままだけど・・・
でうまくいったかと思いきや、アプリ画面を開くと
You may need to add ‘x.x.x.x’ to ALLOWED_HOSTS. のエラー。
settings.py
のALLOWED_HOSTS に追記すれば確かに起動するようになった。
https://www.deep-blog.jp/engineer/archives/4287
しかし、これまで書いていなかったのになぜ?ちょっと気持ち悪い。
Facebook認証の流れについては、
https://stackoverflow.com/questions/18995448/rails-api-authenticate-users-from-native-mobile-apps-using-username-password-or
と同じ内容の図がもう少しきれいに書かれていて、なるほど、と思いました。
そして、ブラウザ・サーバアプリ・Facebook間でのやり取りは、アプリを作る前に試しましょうということで、POSTMAN。
このJSON大流行のこのタイミングで、このツールをぶつけてくるところがなかなか(たまたま)。
python-social-auth のPipelineの説明は、ビデオ見てると行方不明になりますが、下記になります。
https://github.com/python-social-auth/social-docs/blob/master/docs/pipeline.rst
ちょっと、Facebook認証で情報を取り出せるようになるので、GDPRが気になるところ。
個人で試しているうちは気にしなくても良いかもしれませんが、早急に考えないといけないかと思っています。
Code4Startup
独学プログラマー Python言語の基本から仕事のやり方まで コーリー・アルソフ 日経BP社 2018-02-24 売り上げランキング : 204 by カエレバ