will and way

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

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のコード…

Android 2.3系, 3.0系を対応しているならそろそろ潮時なのかもしれない

Highlights from the Google Play services 10.0 release. Google Play Servicesのv10系がリリースされ、リリース文の序文に Google Play services 10.0.x is the final release that includes full support for Android version 2.3.x 2.3を切るよと書かれ…

Androidの開発にはIntelliJでも良いじゃんと気づいた話

IntelliJをインストールしていながらもAndroid Studioを使っていたが IntelliJでAndroidプロジェクトを読み込んでみたら、Android Studioと全く同じように開発できた。 そして、上位互換だった。そんな話。 社会人になってからの職歴とエディタ歴は IntelliJ…

メルカリでロードバイクを売った話と防犯登録の手続きでハマった話※追記あり

全然、最近乗ってなかったので持ち腐れと思いメルカリで売ってみた。その時の話。 自転車を譲渡するって意外と大変だなーって思った事が意外とあった。 特に自転車の場合は防犯登録があるが、手続きの順序をしらないと手間が増えるのでメモ書き程度に残して…

marble diagram

marble diagramとは Reactiveプログラミングの説明に使われるあの図の名前。 RxMables#mapより転載 X軸を時間、Y軸をストリームとしていて、4つの登場人物は以下の通り ○: input data event X: error event |: complete event 中間の□: transformer つまり、…

ジムに行き始めて4ヶ月が経った

健康診断で2年連続 LDLが高い 血中脂肪が高め 貧血 と言われ、男性の貧血は稀ということで精密検査まで受けたにも関わらず原因不明。この5年間風邪もひかず、全くもって健康体だと思ってたのに悔しい。 一念発起して体質改善をすべくジムに行き始めて早4ヶ月…

続・Mac OSXの設定をAnsibleで9割以上自動化する

blog.matsuokah.jp 今年の1月に書いた記事では Ansibleをインストールの自動化 Ansibleによるアプリのインストールや設定の自動化 の2つを行いました。 今回の記事では masによるアプリのインストール Ansibleのアップデート それに伴い、defaultsコマンドの…

【読書】Unixという考え方 ― その設計思想と哲学

きっかけはgithubのissue この本を読むきっかけになったのは emacs界隈ではデファクトであるmagitをvimに持ってきた vimagitのとあるissueのやり取り。 そのissueとはAny plans to add blame command? つまり、blameの実装予定はあるのか?という質問である…

エンジニアはなぜ勉強し続けるの?

今日、後輩とのランチで「なぜエンジニアは勉強し続けなければならないのか?」という話題になった。 結論は 「エンジニアという職業は手段を売り物にしているから」 そして、「手段」は新しいものがでてきては、古いものは使われなくなるサイクルがとてつも…

クイーンズタウン・メルボルンの旅

4/29~5/7の9日間ほど南半球に行ってきました!その記録をば。 ニュージーランド1日目 クイーンズタウンに到着。空港から出てすぐに取った一枚。 曇り空だけど、いきなり自然に囲まれる。 ニュージーランド2日目 ミルフォードサウンドのツアーに参加。1年間の…

S+になりました!!!

スプラトゥーンを11月末に初めて早5ヶ月、やっとS+になりました。 わかバリアつよい!

三軒茶屋から羽田の早朝便に乗るにはホテルよりタクシーが良い件

昨日までタイに1週間行ってきまして、往路は羽田から出発しました。 大田区はホテルが少なくて、それなりにお金もかかる 自分が予約していたのは7:30羽田発の便。5時半に空港に到着したいところ。 しかし、私が住んでる三軒茶屋(三宿付近)からは電車の場合、…