酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

開発

ffmpegを使って動画編集する

動画編集を扱うので一番簡単なのは ffmpeg を使うことです。 macOSへのインストール $ brew install ffmpeg ffmpegのインストールはものすごい時間がかかります。正確な時間は計測していませんが、MacBook Proでも20分くらい。インストールというよりダウン…

R.swiftを v5.2にアップデートすると rswift が消滅して R.generate.swift が生成できなくなってしまう

先日、急に R.generate.swift が生成できなくなる問題に遭遇しました。 げ。急にR.swiftが使えなくなって、調べてみたら Pods/R.swift/rswift がいなくなってる— さくさん (@ch3cooh) 2020年5月23日 R.generate.swift が生成できない R.swiftを v5.2.2 へア…

Androidで 動画編集できるライブラリを探す (2020年5月調査)

iOSアプリで動画編集したい場合には「SwiftでAVFoundationを使って元ある動画から異なる動画を生成する (動画編集の基本編) - 酢ろぐ!」で取り上げたように、標準API(AVFoundation) を使うことで動画編集処理を実装できます。 一方、Androidではこれといっ…

iOS 13.4シミュレータで AVVideoCompositionCoreAnimationTool を使うとアプリがクラッシュする

現在、iOSアプリ内での動画編集機能を実装しています。 過去に 動画にウォーターマークをつける方法については調査済みでしたので、簡単に対応できると考えていましたが、謎のアプリクラッシュ現象が発生してしまいお手上げになってしまいました。 左:ウォ…

SwiftでAVFoundationを使って元ある動画から異なる動画を生成する (動画編集の基本編)

SwiftでAVFoundationを使って動画を編集をできるようになりたいと考えている。まずは基本を抑えるために、元ある動画の情報をそのまま使って異なる動画を生成する処理を本記事では紹介したい。 本記事は「AVFoundationを使ったiOSの動画編集 - Qiita」を参考…

Swiftで Photos.frameworkを使って動画からサムネイル画像を生成する

UIImagePickerControllerを使うと静止画を選択することができます。それだけではなく動画も選択することが可能です。選択した静止画(または動画)はPHAssetオブジェクトの形でデータを扱うこととなります。 本記事では、取得したPHAssetオブジェクトからサ…

Bitriseで iOSアプリのビルドが遅い原因は Firebase SDKなのか検証する

Bitriseで iOSアプリのビルドが遅いのは Firebase SDKが原因なのか検証しました。 検証した理由としては、CocoaPods経由でしかインストールできない Firebase SDK を頑張ってCarthage経由にした場合にどれくらいビルド時間を短縮できるのかのおおまかな指標…

Node.jsで Expressのパスパラメータを取得してFirestoreのデータを表示する

Express.jsには ルーティング機能があり、https://****.web.app/cards や https://****.web.app/cards/sa01a_001 にアクセスした場合にそれぞれ指定した index.js が呼ばれる仕組みがある。 Expressのルーティング機能 app.js (Cloud Functionsで動…

Node.jsで FirestoreにJSONデータをアップロードする

温度計センサーや株価データなど、ローカルPCにあるデータをCloud Firestoreにアップロードしたいことがあるかと思います。 Cloud Firestore に JSONデータ をアップロードする たとえば、以下のような s01a.json ファイルがあるとします。このデータをFires…

Node.jsで コマンドラインのパラメータを取得する

コマンドラインのパラメータを取得する node boo.ts /PATH/foo.json を実行したとき、3番目のパラメータ(つまり foo.json の部分)を取得したい。 console.log(process.argv); 上記の js を書くと、ターミナルに配列が出力された。 [ '/Users/ch3cooh/.nodebr…

#一人GWハッカソン 2020では ptcgnote のアップデートをしました

去年の10連休あったので一人GWハッカソンではポケカデッキ構築アプリ「ptcgnote」をリリースしました。今年は5連休とちょうど半分でしたので、まとまった時間が取れずじまいでした。悲しいかなTwitterを見てだらだら過ごしました。 これではいかんと思い、若…

Bitriseで iOSアプリのビルド速度を cocoapods-binary を使って高速化する

普段デバッグ時などは気にならないのですが、ipaファイルを生成する(アーカイブする)と、とても時間がかかって困ります。「bitrise.ioでiOSアプリのビルド速度を高速化したい!」という気持ちで、昨晩から cocoapods-binary の評価をしています。 github.com…

UISearchBarをUINavigationBarに設定して、画面遷移すると画面がめり込む/画面に隙間が開いてしまう

iOS 13以降で、UISearchBarを navigationItem.titleView に設定している場合や、UISearchControllerを navigationItem.searchController に設定している場合、ドリルダウンで画面遷移して戻ってくると、画面がめり込んでしまう問題があります。これは UISear…

UISearchBarをタップしたらテキストを入力していなくても searchResultsControllerの背景を表示したい (UISearchController使用時)

UISearchControllerを使うと、入力したテキストをベースにして検索結果を表示させられます。OSとして標準的な検索手段をユーザーに提供することができます。 ただ、検索結果の絞り込みに UISearchController を使っている例は多いのですが、実際には navigat…

Facebook SDKをCarthage経由でインストールする (2020年3月版)

開発中のアプリでFacebook認証したいという要件が追加され、およそ2年ぶりにFacebook SDKを導入することになった。CIがJenkinsではなくbitriseに移行しているため、ビルド時間短縮のためにCarthage経由でインストールしたらしっちゃかめっちゃかになった記録…

SwiftでAVFoundationを使って複数枚の静止画から動画(mp4)を生成する

動画生成について知識を深める必要がでてきました。まずは簡単なところから始めるべく複数枚の静止画から動画(mp4)を生成しました。Xcode 11.3.1 / Swift 5.1を使って実装しています。 事前準備 事前に用意したものは3枚の静止画です。1024 x 1024 ピクセル…

Bitriseでトラブル発生!Cartfile.resolved がルートディレクトリにないリポジトリのビルドが通らない

2020年になってから本格的にBitriseを使うようになりました。いままでJenkinsを使っていましたが、Jenkins係に負荷が押しつけられることになっていました。 BitriseはCIサービスのなかでもかなり簡単な方だとは思いますが、いままでジョブスクリプトを手書き…

Xcode 11.xで新規プロジェクトを作成したときに window?.rootViewController を変更しても画面が変わらない

久しぶりにXcodeで新しいプロジェクトを作成しました。 ログイン画面とホーム画面の切り分けを window?.rootViewController で実施していました。他のプロダクトでは使えているのに新規作成したプロジェクトでだけ window?.rootViewController を変更しても…

KotlinでBitmapオブジェクトを保存して、ShareCompatで他のアプリへ画像を共有する

過去にAndroidアプリで画像をシェアする実装をしていたけど、ここ最近ご無沙汰で昔のコードを探してみても file://〜を使っていたり、android.support.v4.content.FileProvider を使っていたり と、セキュリティ上の問題やAndroidX対応などで、そのまま使え…

UIActivityViewControllerを使ってFacebookとFacebook Messengerへ画像を共有できない

撮影した写真を加工して、UIActivityViewControllerを使って共有する機能を実装したところ、「FacebookとFacebook Messengerに画像を共有できない」とフィードバックをいただきました。 処理としては非常にシンプルに生成したUIImageをUIActivityViewControl…

UITableViewControllerにおける「UITableViewCell上に配置したボタンの座標」を取得する

たとえばUITableViewControllerでユーザーリストを表示している。UITableViewCell上のフォローボタンをタップしたらpopoverを表示させたい。 ポップオーバーを表示させる基準となる sourceViewとsourceRect は下記のようなコードを書いていた。 vc.popoverPr…

Cloud Functions for FirebaseでGETリクエストとPOSTリクエストでパラメータを取得する

Cloud Functions経由でFirestoreにアクセスできるようになったのにとても気分を良くしたので、この調子でCloud Functions for Firebaseの使い方を学んでいきたいと思います。 今回は、Cloud Functions for Firebaseで定義したHTTPトリガーで、GETとPOSTリク…

Cloud Functions for FirebaseでFirestoreのデータを返す

Cloud Functions for Firebase (Firebase Functions)で、Firestoreに格納しているデータをJSON形式で返せるか試してみました。 Cloud Functions for Firebaseをデプロイする FunctionsでFirestoreのデータを読み出す Firestoreで取得したデータを整えて返す …

macOSでArduino UNO R3にDFUモードでプログラムを書き込む

つい先日、Arduino UNO R3を購入しました。正確にはArduino UNO R3互換機の「ELEGOO UNO R3」です。 ELEGOO UNO R3基本部品 初心者スターター 互換キット チュートリアル Arduino用メディア: 過去に触ったArduinoは、大人の科学マガジンの付録のArduino互換…

macOS catalina(10.15)にアップデートしたら pod updateが使えなくなった

macOS catalina(10.15)にアップデート後にpod update をすると、下記のようにエラーが発生します。 -bash: /usr/local/bin/pod: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby: bad interpreter: No such file or directory rbenvを…

UITextViewでNSAttributedStringを表示すると設定値が反映されない

UITextViewでNSAttributedStringを表示すると、あらかじめ設定していた値が利用されず謎の表示になる。ポケカのデッキ構築アプリを作っているんだけど、v1.1.3で雑に入れた対応がことごとくバグ出してて、余裕ないときに書いたコードはいかんなぁと思った次…

App Store向けのバイナリをエクスポートするとき「No Apple Distribution certificate found for ...」とエラーが表示される

ビルドにXcode 11を使うようになってから、いままで発生していなかったビルド時の不具合が発生するようになってしまいました。xcodebuildでSYMROOTオプションをつけているとビルドができなくなってしまう事象等です。 blog.ch3cooh.jp App Store向けのバイナ…

Xcode 11.xでxcodebuildを使ってビルドすると、不正なxcarchiveができるようになってしまった

いまでもJenkinsでxcodebuildを使ってビルド作業をしています。 久しぶりに新規プロジェクトのビルドスクリプトを組んだところ、不正なxcarchiveができるようになってしまいました。ipaファイルを出力するためにxcodebuild -exportArchiveを実行すると下記の…

iPadアプリでなぜか画面が回転してしまう不具合

iPadアプリを縦画面固定にしたいけれど、なぜかクルクル回転してしまう。Device Orientationを確認してもPortrait(縦)しかチェックされていない。 Info.plistを開くと下記のようになっていた。XcodeでみるInterface Orientation設定はiPhoneでしか有効になら…

clgをXcode 11でビルドできるようにした

griffin-stewie/clgをXcode 11 (Swift 5)でビルドできるようにしました。 今週末はダークモード対応をしていたことで、Colors.xcassets を利用していきたいという気持ちが高まりました。ふだん使いの clg でダークモード対応すべく、Colors.xcassets 出力で…