詳解MVIアーキテクチャ

Android Advent Calendar 2017の12日目の記事です。 この記事はMVIアーキテクチャの概要とその実装を紹介するものです。 概要については、MODEL-VIEW-INTENT ON ANDROIDからの抜粋で、実装についてはTODO-MVI-RxJavaをもとにしています。 概要 MVI is inspir…

KotlinにおけるJavaとの相互運用性を高めるための工夫

この記事はKotlin Advent Calendar 2017の6日目です。 KotlinはJavaとの相互運用性を重視していますが、JavaとKotlinは言語仕様的に異なる部分があり、Kotlinはその違いを吸収するために様々な工夫をしています。 この記事では、その工夫をいくつかピックア…

DroidKaigi 2017で登壇してきた

2日目の16:00から「Error Handling in RxJava」というタイトルで、RxJavaにおけるエラーハンドリングについて発表してきました。 スライド 概要 RxJavaのおさらい Reactive Extensions for Java マーブルダイアグラム RxJavaにおけるエラーハンドリング Catc…

RxJavaを使ったAndroidにおけるエラーハンドリング

はじめに RxJava Advent Calendar 2016の17日目の記事です。 みなさん、RxJava使ってますか?私は個人でも仕事でもガッツリ使っています。 この記事では、RxJavaを使ったAndroidのエラーハンドリングに関して書きたいと思います。 ちなみに私は「Error Handi…

Android Data Binding Tips

はじめに Android Advent Calendar 2016の10日目の記事です。 Data Binding使ってますか?便利ですよね。私も個人でも仕事でも使っています。 今回の記事ではData BindingのTipsを紹介したいと思います。 カスタムバインディングを定義する Data Bindingはデ…

Kotlin×Data Bindingの問題点と解決法

はじめに Kotlin Advent Calendar 2016の3日目の記事です。 KotlinとData Binding、両方とも便利ですよね。この記事ではこれらを組み合わせて使った場合に発生するいくつかの問題点と解決法を紹介したいと思います。ググるといくつか情報が出てきますが、断…

繰り返しのある予定表示に対応したカレンダーを作った

はじめに Android Advent Calendar 2015の10日目の記事です。 2014年のAndroid Advent Calendarは25日目を担当したので、今年は無難な日付に収まることにしました。今回は繰り返しのある予定表示に対応したカレンダーライブラリを作ったので、その紹介をさせ…

RxJavaを使ったAndroidアプリにおける非同期処理

はじめに RxJava Advent Calendar 2015の2日目の記事です。 最近何かと話題なReactive ExtensionsのJVM向け実装であるRxJava(+RxAndroid)を使って、Androidアプリの非同期処理を実装する方法を紹介します。RxJavaとRxAndroidだけでAndroidの非同期処理を…

起動時に読み込まれるActivityを変更する際の注意点

AndroidアプリはAndroidManifest.xmlで起動Activityを設定しますが、既にリリース済みのアプリの起動Activityを変更すると、アップデートしたユーザーがアプリを起動できなくなる場合があります。若干ハマったので原因と対策をメモっておきます。 環境 Mac O…

Androidアプリを高速化しよう -ANR編-

はじめに Android Advent Calendar 2014の30日目の記事です。 25日目では目に見えないボトルネックを探す手法を紹介しましたが、今回はAndroidアプリケーション開発を行う上で避けては通れないANRとその対処法について書きます。 環境 この記事で紹介するソ…

Androidアプリを高速化しよう

はじめに Android Advent Calendar 2014の25日目の記事です。 Androidアプリの開発をしていたのがきっかけで彼女が出来たyuyakaidoです。昨日のkaneshinthさんの記事の冒頭にあるように僕はマルチスレッド初心者なので常にシングルスレッドで動作しています…

x86・x64・IA-32・IA-64

x86とIA-32って何が違うの?x64ってx86を64ビットに拡張したものだから、x64 = IA-64ということ? OSをかじったりしていた割にこの辺が曖昧だったので調べてみた。といっても概要だけですが。 x86 一言で言えば、インテルが開発した8086とその後継CPUの命令…

VMware Fusion上のWindows 7でUSB SuperDriveを使う方法

単純に繋げただけでは動作しません。私の環境ではディスクを吸い込んでくれませんでした。 作業環境 Mac OS X 10.9.1 VMware Fusion 5.0.4 Windows 7 Professional 64bit 症状 VMware Fusion上でWindowsを立ち上げた状態でUSB SuperDriveを接続すると以下の…

源泉徴収と還付申告

私が還付申告するにあたって調べたメモです。 源泉徴収 給与から所得税を差し引く制度のことを指します。源泉徴収の対象となる人が受け取るであろう年収を計算して、それに応じた額を差し引いた金額が実際に受け取る給与となります。ここでは他の税金等は無…

Javaにおける4種類のインナークラス

Javaはクラス内にクラスを定義することが出来ます。クラス内に定義されたクラスはインナークラス(内部クラス)と呼ばれており、4種類の定義方法が存在します。定義方法によって異なった特性を持っており、間違った使い方をすると思わぬバグの元になり得ます…

非rootなAndroid端末でHierarchy Viewerを使う方法

Android SDKにはUI Viewの階層を確認することが出来るHierarchy Viewerというツールが入っています。このツールはrootedな端末かエミュレータでないと動作しません。最近はrootedでなくとも動くというという記述をいくつか見つけましたが、自分の環境(Nexus…

Javaのリフレクション

まずは以下のコードを見てください。 public class Hoge { private String str; public Hoge(String str) { this.str = str; } @Override public String toString() { return "str = " + str; } public static void main(String[] args) { Hoge hoge = new H…

UnicodeとUTFの違い

この2つは多分違うものなんだろうと思いつつ、今まで曖昧なままこれらの用語を使っていたので調べてみた。 Unicode Unicodeは世界で使われる全ての文字を統一的にまとめた文字集合のことを指す。Unicodeという文字コードがあるわけではない。 UTF 計算機でUn…

Fragmentをネストする際の注意点

Fragmentが登場してからActivityに全てのコントローラーロジックが集約される悪夢から開放された訳ですが、公式リファレンスをちゃんと読まずに実装しているとハマりますよ、というお話。 そうそう、Fragment自体はHoneycombで登場しましたが、ネスト出来る…

iOS7でHTMLを取得してパースする

iOS

作業環境 Mac OS X 10.9.1 Xcode 5.0.2 準備 1. Objective-C-HMTL-Parserの導入 HTMLをパースするために「Objective-C-HMTL-Parser」というライブラリを使います。ソースコードはGitHubで公開されていますので、上記のリンクから適当にローカルにクローンし…

VMware Toolsのインストール時にkernel headerが見つからない場合の対処法

ここ一週間程悩んでいた問題が解決したので、その対処法をまとめておく。 環境 Ubuntu 13.10 Mac OS X 10.8.5 VMware Fusion 5.0.2 VMware Tools 9.2.2 ちなみに、Ubuntu 12.04 LTS、Ubuntu 13.04でも同様の問題が発生しました。 症状 UbuntuにVMware Tools…

ミクシィのインターンシップに参加してきました

今年の夏休みに株式会社ミクシィのインターンシップに参加してきました。とても貴重な経験をさせて頂いたので、振り返りも兼ねてブログにまとめておこうと思います。 期間 2013/08/01 - 2013/09/13 週5日フルタイムでした。一度も寝坊しなかったのは奇跡かも…