will and way

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

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

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

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

キーボードを掃除した

そういえば、今年HHKBの無印字を買ったんです。今年買ってよかったものの一つです。 そんなHHKBですがホームページに行くと以下のような文章が書いてあります。 アメリカ西部のカウボーイたちは、馬が死ぬと馬はそこに残していくが、どんなに砂漠を歩こうと…

良いルーターを使うのはもはやライフハックつだ!!! TP-LINK AC3150 レビュー

Amazon Cyber Mondayあざす!!! TP-Link 無線LANルーター 11ac/n/a/g/b 2167+1000Mbps デュアルバンド Wave2対応 ギガビット MU-MIMO 3年保証 Archer C3150出版社/メーカー: TP-LINK発売日: 2016/11/18メディア: Personal Computersこの商品を含むブログを…

InputMethodService(キーボード)開発の勘所となりそうな項目

この記事はAndroid Advent Calendar 2016 - Qiitaの11日目の記事です。 昨日は@yuyakaidoさんのData Binding Tipsでした。 明日は@rei-mさんのDagger2とMockitoでUIテストはじめる話です。 11日目はAndroid StudioでKotlinのプロジェクトが新規で作られるソ…

小ネタ. Macで音のボリュームを無段階調節

知らなかったので驚いた Shift + Option + Functionキーで音量とかディレスプレイ輝度の調整がより細かくできる!!! 普通にボリュームup/downすると以下のようにメモリ毎にボリュームが変わりますが Shift + Optionを推しながら調節すると・・・ うおおお…

Androidのコードを書く前にコーディングに集中できる状態を作る

はじめに この投稿はAndroid その3 Advent Calendar 2016 - Qiitaの5日目の記事です。 4日目はkimukouさんのrealm-gradle-plugin 2.2.1 と Android Realm Browserでした。 6日目はkimukouさんの2016年末のAndroidでのSSL対応に関してです。 Androidのコード…