なるようになるかも

力は多くの場合、その人の思いを超えない。

最近のアプリ界隈での「設計」の違和感

アプリ界隈で「設計」の話をするときに MVC / MVP / MVVM のような「設計パターン」だけが語られるようになった気がする。 往々にして、「アプリの規模によってどれを採択すべきかは変わる」みたいなお茶を濁すような結論で終わることが多い。 私的な結論 「…

UISearchController を Rx で書けるように

iOS11 だと UISearchController を UINavigationBar に入れられて楽しいので、入力した文字列をうまい感じで Observable<String> にしてくれる DelegateProxy を作ってみた。 UISearchResultUpdating+Rx の私的実装 なんで RxCocoa にないの? PR 自体は何度か出てた</string>…

Activity Tracing どう使うのか謎だったので調べたメモ。

static void hoge() { static os_log_t log; static os_activity_t activity; static os_activity_t activity2; static os_activity_t activity3; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ log = os_log_create("activity", "a butt…

OSLog にいい加減に移行するべきなの?

と思って調べた内容のメモ。 結論から言って、watchOS みたいなパフォーマンスにシビアなデバイスで、マルチスレッドが絡む部分をロギングしたいとかじゃない限り、普通のロガーでよさそう…。 OSLog の優位点 メモリ上の循環バッファにバイナリでログを保持…

iOS デザイン実装はつらい話のあとがきみたいなの。

Qiita に久々に記事を書いたのですけれど、なんか途中で力尽きていろいろツッコミどころが多い感じになってしまった。 qiita.com わたしとしてはコメントがとても勉強になったので良かったのですけれど…。 以下、書ききれなかった内容の供養みたいなの。 画…

JSONDecoder で型がごちゃ混ぜの JSON 配列をデコードする

ルートが配列で、最初の要素はその後の要素の個数を表す、という JSON があったときに、どういう Decodable を書けばいいのか?で少し悩んだので。 [ {"count" : 5 }, {"name" : "itemA", "value" : "valueA" }, {"name" : "itemB", "value" : "valueB" }, {…

Android Architecture Components 雑感2。

主に Lifecycle と LiveData について。 Lifecycle 某ポエムサイトにあったクラス図がしっくりこなかったので、自分で書き直してみました。 Lifecycle のキモは、ライフサイクルメソッドのオーバーライドはもうやめましょう、ということ。 なぜかというと、A…

Android Architecture Components 雑感。

Architecture Components - Introduction (Google I/O ‘17) 解説はこのビデオを見るのがとても分かりやすいです。 機械翻訳で日本語字幕が出せるので、英語が聞き取れなくてもだいじょうぶ。 いままでの Android の世界観 ※人によってかなり違う気がします …

「Android を支える技術 <I>」を読んだ。

この本いいよね…。 今 <II> も読んでるんですけれど、「uid ってどこで作られてるの?」っていう5年くらい疑問だったところが解決されてとても嬉しい。gid は意味なさそうなのになんで設定されてるの?っていうところまでは書いてなかったけど。 この本はものす</ii>…

「よくわかる AutoLayout」読んだ。

よくわかるAuto Layout iOSレスポンシブデザインをマスター - リックテレコム書籍情報 前提 わたしはコード、VFL、Storyboard で制約を書きます。ライブラリは特に使いません。 なんで全部覚えたの?って疑問に思うかもしれません。わたしも最初はいずれかひ…

Android 7.0 では TextureView よりも SurfaceView が推奨されるらしい。

まじかよ!ってなったので。 たぶん、大半の人にとってはどうでもよいです。 公式リファレンスの Android N for Developers の英語版には以下の記述があります。(いまのところ日本語には訳されていないです) Android 7.0 brings synchronous movement to t…

ここ最近読んだ技術書籍感想文。

雑多に読んでます。 リンクは書籍の公式サイトです。 黒帯エンジニアが教えるプロの技術 Android開発の教科書 SBクリエイティブ:黒帯エンジニアが教えるプロの技術 Android開発の教科書 (ヤフー黒帯シリーズ) 幅広いトピックを扱っているのだけれど、それ…

スマートフォンの連絡帳の話。

純正の連絡帳で別に満足してるって人もいれば、オリジナルの連絡帳を入れてる人もいますし、そもそも連絡帳に何も登録されてない人もいるでしょう。 それはさておき、iOS や Android の OS 標準の連絡帳はユーザー視点で見るか、開発者視点で見るかで貧弱と…

NSUnit と NSMeasurement についての話。

iOS10.0 / OS X 10.12 / tvOS 10.0 / watchOS 3.0 で追加されたクラスです。(これをひとまとめにする呼び方がほしい) NSUnit は単位を表すクラスです。単位と double の値を組み合わせて、NSMeasurement、測定値を記述することができます。 NSMeasurement …

Javaと偽Javaの話。

qiita.com これの話。ブコメに書こうとしたら4000字は入らなかった。 Microsoft Java VM かつての WIndows には MS 製の Java VM が搭載されていました。 古代の Java は「Write once, run anywhere」を掲げていた通り、クライアントサイドで Java アプレッ…

Anyパターンについて考えてみる

「Swiftの標準ライブラリだと付属型を持ったプロトコルを変数に格納するため、慣例的にAnyなんとかってクラスを用意してる」というところまでが話の前提です。 Anyクラス実装者の責務 qiita.com 例によって、Pokemonプロトコルで考えてみます。 ポケモンでは…

AnySequenceってなんなの?

AnySequenceってなんなの?っていうのを調べようとしたメモです。 JavaのGenericsは本当に型情報を消し去るイレイジャなのでまず意識しなくていいし、C#(4.0以上)のGenericsは共変性・反変性を持っているので、Swiftだとなんでややこしいコードになるのか…

いまさら Android 6.0 の Permissions at Run Time について

ここに書いてある内容が正しいという保証が一切持てないので、けっして鵜呑みにしないでください。 とりあえず公式ドキュメントのRequesting Permissions at Run Timeをざっくり読みました。 ランタイムパーミッションの概要 Andorid 6.0(API level23)以降…

Swiftは結局どうオープンソースになったのか?

オープンソース化ばんざーい!!とかそういうのは全然興味ないです、ごめんなさい。 XCode7で何気なくimport Foundationなどをすると、ついでに以下のライブラリがリンクされるそーです。 SwiftCore(Swiftのコア言語仕様) Darwin(UNIXベースのOSX/iOSの基…

すたっく・おーばーふろー

blog.jnito.com 12位に載ってたので。 おそらくStackOverflowに多くの人が求めているのは「高品質なナレッジ」であり、そのため情報は英語に集約されるべきで、日本語版は不要という考えが強いと思うので、天邪鬼な自分は気ままに回答してます。 ところで、S…

iOS9広告ブロック騒動雑感

煎じすぎて味がしないかもですが、開発者視点の話ってあんま見ないので。 Appleは日本の広告業界なんて見ていない 「悪い日本の広告が駆逐されるのは良いことだ」「これをいい機会に広告産業を見直すべきだ」的な論があるのだけれど、Appleは特に日本の広告…

擬似乱数というかarc4random()の話。

擬似乱数と言えば、かのカルドセプトサーガの悲劇が有名です。 ダイスの出目が必ず奇数と偶数の繰り返しになるという、地味ながらゲームバランスの根幹を破壊するバグが話題となりました。しかしその話題から得るべき教訓は、 その論調は一様に、サイコロす…

iOS9 SDKでDeprecatedになるもの。

UPDATE(2015/09/26):この文書はDeprecatedという単語の使い方が雑なのでDeprecatedになりました。 こちらの記事を参照した方が得るものがあるかと思います。 qiita.com 新しいAPIの誕生より、APIの滅びの方が好きです。なぜならそこには失敗があり、学びがあ…

Java版Foundationのこと、覚えてる?

Objective-CはSwiftに置き換わるのか? - Qiitaqiita.com 素朴な疑問があったので投稿してみました。これはその補足みたいなもの。 CoreData CoreDataって凄く独特な世界観を持っていて扱いづらいと思った人が多いのではないでしょうか。 なんでこんなのがXC…

Nexus5にAndorid M Preview入れた。

あるいはAndroidのデータ領域についての話。もしくはLollipopのバッテリーイーターに対する愚痴。 「Previewを入れるには全てのデータが消える覚悟が必要」みたいな話をよく聞きますが、Androidのデータ構造を理解せずに、batやシェルスクリプトを使ってアッ…

AppCompatDelegateの話。

Toolbarは正直ないわーって感じなんですけど、皆様は適合されたんでしょうか。 DroidKaigiなるイベントがあったらしく、Toolbarが受け入れられるのかディスられるのかが気になっていたのですけど、「BaseActivityの是非」が一番のトピックだったっぽい?個人…

Androidのタスクとプロセスの話。

あるいは、「Androidのstatic変数は勝手にクリアされる」という迷信についての話。 タスク Tasks and Back Stack | Android Developers A task is a collection of activities that users interact with when performing a certain job. The activities are …

今年入ってから読んだ本とか。

NFC Hacks NFC Hacks ―プロが教えるテクニック & ツール作者: 株式会社ブリリアントサービス出版社/メーカー: オライリージャパン発売日: 2013/11/30メディア: 単行本(ソフトカバー)この商品を含むブログ (5件) を見る 2015年になって、ようやくNFCについ…

AndroidもiOSもC#で書けるようになればいいのに。

Xamarinはなんか生理的に受け付けないのでなしで。 Hatena Engineer Seminar #4で「はてなのiOSアプリとSwift」という発表をしました #hatenatech - yashigani?.days しかし,実際に実装するにあたっても可読性のために同じようなところに改行を入れるとおも…

強制バージョンアップの話。

[iOS]アプリに強制アップデート機能を導入すべき理由と、簡単に実装する方法 - Qiita という記事を見かけたので。 このライブラリの実装の問題点 key description type 基本的には強制バージョンアップを行うことを前提に解説していますが、SRGVersionUpdate…