2018

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で言えば砂時計を表示させます。 とりあえず、この辺は淡々と進めます。

サイト引っ越し、そして、再引っ越し(Part2)

WordPressサイトを引っ越したものの、なかなか苦労しましたという話の後編。 前編は サイト引っ越し、そして、再引っ越し(Part1) WordPressサイトの引っ越し方法 色々あると思いますが、毎回検討するのは、こちらのプラグイン。 All-in-One WP Migration – WordPress そして、毎回容量オーバーに引っかかっている気が・・・ あまり、検索で引っかからないのですが、その後の作業の中で、以下のような方法もあるのではないか、と思っています。試してませんが、これをまとめておくと次回に役立ちそうな気はしますね。 Jetpack、UpdraftPlus、あと忘れた・・・ phpmyadminのイメージ追加 今回は結局、力業で、DBもダンプ取ってリストア、ファイルは丸ごとwp-content/uploadsを持ってくる。 そのために、是非新サイトのDBもphpmyadminで参照したいということで、イメージを追加します。 これ自体は比較的すんなりいきました。下記を参考にさせていただきました。 https://qiita.com/furu8ma/items/50718efebee20fd24517 /home/wordpress/mariadb/docker-compose.yml に下記を追加します。 phpmyadmin: image: phpmyadmin/phpmyadmin environment: – PMA_ARBITRARY=1 – PMA_HOST=db-data – MYSQL_USER=●●● – MYSQL_PASSWORD=●●● – MYSQL_ROOT_PASSWORD=●●● links: – mariadb ports: – 8080:80 volumes: – /sessions networks: – common_link PMA_HOSTのdb-dataは、この直前で定義しているデータベースデータのコンテナ名です。 また、8080で公開されるので、ファイアウォールのルールで8080を解放する必要があります。 ファイルの移行 DB移行後、最初はそのままデータをINSERTしてしまったら、最初のページから旧サイトに飛ばされるという事態になり、文字列を変換してからINSERTするように修正。 次にファイルの移行ですが、こちらについては、まずファイル20MB制限があったので(何の話か忘れてしまいましたが)、分割してzipでアップしました。 そして、GCE初期状態ではzipが入っていなかったためインストール。 sudo apt install unzip なぜだか、ずいぶん画像リンク切れが多発していますが、とりあえずは良しとします。 サーバ停止 とりあえず良しとして、アナリティクスの設定をしていたら、数日後、サイトの検索が利いていないことに気づきました。 おかしいと思い、Dockerのダウン・アップをすると利くようになるので、はて?と思っていたら、しばらくするとまた同じ現象。そして、だんだん間隔が短くなっていき、最後は、SSHが接続できなくなってしまいました。 Webコンソールだからかなと、ここでgloudコマンドツールをインストールすることにします。 しかし、gloudコマンドツールは使えるようになっても、そのSSHはやはり使えません。 Google公式トラブルシューティングということで、 https://cloud.google.com/compute/docs/troubleshooting/troubleshooting-ssh?hl=ja を試していきます。 「インスタンスをシャットダウンせずに検査する」あたりは、今回の件とは関係なくためになる、GCEの色々な機能の勉強になる手順でしたが、結局デバッグインスタンスにも接続できません。

サイト引っ越し、そして、再引っ越し(Part1)

サイト引っ越しの目的 Lighthouseを知って調査してみると、そういえばこのご時世にHTTPS対応されていない。 また、体感としてページの読み込みが遅い。 サイト構成も、イマイチに感じられてきた。 ということで、引っ越しをすることにしました。 さくらのレンタルサーバは使っているので、それでも良いと思いましたが、新しいことにも挑戦しようということで、引っ越し先を検討したところ、こちらのサイトが面白かったので、これに従いました。 GCPの無料枠でdev.toなみの爆速WordPress環境を構築する 引っ越し手順でのトラブル色々 上記サイトの手順は、非常に良くできているので、基本的には、そのまま従えば大丈夫なのですが、私の環境の問題等で、若干はまったところがありました。 freenom 大した話ではないですが、最初登録した際にエラーになりました。 そういう場合は、Service > My Domainsから確認できる。 プロキシサーバーコンテナを起動(nginx-proxy) 今回の方法では、Docker-composeで、いくつかのDockerコンテナを起動して、それらを連携して動作させます。 大きな手順としては、Dockerインストール、Docker-composeインストール、Dockerネットワーク作成、プロキシサーバーコンテナを起動(nginx-proxy)、と進めていくのですが、最初のコンテナであるnginx-proxyの起動でエラーとなりました。 Creating nginx-proxy … error ・・・ ERROR: for nginx-proxy Cannot start service nginx-proxy: b’driver failed programming external connectivity on endp oint nginx-proxy (・・・): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use’ という感じです。よく読めば、ポート80番がバッティングしているとわかります。 元々、勉強用に色々立ち上げていたGCE環境のため発生した問題で、綺麗な環境であればこれは発生しないと思われます。 これに対して、最初は、/home/wordpress/nginx-proxy/docker-compose.yml を編集して、80:80 → 8088:8088 と変更しました。 これにより、起動するようにはなりました。ただ、その後結局他のエラーが発生し、そもそも新しいサイトを8088で公開するのもありえないので、 sudo service apache2 stop sudo update-rc.d -f apache2 remove

Meet Magento 2018 – Google講演

先日参加した Meet Magento 2018 得られたものを書きたいと思いつつ、多すぎてどうしようという状態。 とりあえず、書きなぐっていきますが、息切れの可能性しかなし。 The path to purchase with Google 最後はGPayの宣伝!と思いつつ、色々なサービスの紹介が面白かったです。 https://httparchive.org/ 資料を作る際の統計情報的な根拠として、使い勝手がよさそうですね。 revenue impact calculator 検索すると、https://www.thinkwithgoogle.com/feature/mobile/ に行けと言われるます。で、このサイトを調べようとすると、Domain not found!弱小すぎてダメみたい。 Lighthouse https://developers.google.com/web/tools/lighthouse/?hl=ja に情報がありますが、むしろ簡単なのは、F12デベロッパーツールのAudits。 さらに、セミナーと同日発表になっていますが、PageSpeed Insights にLighthouseが組み込まれたとのこと。 で、このサイトを調べようとすると、Lighthouse was unable to reliably load the page you requested! 弱小すぎるにも程がある。 Lighthouseをもう少し使ってみる さて、せっかくなので、F12→Autditsをもう少し使ってみます。 まず、Performanceから試してみると、画像が大きいよ、と言われます。最近、ページ上部にスライダー画像を付けましたが、早速悪影響があるということで、画像を調整しました。最近アナウンスされた、Googleの https://squoosh.app/ を使ってみました。既存のアップロード済み画像を一気に調整できたらうれしいです。 SEOについては、meta descriptionがないということだけだったので、さっと付けられるところだけ付けていきます。

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