TypeScript で `error TS2300: Duplicate identifier` がでたが yarn にしたら治った

npm ライブラリを install して tsc したらこんなエラーが大量に出た。 node_modules/@google-cloud/firestore/types/firestore.d.ts(28,15): error TS2300: Duplicate identifier 'DocumentData'. node_modules/@google-cloud/firestore/types/firestore.d.…

JavaScript でテストを書く時のライブラリについて調べた

1年半前は 業務 とか 趣味 で TypeScript を使ってテストも書いてたんだけど、最近は iOS ばかりで忘れてしまっていた。 けどまた仕事で同じような環境を作ったので、テストを書くときにどういう Framework があって役割は何かをメモっておく。 テストフレー…

USUM が発売されてから、ダメージ計算Zアプリではどのようなポケモン・技がよく計算されているのか

adventar.org Pokémon RNG Advent Calendar 2017 13日目です! 2017年11月17日にポケットモンスター ウルトラサン・ウルトラムーンが発売されてからもうすぐ1ヶ月が経とうとしています。 私が開発しているダメージ計算Zという iOS アプリは11月20日に USUM に…

PlantUML でシーケンス図を書いたがめっちゃ良かった

PlantUML シンプルなテキストファイルで UML を作ることのできる、オープンソースのツール 今までは astah とかでユースケース図とかシーケンス図書いてたんだけど、 GUI で書くの辛いなと思って PlantUML というのを使ってみた。 コードで UML を書ける、今…

プログラミングでポケモンのダメージ計算をしてみよう

adventar.org Pokémon RNG Advent Calendar 2017 7日目です。 昨日は ポケモンの実数値や努力値をプログラミングで計算 するという内容を書きました。 今日はダメージ計算をしてみようと思います。 この記事はプログラミングがわからない人には難しい内容で…

ポケモンの実数値や努力値をプログラミングで計算してみよう

adventar.org Pokémon RNG Advent Calendar 2017 6日目です! 乱数の話ではありませんが、ポケモンの実数値, 努力値をプログラミングで計算する話をします。 この記事は、 プログラムに興味あるポケモン好きな人 ダメージ計算などで実数値の調整をしてるけど…

iOS Test Night #6 1周年 まとめ #ios_test_night

testnight.connpass.com iOS Test Night #6 にブログ枠として参加したので、そのレポートです。 ㊗️ 1周年 開始前の挨拶として、Qiita に投稿された iOS のテスト関連の記事がこの一年で増えたのか? という話から始まりました。 結果として、増えはしたけど…

iTunes Connect に Upload 後の bitcode 再コンパイルでエラーが出た

iTunes Connect にバイナリのアップロードは完了したんだけど、 iTunes Connect: Processing stopped for HogeApp みたいなメールが来た。 何か問題があって bitcode の再コンパイルが止まってしまったようだ。 メール全文: iTunes Connect: Processing stop…

iTunes Connect に Upload しようとしたら Info.plist 関連で怒られた

Unable to process application at this time due to the following error: This bundle is invalid. The Info.plist file is missing or could not be parsed. Please check it for embedded control characters.. iTunes Connect にバイナリアップロードし…

console.log で改行させたくない

node: v8.2.1 でのはなし。 JavaScript でログを出力するときは console.log が一般的だけど、これだと改行が入ってしまう。 console.log('hoge') console.log('hoge') # hoge # hoge そうじゃなくて、 hogehoge って続けてログ出力してほしい。 ググる node…

Stripe の Order で送料を商品によって変更するときは Callback API を実装する必要がある

Stripe の Order で送料を設定するパターンは 4 つある。 Free Flat-rate Callback Provider Stripe Document この情報は 2017-11-29 時点の情報であり、正確な情報は Orders API Dynamic Shipping and Tax Calculation を参照してほしい。 Order の種類 Ord…

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にして…

Realm でローカルのデータベースに大量のデータを追加したい

10万件くらいのデータを Realm に持ってそのデータを使って図鑑とかが見れる iOS アプリを作っている。固定データをわざわざ API から取得するのは無駄なので、最初からアプリ内にデータを保持する設計になっている。 そのアプリに2万件くらいのデータを追加…

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 こく…