Guild icon
swift-developers-japan
開発環境, ライブラリ / ios
Avatar
iOS11b7 b6よりも不安定かも…。 b6ではフリーズとかしなかったのに、b7でホーム画面で操作が効かなくなる現象起きた。 コントロールセンターと通知センターの表示できるけど、アプリ起動やホーム画面2ページ目とかAppSwitcherが効かなくなった。 ->とりあえず再起動で直った
Avatar
iOS10でも結構フリーズ起きません?
Avatar
iPhone6sとiPad Pro(9.7)で使ってた限りでは無かったと思いますん🤔
Avatar
iOS11 b8がリリースされた模様。 なお、Xcode9は、b6のまま…😂
Avatar
beta9がiOSとtvOSで出ましたね 結構スパン短くなって来ましたか…
Avatar
omochimetaru 9/1/2017 1:24 AM
xcodeまだbeta6だ
Avatar
イベント日発表されましたし、Xcode含めGMはよ来て…
Avatar
omochimetaru 9/1/2017 2:27 AM
たしかに。
Avatar
今 iOS 11 用アプリ開発中だからまだ来ないでほしいw
Avatar
3日間隔ほど短いのはイレギュラーですね。 GM版は大抵新型iPhone発表日(今年は9/12)で、その1週間くらい後に正式版リリースというのが例年の流れだった気がします。 あと、iOSでbeta 9まで行ったのは過去最長かもです 🤔 参考に去年の流れ: http://tools4hack.santalab.me/ios10-gm-release.html
6月14日より開始されたiOS 10ベータテストですが、先ほどついに【iOS 10 GM】がリリースされました!正式リリース日も発表され、それに向けての最終版となります。
Avatar
お、じゃあまだ GM まで少し余裕ありそうですね。
🤓 1
Avatar
そういえば、iOS11でTwitterとかFacebookのアカウント設定項目が消えてる!って一時小さく騒ぎがあった気がしますが、あれは結局そういう仕様なんですかね?
Avatar
そういう認識ですが、Twitterインストールしてても共有時にアラート出るままなのは謎です🤔(Facebookは当初から出てない) http://qiita.com/tatetate55/items/6e72b0d8e4389f588871
social.frameworkを使用してtwitterやfacebookのボタンを設定しているところはシェアができなくなります。 depracatedで後ほど使えなくなるという訳ではなく、iOS11端末かつtwitterもfa...
Avatar
norio_nomura 9/1/2017 3:20 AM
Facebookのカレンダーとかそのまま残ってて、アカウント設定消えてるからカレンダーを消せなかったりする。まあ問題はないのだけど。
🤔 1
Avatar
GM版から正式版って確かアップデートできませんでしたよね?
Avatar
GM->正式版は確かビルドナンバーが同じである限りできないと思います(モノに差異がないので)
👌 1
Avatar
iOS11 beta10はくるのにXcodeはbeta7来ないとか😭
Avatar
この分だと次は GM ?
Avatar
omochimetaru 9/7/2017 1:10 AM
iOSかなり数字伸びましたね
Avatar
明日滑り込みとかもあり得なくは無さそうですが、12日のGMな気がしますね🤔
Avatar
iOS 11 beta 10 にアップデートしても Xcode 9 beta 6 で実行可能なんでしょうか?
Avatar
できます👌
Avatar
ありがとうございます😀
Avatar
逆にXcode 8でiOS 11上で実行する時は、Xcode 9からイメージコピーしてくる必要ありますが。
Avatar
おお、そっちは盲点でした・・・。
Avatar
I want to use Xcode 7 with iOS 10. As I understand, working with iOS 10 beta requires Xcode 8 beta, so I should upgrade my Xcode. However, my code can't be built by the new compiler, so I want to ...
😍 2
1:24 AM
ちょっとバージョン違いますが、iOS β版使うときの毎年の儀式です( ´・‿・`)
Avatar
Xcode9のGM版、iOS11のシミュレーターでコントロールセンターが開けない…?
Avatar
右上隅を下にスワイプです
4:33 AM
コントロールセンター開く要領で右上です
Avatar
正直なぜ下をForce TouchでHOMEに戻る仕様にしなかったのか謎です
Avatar
iPadのiOS 11だと下からスワイプでコントロールセンターとアプリスイッチが合体したやつが出てて、それは直感的でしたが、iPhone Xは初め分かりにくいですね
Avatar
force touchそのうち無くなると読んでる
😩 1
Avatar
なくなりそう、iPad未だに搭載してないし
4:35 AM
というかiPhone Xそもそもtaptic engineあるん?
Avatar
iPhoneX以外のiPhoneでもコントロールセンター開こうとすると画面がぼやけるだけで開けない🤔
Avatar
多分開くこと自体は成功していて、アイテムが無いだけなのかなと
Avatar
なるほど
Avatar
iPhone Xの仕様ページ探してもTapticのTaの字もない
Avatar
8だとあります?
Avatar
まあ8のページにもないから本当わからないんですよね
Avatar
7はどうでしょう?なくないですかね?
Avatar
7もないですね
4:40 AM
https://smhn.info/201709-apple-iphone-x-matome smhnによるとあるらしい
Appleは日本時間9月13日午前2時から、米クパチーノの新本社にて、スペシャルイベント「Let’s meet at our place」を開催。従来モデル後継機の「iPhone 8 / 8 Plus」とともに、新型フラッグシップスマートフォン「iPhone X(アイフォーン テ...
Avatar
当たり前のように付いている、みたいな扱いなのかなと捉えてました
4:41 AM
でも、その記事はどこで判断したのかは気になります 🤔
Avatar
私、気になります!(アイコン風
4:43 AM
Control Centerも長押しでForce Touchと同じ扱いになりますしね
4:44 AM
というかみんなが望んでるのはMacBookのTrack PadのようなフィードバックがあるForce Touchだからな…今のiPhoneのTaptic Engineだと貧弱すぎて全然ボタン押してる感がなくてクソい
4:46 AM
あ、iPhone XのページにTaptic Engineは書いてないけど3D Touchはちゃんと書いてる、ならばありますねやっぱ(ならなんで下をForce Touchの仕様にしないんだよクソが!
👀 1
4:46 AM
徹底的に生まれ変わった新しいiPhone Xは、オールスクリーンディスプレイとA11 Bionicを備えています。仕上げ、容量、サイズと重量、ディスプレイ、チップ、カメラシステム、バッテリー駆動時間、オペレーティングシステム、内蔵アプリケーションなど。iPhone Xの詳しい仕様と新機能をご覧ください。
4:48 AM
@2xはRetina Display、@2.4xはRetina HD Display、@3xはSuper Retina HD Display、さて@4xの時はどうなるんだろ?Hyperを使うのかUltraを使うのか
Avatar
@2.4x ってPlusのこと指してます?
Avatar
Plusです
Avatar
iPhone 7 (@2x)でもRetina HDなので、密度で変わっている訳ではなさそうです。 https://www.apple.com/jp/iphone-7/specs/
これが、7。かつてないほど進化したiPhoneです。仕上げ、容量、サイズと重量、ディスプレイ、チップ、カメラシステム、バッテリー駆動時間、オペレーティングシステム、内蔵アプリケーションなど。iPhone 7とiPhone 7 Plusの詳しい仕様と新機能をご覧ください。
Avatar
素材は@3xですが実質画面表示は@2.4なので
4:52 AM
7でもRetina HDでしたか 🤔
Avatar
今回は良い感じの有機ELディスプレイ(発表で比較表がありました)で、Super Retinaと読んでいる感じでした
Avatar
HDは一体何を指しているのか 🤔
4:53 AM
なるほど
4:56 AM
つまりppiが高いからRetina、True ToneがあるからHD、そして有機ELだからSuper、という感じの羅列になるわけですかね?
Avatar
そんな気がしますね 🤔
Avatar
いずれは「プリキュアスイートセッションアンサンブルクレッシェンドフィナーレ」みたいな名前になりそう(小並感
Avatar
あ、iPhone 6からRetina HDだったようなのでTrue Tone区切りではなさそうです。
5:00 AM
iPhone 6 と iPhone 6 Plus の液晶ディスプレイを詳しく紹介します。(画像:Apple)一番最初に気付くのは、サイズです。iPhone 5s/5c は4インチ液晶を搭載していました
5:01 AM
iMacは普通のRetinaですね https://www.apple.com/jp/imac/specs/
解像度、高さ、重量、容量など、2つのサイズのiMacの仕様をご覧ください。
Avatar
iPhone Xのシミュレータ、通知センター開いた時下が「Press」 home to openってなってるけどどゆこと??バグ?仕様?
🤔 1
Avatar
ハンズオン動画見たら、Swipe up to unlock になってますね。
5:26 AM
シミュレーターのバグですかね
Avatar
つまりこれはGM2が来る流れですかね(多分来ない
Avatar
Deleted User 9/13/2017 5:27 AM
Siriの設定画面もPress Home for Siriになってますね
Avatar
というか unlock なんですね
5:27 AM
Swipe up to open なような 🤔
Avatar
あ、コレスリープ画面じゃなくて通知センター画面です
5:28 AM
スリープ画面なら多分Unlockで合ってるはずかと
5:28 AM
と思ったらシミュレーターはスリープ画面もopenだった 😇
Avatar
はい、ほとんど同じなんですよね、iOS 11だと
Avatar
ロックしてるかしてないかの区別はあるはずだと思ったのですが、シミュレーターの場合ロック画面でもデフォルトでFace IDによるロック解除済みの状態ですかね?
Avatar
指紋認証解除した状態だと Press home to open なので、手に持って顔認証解除した状態だと Swipe up to open じゃないかなと思った次第でした。 (edited)
Avatar
なるほど、確かにシミュレーターはパスコードとか設定してないしね 🤔
Avatar
ハンズオン動画見たら、Swipe up to unlock になってますね。
この時点では本当にロックかかってて、Swipe操作と同時に顔認証アンロックかかっているのかもですが(それなら文言もしっくり)。
5:31 AM
Engadget 日本版 YouTubeチャンネルより。アップル新製品発表会会場から、iPhone X, Apple Watch series 3, iPhone 8のハンズオン動画をどうぞ! 撮影はACCN編集長。
Avatar
謎のPress
5:33 AM
Force Touch対応のMacBook Proは私物で家に置いてるのまじつらい
5:33 AM
誰か試してーTrackPadのForce Touchでロック解除できるかどうか(他力本願
Avatar
@2.4x ってPlusのこと指してます?
なんか違うような気がしつつ僕の計算の仕方がおかしいのかなと思ってましたが、Plusは2.6xが正しそうです。 https://developer.apple.com/library/content/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/Displays/Displays.html#//apple_ref/doc/uid/TP40013599-CH108-SW6
Avatar
ああ2.6でしたね、覚え間違いました 😇
👌 1
6:12 AM
(人間が覚えられない解像度に人間が覚えられないスケールを平気で作ってしまうアップルが悪いんだよ!!!!!!!!(藤原竜也風
👊 2
Avatar
iOS11でスクリーンの動画キャプチャできるやつ、「どこをタップしたか」も含めて録画できるかどうか分かる方いますか?
Avatar
シミュレータだったら○が描画されるからわかるよ 実機はしらない
Avatar
iOS11とXcode9がリリースされたー!NDA解禁だー!
👍 7
Avatar
fastlaneにてfastlane betaするとXcode9でコケる問題、Fastfileに下のオプション付けると問題が解消されるみたいですね export_xcargs: "-allowProvisioningUpdates" https://github.com/fastlane/fastlane/issues/9589
New Issue Checklist Updated fastlane to the latest version I have read the Contribution Guidelines Issue Description Extension of #9458 Project builds but come export for ad-hoc or release. I g...
👀 2
4:48 AM
Xcode9からデフォルトで有効にしておけばってPRは立ってるもののマージされてない模様 https://github.com/fastlane/fastlane/pull/10345
Avatar
Action ExtensionからLivePhotoにアクセスしたくて調べたら、まっとうな方法ではアクセスできないらしい事を知った。 https://openradar.appspot.com/29924331
4:35 AM
iOS 9.1のリリースノートには If you have a sharing extension, you can also get `PHLivePhoto` objects by using `NSItemProvider`. とあるけど、実際にはできない。iOS 9.1リリース時点では出来たのか不明。 https://developer.apple.com/library/content/releasenotes/General/WhatsNewIniOS/Articles/iOS9_1.html
Avatar
URLSessionをプロキシ越しに使うとお漏らしする・・・・・
7:44 AM
もうちょっとで再現手順作るので,お時間ある人,助けてください.
Avatar
これかもしれない
Avatar
You will, alas, just have to wait for NSURLSession engineering to fix them.
身も蓋もないw
Avatar
再現性コードいらんなぁ.
12:17 AM
とりあえず,バグレポートを僕も書いておくか
Avatar
daisukeokaoss 10/28/2017 5:29 AM
self.dissmissLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 50, height: 50)) self.dissmissLabel.font = UIFont(name: "Bold", size: 100) self.dissmissLabel.text = "×" (edited)
5:30 AM
これで、fontのサイズが指定できるかなと思ったら、サイズが指定できてないみたいなので、わかる人いらっしゃいますか?
Avatar
フォント名の Bold が変なような?
Avatar
Kishikawa Katsumi 10/28/2017 5:49 AM
UIFont(name: "Bold", size: 100)nil が返って、何も指定しないデフォルトになってるんじゃないですかね。
5:49 AM
原因はおもちさんがおっしゃってるようにフォント名だと思います。
Avatar
daisukeokaoss 10/28/2017 5:49 AM
お、ありがとうございます
5:50 AM
self.dissmissLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 50, height: 50)) self.dissmissLabel.font = UIFont(name: "HiraginoSans-W3", size: 100) self.dissmissLabel.text = "×" これで、サイズ指定できました
5:51 AM
フォントnilでも、表示はされるんですね
Avatar
Kishikawa Katsumi 10/28/2017 5:53 AM
nilの場合はデフォルトの17ポイントのシステムフォントになります。それかattributedTextでスタイルとともにテキストを指定している場合はそっちが優先。 (edited)
Avatar
daisukeokaoss 10/28/2017 5:54 AM
なるほどー
Avatar
フォントサイズ変えたいだけならこれでもいけますねー self.dissmissLabel.font = UIFont.boldSystemFont(ofSize: 100) or self.dissmissLabel.font = UIFont.systemFont(ofSize: 100) (edited)
Avatar
daisukeokaoss 10/28/2017 6:09 AM
なるほどー。
Avatar
新規プロジェクトでStoryboardでUITextFieldを置いてアプリを実行、UITextFieldに「こんにちはこんにちはこんにちは」と入力してから任意のテキスト内の位置をタップしても「こんにちは」の単語区切りの所にしかカーソルが移動しないという現象が発生しています。これはOSのバグでしょうか?それともなにか設定を変更すれば挙動が変るのでしょうか?
Avatar
Kishikawa Katsumi 11/22/2017 7:22 AM
なるほど、挙動が変わったんでしょうかねえ。
7:28 AM
iOS 10でも同じで日本語かどうかも関係なさそうなので、意図した挙動っぽいですねえ。
7:29 AM
挙動を変える方法はいくつか思いつくけど簡単な方法はなさそうですね。
Avatar
@Kishikawa Katsumi ありがとうございます。そうなると意図的な可能性が高そうですね。簡単には変えられないとテスターに伝えようと思います。
Avatar
本当だ・・・公式のツイッターアプリとかでもそうなりますね。
Avatar
Kishikawa Katsumi 11/22/2017 7:35 AM
たぶんカスタムのUITextInputTokenizerを返すようにしたら変えられるんじゃないかと思ってるんですけど、あまり簡単ではないです。 https://developer.apple.com/documentation/uikit/uitextinput/1614537-tokenizer
Avatar
うへぇw
Avatar
えぇぇと、広告はありませんが、作ったものを投稿してもいいんですか?
Avatar
基本的に良いのではないかと🤗どのチャンネルが適しているかは微妙ですね🤔
👍 1
Avatar
#random がなくて #zatsu がある
2:03 AM
ライブラリなら #swift-zatsu アプリなら #zatsu とかいい塩梅ではないでしょうか
👍 2
Avatar
#zatsu ですね ありがとうございます 😃
Avatar
よし冬コミで出す予定のAuto Layout殺す本もできたら宣伝します😆
👀 6
Avatar

Interface Builderの問題点

iOSアプリを開発する限り付き合わなければいけないInterface Builder。 視覚的にViewの構造を確認できる便利な代物ですが、人類が扱うには少々厳しいポイントがいくつか...
🙏 1
2:33 AM
@Yuta Saito 良いね
Avatar
ありがとうございます! 🙌
2:35 AM
ルール少ないのでPRください
Avatar
わーい!Yamsが使われてる!🙌
👓 1
Avatar
もしご存知の方がいらっしゃいましたら教えて欲しいです。 https://medium.com/@r.izumita/carthageでstatic-frameworkとしてビルドしてiosアプリの起動時間を短縮する-ca10a0a29381 この記事で触れている起動時間の問題って Cocoapods で ‘use_frameworks!’ 指定している場合でも発生し得るのでしょうか。
Carthageを利用してダイナミックフレームワークを追加していくといつの間にかiOSアプリの起動に時間がかかるようになっていきます。Appleは多くとも6つのダイナミックフレームワークにすることを推奨しています。しかしどうしても多くなって起動時間が遅くなってきます。この長く…
Avatar
考えたことなかった
6:46 AM
仕組みとしてはuse_frameworks!でDynamic Frameworkになるので同じことが起きそうですね
6:46 AM
CocoaPods久しく使ってないけど、use_frameworksで生成されるのって1個にまとまったフレームワークなんでしたっけ
Avatar
Podsなんとか.dylibみたいなのができてませんでしたっけ。1個にまとまるような?
Avatar
まとまるか
Avatar
まとまらないです
😰 1
Avatar
まとまらないか
Avatar
まとまらないのか
Avatar
ふつうにFrameworks下にpod名のframeworkがならびます
6:48 AM
のでおなじことになるのではないかなぁと思う
6:52 AM
frameworkの起動時間の問題、キャッシュにのっている場合は無視できるからそれほどでもない、ってごく最近どこかで読んだような‥?
7:02 AM
この問題が特に顕著なのは、端末再起動・アプリをしばらく使っていないなどでモジュールのキャッシュがクリアされてしまっている時の起動時間であり、常用しているアプリを再起動する時などは大抵モジュールのキャッシュが効いているためこの影響は少なく特に遅く感じません。
7:03 AM
monoさんだった
👀 1
Avatar
元の @rizumita さんの記事では、1回目の起動時間を掲載しているのか、それとも、2回目移行のキャッシュが効いてる状況でも差があるのか、そのあたりが気になった
Avatar
モジュールのキャッシュというのもあるのか、なるほど
7:07 AM
それがあるのは知らなかった
Avatar
AppleとしてはDynamic Framework は6つくらいまでにしといてという見解でしたよね。。
Avatar
UIAppearance経由で設定したもろもろのパラメーターが個別のインスタンスにいつ適用されるかがドキュメントになさそうなんですが、詳しい方いませんか?
3:09 PM
IBOutletのdidSetでUILabelのtextColorを変えているんですが、AppDelegateでUILabel.appearance().textColorをいじるとそっちが優先されてしまってこまっています
3:12 PM
iOS applies appearance changes when a view enters a window, it doesn’t change the appearance of a view that’s already in a window. To change the appearance of a view that’s currently in a window, remove the view from the view hierarchy and then put it back.
3:12 PM
それっぽいこと書いてあった。
3:13 PM
つまりIBOutletの初期化が終わってdidSetが動いても、そのあと実際に画面に表示される直前にUIAppearanceが適用されるのでうわがかれて当然って感じかなあ
Avatar
Kishikawa Katsumi 12/31/2017 3:13 PM
そこにある通り、ドキュメントではWindowにAttachされたときでテーマ切り替えのような動的に切り替える用途には向かない、とあるのですが、途中で切り替えても結構動作するので正式なところは難しいですね。
Avatar
共通化したいところはUIAppearanceで共通化しつつ、個別にいじるところは上書き、ってするためのUIAppearanceだと思ってたので、ずっこけたという感じです
3:16 PM
岸川さんありがとうございます〜
Avatar
Kishikawa Katsumi 12/31/2017 3:18 PM
おそらく、基本的にはWindowにAttachされたときだから再適用する場合はビューを外してから貼り直すようにしなさい、っていうのは合ってるんだろうけど、実装の都合上、実際は貼り直さなくても適用されることが結構ある、って感じだと思います。 (edited)
Avatar
Windowにアタッチされる前に設定してた局所的な設定を大局的な共通化でうわがきしてしまうのはどうなんーという気がします
Avatar
UILabelのデフォルトの色を一括で変えるいい方法ないでしょうかねー
Avatar
Kishikawa Katsumi 12/31/2017 3:35 PM
色を設定するファクトリメソッドのようなものを使うとかじゃないですかね。
3:35 PM
あんまりいい方法ないです。サブクラスを作るっていうのをよく見ますけどあまりいい方法じゃないと思います。
Avatar
ファクトリーメソッドだとIBOutletなUILabelには当てられないですよねえ
Avatar
Kishikawa Katsumi 12/31/2017 3:36 PM
ああ、そうですよね。
Avatar
個人のプロジェクトで、絶対に他の目的で使わないという強い気持ちが保てればサブクラス化してもいいかなーみたいな気分です
3:37 PM
薄い継承よりも色の設定漏れのほうが嫌ですね
3:38 PM
UILabelのextension内でwillMoveToSuperviewみたいなのをオーバーライドしてtextColorがnilだったらデフォルトの色を設定するみたいなのできるかな
3:38 PM
今思いついたので試してみます
3:41 PM
label.textColorが UIColor! だったからいけるかなーと思ったけどwillMoveToSuperviewの時点でデフォの値が入ってるっぽくて頓挫
3:42 PM
extension UILabel { open override func willMove(toSuperview newSuperview: UIView?) { if textColor == .black { textColor = UIColor.red } super.willMove(toSuperview: newSuperview) } }
3:43 PM
これで一応全部赤く出来たけど今度は明示的に黒にできなくなってしまったのでダメですね。
Avatar
UILabel直にappearance使うの危ないしサブクラス化してから使った方がいいのでは?と思った
Avatar
Kishikawa Katsumi 1/1/2018 2:00 AM
私は適当にユーティリティメソッドにまとめてviewDidLoadあたりで適宜呼び出すのがいいと思います。
Avatar
@tarunon 危ないってどういう危ないだろう?
Avatar
didSetも含め予期せぬ挙動になるから
2:17 AM
例えば使ってるライブラリがUITextViewのプレースホルダーにUILabelを使っていると…とか
2:17 AM
ハマりどころは枚挙に暇がない
Avatar
Kishikawa Katsumi 1/1/2018 2:18 AM
ああ、それもありますね。サードパーティのライブラリじゃなくても標準コンポーネントに影響が出たり。
Avatar
なるほど。
Avatar
手元の iPhone で確認してみましたが、 iOS 10時代に位置情報を"常に許可"にしたアプリは iOS 11に上げた今でも"常に許可"になっていたので、 常に取得できるものと思われます(ちゃんと検証はしてません 🙏
Avatar
@koogawa ありがとうございます! (たぶん誰もわからんだろうと、思って質問文消してしまいました😥
👌 1
Avatar
omochimetaru 1/16/2018 2:51 AM
SceneKitのSCNViewのデバッグ機能すごい
2:52 AM
SceneKit良く出来てるけどAndroidで動かないし
2:53 AM
HoloLensのリリースにあたってUnity連携を公式サポートしたMicrosoftの筋が良すぎる
2:53 AM
Appleもそうしてくれたらもう全て解決だったのになあ
2:53 AM
まあUnity連携だと環境がサンドボックスされすぎるという問題はあるんだけど。。
2:54 AM
AppleがSceneKitをAndroid向けに展開するモチベーションあってもいいと思う
2:54 AM
それやらんと誰もついてこないでしょコレ
2:54 AM
せっかく良く出来てるのに。
Avatar
エンジニアリング的には正しいけどよく考えたら MS はあれどこでビジネスしてるんだろ
Avatar
omochimetaru 1/16/2018 2:54 AM
MSはプラットフォーマーでしょ。
Avatar
Win MR のライセンスが儲かるのか?WIndows 自体ってまだ稼ぎ頭なんだっけ? (edited)
Avatar
omochimetaru 1/16/2018 2:54 AM
HoloLensおよびWinMRの展開自体が投資でグラフィックエンジン部分なんてどうでもいいでそゆ
Avatar
Apple が Android 向け SceneKit 作るメリットなくない?
Avatar
omochimetaru 1/16/2018 2:55 AM
@koher SceneKitが採用できる
2:55 AM
モバイルゲームビジネスでみんな考えてるのはいかにマーケット広く取るかなんでAndroid全滅の時点でありえない選択肢になる
Avatar
SceneKit が採用されることの利点は?
Avatar
omochimetaru 1/16/2018 2:56 AM
@Biacco42 というよりMSはいまWindowsが死なないために必死なのでは
Avatar
抱え込みたいけど使われない、の時点で Apple 的には SceneKit に投資せずに作らない、が正解に見えてしまう
Avatar
omochimetaru 1/16/2018 2:56 AM
@koher わかんないです、でも作ったならなんか目的があるのでは。
Avatar
目的は Apple プラットフォームだと簡単に 3D アプリ作れますよってことじゃないかなぁ。
Avatar
@omochimetaru MS もうソリューション系というかクラウドとかバックエンド系が稼ぎ頭になってた気がしたけどどうだったかな
Avatar
omochimetaru 1/16/2018 2:57 AM
目的は Apple プラットフォームだと簡単に 3D アプリ作れますよってことじゃないかなぁ。
さすがに現実味がなさすぎる・・・Unityで解決してるしUnityのほうが動くデバイスが多い。
Avatar
まさに↓の状態になってるかも・・・
抱え込みたいけど使われない、の時点で Apple 的には SceneKit に投資せずに作らない、が正解に見えてしまう
Avatar
ある企業の行動原理を知りたければ、金銭の流れを追えばいい。3大IT企業であるグーグル、マイクロソフト、アップルの決算を分析して、どの製品からどれだけの収益を上げているかを明らかにする。
2:57 AM
ちょっと古いけど
Avatar
Kishikawa Katsumi 1/16/2018 2:57 AM
SceneKitとSpriteKitは最初からよくわからなかったですね。
Avatar
omochimetaru 1/16/2018 2:58 AM
うん、現状は「よくわからん」・・・
Avatar
Kishikawa Katsumi 1/16/2018 2:58 AM
入門としてはいいと思うんですけど、それを超えると意味はないので。
Avatar
でも、たとえば ARKit が出たときに簡単に試すには SceneKit 使ったら楽だねとなるし、
Avatar
Kishikawa Katsumi 1/16/2018 2:58 AM
そう、入門以上に使うところがない。
2:58 AM
ゲーム以外のものを作る場合は別かな。
Avatar
それ単体ではなくて、今後 Apple の 3D 的な何かと簡単に組み合わせられるものとして
2:59 AM
基盤的な意味合いはあるのかも。
Avatar
omochimetaru 1/16/2018 2:59 AM
ARKitもそうだけど「ARkitがあるからiOS向けに作ろう」じゃなくて、 GoogleもARCore出してきたわけだし 「どうやってiOS/Android両対応しよう」って悩みがより重くなってしまっただけ
3:00 AM
結果的に高コストなんでそのジャンルのアプリ開発投資が重くなってるだけのような・・・
Avatar
Kishikawa Katsumi 1/16/2018 3:00 AM
それはあると思います。われわれと違ってAppleの立場としては基盤テクノロジーの応用例の1つに過ぎないので。
Avatar
omochimetaru 1/16/2018 3:00 AM
割り切ってiOSだけでいこうぜ!ってマーケットが流れる方向をAppleが全力で信じているんだろうか
Avatar
そこで、 Android より iOS の方が簡単に作れるし、(日本みたいに iOS シェア大きかったら)とりあえず iOS アプリ作ろう
3:01 AM
ってなる可能性があるのでは?
Avatar
omochimetaru 1/16/2018 3:01 AM
iPhoneとAndroidが価格帯でも住み別れてしまったので
3:01 AM
相互乗り換えにならないのがなあ。
Avatar
それ単体では効果は薄くても、そういうものを積み重ねることでじわじわ利いてくるのかも。
Avatar
omochimetaru 1/16/2018 3:01 AM
うーむ・・・ > じわじわ
Avatar
norio_nomura 1/16/2018 3:02 AM
Apple自身が使うために作ってるだけでは。
👀 1
Avatar
Apple がウェアラブルデバイスと arOS 出すとかいう噂もあるし、そういう展開を見据えると SceneKit なくてそこは Unity でやってね、とかは Apple のやり方的になさそう。
Avatar
omochimetaru 1/16/2018 3:03 AM
あー、それはありそうですね、顔絵文字とかも同じ技術っぽい>Apple自身が使うために
Avatar
最近は均衡してるんだなぁ http://gs.statcounter.com/os-market-share/mobile/
This graph shows the market share of mobile operating systems worldwide based on over 10 billion monthly page views.
Avatar
omochimetaru 1/16/2018 3:03 AM
どうせ作るならSDK化して還元みたいな。
3:04 AM
ウェアラブルデバイスと arOS 出すとかいう噂
ほほお・・・
Avatar
へー、 iOS 下がってないんだね。意外。
Avatar
@koher 自分も下がり続けてるかと思ってました
Avatar
omochimetaru 1/16/2018 3:04 AM
Firefox OS 0.46% w
Avatar
Unknownなんだよw
Avatar
死んだ人のこと悪く言うのはやめましょ
Avatar
Symbianとかその辺全部かな
Avatar
↑のシェアで↓すごい
昨年の世界スマートフォン業界全体での営業利益は537億ドルですが、そのうち449億ドルがAppleの利益でした。
https://iphone-mania.jp/news-160978/
2016年通年での世界スマートフォン利益のうち、Appleが79.2%を得ていたことが、Korea Heraldが入手したStrategy Analyticsの調査データから明らかになりました。   Korea Heraldは、「価格を最大化する一方で生産コストを最低限に抑える」App
Avatar
2:8の法則だ
3:09 AM
8割の富を持ってる2割がiOS使ってるから利益が富の割合のまま出てる、とかありそう
Avatar
シェアも下がってないみたいだし、思ってたより iOS 長生きしそう。最悪あと 5 年くらいでダメかと思ってた。
Avatar
モバイルOSという戦場自体が終わることのほうが気になる
3:11 AM
出来の良いウェアラブルデバイスとかarとかその辺来たら一気に終わりそう
Avatar
@tarunon 前に @Biacco42 と話してて、ウェアラブルだと入力インタフェースが難しいという話になりました。スマホの入出力(ディスプレイとタッチパネル)が一体になっているのは大きな強みだと思います。
Avatar
入力は多分後5年くらいでブレイクスルーがあると思っていて
Avatar
ウェアラブル(特に常時身に付けているグラス型デバイス)は新しい世界を切り開いてくれるでしょうが、スマホと組み合わせて使うような形になる気がします。
Avatar
脳波から入力出来る日が来そう
Avatar
入力デバイスアツいんですよ〜
3:18 AM
やはり電脳化
Avatar
今モバイルより小さくならないのは、入力装置の限界がそれだからですね
Avatar
うーん、「できる」のと快適なものを作れるのの違いは大きいから、そんなにすぐに使い物になるものが出てきますかねー?
3:19 AM
タッチパネルも、 iPhone 以前はほとんど役に立たなかったし・・・。今でもカーナビとか回転寿司のタッチパネルとかイライライする。 10 年遅れてるんじゃないか・・・。
Avatar
omochimetaru 1/16/2018 3:20 AM
電脳化推し勢だ
Avatar
http://shiropen.com/2018/01/14/31458 がもっと発達すればいずれ・・・
ATR(国際電気通信基礎技術研究所)と京都大学の研究者らは、fMRI(機能的磁気共鳴画像法)によって測定された人間の脳活動のみから機械学習を用いて視覚像を再構成する提案を論文にて発表しました。
Avatar
キーボード入力は本当に遅いんで早く電脳化したいです
3:21 AM
チップやら電極やら埋め込むのもウェルカム
🙌 1
Avatar
物理的な制約条件として、絶対座標が指定できることとその絶対座標が人間にとって認識可能(ディスプレイとか物理的な領域)であることが必要で、そうなると結局操作するのに腕を上げるのか?みたいになってしまって、手じゃなくもう脳の信号でやるしかない感がある
Avatar
omochimetaru 1/16/2018 3:22 AM
その研究、たんにDNNを高解像化に使ってるのと同じで、統計的に予測してるわけだから、なんか脳を盗み見るのとは違う感があるんだよなあ (edited)
3:22 AM
こう、キーボード入力してる時の電磁波を読み取ってパスワードを盗む、みたいなクラッキングがあるけどそれと同じで
Avatar
@omochimetaru 脳で考えてることをそのまま読み取るわけじゃなくて、こう考えたらこう動くみたいなのを人間がトレーニングしながら身に付けるんじゃないかな?
Avatar
omochimetaru 1/16/2018 3:23 AM
内部処理系をフックしてるわけじゃなくてハード的なノイズから外形的にスキャンしようとしていて
Avatar
fMRI での操作、電通大とかもやってたけど、右に曲がるために犬を想像するみたいな操作方法でそれは無理があるだろみたいな気持ちになってた
Avatar
omochimetaru 1/16/2018 3:23 AM
@koher ああそれをインターフェースにするのか・・・
3:23 AM
右に曲がるために犬を想像する
これを繰り返したら自然とできるようになるみたいな?
3:23 AM
ファンタジー世界の魔法詠唱のトレーニングみたいですね。
Avatar
理屈としてはそうだった
Avatar
古い研究でも、電極さえさせば、訓練したら猿がロボットアームを考えて動かせるようになるらしい。
Avatar
ゲームやる時にMapを見て瞬時に判断するみたいなの
3:24 AM
トレーニング繰り返したらできるようになるのと一緒
Avatar
魔法詠唱…なんか言葉ぐらい抽象的なのを検出できればまぁ…
Avatar
「犬を想像する」みたいなものでなくても、本来的には腕を動かすとかも同じようにやり方を試行錯誤で身に付けてると思うんよね。
🐶 1
Avatar
omochimetaru 1/16/2018 3:24 AM
うーんそっか人間側もトレーニングする事を考慮すれば良い路線な気もしてきた。
Avatar
それでいくと、あんま使ってない筋肉の部分の神経信号を拾うとかのほうが直接的でいいと思うんですよね (edited)
Avatar
六本目の指を生やすプロジェクトがあって
3:25 AM
それは足のセンサで動かすんだけど訓練すれば脳みそがつながるって書いてたな (edited)
Avatar
@tarunon それがいい
Avatar
肉体ベースだと遅いという問題がある
Avatar
ある場所にスムーズに指先を持っていくとか当たり前にできるけど、子供を見てると乳幼児は初めはできなくて、試行錯誤の中でできるようになっていく。それが脳や身体の発達によるものなのか、訓練の結果なのかわからないけど。
Avatar
人間の肉は思考を追い越せない
Avatar
杖の先感覚って話があって、松葉杖ついて歩いてると、そのうち松葉杖の先端の近くがモデル化されて感覚(触覚?)得られるらしいんですよね。身体感覚が拡張できる (edited)
Avatar
六本目の指を生やすプロジェクトがあって それは足のセンサで動かすんだけど訓練すれば脳みそがつながるって書いてたな
3:26 AM
これはすごい可能性がありそうだ。
3:26 AM
これですね
Avatar
脳に電極刺すより現実的だ。
Avatar
なので fMRI とかより、実際の神経系の信号を拾ってくるのいいと思うんですよ
👍 1
Avatar
omochimetaru 1/16/2018 3:27 AM
サムネが作画ミスみたいでウケるな
😇 2
Avatar
圧倒的に #ios じゃなくなってた 😇
😇 1
Avatar
問題は、指を動かすのに追加の訓練はいらないけど、これは追加の訓練が必要なことかなぁ?フリック入力とかも訓練が必要だったし問題ない?
Avatar
そこは利便性が優れば全然人間は習得すると思いますねぇ
Avatar
老害は駆逐されて脳波ネイティブの子どもたちが高速で機械と対話する世界になるよ
Avatar
↓みたいなシナリオかな? arOS とグラス型デバイスを投入 →当初は Apple Watch みたいに iPhone と連携 →追加で神経系を使った入力デバイス投入 →徐々に移行
Avatar
omochimetaru 1/16/2018 3:31 AM
脳波ネイティブの子どもたちが高速で機械と対話する
そういう断絶は起こりそう
3:31 AM
「キーボードおじさん」と呼ばれる時代が来るぞ (edited)
Avatar
既にそろばんと電卓、電卓とエクセルで起きた事象ですけどね
Avatar
↑なら最速 2025 年くらいで実現できる気がしてきた・・・。
Avatar
既に子どもたちは音声入力をガンガン使っていて
3:32 AM
キーボードはおじさんなので…
Avatar
おじさん
Avatar
それほんまウケる
3:32 AM
進化の方向間違いすぎ
Avatar
omochimetaru 1/16/2018 3:32 AM
そこまでやるならちょくせつUSBに指させよって思うよね。
😇 1
Avatar
それこそこれとか身体感覚拡張されてるだろうし、脳に対して一定の入出力フィードバックを与えることが重要なんよなぁ
3:34 AM
インターフェースは好きにすればいい
Avatar
早く機械と対話したい・・・
😂 1
Avatar
https://www.tryswift.co/events/2018/tokyo/jp/#charles Charles for iOS 出るんですねー。実機での通信デバッグ楽になりそう。 (edited)
try! Swift is an immersive community gathering about Swift Language Best Practices, Application Development in Swift, Server-Side Swift, Open Source Swift, and the Swift Community taking place around the world in Tokyo, New York, and Bangalore.
👀 1
Avatar
omochimetaru 1/19/2018 6:01 AM
iOSデバイス上で直接トラフィックをキャプチャできるって書いてあるけど
6:01 AM
どういうこっちゃ??
6:02 AM
プロキシとしてローカルホストを指定して、検証したいアプリそれ自身の中で Charles が立ち上がるんだろうか。
Avatar
https://developer.apple.com/documentation/networkextension 多分この辺じゃないでしょうか。
Avatar
omochimetaru 1/19/2018 6:03 AM
おお、そういうモジュールを作れる仕組みができたんですね。
Avatar
今日の飲み会で,Realmをあんま使ってない印象を受けたのだが,今からリリースするアプリにRealmを使うべきなのか,田舎 CoreDataは,Swiftで使いにくくないっすか?
🤔 1
Avatar
今風ならfirebase??
Avatar
ローカルでやりたいとしたら?
Avatar
やっぱ当面はRealmですかねえ
Avatar
UserDefaults
2:56 PM
そして破綻へ
2:57 PM
各端末のローカルディスクにしっかりとした永続層を持つアプリ、ちゃんとつくったことない
Avatar
Android Architecture ComponentのRoomみたいに、公式でDB出してくれればいいのに、って思ったらそれがCoreDataだったわ (edited)
Avatar
おしまい
Avatar
Realmにしましょう。壊れたらsonsonさんが直してくれる。
💪 4
Avatar
omochimetaru 2/1/2018 3:02 PM
ローカルだけのあれなら今SQLite使ってみてるんですけどこのライブラリのAPIがSwiftyで楽しい https://github.com/stephencelis/SQLite.swift
SQLite.swift - A type-safe, Swift-language layer over SQLite3.
Avatar
友達だ(違う)
Avatar
issueたまってんな
Avatar
@d_date てめぇ
😗 1
3:04 PM
SQLiteにもどるかぁ・・・・えええええええ
Avatar
omochimetaru 2/20/2018 2:53 AM
SceneKitのSCNQuaternion、プロパティで返してくるのに何もメソッド提供されてなくて流石にビックリした
2:55 AM
GLKitのGLKQuaternionはいろいろ持ってるようで。
Avatar
omochimetaru 2/20/2018 2:55 AM
↑そのエイリアス定義があるだけ
Avatar
SceneKit と ARKit 使うとその辺りがつらい。
Avatar
omochimetaru 2/20/2018 2:56 AM
なんでこれGLKitの型へのエイリアスにしてないんだろう
Avatar
SceneKit と ARKit で型が違うのも辛い (edited)
Avatar
omochimetaru 2/20/2018 2:56 AM
SceneKitはMetalでも使えるように分離してるからか?
Avatar
SceneKit は GLKit から独立させたいんじゃない?
Avatar
omochimetaru 2/20/2018 2:57 AM
GLKitの数学周りはOpenGL関係ないし提供しておいてほしかったな・・・
2:57 AM
うーん、どこに寄せてコーディングするのが楽なんだw
Avatar
うん。そのあたりの数学ライブラリを独立させて共通化してほしい。
Avatar
omochimetaru 2/20/2018 2:58 AM
SCN系かなぁ・・・
2:58 AM
いや、でも、QuaternionがTypeAliasだとextensionとか生やすと困ったことになるな・・・
2:58 AM
vec4が汚染されちゃう、というか、Quaternion同士の掛け算を定義したくても
2:59 AM
vectro4同士のものになっちゃうし最悪だ 駄目だコレ
Avatar
メモリレイアウトと、行ベクトルか列ベクトルかの組み合わせで本当に混乱する
3:00 AM
4x4行列が与えられても、名前から、どっちからどっちへの座標変換かわからなかったり
Avatar
omochimetaru 2/20/2018 3:00 AM
え、もしかして、GLKMatrixってcolumn-major? (edited)
Avatar
GL はそうだったような。
Avatar
omochimetaru 2/20/2018 3:01 AM
/* m30, m31, and m32 correspond to the translation values tx, ty, and tz, respectively. m[12], m[13], and m[14] correspond to the translation values tx, ty, and tz, respectively. */ public struct _GLKMatrix4 { (edited)
3:02 AM
ほんとだ。
Avatar
行ベクトルなんじゃなくて column-major なんよね、確か。
Avatar
omochimetaru 2/20/2018 3:03 AM
translationが3行目に横に並んでるしそうですね あれ、でもindexは末尾に来てるからrow-majorなのか
Avatar
メモリレイアウト上は平行移動が最後に来て、概念としては列ベクトルだったはず。
Avatar
omochimetaru 2/20/2018 3:04 AM
たしかにこれGLに合わせて転置してるのか、右から掛けるつもりなのか左なのかよくわからんですね (edited)
Avatar
GL も概念としては列ベクトルだったと思う。
Avatar
omochimetaru 2/20/2018 3:04 AM
それは、そうです。
Avatar
DESCRIPTION glTranslate produces a translation by (x,y,z). The current matrix (see glMatrixMode) is multiplied by this translation matrix, with the product replacing the current matrix, as if glMultMatrix were called with the following matrix for its argument: 1 0 0 x 0 1 0 y 0 0 1 z 0 0 0 1
3:05 AM
SCN 系は行ベクトルなんよね?たしか。
3:06 AM
なので、 GL 系とはメモリレイアウトは一緒だけど概念上異なる。
3:06 AM
matrix_float4x4 はメモリレイアウトが転置してなかったかな。自信ないけど。
3:07 AM
一番機能が充実してるやつで統一するのがいいと思う。 SCN 系は最低限のものしかなかった印象。
Avatar
omochimetaru 2/20/2018 3:08 AM
GLKitが良さそうですねえ・・・
Avatar
悩ましいのは、 GLKit を加えると、本来 SceneKit × ARKit に必要のなかった第三の数学ライブラリを導入することになる点なんよね。
3:11 AM
SCN 系の extension 書きまくるという手もなくはないけど、クォータニオンがダメなのか・・・
Avatar
omochimetaru 2/20/2018 3:15 AM
うーむ、よくわからないけど、mXYの表記が、X列Y行 って考えると辻褄が合う?
Avatar
行列,行列による変換,Quaternionの実装問題は,20年前から解決していない・・・・・・
9:06 AM
あと,いつまでたっても,column-majorとrow-majorのレイアウトを覚えられない
Avatar
最近のiOSアプリ制作における重要な要素が揃っているオープンソースアプリやサンプルアプリのgithubレポジトリ、 もしくはそんな重要要素を学べる書籍・チュートリアルをご存知の方いましたら、教えていただきたいです。 学生で周りにiOSに詳しい知人もおらず、閉塞感を感じています。
Avatar
少し古いですがこういうやつですかね https://github.com/mixi-inc/iOSTraining
iOSTraining - Training course repository for iOS app development
Avatar
https://github.com/kickstarter/ios-oss KickstarterはiOSアプリがossですね、結構引き合いに出されています
ios-oss - Kickstarter for iOS. Bring new ideas to life, anywhere.
Avatar
コードではないですが、monoさんのこの記事も最近のiOS開発の周辺技術がまとまっていて参考になると思います! https://medium.com/swift-column/ios-2017-4f04d00a5804
🐶 1
😀 1
Avatar
皆さんいろいろ教えていただきありがとうございます! 参考にしつつ、自分でも実装してみようと思います。 Monoさんの記事のような全体の構成についてまとまっている記事は、結構求められていると思います。
🐶 1
Avatar
https://developer.apple.com/documentation/quartzcore/cadisplaylink/1648421-preferredframespersecond CADisplayLink、ドキュメントだとThe default value is 0.ってなってるけど Xcode9.3のQuartzCore/CADisplayLinkのヘッダにはThe default value is 60.ってなってるなぁ。 iOS10.3.1/11.3のシミュレータだと60が初期値になっている気がする。 0を指定すると最大値になるっていう点では間違ってない気がするけどこれ意図したドキュメントなんだろうか…。 (edited)
Avatar
omochimetaru 4/16/2018 3:18 AM
iPadって120FPSになってなかったっけ。
Avatar
iPad Pro (10.5inch)のみですね 120FPSは iPad Pro (第2世代)のみ (edited)
Avatar
omochimetaru 4/16/2018 3:20 AM
その機種で実行した時に ヘッダの通り60が入ってたら悲しい
Avatar
iPad Proの120fpsって可変とかじゃなかったでしたっけ、常にそうなんだっけ…
3:21 AM
持ってないので分からない
3:23 AM
iPad Pro 11.3のシミュレータ(1gen/2gen)は0だ (edited)
6:28 AM
120fpsは意図的にInfo.plistに記述する必要がありそう?な気もしますね ProMotion Displayというんですね (edited)
👀 2
Avatar
ProMotion Display対応機種は0で他は60が初期値な感じなんですかねー せめてiOS11で揃えてほしいなー、なんも害は無いけど
Avatar
Crashlyticsのログに上がるOOMによる殺されって、アプリがバックグラウンドに居る時に他のアプリのメモリ使用に圧迫されて自アプリのプロセスが終了されるやつのことって認識で正しいんでしょうか
Avatar
omochimetaru 4/24/2018 4:39 AM
Foregroundで使用メモリどんどん増やした場合もOOMで殺されるよ。それがCrashlyticsに上がるかはわからない。
4:40 AM
mallocを100万回呼べば試せる
Avatar
それがCrashlytics上で区別されないと厳しいと思った
Avatar
omochimetaru 4/24/2018 5:00 AM
ふむ?
5:00 AM
あー、メモリリークバグがあるのか、他アプリのせいなのか、で、
Avatar
そう
Avatar
omochimetaru 4/24/2018 5:01 AM
全く意味が違うってこと?
Avatar
Crashlytics上だとOOM-free session rateという数字がみれて
Avatar
omochimetaru 4/24/2018 5:01 AM
使用メモリ数は記録されないのかい
Avatar
されない
Avatar
omochimetaru 4/24/2018 5:01 AM
フーム
5:01 AM
ViewControllerのメソッドとか
5:01 AM
メモリ使用量が厳しいと呼ばれるメソッドあるじゃん
Avatar
didReceiveMemoryWarningsだっけ
Avatar
omochimetaru 4/24/2018 5:01 AM
あのメソッドで、現在の使用メモリ量を
5:01 AM
ログに入れとけば
5:02 AM
ある程度わかるんじゃないか。
Avatar
あー。
5:02 AM
なるほど。
5:02 AM
メモリ量って取れるんだっけ
Avatar
omochimetaru 4/24/2018 5:02 AM
ほかアプリに圧迫されたときも呼ばれるけどその時は数字は小さいはず
5:02 AM
何かしら取れるよ。
5:02 AM
昔やった記憶ある
5:02 AM
VCのdidReceiveMemoryWarnings以外にも
5:02 AM
AppDelegateとかNotificationの方にもなかったっけな
5:02 AM
あまり自信無いが。
Avatar
https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623063-applicationdidreceivememorywarni アプリケーションワイドでやるならこっちの方がいいですね。
Avatar
omochimetaru 4/24/2018 5:04 AM
それそれ
Avatar
Kishikawa Katsumi 4/24/2018 5:12 AM
https://docs.fabric.io/apple/crashlytics/OOMs.html Crashlyticsのドキュメントによると、CrashlyticsがOOMとしてレポートするのはアプリケーション自身の問題でクラッシュした時だけ (クラッシュがフォアグラウンドで起こっていた場合)
We only report the OOM if the app was in the foreground before the second launch.
とのことです。
😲 2
😀 1
5:13 AM
OSによるメモリの確保の際の強制終了はOOMとしてはレポートされないんじゃないでしょうか。
Avatar
おっおっ
Avatar
アプリ側から自プロセスのメモリ使用量知れるやつ、ググり方がわからん
5:28 AM
Normally you have to fire up instruments to see the current memory usage of your app. Just add and #import this category of UIDevice in your app and call someth...
5:28 AM
ここにたどり着いた。
Avatar
##デバイスの空きメモリ量を取得する host_statistics() を使用して、vm_statistics_data_t 構造体を取得します。その中の free_count という値が空きメモリ量を示しています。(この値の単位は...
Avatar
まさかの日本語。
5:29 AM
ios process memory usageとかでぐぐってた
5:29 AM
@rintaro ありがとうございます みてみます
Avatar
var i = 0.0 while i < 1.1 { i += 0.01 print(i, i == 1.0) if i == 1.0 { print("####called this line####") } } } (edited)
4:13 PM
これ i==1.0がうまく比較されないのですが、なぜなんでしょう…。
4:17 PM
スレッドの問題じゃないっぽいな…
4:20 PM
i > 1.0はちゃんと出る、+=0.01が大雑把に加算されてるのかな
4:23 PM
0.81 false 0.82 false 0.83 false 0.839999 false 0.849999 false 0.859999 false 0.01じゃなくなるタイミングがある、なんか言語仕様的なアレでしたっけこれ…
Avatar
浮動小数点誤差?
4:25 PM
0.1(10) = 0.000110011001100110011...(2)
Avatar
2進数で表現できないやつっすかね
Avatar
あーなるほど!しっくり来ました。0.85は2進数だと表現出来ないのか…
Avatar
NSDecimalNumberを使うといいとかなんとか
Avatar
var double: Double = 0.0 var decimal: Decimal = 0.0 for _ in 1...100 { double += 0.01 decimal += 0.01 print(double) print(decimal) } を実行すると、 … 0.8 0.8 0.81 0.81 0.820000000000001 0.82 0.830000000000001 0.83 0.840000000000001 0.84 … 0.82から狂いはじめてますね
😀 1
Avatar
@swift-4.0.3 import Foundation var i: Decimal = 0.0 while i < 1.1 { i += 0.01 print(i, i == 1.0) if i == 1.0 { print("####called this line####") } } (edited)
Avatar
swift40 BOT 5/3/2018 4:35 PM
0.01 false 0.02 false 0.03 false 0.04 false 0.05 false 0.06 false 0.07 false 0.08 false 0.09 false 0.1 false 0.11 false 0.12 false 0.13 false 0.14 false 0.15 false 0.16 false 0.17 false 0.18 false 0.19 false 0.2 false 0.21 false 0.22 false 0.23 false 0.24 false 0.25 false 0.26 false 0.27 false 0.28 false 0.29 false 0.3 false 0.31 false 0.32 false 0.33 false 0.34 false 0.35 false 0.36 false 0.37 false 0.38 false 0.39 false 0.4 false 0.41 false 0.42 false 0.43 false 0.44 false 0.45 false 0.46 false 0.47 false 0.48 false 0.49 false 0.5 false 0.51 false 0.52 false 0.53 false 0.54 false 0.55 false 0.56 false 0.57 false 0.58 false 0.59 false 0.6 false 0.61 false 0.62 false 0.63 false 0.64 false 0.65 false 0.66 false 0.67 false 0.68 false 0.69 false 0.7 false 0.71 false 0.72 false 0.73 false 0.74 false 0.75 false 0.76 false 0.77 false 0.78 false 0.79 false 0.8 false 0.81 false 0.82 false 0.83 false 0.84 false 0.85 false 0.86 false 0.87 false 0.88 false 0.89 false 0.9 false 0.91 false 0.92 false 0.93 false 0.94 false 0.95 false 0.96 false 0.97 false 0.98 false 0.99 false 1 true ####called this line#### 1.01 false 1.02 false 1.03 false 1.04 false 1.05 false 1.06 false 1.07 false 1.08 false 1.09 false 1.1 false (edited)
😩 3
Avatar
ありがとうございます、そして実際のコードは override func viewDidLoad() { super.viewDidLoad() while i < 1.1 { i += 0.01 } } public var i: Float = 0.0 { willSet { self.i = min(newValue, 1.0) } didSet { if i == 1.0 { print("####called this line####") } } } こんな感じだったのですが、willSetで代入予定の値差し替えるのは出来ないんですね willSetでガードしていたつもりだったので変にハマってしまった…
Avatar
omochimetaru 5/3/2018 5:37 PM
0.01が2進数だと表わせないですね。
😀 2
Avatar
はじめまして。 CrashlyticsのOOM-free session rateについて調べてて、BackgroundFetchしていると正確に計測できないというstack overflowのやり取り見つけたんですが、類似の事象が出ている方、回避方法が分かる方いらっしゃいますか? https://stackoverflow.com/questions/48121843/suddenly-getting-many-fabric-out-of-memory-sessions-can-fabric-oom-reports-ever fetchで起動->終了がクラッシュとみなされているなら回避方法なさそうにも思いますが。
I recently added background fetch in my application and it is working well. I recently noticed in Fabric that the amount of OOM free sessions have gradually gone from 100% to a daily average steady...
Avatar
http://blog.corywiles.com/broken-facetime-audio-interruptions-in-ios-9 AVAudioSessionInterruptionTypeEndedが呼ばれない問題まだ直ってない気がする
Constant Interruptions I’ve been working on a new feature for RabbleTV the past 3 months. Now that the functionality is pretty close to shipping I’m going through all the various testing scenarios...
Avatar
iOS11 で通知センターに表示される通知のアプリ名がアルファベットだと全て大文字になるのってバグなのか仕様なのかどっちなんだろう? (edited)
Avatar
仕様なんだろうなーと思ってました 😂
6:19 AM
UITableView (stype=grouped)の section ヘッダーも勝手に大文字になってしまいますし、結構そういうのは多いのかなーと
Avatar
なるほど
Avatar
omochimetaru 5/25/2018 2:33 AM
https://gist.github.com/omochi/eedb0d692bf9d778e4c65b0b0955e087 DispatchQueueのスレッド関係の振る舞いについて調べてみました。 iOS実機で実行して調べました。 1. .sync は呼び出しスレッドで実行される。キューのスレッドではない。 2. .async はキューのスレッドで実行される。 3. 複数のキューがスレッドを共有する事がある。ワーカースレッド512本まではキューのために新しいスレッドが立つが、 513個目のキューには既存のスレッドが共有割当された。この数はおそらく環境によって変わるんだろう。 4. キューに割り当てられたスレッドが変更される事は無さそうだった。
😀 1
Avatar
norio_nomura 5/25/2018 3:14 AM
1. .sync は呼び出しスレッドで実行される。キューのスレッドではない。
これ何か例外となる条件があった様な記憶が…
Avatar
norio_nomura 5/25/2018 3:36 AM
DispatchQueue.main の時はだけキューのスレッドかな? (edited)
Avatar
omochimetaru 5/25/2018 3:37 AM
あーたしかに、mainからsyncで呼んだ場合しか見てないです。
Avatar
norio_nomura 5/25/2018 3:58 AM
他にも何か条件により変わった気もしますが、忘れました。
Avatar
この数はおそらく環境によって変わる
この実機はiPhoneXですか?
Avatar
omochimetaru 5/25/2018 6:03 AM
@noppe iPhoneSEです
Avatar
queue512: thread sharing found: queue 1 also use <NSThread: 0x1c807da80>{number = 4, name = main} iPhoneXでも512っぽいですねー
😀 1
Avatar
omochimetaru 5/25/2018 6:16 AM
ほー
Avatar
@omochimetaru #scenekit があってもいいかも。
Avatar
omochimetaru 6/7/2018 7:54 AM
作った。
🙏 1
Avatar
質問なのですが、iOSでopenURL(URLスキーム)でアプリを起動する際に表示されるダイアログ("アプリ名"が"アプリ名"を開こうとしています。)を聞かれないようにする方法ってどなたかご存知でないでしょうか? こちらのStackOverflowでの質問と同じ事象なのですが、OSがハンドリングする部分なので、特別な設定値などなければ難しいような気もしています。 https://stackoverflow.com/questions/32312009/how-to-avoid-wants-to-open-dialog-triggered-by-openurl-in-ios-9-0
I use openURL to open app B from App A, and I get this alert dialog "App A wants to open App B", with two buttons, "Open" and "Cancel". If I press "Cancel", app B won't open and dialog will appear...
Avatar
Kishikawa Katsumi 6/11/2018 5:24 AM
@shtnkgm 無理ですね。
Avatar
やはり無理ですよね、ありがとうございます。
Avatar
omochimetaru 6/13/2018 5:18 AM
OperationQueueよくわからないからスルーしてたけど、DispatchQueueでコールバックとかやってるとキャンセル判定を自前でやるので面倒だったが、OperationQueueだったらそういう仕組もついてくるんですな。
Avatar
Kishikawa Katsumi 6/13/2018 5:20 AM
OperationQueueのキャンセルはフラグが立つだけで、キャンセルの処理自体は自分でやる必要があるんじゃないかな。
Avatar
omochimetaru 6/13/2018 5:20 AM
https://developer.apple.com/documentation/foundation/operation#1661262
The default implementation of NSOperation includes checks for cancellation. For example, if you cancel an operation before its start() method is called, the start() method exits without starting the task.
5:21 AM
Operationのstartが呼ばれる前にcancelされた場合、デフォルト実装ではタスクを開始せずに終了する、と読みました
Avatar
Kishikawa Katsumi 6/13/2018 5:21 AM
なるほど。スタートしてない状態のタスクについてはそうかも。
Avatar
omochimetaru 6/13/2018 5:21 AM
タスク自体が一定時間かかるようなものだとキャンセルチェックしないといけなそうですけど
5:21 AM
ワンショットなコールバックやイベントを、ライブラリからユーザに投げかえすだけ、
5:22 AM
な用途であれば、この挙動に頼れば済みそうなのかなと
5:22 AM
Operationオブジェクトは作らずに、この、OperationQueueに直接クロージャを投げるやつを使う場合。
Avatar
Kishikawa Katsumi 6/13/2018 5:23 AM
Blockを直接追加するやつは特に便利ですね。基本的にOperationQueueはGCDのハイレベル版として捉えるというのは合っています。
😃 1
Avatar
omochimetaru 6/13/2018 5:23 AM
よかった。
5:24 AM
https://github.com/omochi/ForceHTTP/blob/master/Sources/ForceHTTP/FHTTPSession.swift#L255 先日作ったForceHTTPでも、キャンセルされてたらhandlerがnilなのでエラー通知されない、というロジックがあるんですが
Contribute to ForceHTTP development by creating an account on GitHub.
5:25 AM
swift-corelibs-foundation - The Foundation Project, providing core utilities, internationalization, and OS independence
5:26 AM
URLSessionのOSS実装で、同じような場面で特に分岐機構がなかったのでよく見たら、 https://github.com/apple/swift-corelibs-foundation/blob/master/Foundation/URLSession/URLSession.swift#L268 delegateQueueとかの型がOperationQueueだった。
swift-corelibs-foundation - The Foundation Project, providing core utilities, internationalization, and OS independence
5:27 AM
open func invalidateAndCancel() { NSUnimplemented() } まあ、キャンセルの実装されてないけどw
😇 1
😃 1
Avatar
DispatchWorkItem ってどうなんでしょう?あまり使われてない?
🤔 1
Avatar
omochimetaru 6/13/2018 5:48 AM
あ、微妙に読み違えてる点があった。URLSessionの実装でOperationQueueはユーザから受け取ったオブジェクトをそのまま使ってるから、URLSessionがdelegateQueue.cancelAllOperations()を呼ぶことは許されないわ。
3:14 PM
Auto-Renewable Subscription新規に作るにはなんか条件あるんでしたっけ?
3:15 PM
項目がない・・
Avatar
自己解決、ここ押してなかった
😆 1
Avatar
謎のメッセージ😫
12:04 PM
iOS12 入れてからずっと出ます…..…..…..…..
Avatar
それなんなんでしょうね。出ていつもNot Now押してますけど
Avatar
怖くっていつももNot Now押してますね
Avatar
On my mac I've recently updated to the latest macOS version 10.13.5 and have installed Xcode 10 (beta 1). For my iPhone X there is an update available to 11.4 but i didn't install that yet. Now the...
1:14 AM
6/20の時点ではインストールを押しても何も起きないようですねー
Avatar
ナタリー 6/26/2018 6:42 AM
ohtaさん ありがとうございます(´ω`)
Avatar
ナタリー 6/26/2018 6:50 AM
犯人が Xcode みたいですね ……
😃 1
Avatar
daisukeokaoss 6/27/2018 2:48 AM
すいません質問なんですけど、iOSのカメラからiPhoneアプリで、任意のピクセルのRGB値をRawというか生というか、そういう形で取得したいんですが、そういうこと可能でしょうか?
Avatar
omochimetaru 6/27/2018 2:48 AM
できますよ
Avatar
daisukeokaoss 6/27/2018 2:48 AM
できるんですか?なんか、色々試したんですが難しいんですよね
Avatar
daisukeokaoss 6/27/2018 2:49 AM
Get live access to pixel or audio data streaming directly from a capture deviceとかいう記述ありますね
Avatar
omochimetaru 6/27/2018 2:50 AM
↑今貼ったAPIでCMSampleBufferが取れて
2:51 AM
で、たしかこれで取れるCMImageBufferが実際にはCVPixelBufferのインスタンスで
2:52 AM
CVPixelBufferまでいければLockしてGetBaseAddressとかでビデオメモリにアクセスできます
Avatar
daisukeokaoss 6/27/2018 2:52 AM
なるほど、ちょっとやってみます。ありがとうございました
Avatar
omochimetaru 6/27/2018 2:54 AM
Contribute to ARWave development by creating an account on GitHub.
2:54 AM
↑めちゃくちゃ昔にやったコードがありました。
Avatar
@daisukeokaoss YUV じゃなくて BGRA で取り出した方が簡単だと思います。 https://developer.apple.com/documentation/corevideo/kcvpixelformattype_32bgra
Avatar
omochimetaru 6/27/2018 2:56 AM
https://github.com/omochi/ARWave/blob/master/ARWave/ARWave/ARWGLCameraRenderer.m ↑のコードはYUVで取り出した後OpenGLのシェーダーでYUV -> RGB変換をしてます
Contribute to ARWave development by creating an account on GitHub.
Avatar
それをやってもいいけどハードルが高いかなと。
Avatar
omochimetaru 6/27/2018 2:56 AM
キャプチャするときにRGB指定しておくと簡単ですね。
Avatar
Obj-C のコードですが↓のような感じです。 output = [[AVCaptureVideoDataOutput alloc] init]; ... output.videoSettings = @{(id)kCVPixelBufferPixelFormatTypeKey:@(kCVPixelFormatType_32BGRA)};
Avatar
daisukeokaoss 6/27/2018 2:59 AM
う。単純には行かなさそう
3:04 AM
ありがとうございます
Avatar
Kishikawa Katsumi 6/27/2018 3:55 AM
カメラのAPIは標準だと、UIImagePickerViewControllerと、AVFoundationで急に面倒さとか難易度が上がるので、 (edited)
3:57 AM
その間のがあるといいんですけどね。
3:57 AM
サードパーティのライブラリがそれを担ってるかな。
Avatar
omochimetaru 6/27/2018 3:57 AM
そうですね
Avatar
daisukeokaoss 6/27/2018 4:02 AM
うー
Avatar
簡単に使えるのができそうです。
Avatar
Kishikawa Katsumi 6/27/2018 4:15 AM
^ 楽しみですね 😍
Avatar
前々から作りたいと思ってたのを試しに実装してみました。とりあえず動くようにしただけなので実装がかなり雑ですが・・・。色々不具合もあるかもしれません。 https://github.com/koher/EasyCamery
Contribute to EasyCamery development by creating an account on GitHub.
4:19 AM
↓みたいに使えます。 import UIKit import AVFoundation import EasyCamery import EasyImagy class ViewController: UIViewController { @IBOutlet var imageView: UIImageView! private let camera: Camera<RGBA<UInt8>> = try! Camera(sessionPreset: .vga640x480, focusMode: .continuousAutoFocus) override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) camera.start { [weak self] image in DispatchQueue.main.async { self?.imageView.image = image.uiImage } } } override func viewWillDisappear(_ animated: Bool) { camera.stop() super.viewWillDisappear(animated) } }
4:20 AM
image は EasyImagy の Image 型なので自由にピクセルにアクセスできます。 var image = Image<RGBA<UInt8>>(named: "ImageName")! print(image[x, y]) image[x, y] = RGBA(red: 255, green: 0, blue: 0, alpha: 127) image[x, y] = RGBA(0xFF00007F) // red: 255, green: 0, blue: 0, alpha: 127 // Iterates over all pixels for pixel in image { // ... } // Processes images (e.g. binarizations) let binarized: Image<Bool> = image.map { $0.gray >= 127 } // From/to `UIImage` image = Image<RGBA<UInt8>>(uiImage: imageView.image!) imageView.image = image.uiImage
Avatar
すごい、これパフォーマンス大丈夫なんですか?
Avatar
今はちょっと怪しいです。
Avatar
リアタイは厳しかったか😂
Avatar
いや、リアルタイムくらいは余裕ですよ。
4:23 AM
余計なオーバーヘッドがあるという意味です。
Avatar
ふむふむ
Avatar
ちゃんとがんばれば余計なオーバーヘッドもなくせそうだと思ってます。
4:23 AM
今の実装は排他処理周りもあやしいです。
Avatar
AVFoundationって、多分カメラ周りは普通にエンコード済みのデータが流れてる気がしてて、その手合いになってくるとstructなImageはどう戦うんだろうみたいなのを考えてた
Avatar
とりあえず、 CVPixelBufferBGRA で来るので、 RGBA に変換してるとこのオーバーヘッドが相当あります😅
Avatar
あーPixelBufferで取るならエンコ済みではないですね
Avatar
CVPixelBuffer からは必ずコピーして使うので、どのみちどこかにコピーしないといけないんですが、そのコピー先を EasyImagy の Image 型のバッファにしてるので
4:26 AM
BGRA 型を作って Image<BGRA<UInt8>> でフレームを取得するのであれば、ちゃんとやれば余計なオーバーヘッドなしになりそうだと思ってます。
4:27 AM
CoW のコピーが余計に発生しないようにできるかが確信を持ててないですが、できそうな気がしてます。
4:32 AM
あ、 UIImage に変換して UIImageView で表示させてるとこはもちろん余計なオーバーヘッドがあります。本当はもっと効率的な方法でレンダリングすべきです。が、そこはライブラリの外の話なので。 EasyImagy に withUnsafePointer とか実装してあるんで、それを使って image から効率的にレンダリングは可能です。
Avatar
Kishikawa Katsumi 6/27/2018 4:35 AM
でも速度が足りてれば、UIImageとUIImageViewで表示できるのはめっちゃ便利ですね。 CameraPreviewLayerはCALayerだからAutoLayoutと相性悪いし。
Avatar
daisukeokaoss 6/27/2018 4:35 AM
お!Image<RGBA<UInt8>>のフォーマットで保存してるんですね
4:38 AM
おーーーーーーーー
4:42 AM
すごい
Avatar
ちょっと変更して、必ず DispatchQueue.main.async を通してコールバックが呼ばれるようにして、コールバックに渡された imageinout にしてそのまま編集できるようにしました。 ↓は画像のピクセルにアクセスして編集して、ネガポジ反転してる例です。 import UIKit import AVFoundation import EasyCamery import EasyImagy class ViewController: UIViewController { @IBOutlet var imageView: UIImageView! private let camera: Camera<RGBA<UInt8>> = try! Camera(sessionPreset: .vga640x480, focusMode: .continuousAutoFocus) override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) camera.start { [weak self] image in // Makes `image` negative image.update { pixel in pixel.red = 255 - pixel.red pixel.green = 255 - pixel.green pixel.blue = 255 - pixel.blue } self?.imageView.image = image.uiImage } } override func viewWillDisappear(_ animated: Bool) { camera.stop() super.viewWillDisappear(animated) } }
4:50 AM
でも速度が足りてれば、UIImageとUIImageViewで表示できるのはめっちゃ便利ですね。
体感的なパフォーマンス低下がないならコードがシンプルになるのはいいですね🙂
Avatar
daisukeokaoss 6/27/2018 4:52 AM
おー、これで生データに近い形で取得できてるわけですね
Avatar
image は生のピクセルデータですね。↑の例はそのピクセルを操作してネガ・ポジ反転してます。 (edited)
4:54 AM
あ、「生の」というのが CVPixelBuffer そのものかという意味でしたらコピーと、 CVPixelBuffer では BRGA なので R と B の反転をしてるという意味で生ではないです。個々の RGB のチャネルの値は生の値と同じですね。 (edited)
Avatar
daisukeokaoss 6/27/2018 4:57 AM
コンパイルにはEasyImageが必要なんですね
Avatar
Carthage をサポートしてるので、 Cartfile に github "koher/EasyCamery" "master" と書いて carthage update --platform ios すれば EasyImagy も勝手に取得してビルドされると思います(試せてませんが・・・)。 (edited)
Avatar
daisukeokaoss 6/27/2018 5:06 AM
なるほどー
Avatar
生データ何に使うかによって扱うレイヤー違う気もしますねー、フィルタかけるだけならCIFilterでいいかもしれない
😃 1
Avatar
ですねー。本当にピクセルを操作したい場合ではなく、専用の方法が用意されているならそれを使う方がパフォーマンス的に望ましいですね。
Avatar
@koher すごい。ささっとコードを書いたら すぐに動いちゃいました😃 画像が左に90度傾いているのですが、何か間違ってますでしょうか? iPhone 6s iOS 12 beta 2です。 (edited)
Avatar
@n.0939 端末の向きのよらずカメラの入力は必ず Landscape Right の状態で来るので、レンダリング側で調整しないといけないですね。 UIImageView で出力するなら、オーバーヘッドを気にしなければ image.rotated(byDegrees: 90) とかで回転できます。 (edited)
7:14 AM
本当は回転した状態でレンダリングするのが望ましいです。
Avatar
omochimetaru 6/27/2018 7:14 AM
簡単ライブラリー的には回転しておいたほうが親切そうだけど重くて悩ましいな
Avatar
Metal とか GL とか CoreGraphics とかで。
Avatar
@koher ありがとうございます🙇 (edited)
🙂 1
Avatar
omochimetaru 6/27/2018 7:14 AM
あ、UIImageとかだったら、「表示すべき回転量」がプロパティで持てなかったっけ?
7:15 AM
ああ、UIImageじゃなくてEasyImagyだからそういうのは無いのか。
😃 1
Avatar
@omochimetaru うーん、さすがにコールバックに回転した状態のものが来るのはオーバーヘッド的にも微妙だし、あと画像処理とかを考えると端末の向きで入力が変わるのは避けたいとかもあるので、基本はレンダリング側で対処かなぁ。
7:17 AM
UIImageView よりパフォーマンスのいい専用 View を提供して、そこでオリエンテーションを吸収とかはありかも?
Avatar
Targets ( > my iOS app) > General > Deployment Info > Device Orientation で、 Landscape Right のみをチェックしたら良い感じになりました😃
Avatar
override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) // Makes `image` negative camera.start { [weak self] image in image.update { pixel in pixel.red = 255 - pixel.red pixel.green = 255 - pixel.green pixel.blue = 255 - pixel.blue } self?.imageView.image = UIImage(cgImage: image.cgImage, scale: 1.0, orientation: .right) } } @koher さんがご懸念されてたコールバックの度に回転させちゃうコードだとこんな感じでしょうか😅 (edited)
Avatar
↑のように UIImageorientation で設定するのが良さそうですね。それだと余計なオーバーヘッドはなさそうです。 (edited)
😃 1
8:15 AM
僕が考えてたのは Imagerotated(byDesrees:) を使って、↓のようにやることでした。 camera.start { [weak self] image in let rotated = image.rotated(byDegrees: angle) self?.imageView.image = rotated.uiImage }
8:15 AM
これだと rotated が無駄に生成される分だけ余計です😣 (edited)
Avatar
Kishikawa Katsumi 6/27/2018 8:32 AM
UIImageのorientationプロパティってUIImageViewの表示に影響与えます?
Avatar
使ったことがないのでわからないです💦
8:38 AM
Image orientation affects the way the image data is displayed when drawn.
Avatar
Kishikawa Katsumi 6/27/2018 8:39 AM
私の経験からだと^ のコードでは挙動は変わらないと思っているので、もしすでに試されてたら教えて欲しいです。 @n.0939
Avatar
self?.imageView.image = UIImage(cgImage: image.cgImage, scale: 1.0, orientation: .right) 上記のコードでしょうか? 上記と下記で挙動は変わりました。 self?.imageView.image = image.uiImage // koherさんが最初に書かれたサンプルコード (edited)
Avatar
Kishikawa Katsumi 6/27/2018 9:03 AM
そうなんですね。ありがとうございます。
😃 1
Avatar
お、それで表示も変わるんですね🙂 色んな orientation をサポートするなら .right 決め打ちではなく端末の orientation に従った値を渡す必要がありますね。
Avatar
@Kishikawa Katsumi Xcode 9.4.1 と iPhone 6s / iOS 12 beta 2 です。以下の記事を見て、Xcode 9.4.1に iOS 12用の DeviceSupportフォルダを追加してます。 https://qiita.com/Hakota/items/59b4247a203e2639f8c9
私がこの現象に陥ったのは、Xcode7 beta3 を使っていたときに 実機をアップデートしたら、 Could not find Developer Disk ImageとWarning がでて 書き込めなくなりました。 ...
9:20 AM
@koher あっ、なるほど。。😨 (edited)
9:22 AM
self?.imageView.image = UIImage(cgImage: image.cgImage, scale: 1.0, orientation: .right) print(self!.imageView.image!.imageOrientation.rawValue) @Kishikawa Katsumi 上記のようにprintを仕込んだところ、コンソールには 3 が表示され続けました。 (edited)
Avatar
let o: UIImageOrientation switch UIDevice.current.orientation { case .portrait: o = .right case .landscapeLeft: o = .up case .landscapeRight: o = .down default: o = .right } self?.imageView.image = UIImage(cgImage: image.cgImage, scale: 1.0, orientation: o) @koher @Kishikawa Katsumi こんな感じにしてみました。デバイスの向きが portraitUpsideDown である場合を除いて、良い感じに動いてます。
👍 1
Avatar
daisukeokaoss 6/27/2018 10:49 PM
おーーーーありがとうございます
Avatar
↓こんな感じが良さそうです。 import UIKit import AVFoundation import EasyCamery import EasyImagy class ViewController: UIViewController { @IBOutlet var imageView: UIImageView! private let camera: Camera<RGBA<UInt8>> = try! Camera(sessionPreset: .vga640x480, focusMode: .continuousAutoFocus) override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) camera.start { [weak self] image in // Makes `image` negative image.update { pixel in pixel.red = 255 - pixel.red pixel.green = 255 - pixel.green pixel.blue = 255 - pixel.blue } self?.imageView.image = image.uiImage(orientedTo: UIApplication.shared.cameraOrientation) } } override func viewWillDisappear(_ animated: Bool) { camera.stop() super.viewWillDisappear(animated) } } extension Image where Pixel == RGBA<UInt8> { func uiImage(orientedTo orientation: UIImageOrientation) -> UIImage { return UIImage(cgImage: cgImage, scale: 1.0, orientation: orientation) } } extension UIApplication { var cameraOrientation: UIImageOrientation { switch statusBarOrientation { case .portrait: return .right case .landscapeRight: return .up case .portraitUpsideDown: return .left case .landscapeLeft: return .down case .unknown: return .right } } } (edited)
😃 1
😀 1
Avatar
daisukeokaoss 7/2/2018 7:54 AM
すいません、連続で投稿申し訳ないんですが、EasyCameryのアプリで、露出とisoを調整したいと思っていて、露出とisoを調整するコードをEasyCameryに挿入したんですが、 https://github.com/daisukeokaoss/Akari_project2/blob/master/Sources/EasyCamery/EasyCamery.swift#L83 libc++abi.dylib: terminating with uncaught exception of type NSException この実行時エラーを吐くんですよね。原因とか分かる方おられるでしょうか?
Akari_project2 - Visual Light Communication system from rasberry pi to iOS camera
Avatar
Kishikawa Katsumi 7/2/2018 7:59 AM
libc++abi.dylib: terminating with uncaught exception of type NSException ^ これのもうちょい手前のログとかスタックトレースないですか?
Avatar
daisukeokaoss 7/2/2018 8:00 AM
スタックトレースって右下のコンソールですか?
8:02 AM
すいませんググりました
8:04 AM
スタックトレース
8:05 AM
これでわかりますか?
8:08 AM
あ、iso outside rangeとか書いてありますね
Avatar
Kishikawa Katsumi 7/2/2018 8:14 AM
詳しいわけじゃないですけど、maxISOminISOがAVCaptureDeviceFormatから調べられると思うので、その値を見てみてください。
😀 1
Avatar
daisukeokaoss 7/2/2018 8:16 AM
ヒント頂けてありがとうございます。 https://github.com/daisukeokaoss/Akari_project2/blob/master/Sources/EasyCamery/EasyCamery.swift#L83 これで実行できました
Akari_project2 - Visual Light Communication system from rasberry pi to iOS camera
8:20 AM
device.setExposureModeCustom(duration: CMTimeMakeWithSeconds(0.001, 1000*1000*1000), iso: device.activeFormat.maxISO, completionHandler: nil)
Avatar
daisukeokaoss 7/3/2018 10:56 AM
すいません。宣言したクラスを参照してくれないんですが、どうすればいいでしょうか?
10:56 AM
10:57 AM
ImageToSpectrumByFFTのクラスが参照してくれないです
10:57 AM
連続で申し訳ないですが
Avatar
Kishikawa Katsumi 7/3/2018 10:58 AM
import EasyCamery が不要に見えますね。
Avatar
daisukeokaoss 7/3/2018 11:04 AM
EasyCameryはもともとインポートされていたもので、前はエラーなしでインポートされてたのにある時からエラーになったんですよね・ 返事ありがとうございます (edited)
11:04 AM
削除するとこうなりました
11:05 AM
Avatar
Kishikawa Katsumi 7/3/2018 11:07 AM
さっきよりは進みましたね。 私が答えてしまうとあれなので聞きますけど、このエラーの中でどこがわからないですか?
Avatar
daisukeokaoss 7/3/2018 11:09 AM
TimeAxisWaveFormPlotがunresolved identifierなのがよくわからないですね。これクラスとして宣言してますよね
11:10 AM
CameraってEasyCameryで宣言されているのでは?
Avatar
daisukeokaoss 7/3/2018 11:39 AM
EasyCameryを書き換えたのが問題なのかな?
Avatar
Kishikawa Katsumi 7/3/2018 12:43 PM
たぶんそれが原因じゃないですかね。書き換えた内容がわからないとこちらからはわかりませんが。
Avatar
daisukeokaoss 7/3/2018 12:46 PM
むう。必要な書き換えなんだよね。 ありがとうございます
12:49 PM
github "mattt/Surge" ~> 2.0.0 これを削除したらコンパイル通って、クラスも参照できたんですよね
12:49 PM
Surgeと名前衝突でも起きてたのかな?
Avatar
import XXX import YYY Foo.xxx // 🙅FooがXXX,YYY両方にあるとダメ、import XXXだけなら問題ない。なので XXX.Foo.xxx // 🙆モジュール名を明示的に指定する必要がある
Avatar
daisukeokaoss 7/3/2018 2:16 PM
tarunonさんありがとうございます
Avatar
↑書いてて途中で他のことやっちゃってたんですが、これあってました?
Avatar
daisukeokaoss 7/4/2018 11:04 AM
なんか、一回Surgeを削除して、Cartageをアップデートして、もう一回Surgeを加えてCartageをアップデートしたらコンパイル通ったんですよね
11:04 AM
謎だ・・・・・・・・
Avatar
あんま調査できてないんですが iOS 11.2.6 だと UNUserNotificationgetDeliveredNotifications が常に空で帰ってくる… (iOS 11.0.2 だとちゃんと取れる)
🤔 1
Avatar
🍤ACエビフライ🔌 7/25/2018 3:29 PM
App Store Connectで最初のバージョン 1.0 を審査に出しましたが、Metadata rejected が返ってきて、「What's New を入力する必要がある」と言われています。
3:31 PM
最初のリリース(1.0)ってWhat's New 入力できるんでしょうか? 入力欄すら見当たらないです。
Avatar
🍤ACエビフライ🔌 7/25/2018 3:41 PM
念のためリリース済みの自分のアプリや他の人のアプリをいくつか見てみましたが、最初のバージョンのWhat's New(バージョン履歴)は空でした。
Avatar
無難に新規リリースだけど、What's Newって書く必要あるのかい?あるとしたらどこから書くんだい?みたいな返答してみるかですねー…
3:44 PM
相変わらずの怪しいReviewしてくるApple
Avatar
🍤ACエビフライ🔌 7/25/2018 3:46 PM
もう返答してありまして、「For information regarding adding 'What's New' text, you may want to refer to iTunes Connect Developer Help. 
Should you require additional assistance, please contact iTunes Connect Support through the Contact Us page in iTunes Connect」iTunes Connect Developer Help を見ろ、助けがいるならiTunes ConnectのContact Us ページからiTunes Connect Supportに連絡しろ、というだけの短い返事が返ってきています。
3:47 PM
完全にまともに取り合ってもらっていない様子。私の英語が未熟だからでしょうか。。。
3:47 PM
ちょっと再度審査に出すとともにiTunes Connectから連絡してみます。
Avatar
このバージョンの新機能 このプロパティは、App の最初のバージョンでは使用できませんが、以降のすべてのバージョンで必須となります。このプロパティはローカライズが可能です。
https://help.apple.com/app-store-connect/?lang=ja#/devf29afbb74
4:03 PM
切れていい案件
🙏 1
👍 1
Avatar
🍤ACエビフライ🔌 7/25/2018 4:06 PM
👺
4:09 PM
@ありぜ ありがとうございます。
👍 1
😧 1
Avatar
🍤ACエビフライ🔌 7/27/2018 3:12 AM
昨日、優先審査にサクっと通り、今日Appleからこんなメールが来てました (edited)
3:12 AM
We apologize on the miscommunication about the rejection, and we have forwarded your concerns to the review team.
3:13 AM
miscommunicationだったのだろうか? 🤔
3:13 AM
とりあえず謝罪してくれたようでなんとなくうれしいです。
🙂 1
🙌 1
3:14 AM
あらためて @ありぜ さんありがとうございました。
3:14 AM
🙇
👍 3
Avatar
へー、アップルのレビューって謝罪って言葉ご存知だったのかー(棒
😭 4
😑 2
Avatar
daisukeokaoss 7/28/2018 4:38 AM
すいません、今SurgeっていうSwiftのFFT(高速フーリエ変換)のラッパー使ってるんですが、SwiftでFFTさせようとして全然上手くいかないんですが、SwiftのFFTのライブラリって、あれ正確なんですか?
Avatar
🍤ACエビフライ🔌 7/28/2018 9:07 AM
@daisukeokaoss 上手くいかないってどういうことですか?
Avatar
daisukeokaoss 7/28/2018 9:10 AM
いや、FFTやっても、X軸の最大値あたりにピークが来て、欲しいピークが来ないんですよね
Avatar
🍤ACエビフライ🔌 7/28/2018 9:11 AM
@daisukeokaoss あるはずの周波数がまったくないんですか?
Avatar
daisukeokaoss 7/28/2018 9:12 AM
X軸は周波数軸なんですが、その周波数軸の最大値あたりに、ものすごく強いピークが来て、それ以外が出ないんですよ
Avatar
omochimetaru 7/28/2018 9:13 AM
データフォーマットを間違えていて
9:13 AM
符号付整数がアンダーフローしてれば
9:13 AM
そういうことになりそう。
Avatar
🍤ACエビフライ🔌 7/28/2018 9:13 AM
(なるほど)
Avatar
daisukeokaoss 7/28/2018 9:14 AM
floatでそういうことってありますかね?
Avatar
omochimetaru 7/28/2018 9:14 AM
floatなら無さそうですね
Avatar
🍤ACエビフライ🔌 7/28/2018 9:15 AM
私はFFTそのものが分かってないのでアレなんですけど、もし手がかりがないようなら、同じ画像をFFTできる画像処理ソフトとかにかけてみて結果を比較してみるってのはどうでしょう?
Avatar
入出力が確定してるとたしかにいいですね。適当な周波数の sin 波一旦入れてみると良さそう (edited)
Avatar
daisukeokaoss 7/28/2018 9:17 AM
いや、適当なsin波入れても、周波数最大のところにものすごいピークが来るという現象がなぜか起きるんですよね (edited)
9:19 AM
なんかFFTの使い方間違ってることは間違い無いんですよ
Avatar
周期関数になるようにはなってますか?
9:20 AM
いやそれにしても最大値にピークはおかしいか
Avatar
daisukeokaoss 7/28/2018 9:21 AM
周期関数になってなくても、正しいピークがばらける程度ですよね・・・・・・・・ (edited)
Avatar
🍤ACエビフライ🔌 7/28/2018 9:32 AM
コードかライブラリに問題があると確信があるなら、 次うてる手としては、そのライブラリのサンプルプロジェクトの動作や呼び出しと比較してみるとか、 あるいは、問題が再現する最小のソースをつくってみるとかどうでしょう。 (edited)
Avatar
daisukeokaoss 7/28/2018 9:34 AM
Surge - A Swift library that uses the Accelerate framework to provide high-performance functions for matrix math, digital signal processing, and image manipulation.
9:35 AM
このライブラリを使ったので、サンプルプロジェクトはないんですよね
Avatar
omochimetaru 7/28/2018 9:36 AM
なんらかのプログラムのミスで、本当に異常に高周波な信号を生成してしまっているとか?
Avatar
daisukeokaoss 7/28/2018 9:36 AM
うーん
9:38 AM
ライブラリが間違ってるとか、そういうことってありますかね?そもそも、サンプルプログラムもないライブラリなので、「こうすれば正しく動いた」「こういう使い方だ」っていう記事がないんですよね
9:41 AM
問題が再現する最小のソースか
Avatar
omochimetaru 7/28/2018 9:54 AM
ライブラリが間違ってることはあります
Avatar
daisukeokaoss 7/28/2018 9:56 AM
まあ、そこなんですよね。PythonでのFFTをやってみても、そんな現象起きないし、
Avatar
なので、そういうときは、シンプルな利用コードを作ってみて、ちゃんと動くか確認します
10:26 AM
それでちゃんと動いたら、そこから少しずつ変更していって、やりたいことを実現します
10:26 AM
ちゃんと動かなかったら、ライブラリのissueページに報告したりすると、良いです。
10:26 AM
サンプルプロジェクトが無いと言ってましたけど、テストコードはあるみたいなので
10:26 AM
テストコードを読んでみると使い方がわかることもあります
Avatar
daisukeokaoss 7/28/2018 10:37 AM
すいません、グラフの読み方を勘違いしていたようで、0の位置を間違っていたようです。 Pythonのコードを実行して見て、気がつきました。
10:38 AM
10:38 AM
右のグラフの真ん中が0かなーと、考えていたわけですが、右端と左端が0だったようで (edited)
10:40 AM
真ん中が0で、左右に、周波数成分が高くなっていくのかなと思ってたら、そうではなかったようで、左端と右端が0でした
10:40 AM
皆さんありがとうございました
Avatar
daisukeokaoss 7/31/2018 7:52 AM
すいません。iOSアプリから、CSVファイルを生成して、iCloudに保存し、iCloudの同期機能を使用して、MacからCSVファイルを取り出したいんですが、なかなか上手くいかないんですよね
7:55 AM
こんな感じでCSVファイルにエクスポートしようとしたんですが、なかなか上手く保存してくれなくて https://github.com/daisukeokaoss/Akari_trial/blob/master/Sample/ViewController.swift#L76
Akari_trial - Visual Light Communication system that transfer data Raspberry Pi to iOS camera by LED Light
7:58 AM
どうやればいいかわかる方おられるでしょうか?
Avatar
Kishikawa Katsumi 7/31/2018 8:05 AM
どこで失敗していますか?
Avatar
daisukeokaoss 7/31/2018 8:08 AM
print("Success to Wite the File")
8:08 AM
これは実行されてるんですが、該当ファイルがiCloud内に無いんですよね (edited)
8:10 AM
iCloudフォルダのことです
Avatar
daisukeokaoss 7/31/2018 8:52 AM
try fileStrDataForTimeAxisWaveForm.write(to: path, atomically: true, encoding: String.Encoding.utf8) print(path) print("Success to Wite the File") これは成功裏に実行されてるんですよね。ただ、該当するファイルがフォルダ内に無いという
Avatar
daisukeokaoss 8/3/2018 3:17 AM
すいません。iCloudには保存できなかったんですが、iPhoneのフォルダ内には保存できて、以下のソースコードでできました if let documentDirectoryFileURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last { // ディレクトリのパスにファイル名をつなげてファイルのフルパスを作る var fileStrDataForTimeAxisWaveForm:String = "" for singleData in self.wave{ fileStrDataForTimeAxisWaveForm += "\"" + String(singleData) + "\"" + "\n" } let targetTextFilePath = documentDirectoryFileURL.appendingPathComponent(self.generateFileNameForTimeAxisWaveForm()) print("書き込むファイルのパス: \(targetTextFilePath)") do { try fileStrDataForTimeAxisWaveForm.write(to: targetTextFilePath, atomically: true, encoding: String.Encoding.utf8) } catch let error as NSError { print("failed to write: \(error)") } }
3:18 AM
@Kishikawa Katsumi さんお付き合いいただきありがとうございます
Avatar
iOS11.4にてバックグラウンド中の位置情報取得中にローカルプッシュを打ちたいのですが, 発火してくれません. UNUserNotificationCenter.current().add(request, withCompletionHandler: { error in guard let error = error else {return} print(error) }) ではエラーもなく,直前にbreakpointを貼って一度止めてから動かすと,何故か発火するという不可解な状態です. どなたか似たようなケースあった方いらっしゃいますか?
Avatar
メインスレッド作ってその中でローカルプッシュ登録していますか?
Avatar
UNLocationNotificationTrigger を使って指定場所でローカルプッシュを打ちたい感じでしょうか
Avatar
@noppe さん 登録はメインスレッドでおこなっています!
4:42 PM
@koogawa いいえ,もう少し複雑な条件下の場合のみローカルプッシュを打ちたいので,ローカルプッシュの登録をバックグラウンドで行いたいです
Avatar
下記で解決しました.単純に秒数を遅らせる必要があったみたいです. https://stackoverflow.com/questions/48064126/swift-local-notification-not-firing?rq=1
I'm trying to fire a local notification in my ios App. let notificationContent = UNMutableNotificationContent() notificationContent.title = "Test" notificationContent.body = alert let
5:09 PM
ありがとうございました
😇 1
Avatar
vicktorManuel 8/6/2018 6:31 PM
@nade ,because the seconds is not same in all phone and simulator .
Avatar
@vicktorManuel After I tried some patterns, I think 5 seconds or more looks better .
👌 1
Avatar
vicktorManuel 8/6/2018 10:34 PM
good luck nade
👌 1
Avatar
アプリ起動したときにUserDefaults読めないみたいなのってちょっと前にあったけど世界はそれ解決したんだっけ
Avatar
最近iOSで発生していた、突然NSUserDefaultsの内容が消えてしまう問題について、Appleから公式にアナウンスがありました。 https://developer.apple.com/library/content/r...
Avatar
起こってる事象を正確に把握できているわけではないんですが、多分UserDefaultsにデータは残っているんだけど、起動してすぐ(?)読み出す処理で読めない(空になってる?)ような感じのやつに遭遇しています
9:29 AM
消えてしまったわけではないっぽい
Avatar
macOS 10.13 and iOS 11 Release Notes NSUserDefaults Data Loss Fix Starting in iOS 9.3, and in subsequent releases of iOS and macOS, NSUserDefaults could fail to load data if more than roughly 250 separate apps (including separate reinstalls of the same app) had been launched since the last reboot. This has been corrected.
♥ 1
Avatar
main.swiftおいてUIApplicationMain呼ぶ前にUserDefaults触ったとしても手元ではちゃんと帰ってくるんで、単にタイミングの問題ではなさそうというのがややこい
9:29 AM
あとiOS11でも起きてるっぽ。
9:31 AM
ナウの状況はUserDefaultsからデータ読み出し不良以外この実装だったらこの問題起きないでしょ、くらいの感じなのでもしかしたらUserDefaults関係ないかもという可能性がないでもないんですけど。
Avatar
iOS 11 で発生ということは別なんですかねー?僕は User Defaults あんまり使わないので↑のような話題があったなぁということくらいしかわからないです🙏
👌 1
Avatar
viewDidLoadDispatchQueue.main.async したやつが viewDidAppear よりあとに呼ばれるのって別に何も保証されてないですよね
6:38 AM
didMove が同期的に呼ばれるとは限らないからされないな
Avatar
omochimetaru 8/13/2018 6:43 AM
print(HogeViewController().view) ←これだけで viewDidLoadは呼ばれるのに対して、 viewDidAppearはpresentしないと呼ばれない
Avatar
addChildViewControllerの話に見える
Avatar
omochimetaru 8/13/2018 6:56 AM
didMove の話してるから確かにそうだ
Avatar
んだ。
Avatar
iOSのImageAssetsの命名規約について質問なのですが どこに使用するか限定していない複数の類似画像ファイル名ってどうしてますか? 例えば信号機の赤点灯と青点灯の画像ファイルがあるので ツリーから閲覧しやすいようTrafficlightRed TrafficlightBlueなどグループ名を接尾語に指定したいのですがその他イメージリソースは接頭語にButtonなどを指定しているので関連性が薄れることを懸念しています
Avatar
Kishikawa Katsumi 8/26/2018 4:43 AM
iOSに限らないですが、セオリーとしては目的や用途で名前をつけるのではなく、その画像を識別するための名前を付ける方がうまくいきます。 その上で、わかりやすくしたり、用途を区別したい場合は同じものを指す別の定数を用意するなど、コードで名前を付けて区別するといいです。
4:45 AM
なので、見た目が信号機ならTrafficlightRed、TrafficlightBlueでいいと思いますし、赤や青も丸なら画像のそもそもの名前はCircleRed、CircleBlueなどで参照するようにして、適宜コードでTrafficlightRedなどの別名を付けるのをオススメします。 (edited)
4:47 AM
違う例を挙げると、 「<」「>」<= 左記のような形の画像を用意することはよくあると思いますが、これに back.pdf, forward.pdf という名前を付けるのではなく、 leftArrow.pdfrightArrow.pdf の方がたいていは良いです。
4:48 AM
使う側で適宜、 let backImage = UIImage(named: leftArrow) のように名前をつけます。 色々なところで使われるなら、 backImage を定数などにして参照可能にします。
4:50 AM
コードじゃなくてもAssetをうまく使って同じ画像に別名をつけてもいいです。 要は、似たような画像、または同じ画像を別の用途に使うということは非常に良くあることなので、用途で区別するようにしまうと困ることの方が多いですよ、という話です。 (edited)
👏 3
👍 4
Avatar
ありがとうございます! まさに目的はその様なものなので大変参考になりました🙏
Avatar
🍤ACエビフライ🔌 9/28/2018 1:28 PM
App Storeの段階的リリースについて質問があります。 段階的リリースにした時って、App Storeの説明文や検索キーワードは初日に全部公開されるという理解で合ってますでしょうか? 偉い人から確認されて多分そうだと答えていいか迷っています。
Avatar
段階的リリースのヘルプ読んで知ったけど、あくまでAppの自動アップデートの段階的リリースなのね。
1:51 PM
手動更新であれば、ユーザは更新できてしまうって話なので、初日に全部公開されてそう https://help.apple.com/app-store-connect/#/dev3d65fcee1 (edited)
Avatar
🍤ACエビフライ🔌 9/29/2018 8:22 PM
ありがとうございます!
Avatar
daisukeokaoss 9/30/2018 3:30 AM
すいません。Xcodeって、UIのコンポーネントってどこから持ってこれば良いですかね?なんかXcodeのUIが変わってわからない
Avatar
daisukeokaoss 9/30/2018 4:17 AM
View->Libraries->show libraryで出て来ました。わかりにくい・・・・・・
Avatar
@daisukeokaoss わかりにくいですよね。 Xcode 10 で変わったようです。 Storyboard 等を開いた状態で右上の方にある↓の一番左のボタンからも出せます。
Avatar
daisukeokaoss 9/30/2018 5:41 AM
結構Apple仕様コロコロ変えますよね・・・・・・返信ありがとうございます
🙂 1
Avatar
このボタンからのアクセス、結構便利だなー、と思いましたよ👍
7:28 AM
このボタン、長押しでオプションが出て来ますねー。 (edited)
Avatar
IDEが開いている文書によって適切なものが出てくるのは結構いいですよね。Template出てこなくなったのは地味に困ってますがw
👍 1
Avatar
Kishikawa Katsumi 10/1/2018 7:29 AM
スニペット?
Avatar
ファイルの類です
7:29 AM
新規ファイルをD&Dで置けなくなっちゃった
Avatar
Kishikawa Katsumi 10/1/2018 7:29 AM
あ、.hとかのアイコンのやつか。
Avatar
(多分Xcode 10から)Tabを引っ剥がしてWindowに出来るようになりましたよね。これも地味に便利です👏
Avatar
Kishikawa Katsumi 10/1/2018 7:40 AM
それは前からかな。右クリックでタブで開けるようになった。
Avatar
(そうでしたっけ😅 Thanks!)
Avatar
daisukeokaoss 10/1/2018 11:34 PM
すいません。 @IBAction func getWalk(_ sender: Any) { let pedometer:CMPedometer = CMPedometer() if(!CMPedometer.isStepCountingAvailable()) { print("cannot get stepcount") } //let now = Date() //let oneWeekAgo = Date(timeIntervalSinceNow:604800) let now:NSDate = NSDate() let formatter:DateFormatter = DateFormatter() formatter.dateFormat = "yyyy-MM-dd" let from:NSDate = self.stringToDate(date: formatter.string(from: now as Date), isStart: true) let to:NSDate = self.stringToDate(date: formatter.string(from: now as Date), isStart: false) pedometer.queryPedometerData(from: from as Date, to: to as Date, withHandler: {(pedometerData:CMPedometerData!, error:NSError!) in print("\(pedometerData.numberOfSteps)") // 歩数 //print("\(pedometerData.distance)") // 距離 //print("\(pedometerData.floorsAscended)") // 上った回数 //print("\(pedometerData.floorsDescended)") } as! CMPedometerHandler) } private func stringToDate(date: String, isStart: Bool) -> NSDate { let timestamp = (isStart) ? date + " 00:00:00" : date + " 23:59:59" let formatter:DateFormatter = DateFormatter() formatter.dateFormat = "yyyy-MM-dd HH:mm:ss" return formatter.date(from: timestamp)! as NSDate } このコードがエラーで実行できないんですよね。 2日ぐらいやってるんですがよくわからなくて
11:34 PM
実行時エラー
Avatar
typealias CMPedometerHandler = (CMPedometerData?, Error?) -> Void なのでキャストに失敗しているみたいです。
Avatar
daisukeokaoss 10/2/2018 2:46 AM
なるほど as! CMPedometerHandler)
2:46 AM
ここですか
Avatar
ひとまず {(pedometerData:CMPedometerData!, error:NSError!) in{ (pedometerData, error) in にすると型推論で型が充てられるので処理が通るようになると思います。 (as! CMPedometerHandler も不要になります。) (edited)
Avatar
daisukeokaoss 10/2/2018 3:20 AM
お!解決しました。ありがとうございます!
👏 1
Avatar
daisukeokaoss 10/3/2018 5:06 AM
エラー
5:08 AM
すいません。このエラーって何が原因かわかりますかね?GetWalkActivityを取得しようとして、エラーになっているんですが
5:08 AM
聞いてばっかりですいません
5:08 AM
検索しても出てこないんですよね
Avatar
Kishikawa Katsumi 10/3/2018 5:16 AM
GetWalkActivityってご自分のアプリの名前ですよね?このログはどの行で表示されるんですか?
Avatar
daisukeokaoss 10/3/2018 5:18 AM
32行目が実行された後みたいですね
5:18 AM
すいません。今解決しました
5:20 AM
let pedometer:CMPedometer = CMPedometer() これが、ローカル変数になっていて、コールバックが呼ばれたときにCMPedometer()がなくなっていてエラー吐いていたようです
5:20 AM
クラスのプロパティに変更したら解決しました
5:21 AM
エラーが直ってる
5:23 AM
@Kishikawa Katsumi さんありがとうございます
Avatar
Xcode10にしてからlldbpo 変数を打った時に、 (lldb) error: Couldn't IRGen expression, no additional errorとなって変数の中身がわからないのですが、どなたか解決する方法知りませんか。 https://stackoverflow.com/q/52420272/1876356 にあるように、 rm -rf ~/Library/Caches/org.carthage.CarthageKit rm -rf Carthage/を試して、 再度ライブラリをupdateしても問題が起きたままなので、困ってます。 (edited)
I can not print debug information in my UI TESTS. Configuration: Xcode 10 and SWIFT 4.2. When I try to print something in console I can only see an error: "error: Couldn't IRGen expression, no
Avatar
質問しようとしたら @ぶるー さんと同じ現象だった…
😫 3
Avatar
ここじゃなくて #lldb の方が良さそうですね ↑の件
👌 1
Avatar
Yuto Mizutani 10/19/2018 2:32 PM
質問させて下さい、 初歩的な質問なのですが、 1. 非同期にDispatchQueueを走らせる場合、循環参照となる可能性があれば [weak self](またはunowned self) を書く必要はありますか? また、 2. ネストした複数クロージャ内も必要に応じてクロージャの都度 weak selfを用いるべきですか? すべきだろう、という理解はあるのですが、なかなかそう書いているコードを見かけないのでこちらで質問させて下さい。。
Avatar
僕は↓のようにしますね。 class ViewController: UIViewController { ... func foo() { DispatchQueue.main.async { [weak self] in guard let self = self else { return } // self を使う処理 DispatchQueue.main.async { [weak self] in guard let self = self else { return } // self を使う処理 } } } }
2:39 PM
2. ネストした複数クロージャ内も必要に応じてクロージャの都度 weak selfを用いるべきですか? すべきだろう、という理解はあるのですが、なかなかそう書いているコードを見かけないのでこちらで質問させて下さい。。
僕もそう思っているのですが、実際みんなどうしているのか興味があります。
(edited)
Avatar
私もkoherさん同様の形ですね。
なかなかそう書いているコードを見かけない
これは多くの人がclosureのネストが嫌いで、まずその形を避けるようにしているから見かけにくいのかなと思います。
Avatar
class ViewController: UIViewController { ... func foo() { weak var wself = self DispatchQueue.main.async { () in guard let self = wself else { return } // self を使う処理 DispatchQueue.main.async { () in guard let self = wself else { return } // self を使う処理 } } } }
11:35 AM
↑こうすると [weak self] の繰り返しは避けられますよ、僕は2重3重になるときはそうしてます。
👍 7
Avatar
DispatchQueue.asyncなんかはワンショットの処理で、循環参照にはならないので、僕はあまりweak使わないですね。ただ、その非同期処理が画面遷移などで必要なくなってればキャンセルしたい場合はweak使ったらいいかなとは思います。
Avatar
キャンセルにweak使うのは微妙だなとずっと思っていて、URSessionのTaskとかRxのDisposeBagなんかはdeinitでキャンセルするのでちゃんとしてて良い感じ (edited)
7:32 AM
積んだQueueが消えるんじゃなくて後で実行時のweakを見て消えたことを知る、みたいなのがなんだか感を感じますね、お手軽なのはわかる
Avatar
まあ同意 コールバックを空にしたところで、 非同期処理自体がキャンセルされてるわけじゃないからね
Avatar
はい、weakでキャンセル相当をしたいわけじゃないけど、上のコードがそういう意図なのかなと思ったので。
Avatar
二重asyncが生じるのは、ワーカーQueueに投げて処理させて、メインスレッドでコールバック ってパターンが多いですね
7:56 AM
そうすると、DispatchQueue.asyncそれ自体しかキャンセルするものがなくて
7:59 AM
こうなりがち
👍 1
Avatar
DispatchWorkItemとか使えばdeinitのタイミングでキャンセルできそうですが明らかにめんどいのでweakしがちですね
Avatar
async はミスリーディングだったかもです。空で書けてぱっと出てくる @escaping な高階関数が DispatchQueue.async だっただけですね😅 foo とかにしておいた方がよかったかも。
4:30 PM
@omochimetaru
↑こうすると [weak self] の繰り返しは避けられますよ、僕は2重3重になるときはそうしてます。
意識的に [weak self] 書いておかないと内側のクロージャ式で誤ってそのまま self 使ってしまいそうな・・・。まあ、 [weak self] 書き忘れでも同じことにはなるんですが。個人的には wself の名前問題も発生しないし、 [weak self] 繰り返しの方が好みですね。
Avatar
Yuto Mizutani 10/21/2018 7:28 PM
コールバックを空にしたところで、
非同期処理自体がキャンセルされてるわけじゃないからね なるほどです。 weak以外でキャンセルできるように作るのが良く、そうでない場合はやはりweak selfの記述は必要なのですね あとはどう避けるか、ですか。勉強になりました!ありがとうございます😊
Avatar
すみません、こちら(https://qiita.com/k-yamada-github/items/f0a90a6e91f38bd6d9b9 )の記事を丸パクリでUIViewからUIImageを生成する実装をしたのですが、生成したあとのメモリが開放されない現象が発生してしまいました。アドバイスもしくは、おすすめの記事や教材を教えていただけないでしょうか? (edited)

Problem

  • UIViewからUIImageを作成したい。
  • UIImageの背景は透明にしたい。
  • 画質は低下させない。

Solution

```swift

Swfit2.3

import UIKit ...
Avatar
Kishikawa Katsumi 11/9/2018 6:12 AM
^ このコードをそのまま書いたとしたらメモリが解放されないことはなさそうです。 どうやって解放されてないことを確認しましたか?
Avatar
実際に私が制作しているアプリの中で実装している機能の一つで、 アルバムから画像を取得 ↓ UIScrollView上でResize ↓ UIScrollViewと同じ位置に配置した透明のUIViewから新たにUIImageを生成 ↓ UIImageをサーバー側に送信 という流れで実装していたのですが、
6:22 AM
UIScrollView上でResizeまではメモリも20MB程度で抑えられていたのですが、変換した際に40MBまで上昇し、サーバーに送信してもなおメモリは40MBにとどまってます
6:23 AM
ちなみにアルバムから画像を取得したりPostする際に使用したViewControllerは解放できてます。
6:30 AM
class ViewController: UIViewController { var hogehoge: UIView = UIView() func piyopiyo() { NotificationCenter.default.post(.hoge, object: hogehoge.snapshotImage()) self.dismiss(animated: true, completion: nil) } } extension UIView { func snapshotImage() -> UIImage? { UIGraphicsBeginImageContextWithOptions(bounds.size, false, 0) guard let currentContext = UIGraphicsGetCurrentContext() else { UIGraphicsEndImageContext() return nil } layer.renderInContext(currentContext) let image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return image } }
6:30 AM
大まかに実装の流れを書いてみました
Avatar
Kishikawa Katsumi 11/9/2018 6:30 AM
オブジェクトが解放されてないかどうかというよりは、UIImageを描画するために使われたメモリが残ったままのようだ、ということですね。 それがいつ解放されるかは自明ではないので、繰り返しやってみて本当に線形に使用量が増加し続けるかどうかとか、調べてみるといいと思います。ある程度増えたら適当なタイミングで減ったりするんじゃないかと思います。
👍 4
Avatar
なるほど、
6:31 AM
ありがとうございます!
Avatar
昔、新規にXcodeでプロジェクトを作ってCoreDataが使いたければ、project settings の Linked Frameworks and Libraries の +ボタンを押してCoreData.frameworkを明示的に追加する必要があった気がしますが、いまだとおもむろにコード中で import CoreData とか書いてやればすぐに使えるようになってる気がするんですが、これってどういうことなんでしたっけ?昔からでしたっけ (edited)
5:36 PM
あーこいつのおかげか。Xcode5からの機能とのことで4年前のお話でした。時間が過ぎるのは早いですね・・・ https://stackoverflow.com/questions/33728359/when-do-you-have-to-link-frameworks-and-libraries-to-an-xcode-project
Background: I started a test Swift project to understand and expand my knowledge on how to implement CoreData into my projects. And of course whenever I'm just testing and playing around with code, I
👏 3
Avatar
それが無かった頃はいろんなシステムフレームワークを、リンカエラーを見ながらシンボル名から予想してぽちぽち追加してました
😂 2
12:53 AM
QuartzCoreとかがprefixから予想できなくてハマりがち
Avatar
画面録画した際の解像度を録画せずに取得したいのですが、何か取る方法ご存知の方いますか? iPhoneXあたりから実際の画面解像度よりも小さいサイズで録画されるようなのです
Avatar
Apple Payの登録をアプリ内で行う処理書いたことある人っていたりしないだろうか?? Apple の人から教えてもらった「こうすると出来る」って方法が、筋違いな内容で…つらい
Avatar
in-app provisioningですか?
Avatar
たぶんそれです。 https://developer.apple.com/library/archive/documentation/Miscellaneous/Reference/EntitlementKeyReference/ApplePayandPassKitEntitlements/ApplePayandPassKitEntitlements.htmlIn-app provisioning of payment cards.+PKAddPaymentPassViewController使えばアプリ内でApple Payの登録画面を呼び出せるって認識で合ってるんですかね?
Describes the entitlement keys for App Sandbox, iCloud, Push Notifications, and shared app containers.
Avatar
ですね、ただしAppleから特殊なpermissionをAppIDに対して付与してもらう必要があります
12:16 PM
permissionがないと上のVCは表示されないかと思います
Avatar
あぁやっぱりですか…permissionない状態でentitlements記述したら、その時点でbuild errorで、entitlementsなかったらVC生成時にnilが返りましたね。 付与されるのは、てっきりteamIDかと思ってましたがAppID側なんですねーありがとうございます。ひとまずpermission取得する方向で動きます
12:14 AM
any sizeの必須でリジェクトされる場合の具体的な例ってどんな感じになるのか想像できない
Avatar
vicktorManuel 6/29/2019 12:52 PM
some people had problems with suica in iphone 13?
Avatar
Apple Payのアプリ内で設定する方法、調べていった結果permissionをAppleから付与してもらう方式は昔の話で、今は異なっていました。 最新の方法では、PKPaymentViewControllerをただpresentするだけで良く、 端末にカードが登録されApple Payが使える → 決済シートが表示される 端末にカードが登録されておらずApple Payが使えない → Apple Pay登録の画面が表示される → Apple Pay登録完了すると決済シートが表示されている また、この挙動は実機のみで確認可能で、少なとくもiOS 11以上から自動でこういう遷移を行ってくれる様子。
Avatar
PKPaymentViewController と言っているのはこれのことですか?↓ https://developer.apple.com/documentation/passkit/pkaddpaymentpassviewcontroller
5:17 AM
あ、確かに実機なら表示まではできたかも。ただそこから登録処理進めるとdelegate呼ばれるところあたりでエラーになりませんかね?
Avatar
PKPaymentViewController と言っているのはこれのことですか
あぁそうです。正しくは PKAddPaymentPassViewController でした。 手元の検証機iPhone X (iOS 12.1)では、 アプリ内でApple Pay登録処理 > 登録完了 > 決済シートが表示 の流れで動作していてエラーは確認していませんね🤔
Avatar
ほうほう、登録処理ではカード番号は手入力するかんじですか?
Avatar
ですね。
Avatar
ああであれば
6:24 AM
>>in-app provisioningですか? とは別の話でしたね、すいません
Avatar
おや、別の話だったのですか…そうすると最初から自分が勘違いしていただけなような気がしてきました😅 ふむ。
2:31 AM
この辺のObjectiveC例外投げるからSwiftから使い物にならない族
2:31 AM
まとめて全部deprecatedになってた
2:31 AM
/* The API below may throw exceptions and will be deprecated in a future version of the OS. Use their replacements instead. */
(edited)
2:33 AM
- (nullable NSData *)readDataUpToLength:(NSUInteger)length error:(out NSError **)error API_AVAILABLE(macos(10.15), ios(13.0), watchos(6.0), tvos(13.0)) NS_REFINED_FOR_SWIFT; @available(iOS 13.0, *) open func __readDataUp(toLength length: Int) throws -> Data
2:33 AM
Swift向けの名前がダブルアンスコの謎なやつになってる・・・
2:34 AM
ドキュメントにはSwift版が存在してない
Avatar
Deleted User 9/9/2019 3:24 AM
cocoapodsを使っているxcodeprojでOpenCVを使おうとしているのですが,PodfileにOpenCVを追加してbridging headerを作成するのがベターですか?
Avatar
Kishikawa Katsumi 9/9/2019 3:47 AM
OpenCVはC++なのでBridging Headerを作ってもそのままではSwiftからは使えないと思います。
3:48 AM
Objective-C++でラップしたものをObjective-Cのインターフェースで公開して、それをSwiftから使う(Bridging HeaderなりModule Mapなりで)、方法になると思います。
3:49 AM
導入はすでにCocoaPodsを使ってるならCocoaPodsで入れるのが一番簡単だと思います。
Avatar
Deleted User 9/9/2019 4:53 AM
なるほど,そうなりますか.ありがとうございます. (edited)
Avatar
Kishikawa Katsumi 9/9/2019 6:13 AM
OpenCVSwiftみたいなのを作ったらウケるかな?🤔
👍 3
Avatar
Deleted User 9/9/2019 6:50 AM
https://github.com/vvmnnnkv/SwiftCV SwiftPMならあるようですね S4TFに合わせてるっぽいしsystemのopencvをみてるんですね
Minimal Swift for TensorFlow OpenCV bindings. Contribute to vvmnnnkv/SwiftCV development by creating an account on GitHub.
Avatar
Kishikawa Katsumi 9/9/2019 6:55 AM
iOS以外ならこれで良さそう。SwiftCVって名前良いな。
Avatar
どこで質問するのが良いのか悩ましいのですが、iPadOS13.4から使えるようになった日本語のライブ変換をアプリ内のtext FieldやtextView毎の設定で無効にする事って可能でしょうか? APIの方が漢字に非対応なので、勝手に漢字に変換されると操作性に難が…
Avatar