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

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

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

2013-01-01から1年間の記事一覧

Android Studio 0.4.0 への移行

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

Java Persistence API (JPA) 実践入門

この記事は Java EE Advent Calendar 2013 の 24 日目の記事です。 昨日は nabedge さんの 「JAX-RSのビューとしてMixer2を使ってみる」 でした。 明日は eller86 さんの 「ウェブアプリケーションサーバでよくあるクラスローダのトラブル」 です! 概要 これ…

Elasticsearch の Query DSL の基本

この記事は 「Elasticsearch Advent Calendar 2013」 の 4 日目の記事です、とかしたかったけど Elasticsearch の Advent Calendar はなさそうなので普通に投稿します。Elasticsearch でクエリを投げるときにお世話になる Query DSL。 とりあえず match クエ…

HTTP の media type の記述中に空白文字を入れても良いのかどうか

RFC2045におけるContent-TypeのBNFに関して - その手の平は尻もつかめるさ 上の記事を読んで、私も Media Types の記述中の空白文字の扱いについて気になってたことを思いだしたので調べてみました。 RFC 2045 における BNF は RFC 822 の定義のものが使用さ…

Gradle 1.9 がリリースされました

昨日、Gradle 1.9 がリリースされました!! Android Gradle プラグインでおなじみの build variant の仕組みが Gradle 本体にも入ったようです。 その他、Gradle デーモン使用時のビルド効率が向上したり、Java の並行ビルドができるようになっていたりJava …

JPA 2 の Entity クラスをかたどるための Metamodel API (Java EE 7)

最近 Java Persistence API (JPA) を使ってみてます。 まだ使いこなせてはないですがなかなかいいですね。 今まで触ったことのある O/R マッパー *1 の設計が嫌いだったので O/R マッパーにはあんまりいい印象持ってなかったんですが、JPA の設計はよく考え…

Elasticsearch のインデックス解析モジュールの概要 (アナライザやトークナイザなど)

Elasticsearch で kuromoji プラグイン を使用しようと思ったものの、解析 (analysis) 周りをちゃんと理解してなくて困ったりしたのでちゃんとドキュメントを読んだ。 Elasticsearch 0.90 現在の公式サイトのガイドを参考に、解析周りの概要をまとめておく。…

Java でファイルの中身を読み込む方法 (Java SE 7 版)

なんとなくネットサーフィン (死語) してたら次の記事を見つけました。 確かに Java のファイル読み込みはいろいろややこしいですよね。 今時なJavaでテキストファイルを読みこむ方法 - /dev/null 「Java ファイル 読み込み」 とかで検索しても FileInputStr…

Java における web アプリケーション開発ことはじめ (JAX-RS 2.0 / Jersey 2.4)

JAX-RS を使って Java で web アプリケーションを開発したい、と思っても、Java EE 周りに詳しくないと何をどうすればいいか全然わかんないですよね! そんなことないですか? 少なくとも私はよくわかんなかったです。そんなわけなので、JAX-RS を使って web …

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) を対象としています。 …

MozMill を使って Firefox 拡張機能のテストを行う方法

これまで Firefox 拡張機能のテストをどうやって書くのがいいかずっと悩んでいたのですが (悩みつつも QUnit を使ってテストを書いていました)、このあいだ MozMill というのを見つけて、使ってみたらなかなか良かったので紹介します。 MozMill とは MozMill…

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

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

Windows 8.1 なら HTML + JS で書かれたストアアプリでも WebView が使用できる

Windows 8 向けの Windows ストアアプリの中に web ページを表示する必要があるとき、XAML と C# や C++ などを使って開発する場合は WebView を使用することができました。 しかし、HTML + JS で開発する場合は、WebView の代わりに iframe を使うしかあり…

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 を…

日本語形態素解析ライブラリ Kuromoji のコマンドライン用インターフェイスを書いた

Java で書かれた日本語形態素解析ライブラリ Kuromoji を Perl から使ってみたいなー、と思って、別の言語のプログラムから使いやすいようなインターフェイスを書きました。 Kuromoji について kuromoji - japanese morphological analyzer Java で書かれた…

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

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

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

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

Code 2013 のコードゴルフに挑戦してみた

Code 2013 における JavaScript のコードゴルフが面白そうだったので挑戦してみました。 JavaScript でデジタル時計を表示するプログラムを短くするという問題です。 問題: yoshiakist/codegolf · GitHub 先にコードを出してる人よりも短くはできなかったの…

Ruby から GitHub の API (v3) を叩くサンプルコード (Basic 認証)

先輩が GitHub のチームにユーザーを 50 人ぐらい追加しようとしていたので、API 叩いたら楽だろうなー、と思って GitHub の API を叩く方法を調べてみた。 GitHub API v3 OAuth とか使わないといけなくて面倒な感じなのかなーと思ってたけど、Basic 認証を…

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

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

rbenv で管理されている ruby でコマンド付きの gem をインストールしたら rbenv rehash しよう

これまでは Ruby のバージョン管理には RVM を使っていたのですが、rbenv が良いという話を結構前から聞いていたので rbenv を使い始めてみました。 sstephenson/rbenv · GitHub インストール方法などは基本的に上記 GitHub リポジトリの README に書いてあ…

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 公式サ…

読んだ: 『Java による RESTful システム構築』

JavaによるRESTfulシステム構築作者: Bill Burke,arton,菅野良二出版社/メーカー: オライリージャパン発売日: 2010/08/23メディア: 大型本購入: 28人 クリック: 804回この商品を含むブログ (39件) を見るタイトルからはわかりませんが、JAX-RS について書か…