Xcode の Other Swift Flag で -D STAGING を指定したのに #if STAGING が有効にならなかった

Xcode で環境別にコンパイルするために Staging の Configuration を作ったんだけど、 -D STAGING を指定しても #if STAGING が false になっていた。 なんでかな〜 って設定眺めていたら、 Active Compilation Conditions が Debug になっていたのが原因だ…

Rails 開発で GitHub に Push して CircleCI のテストが通ったら Heroku に deploy する

CircleCI を使って、テストが通ったら Heroku に deploy するという流れを構築する。 サンプルリポジトリ: starhoshi/rails-circleci 環境 GitHub Rails 5.X Heroku CircleCI 1.X ここでのサンプルは 2.0 ではない ソースコードは starhoshi/rails-circleci…

bundle update のプルリクエストを毎日自動で作成する

Gemfile.lock を最新に保つため、bundle update を毎日自動でできるようにしたい。 Tachikoma.io というサービスもあるみたいだけど、 private repo は有料っぽいので自作した。 勝手に update されてアプリケーションがバグると困るので、 Gemfile.lock を…

MusicPlayer で音楽を再生しようとしたら __abort_with_payload というエラーが出た

import MediaPlayer ... override func viewDidLoad() { super.viewDidLoad() let player = MPMusicPlayerController.systemMusicPlayer player.setQueue(with: MPMediaQuery.songs()) player.play() } これで音楽が再生できたんだけど、再生開始した瞬間に…

TestFlight でリリースごとにアプリを配布していたらそれに助けられた

TestFlight という、アプリのベータ版などを配布する Apple 純正のサービスがある。 TestFlight - Apple Developer これのいいところは「リリースするアプリと同じアプリをテストできる」というところ。 実際にユーザが使うアプリと同じもので動作確認ができ…

Apple 特急審査 2017

ここ最近は Apple の審査が早いけど、致命的なバグなどを出してしまったら急いでレビューして欲しい、そういう時のために apple expedited review というのが用意されている。 これを使うと優先的にアプリをレビューしてくれる。 しかしこれには注意が必要で…

iTunes Connect の段階的リリースを試してみた

段階的リリースとは WWDC2017 で発表された機能。 1%, 2%, 5% ... 100% と限られた人から段階的に自動アップデートされていく。 新機能のテストや、バグが起きてないかなどの確認で使えそう。 Apple 公式ヘルプ 自動アップデート用の段階的リリース(iOS、wa…

UIView の Swipe イベントは実行して Tap は後ろの View に流したいけど出来なさそう

とある View の上に透明な UIView を載せて、 Swipe だったら透明な View でイベントをハンドリングして Tap だったら後ろの View にスルーしようとしたけど出来なさそうだった。 どういうことか こういう View があって、右にスワイプしたら数値を200にして…

Firebase Cloud Function の関数を削除する

Function を消したいけど、 Firebase Cloud Function 上では削除メニューなどが見当たらない。 その場合は GCP の方から関数を削除する。 https://console.cloud.google.com/projectselector/home/dashboard にアクセス 画面左上の「プロジェクトを選択」か…

Firebase Cloud Function をローカルで実行する

Cloud Function をローカルで実行する方法を用意してくれている: ローカルでの関数の実行 | Firebase 手順はドキュメントに書いてある通りで簡単にできる。 firebase ライブラリの更新 $ npm install --save firebase-functions@latest $ npm install -g fir…

fastlane deliver を使ってコマンド1発で Waiting For Review までもっていく

$ bundle exec fastlane release このコマンドを叩くだけでリリースビルド、iTunesConnect へバイナリ提出、IDFA 情報など入力して審査待ちの状態まで持っていけるようにした。 Deliverfile こんな感じに書いてる。 app_identifier "com.myapp" username "ap…

人間だもの

読んだ: 自戒 - <y> わかる。 自分の書くコードはクソでエンジニア向いてないからエンジニアやめたいって思うけど俺にはプログラミングしかないからコード書くことで生きていくしかないから勉強しないといけないけど勉強しても理解度が低いし人生なんのために生</y>…

個人アプリを Xcode9 Swift4 対応した時にやったこと

個人アプリ2つを Xcode9 GM で動くようにした。 これは私のアプリの場合なので、違うプロジェクトでは不要なことや、他にもっとやらないといけないことがあると思う。 やったこと 1. Xcode9 DL Xcode - Apple Developer から DL してインストール。 Xcode8も…

UITabBar の背景をすりガラスのまま Dark にする

普通の UITabBar は明るいすりガラスだけど、これを UIBlurEffect(style: .dark) と同じように暗くしたい。 Light Dark override func viewDidLoad() { super.viewDidLoad() tabBar.backgroundImage = UIImage() let dummy = UIToolbar(frame: tabBar.bounds…

また転職することにした

10ヶ月ほど前に意気揚々と 退職エントリ を書いたくせに、1年経たず退職となってしまった。 最初に断っておくと、前職よりは100倍マシだった。 けど悩みや欲望というのは無限に湧いてくるわけで、色々考えて転職することにした。 結局なんでやめんの 何か大…

fastlane pem で Push 通知に必要な p12 ファイルを生成する

iOS 用の Push 通知 証明書を生成したい。 真心を込めて手動で生成することもできるが、ここでは fastlane pem でコマンドで生成する。 fastlane pem fastlane/pem at master · fastlane/fastlane 詳細は上の README みればやり方書いてる。 gem install fas…

xcconfig を使い本体アプリと Embedded Framework を同じ環境設定でビルドする

本体アプリを Build した時に、本体アプリの CONFIGURATION を Embedded Framework 側に渡したい。 本体アプリを Debug Build Embedded Framework も Debug Build 本体アプリを Release Build Embedded Framework も Release Build というように、本体アプリ…

TodayViewController の viewDidLoad が呼ばれるタイミングについて

iOS の TodayExtension を実装していて、 TodayViewController の viewDidLoad が走るタイミングが最初はわからず苦労した。 viewDidLoad が呼ばれるタイミング 画面に表示されたタイミングで ほぼ毎回 viewDidLoad が呼ばれる。 TodayExtension を 10 こく…

EdTech Engineer Meetup #1 で「学校の iOS 端末事情」について話した #edtech_ja

Education×Technolog 業界の3社 Classi, LITALICO, Studyplus が集まって会社紹介やらパネルディスカッションやら LT やら懇親会しましょう、という会で LT してきた。 edtechem.connpass.com Lightning Talks 教育業界、というか BtoB 業界のモバイルアプリ…

Firebase, Google Analytics, Fabric, Apple App Analytics の個人的使い分け

昨今モバイル界隈ではアクセス解析に色々なサービスがあるが、それぞれにメリット/デメリットがあるため、複数併用するようにしている。4 つのサービスの個人的使い分けについて、iOS エンジニア視点で雑に書いていく。 なお、どれも無料枠での利用とする。 …

Mac の環境構築手順を整備した

今までも dotfiles と Brewfile を Github に置いて環境構築手順を整えていたが、 dotfiles は homesick、 Brewfile は homebrew-file というのを使っていたため管理がややこしくなっていた。 しかもそれらは全然 commit してなくて古くなってしまったため、…

Swift2 から Swift3 への移行がだるすぎて諦めた

1年前くらいにリリースしたアプリ があるのだが、動かなくなったというレビューがきたので修正しようと思ったのだがだるすぎる。 何がだるいかというと、 Swift3への対応が一番だるい。ライブラリを更新して、マイグレーションして… ってやらないといけない…

英語の五文型

中学・高校6年間の英語をこの1冊でざっと復習する作者: 稲田一出版社/メーカー: KADOKAWA/中経出版発売日: 2014/07/29メディア: 単行本この商品を含むブログを見る 本を読んで英語の勉強を始めた。英語めっちゃ苦手なので、とりあえず中学英語から学び直して…

古い iOS アプリが Apple に削除された

www.itmedia.co.jp これの対象になったようで、4年くらい前にリリースしたけど全くアップデートしていなかったアプリが削除された。 削除されたアプリは Anison Tube というやつで、AppStore ではもう見れなくなっている。 作ったアプリがアプリストアに14個…

血便がでた

昨日の夜になんかお腹の調子悪いな〜ってトイレ行ったら血便が出ていた。血便にも色々あるのだが自分のは鮮血で、痔とかじゃなくて腸がやばそうな感じがしていた。 allabout.co.jp これを読むと良くて痔とか腸炎で、ヤバいと癌らしいので戦々恐々として病院…

見たくない画像を置換する Chrome Extension を作った

chrome.google.com Image Switcher という、指定した画像を別の画像に置き換える Chrome Extension を作った。 仕事で GitHub とか Google とか使うじゃないですか、それに自分の見たくないアイコンを使っている人がいるじゃないですか、でもその人に「その…

Xcode で A valid provisioning profile for this executable was not found. が出た時の対処法

実機インストールしようとしたらなんじゃこりゃ、というエラーが出た。ググってみると iPad 側にインストールされた証明書が悪い、などと出たのだが自分の場合はどれも違った。 Debug ビルドなのに Adhoc 証明書を使おうとしてた のが原因っぽい。 ダメな例 …

「強いチームはオフィスを捨てる」を読んだ

強いチームはオフィスを捨てる: 37シグナルズが考える「働き方革命」作者: ジェイソン・フリード,デイヴィッド・ハイネマイヤー・ハンソン,高橋璃子出版社/メーカー: 早川書房発売日: 2014/01/24メディア: 単行本この商品を含むブログ (5件) を見る リモート…

「小さなチーム、大きな仕事」を読んだ

小さなチーム、大きな仕事 働き方の新しいスタンダード (ハヤカワ文庫NF)作者: ジェイソンフリード,デイヴィッドハイネマイヤーハンソン出版社/メーカー: 早川書房発売日: 2016/12/15メディア: Kindle版この商品を含むブログ (1件) を見る 書籍の名前は聞い…

「Web API: The Good Parts」を読んだ

Web API: The Good Parts作者: 水野貴明出版社/メーカー: オライリージャパン発売日: 2014/11/21メディア: 大型本この商品を含むブログ (7件) を見る 仕事で API は書いてないけど API は使うのでベストプラクティスを知りたい、と思って手に取った。(「えっ…