読者です 読者をやめる 読者になる 読者になる

ひだまりソケットは壊れない

ソフトウェア開発に関する話を書きます。 最近は主に Android アプリ、Windows アプリ (UWP アプリ)、Java 関係です。

まじめなことを書くつもりでやっています。 適当なことは 「一角獣は夜に啼く」 に書いています。

読んだ : Kotlin スタートブック ― 新しい Android プログラミング / 長澤 太郎 著

Kotlin エバンジェリスト (JetBrains 黙認) であり、日本 Kotlin ユーザグループ代表であるたろーさん (長澤 太郎) によって書かれた書籍 『Kotlin スタートブック ― 新しい Android プログラミング』 (赤べこ本) を読みました!!Kotlinスタートブック -新…

Android の Instrumented Test で指定のサイズのテストだけ実行する (@SmallTest とか @LargeTest とか)

Android Testing Support Library (ATSL) の話。 バージョン 0.5 時点での情報です。ライブラリの準備方法などはドキュメントを読んでください。 テストサイズを表すアノテーション android.support.test.filters というパッケージがあって、この中にはテス…

ISO 8601 DateFormat 1.0.0 (Java 向けライブラリ) をリリースしました

2016 年 5 月 3 日に ISO 8601 DateFormat の 1.0.0 をリリースしました。 ISO 8601 形式 (もしくは RFC 3339 や W3C-DTF 形式) の日付時刻文字列のパースとフォーマットのための DateFormat のサブクラスを提供するライブラリです。Bintray の JCenter リポ…

「DroidKaigi 2016」 と 「関モバ #11」 で発表しました

「DroidKaigi 2016」 にて 『5 年続く 「はてなブックマーク」 アプリを継続開発する技術』 というタイトルで、また 「関モバ #11」 で 『Components­Recycler­Adapter — RecyclerView で複数の view type や複雑なデータ構造を扱う』 というタイトルで、そ…

Android の Drawable への着色について (Drawable tinting)

API level 21 から使えるようになった Drawable への色付け (Drawable tinting) について説明します。 この機能は、アルファマスクとして Drawable を定義し、表示時に色を指定するための機能です。 また、それに関連する各種 API や、Android Support Libra…

Android の Java で時刻を扱う (Date、Calendar、DateFormat クラス)

Android アプリで時刻を扱う際に利用することになる Date クラス、Calendar クラス、DateFormat クラスについて、それぞれの役割や使い方、気を付けるべきことをまとめています。

【v7 appcompat library を読む】 レイアウト XML のインフレート時に各種 view が compatible widget に変換される仕組み

Android アプリ開発時にお世話になる v7 appcompat library の話です。 レイアウトのインフレート時に、各種 view が compatible widget に自動的に変換される (例えば TextView が AppCompatTextView に変換される) 仕組みについて説明しています。

Chrome からの共有で onNewIntent が呼ばれない問題 (Android アプリの documentLaunchMode の話)

Android の API level 21 で導入された documentLaunchMode に関する Activity の挙動にバグっぽいところがあって、結構扱いに困るのでまとめておきます。 「documentLaunchMode? 関係ないや」 って思ってる人でも、外部アプリからの Intent を扱うアプリを…

実機の Android 端末に対して Hierarchy Viewer を使って View の階層構造を調べる

Android アプリを開発する際に便利な Hierarchy Viewer ですが、日本語のブログ記事だと実機の Android 端末に対して Hierarchy Viewer を使う際に ViewServer を使わない方法を紹介してるものがあまり見当たらない *1 ので、ViewServer を使わない方法を紹…

Android の Canvas#saveLayer メソッドと xfermode について

Android アプリ開発に関して Canvas クラスの saveLayer メソッドや Paint の xfermode について調べたのでまとめておきます。 Canvas#saveLayer メソッド saveLayer メソッドのドキュメントには、『This behaves the same as save(), but in addition it al…

Espresso 2.0 が Android support library の一部としてリリースされた

上記エントリにあるように、Espresso 2.0 がリリースされた。 Espresso は Android アプリの自動テストのためのライブラリである。 ほぼ上のエントリに書かれている内容であるが、Espresso 2.0 のリリースについて紹介する。 変更内容など 一番大きな変更は…

【Retrofit を読む】 利用者が定義したインターフェイスに実装を提供する Java ライブラリの作り方 【リフクレション】

この記事は、はてなエンジニアアドベントカレンダー 2014 の 15 日目のエントリです。 昨日は id:chris4403 による 「開発合宿で何を考えてどう作ったか」 でした。このエントリでは、Android アプリおよび Java アプリケーション用の REST クライアントライ…

RecyclerView と view type について (Android アプリ開発)

このエントリでは、ListView の進化版とも言われる *1 RecyclerView の view type について簡単に紹介します。 RecyclerView 自体については次のページを参照してください。 Creating Lists and Cards | Android Developers (公式のトレーニングガイド) Mate…

発表資料: Android アプリ開発における Gradle ビルドシステム (京都 Android 勉強会 2014.08)

Android アプリ開発における Gradle ビルドシステム from Yu Nobuoka 去る 8 月 23 日に株式会社はてな主催で行われた Android アプリ開発の勉強会 「京都 Android 勉強会 2014.08」 にて、Android アプリ開発と Gradle について喋ってきました。Android Stu…

【告知】 来週土曜日 「京都 Android 勉強会 2014.08」 開催 & Gradle のことを話します

来週土曜日 「京都 Android 勉強会 2014.08」 開催 来週土曜日 8 月 23 日の午後 3 時から 「京都 Android 勉強会 2014.08」 が開催されます! 株式会社はてな主催です。 タイトル通り Android アプリ開発に関する勉強会です。 はてなの告知: 「京都 Android …

OnEditorActionListener を使って EditText への Enter キー入力やアクション入力をハンドルする

EditText への Enter キー入力を検知して何か処理をしたい、ということを調べてみると、TextView.OnEditorActionListener を TextView#setOnEditorActionListener メソッド で設定すればよいというようなブログ記事がいくつか見つかる。 editText.setOnEdito…

Android アプリの Action bar に独自 View を設定する

ActionBar#setCustomView メソッド Action bar に独自ビューを設定するには、ActionBar#setCustomView メソッドを使用する。 ActionBar#setCustomView(int) メソッド ActionBar#setCustomView(View) メソッド ActionBar#setCustomView(View, LayoutParams) …

読んだ: Effective Android

Effective Android作者: TechBooster,小太刀御禄,出村成和,重田大助,西岡靖代,宮川大輔,柏本和俊,あんざいゆき,八木俊広,木村尭海,小林慎治,有山圭二,中西良明,わかめまさひろ,新井祐一,桝井草介,久郷達也,寺園聖文,shige0501,山下智樹,前田章博,秋葉ちひろ,…

Annotations Support Library が Android Studio 0.5.5 でサポートされた

Annotations Support Library の概要 ちゃんとしたドキュメントが見当たらないのですが、 *1 Android Support library のリビジョン 19.1.0 から、新たに Annotations Support Library が追加されました。 このライブラリは、その名のとおり Android アプリ…

読んだ: Android Pattern Cookbook マーケットで埋もれないための差別化戦略 / あんざいゆき 著

読みました。Android Pattern Cookbook マーケットで埋もれないための差別化戦略作者: あんざいゆき出版社/メーカー: インプレスジャパン発売日: 2014/03/20メディア: 単行本(ソフトカバー)この商品を含むブログ (1件) を見る あんざいゆき Cookbook シリ…

android.casual.test #2 に参加しました & LT しました

android.casual.test とは android.casual.test は、Android のテストについてカジュアルに語るイベントです。 2 回目の開催となる今回は、4 月 3 日に行われました。 Agenda 02 · hotchemi/android.casual Wiki · GitHub 私は去年の 5 月ごろから Android …

Gradle プラグイン vc-android-sdk-manager 0.1.0 をリリースしました

リポジトリ Git プロジェクトを GitHub 上に置いています。 Maven リポジトリも GitHub 上に置いてあります。 nobuoka/vc-gradle-android-sdk-manager · GitHub このプラグインの目的 Android プロジェクトの Gradle ビルドスクリプトから Android SDK の an…

Android アプリ用ライブラリの AAR パッケージを Maven Central で公開する方法

AAR パッケージを Maven Central に公開している人は結構いるけど、build.gradle をどういう感じに書けばいいのかわかりづらかったので書き残しておきます。 使用するリポジトリとビルドツール Maven リポジトリ: Sonatype OSS Maven Repository ビルドツー…

android-lib-ZXingCaptureActivity 2.3.0-1.2 をリリースしました

android-lib-ZXingCaptureActivity という Android アプリ用のライブラリを公開しました *1。 AAR でパッケージングして、Maven Central に publish してあります。 バージョン 2.3.0-1.2 : info.vividcode.android.zxing:capture-activity:2.3.0-1.2 — Mave…

読んだ: Android アプリテスト技法

誕生日のお祝いに頂いたものです。 ありがとうございます!!Androidアプリテスト技法作者: 生路茂太,井芹洋輝,神原健一,長谷川孝二,松木晋祐,宮田友美,吉澤毅出版社/メーカー: 秀和システム発売日: 2013/02メディア: 単行本この商品を含むブログ (6件) を見る…

Espresso を使って PreferenceActivity の自動 UI テストを行う (Android アプリ開発)

表題どおり、Espresso を使って PreferenceActivity の自動 UI テストを行う方法について簡単に説明します。 この記事内容は古くなっています このエントリを書いていた頃は Espresso 1.1 でしたが、現在では Espresso 2.0 がリリースされています。 Espress…

Cocos2d-x 2.2 による Android アプリの開発環境を準備する (Windows プラットフォーム; Cygwin を使わない方法)

本記事は、Windows 上で Cocos2d-x 2.x のプロジェクトをビルドするための環境を構築するための手順を書いたものです。 通常は Cygwin が必要となりますが、本記事では Android NDK の実験的な機能を使うことで Cygwin を使用せずにビルドします。 Cocos2d-x…

読んだ: Android Layout Cookbook アプリの価値を高める開発テクニック / あんざいゆき 著

Android アプリのレイアウトのいじり方などが書かれた本 『Android Layout Cookbook アプリの価値を高める開発テクニック』 を読みました。 著者は、ブログ 「Y.A.M の 雑記帳」 のあんざいゆきさん。 Android 開発をしている人なら結構お世話になってるブロ…

Android アプリ開発で使える XML の Tools 属性

Android アプリのための XML ファイルには、開発時にのみ使用される追加的な情報を書くために使用される名前空間が用意されています。http://schemas.android.com/tools というのがその名前空間で、普通は名前空間接頭辞 (プレフィクス) tools: に結び付けら…

Android Gradle プラグイン 0.7.2 でビルド済みの JNI 共有ライブラリを扱えるようになった

「New Build System - Android Tools Project Site」 に書かれているように、Android Gradle プラグイン 0.7.2 から、ビルド済みの JNI 共有ライブラリ (.so ファイル) を配置する jniLibs フォルダがソースセットに追加されました。 Add jniLibs folder to …

Android アプリに Apache License, Version 2.0 のライブラリを組み込むときにしなければならないこと

Android アプリを開発していると Apache License, Version 2.0 のライブラリを使うことが多いと思います。 Licenses | Android Developers 上のページを見るとわかるように、Android Open Source Project は基本的に Apache License, Version 2.0 ですし、An…

Android Studio 0.4.0 への移行

Android Studio 0.4.0 がリリースされていますね! わー、ぱちぱち。 Android Studio 0.4.0 - Android Tools Project Site Android Studio 0.4.0 への移行は、単にバージョンを上げるだけという感じではなかったので、苦労した箇所などを簡単にメモしておきま…

Android Studio で Volley を使う

以前、Android Studio で Volley を使う方法として 『一度 Eclipse にインポートして、build.gradle を生成しつつエクスポートするのが良さそう』 と書きました。 Android アプリ用ライブラリ Volley を準備する - ひだまりソケットは壊れない しかし、今で…

スワイプでページ送りできるタブ付きの Android Activity を作る

スワイプでページ送りができて、Activity 上部にタブでページ名が並んでいる (もちろんタップしたらそのページに移動する) というような Activity を作る方法です。 サンプルのスクリーンショット 次のような感じです。タブ部分をスワイプしたら、タブに並ん…

Volley のテスト (com.android.volley.toolbox.HttpHeaderParserTest) に失敗する問題と対策

Android アプリ用のネットワークライブラリ Volley のテストを実行すると、一部環境でテストに失敗することがある問題についてです。 対象とする Volley のバージョン 現時点の master ブランチの最新コミット (コミット faa2a13dce6) を対象としています。 …

Android の ListView のアイテムの子要素の android:height="match_parent" が効かない

Android アプリ開発で、ListView の項目として FrameLayout や RelativeLayout を使っていたのですが、その子で android:height="match_parent" の指定がなされている view が全く表示されなくて困っていました。原因を探ってみたところ、どうやら ListView …

Android アプリ開発における SQLite のロックとマルチスレッドの話

Android アプリ開発で SQLite を使っていると、しばしば次のような例外が投げられることがあります。*1 android.database.sqlite.SQLiteDatabaseLockedException: database is locked (code 5) 軽く調べてみたところ このエラーをぐぐってみると、「複数スレ…

『Android アプリ開発のための Java 入門』 を公開しました

『Android アプリ開発のための Java 入門』 というものを Gist で公開しました。 Android アプリ開発の勉強会を行うときに書いたものです。Java をちゃんと使いこなすために知っておくべき必要最低限のこと をまとめたつもりですので、Android アプリを開発…

Android の Bitmap と BitmapDrawable はそれぞれ密度 (density) を保持している

Android アプリ開発時の画面密度とビットマップ画像に関する話です。 前提知識 画面密度 (Screen density) 画面上の実際のサイズ中におけるピクセル量; 通常は dpi (dot-per-inch) と呼ばれる。 例えば “low” 密度の画面は、“normal” や “high” 密度の画面と…

Android アプリで Google Drive API を使う

Android アプリから Google Drive のファイルを扱う方法です。 Google Drive SDK のドキュメント: Drive | Google Developers 前提 ここでは、次のような開発環境を前提としています。 Android Studio を使用 (Android Studio 2.7 *1 ) ビルドには Gradle を…

Android アプリ開発のためのサポートライブラリについて

Android の新しい API level で追加された機能を古い API level でも使用できるようにしたり、その他便利機能を提供するサポートライブラリが、Android SDK により提供されています。 それなりに古い端末もサポートしながらアプリ開発をする場合はサポートラ…

Jenkins 上で Android アプリのテストを実行する方法 (Gradle 使用)

最近 Jenkins 上で Android アプリのテストを実行できるようにしたので軽くメモしておきます。Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)作者: 佐藤聖規,和田貴久,河村雅人,米沢弘樹,山岸啓,川口耕介出版社/メーカー: …

Android アプリビルド時に packageNameSuffix を使った時にはまったこと

以前紹介したように、Gradle の Android プラグインを使って Android アプリをビルドする際、packageNameSuffix により、ビルドタイプごとにパッケージ名に接尾辞を付けることができます。 これにより、開発中のパッケージと、正式リリース版のパッケージを…

Android アプリ開発独習メモ #5 — パフォーマンスに関するチップス

< Android アプリ開発独習メモ #4 | Android アプリ開発独習メモ #6 >Google による Android アプリ開発のガイドを読み進めていくシリーズ。 今回は “Best Practices for Performance” の中の “Performance Tips” を読んだ。 ざっくりとまとめておく。パフォ…

Build Variants によって別バージョンの Android アプリを同じプロジェクトからビルドする (Gradle 使用)

前回の記事 に引き続き、Gradle を使った Android アプリのビルドの話。今回は build variants (build types と product flavors) について調べたので軽くまとめておく。 複数の build variant を定義しておくと、 アプリの本体部分のソースコードはほとんど…

Gradle による Android アプリのビルド

週末は Gradle と Android アプリのビルドツールと戯れていたので、得られた知見などを書き残しておく。 更新記録 2014-01-07: Android Gradle プラグイン 0.7.1 (Android Studio 0.4 対応版) に合わせて内容を更新しました。 Gradle について Gradle 公式サ…

Volley 基礎 (Android アプリ用ネットワークライブラリ)

本記事では、Volley の基礎部分 (RequestQueue と Request) について述べる。 Volley について こないだの Google IO で発表された Google 製の Android アプリ用のネットワークライブラリ。 Activity に表示する情報を取得するための HTTP リクエスト *1 を…

Android アプリ用ライブラリ Volley を準備する

Volley? こないだの Google IO で発表された Google 製の Android アプリ開発用のネットワーク周りのライブラリ。 便利っぽい。 Volley: Easy, Fast Networking for Android — Google I/O 2013 ソースコードを読んだところ、ライセンスは Apache License, ve…

Android アプリ開発で jar ファイル中のクラスが見つけられず “Caused by: java.lang.NoClassDefFoundError” というエラーが発生する

Android アプリ開発における jar ファイルの扱い Java では、ライブラリは jar ファイルとして固められていることが多い。 当然ながら Android アプリ開発でも jar ファイルを扱う。Android アプリ開発のための Eclipse ADT plug-in の Android SDK Tools 17…

Android アプリ開発独習メモ #4 — Activity のライフタイムの管理

< Android アプリ開発独習メモ #3 | Android アプリ開発独習メモ #5 >今回は #2 の内容の続きで、“Getting Started” の中の “Managing the Activity Lifecycle” の話。ユーザーがアプリを起動したり、別のアプリに行ったり、またアプリに戻ってきたり、とい…