will and way

ただの自分用メモを人に伝える形式で書くことでわかりやすくまとめてるはずのブログ

iOS

iOSのSecurity Frameworkのステータスコード逆引き

iOS

Appleのセキュリティ周りのステータスコードでnumberとエラーが紐づかないのでメモ In addition to the codes listed here, certain Security framework services provide additional status codes that are specific to that service. In particular, see A…

【Ver. 2】 AppStore Connectでアプリがレビューに入ったとか、リジェクトされたとかをSlackに通知する

iOS

adventar.org この記事はCyberAgent Developers Advent Calendar 2018の12/14の記事です。 今回はタイトルの通り、AppStore Connectのステータスを通知する仕組みを実装していきます。 TR;DR Amason AWSを使いました。 AppStore Connect -> SES -> SNS -> La…

iOSDC 2018 「二癖くらいある画面収録からの生放送」というタイトルで発表してきました!

iOS

「二癖くらいある画面収録からの生放送」というタイトルで発表してきました! 内容としてはiOS11から可能になった画面収録をBroadcast Upload ExtensionというReplayKitを用いたキャプチャ機構から生放送する機能を実装した時の話です。 iOSDCとは iosdc.jp …

CSS Spriteっぽいことを手軽にiOSでやる

やりたいこと アトラス化(1つの画像に複数がまとまられていること)されている画像をいい感じにスライダー上に表示させたい。 具体的にはYouTubeのシークバーとサムネイルみたいなことをしたい。 できたもの やったこと アトラス化されている画像は下記のよう…

CMSampleBufferの方向を取得する

ReplayKitのRPBroadcastSampleHandlerでは1フレームの情報をCMSampleBufferとして受け取り、それを自由に扱うことができます。 今回はCMSampleBufferから方向を取得してみたいと思います。 結論からいうと下記でできます。 internal extension CMSampleBuffe…

UITableViewCellの中身をRxで監視するときのtips

シナリオ テキスト入力をもつTableViewCellがある 画面には更新ボタンがあり、押した時に、キーボードを閉じたい 結論ソース ※諸々省略してます // UITableViewCellにcellForRowAtIndexまでにunbindさせるための情報を定義する extension Reactive where Bas…

FastlaneがSwiftで書けるようになった〜

これはSwiftアドベントカレンダーの17日目の記事です。 Swiftの方はプラットフォームに依存しないエントリーを書くべきかと思いましたが、 FastlaneのSwift対応がタイムリーだったのでこっちにしました。 元はSwiftでTCPソケット通信を書こうと思ってたので…

CIを前提としたプロジェクトのテンプレートができてた話

これはiOSアドベントカレンダーの10日目の記事です。 私にとって今年は、iOSエンジニアに転向した年でした。 それまではAndroid。 そして、携わっているプロジェクトのSwift化(未完)だったりiPhoneX対応だったりと劇的な半年でした。 ほぼゼロから始めたので…

Lottieで再生するアニメーションを作って読み込ませるまで

blog.matsuokah.jp ↑の記事は、Lottieを使ってアニメーションの再生をするところを実装しました。 実はハンバーガーアイコンのアニメーションには大きな余白が含まれていて このまま使うとアイコン自体が非常に小さい表示になってしまっていました。 という…

Lottieことはじめ

Lottieとは Airbnb謹製のアニメーションツールでAfterEffectsでexportしたアニメーションをiOS、Androidで再生できるというすぐれものです。 上記のGIFはlottie-iosより転載 僕自身はこういうアニメーションはあまり好きではないのですが、 味気なさがなくな…

アクションシートのクロージャをObservable化して処理を一本化する

アクションシートってよくつかわれるんですかね? 私が携わっているプロジェクトではそこそこ使われています。 コレです アクションシートの基本的な使い方 let actionSheet = UIAlertController(title:"Title", message: "Message", preferredStyle: .actio…

DecodableのDecodeを簡潔に書きたい

Swift4でDecodableつかってますか〜? 公式にサポートしてもらえると本当にありがたいですよね。 しかしながら汎用的なパースをしようとすると若干、コードが冗長になります Encoding and Decoding Custom Types | Apple Developer Documentation 公式ドキュ…

汎用的なAPIClientの設計と実装

TL; DR Swift4でDecodableを使いつつ、 フレキシブルなAPIレスポンスの設計をしていったら結局APIクライアント書いてたという話。 その設計・実装の流れを綴りました。 長くて読みきれないっていう場合はソースコード読んでもらったほうがいいと思います。 g…

Swift4のDictionaryのアプデの目玉が公式ブログ?に掲載されてたので読んでみた

原文はこちら Swift4ではDictionaryがより便利に使えるようになっているということで サンプルを見ていく Grouping Values By a Key Swift3系では グループ機能がなく、かなりの手順を要していた // Swift <= 3.1 var grouped: [GroceryItem.Department: [Gr…

RxCocoaのUITableViewのbind(to: )にRegistrableを使って処理の簡略化

前提 qiita.com Registrable型に則ればあとは型推論によるextensionの実装で済ませようというアプローチです キャストが失敗したら?だったり、各型のIdentifierを取得する手間をextensionに閉じ込めることができるので、 シーケンスに集中することができる…

objc_getAssociatedObject で必ずnil返ってくる件(解決済み)

blog.matsuokah.jp こちらのエントリーでExtensionPropertyをExtensionとしてつけるだけでassociated objectにアクセスしやすくするというエントリーを書きました しかしながら、この記事にはバグがありました。 それは getProperty が必ずnilになってしまい…

UserDefaultsをSwiftのEnumで扱えるように拡張する

UserDefaultsって便利ですよね。 基本的にはユーザーのアプリ内の設定値保存に使うことを主としていますが、 キルされても保持したいけど、アンインストール→インストールでは消されてもいい。DBを作るまでもないといった 値の軽いキャッシュとして利用した…

UIScrollViewのページングをライフサイクルとして扱えるようにする

もっといいタイトル無いだろうか・・・笑 利用用途 UIViewControllerのviewをページとしてUIScrollViewにマウントしておいて、スワイプで切り替えて使うみたいな想定です。 UIScrollViewでページャーのviewDidAppearみたいなライフサイクルがあれば表示され…

SwiftでExtensionのプロパティの黒魔術感をなくす(追記アリ)

SwiftでExtensionに追加するプロパティの黒魔術感が異常。 クラス全体には関係ないけど、特定のextension内に閉じ込めたいpropertyが欲しくなることがあると思います。 しかし、Swiftではextensionローカルなプロパティを持とうとするとobjc_getAssociatedOb…

Alamofireでパラメータをenumで扱えるようにする

github.com Alamofireといえば、言わずと知れたSwift界のHTTPクライアント。名前の由来はテキサスの花の名前らしいすね。 今回はAlamofireのリクエストパラメータをenumで扱うという話。 大前提。Stringは脆い! Stringはすべての表現を兼ね備える万能な型で…

Swiftをせっかく使うならProtocol Oriented Programmingしたい

まえがき 6月からAndroidエンジニアからiOSエンジニアになり、Objective-CをSwift化するプロジェクトをやっている。 iOSはiOS5,6時代に開発した経験はあるがSwiftは0からということで、最近色々記事を読んでいた。Swiftいいですね。僕は好きです。 その中でW…