will and way

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

2019年買ってよかったもの/やめたもの

2019年に買ってよかったもの・やめたものをつらつらと。 ガジェット/趣味 ノートPCスタンド バーナー オフィスチェア(エルゴヒューマンプロ) AirPods Pro Pixel3a 衣 大きめのハンガー 50色ソックス(ユニクロ) 革靴 食 スパイス(シード/パウダー) 住 家 滑り…

iOSシミュレータのクリップボードを同期しやすくするTips

TL; DR MacのカスタムショートカットにiPhone SimulatorのPasteboard管理をバインディングすると便利だったのでメモりました。 そもそも、クリップボードと言う名称かと思っていましたが、ペーストボードが正しいようですね。pbcopyコマンドもありますし。 …

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…

FACTFULNESS - ファクトフルネス

学び ファクトとは一体なんなのかを知る。ファクトとはデータとそれを比較・加工して、場面に応じて柔軟に相対的/絶対的に捉えること。1次情報とまではいかないが、加工されていないデータと切り口は宝。切り口の多さ=スコープの多さ 人は事実や事象に対して…

【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 …

TypeScriptでGoogle App Scriptを実装する環境を作る

TypeScriptは型をもっていてJSに変換できる言語みたいな感じでしょ?くらいの経験値しかないですが、Google App Scriptをスクリプトエディタでずっとやっていてつらみを感じたので、 ローカル開発環境を作りつつ、TypeScriptに手を出してみようと思いました…

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

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

potatotips #50 に参加して来た

potatotipsとは iOS/Android合わせて10数名が持ち時間5分の中でそれぞれのTipsを話す会です。 今回は第50回目(継続されててすごい!)の開催で、私はiOSブログまとめ枠として参加して来ました。今回初参加です! potatotips.connpass.com ケータリングにもポテ…

Nintendo Switchのゲーム音とPCやスマホの音を同時に聴くにはBelkinのRockstarがおすすめ。

Nintendo Switchのゲーム音とPCやスマホの音を同時に聴くには? Splatoon2やってますか?私はリーグ戦やプライベートマッチをよく楽しんでいます! その時に必ずと言って使うのがDiscord。いわゆるボイスチャットです。 皆さんはボイスチャットをしながら、…

CMSampleBufferの方向を取得する

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

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

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

2017年買ったもの

とりあえず、2017年買ったものの総評を書いていこうと思う。 あくまで個人的な感想です。 買ったもの SITPACK 婚約指輪/結婚指輪 ゲーミングチェア 自作PC ケース マザボ 電源 CPU CPUクーラー GPU メモリ キャプチャボード モニターアーム キーボード マウ…

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

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

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

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

Macでスクリーンショットの保存先の変更と古いスクショの自動削除

デスクトップがスクショの嵐・・・! こんなデスクトップになった経験はないでしょうか。 スクリーンショットの保存先はデスクトップなので、スクショを撮ってるうちにいつの間にかデスクトップがスクショで埋め尽くされることがあります。 精神衛生上よくな…

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つかってますか〜? 公式にサポートしてもらえると本当にありがたいですよね。 しかしながら汎用的なパースをしようとすると若干、コードが冗長になります 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…

ImeFragmentというライブラリを公開しました!キーボード開発でもFragmentを使う!

この記事はCyberAgent Developers Advent Calendar 2016の20日目の記事です。 www.adventar.org 19日目はstrskさんでGKEのノードプールを利用したKubernetesのアップグレードでした。 ちなみにstrskさんは元々飲食業界ではたらいていてCSで入社→今はAbemaTV…