Swiftデバッグビルドでの最適化オプション
React Nativeで使うために高速フーリエ変換のためのコードをJSで書いていたんですが、色々とあってiOSネイティブで作り直してみるということがありました。 同様のコードをSwiftに移植して、さぞ速くなるだろうなーと思ったら激遅。JSだと1〜2秒ぐらいで終わっていた処理が6秒ぐらいかかるようになりました。
React Nativeで使うために高速フーリエ変換のためのコードをJSで書いていたんですが、色々とあってiOSネイティブで作り直してみるということがありました。 同様のコードをSwiftに移植して、さぞ速くなるだろうなーと思ったら激遅。JSだと1〜2秒ぐらいで終わっていた処理が6秒ぐらいかかるようになりました。
先日React NativeでやったことのiOSネイティブ実装版です。 React Native版はこれ↓ https://blog.piyo.tech/posts/2018-05-20-image-rgba-react-native/ んで、Swift版なんですが、いい感じに実装してくれているEasyImagyというライブラリを見つけたのでこれを試してみました。
iOSのUIをそのまま画像にする方法です。AVCaptureOutputで撮った写真と何かのViewを合成した画像を出したいみたいなときに使えます。 以下のコードでUIImageに変換ができます。ここでのViewは色々なSubviewなんかが入っている、画像として取り出したいViewです。
iOSのカメラというかAVFoundationにはAdobeのLightroomアプリのようにホワイトバランスやシャッタースピードなどをカスタマイズするAPIがあります。 ドキュメントを読んでみて難しい部分があったので整理しておこうと思います。
iOS11から使えるようになったVisionフレームワークというのを使うとものすごく簡単に顔認識が可能です。裏ではCoreMLが使われているということで機械学習ベースの顔認識のようです。 ちょっと動かしてみようと思ったときに最適なサンプルアプリケーションをGitHubで見つけましたので紹介しておきます。おかげで同じようなことを実施するアプリを作るときの参考になりました。
AVCaptureOutputで撮影した写真はUIImageViewに表示したり本体のフォトアルバムに保存する限りは問題ないのですが、別のソフトウェアやライブラリが向きを正しく解釈してくれなくてうまくいかないというケースが起こります。
いやー、7年iOSやってても全然しらなかったんですが、Segueを自作するとちょっと便利ですね。 モーダルで開いたViewControllerを閉じるときにボタンを置いてコードを書くのは面倒だなーと思ってたんですが、閉じるボタンの操作をSegueで定義できます。
SCLAlertView-Swiftがサクッと使うのにいい感じです。 https://github.com/vikmeup/SCLAlertView-Swift 簡単ですが、使用例です。サンプルアプリにボタン3つおいておきます。 showSuccessで成功時のアラートが、showErrorでエラーじのアラートがそれぞれ出せます。他にも
React Nativeでアプリを書くことができたとしても、アプリをリリースする先はiOSのApp Storeであったり、Google Playだったりします。リリースするためには各プラットフォームでの作法や、コード上でやっておかないと行けないことが色々とあります。
社内用に作ったiPhoneアプリをメンバーに配るのにTestFlightのベータ配布を使いますが、いちいちメールアドレスを使うのが面倒です。Google Playにはオープンベータテストにしておくと参加用のURLから勝手に入ってもらうことができるのに、TestFlightはできないのかな、なんて調べていたら自分でホスティングすれば似たようなことを実現できることがわかりました。