八木俊広氏のAndroidオープンソースライブラリ徹底活用のサンプルのbuild.gradle集を作った

八木俊広氏のAndroidオープンソースライブラリ徹底活用のサンプルをIntelliJ IDEAでビルドしました。build.gradleファイル集を公開します。アプリのソースファイルは原則的に含めませんが、一部のアプリが動かないケースがあったので、その場合は、ソースファイルを改変したものも含めました。また、flickrサービスが、最近、SSL接続を要求するようになったのか、flickrサービスにアクセスするアプリが全く動きませんでした。それらのアプリでは、build.gradleを含めないことがあります。

StyledDialogsを使って、Customized List Dialog Fragementを作った

Androidライブラリ inmite/android-styled-dialogs を使って、リストを表示するDialog Fragmentを作ってみました。

特徴は、以下の通りです。

  • Android 3.1以前にも対応する、DialogFragmentベースのリスト表示するダイアログを実装した。
  • リストの項目を選択すると、どの項目が選択されたか検知できる。
  • ダイアログを表示中に画面回転をやった後、リストの項目やCancelをタップしても、アプリが落ちることはない。

ライブラリのソースファイルに添付のデモには、リストを表示するダイアログの例があるのですが、getTargetFragment()の返り値がnullになっていて、ダイアログのリストの項目をタップした時、どの項目がタップされたか拾えませんでした。本アプリではダイアログを開く画面を、Fragmentにして、そこで、setTagetFragmentでセットすることによって、この問題を解決しました。また、デモでは、Fragmentの実装にはよく見られるシングルトンパターンに関して、似たコーディングはあったのですが、あらわにはコーディングされていなかったので、ソースを書き換えました。

サンプルプログラムのソースファイルを GitHub andropenguin/CustomStyledDialogsSample
に置きます。

参考サイト

Jenkins+maven+Sonarを動かすのに役立ったサイトリスト

ここ数日、IntelliJでAndroidアプリのテスト付きmavenプロジェクトを作り、Jenkinsでビルド、テスト、静的解析をする方法を研究していました。Jenkinsとmaven、Sonarを組み合わせる方法は、ググっても、古い情報が引っかかることが多く、苦労しました。以下に、役立ったサイトのリストをあげます。折を見て、方法を紹介する記事を書きたいと思います。

マーチン・ファウラー著リファクタリングの第1章のテストコードを作った

マーチン・ファウラー著のリファクタリングを読んでいるんだけど、第1章のサンプルコードに対するテストコードを作成したので公開する。
この本では、リファクタリングの前に、リファクタリング対象コードに対するテストコードを書けと書いてあるのに、ユニットテストの紹介は第4章で手短にしか説明していない。また、第1章のビデオレンタルシステムのサンプルコードのリファクタリングでは、テストコードが掲載されていなくて、テストコードなしでリファクタリングするのは怖いし、できない。そこで、第1章のサンプルコードに対するテストファイルを作成した。テスト項目をグループ分けしていなかったり、同じような記述をメソッド抽出していないけど、テストコードだからいいかと思う。テストコードはGitHubに上げたので、使いたい人がいたら、どうぞ。ただし、なるべくテスト対象コードを本の記述の通りに入力したつもりだが、ascii、html両フォーマットでのフッター行の期待する文字列が正しくなく、テストコードが動作しない場合があるかもしれない。その場合は、修正するので、Pull Requestを送って欲しい。なお、JUnitは4を使用し、Eclipseでmavenプロジェクトを作成し、サンプルコードを写経、テストコードを作成、テスト、リファクタリングを行った。pom.xmlファイルも同梱した。

https://github.com/andropenguin/testfiles_refactoring_chap01.git

リファクタリングRubyエディションの第1章のサンプルに対するテストコードは、以前、リファクタリングRubyエディションの第1章のテストコードを作ったで記事を書いた。

JUnit 4で、doubleのassertを行う

JUnit4でdoubleを返すメソッドのテストを行う場合、assertThat(is(actual, expected))では誤差でテスト失敗になることがあります。その場合、closeToを使います。closeToは、org.hamcrest.Matchersのクラスメソッドで、ライブラリを導入する必要があります。Eclipseで、mavenプロジェクトのPOMエディタでは、次のように設定をします。

POM設定画面

テストコードでは、

import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.Matchers.closeTo;
import static org.junit.Assert.*;

public class FooTest {
   ...
   @Test
   public void some_test() {
      ...
      assertThat(actual, is(closeTo(expected, delta)));
   }
}

と書きます。

Androidラジオ語学講座ファイルダウンロード・再生アプリLangDroid公開再開の予定はなくなりました

先日お知らせしましたが、Androidラジオ語学講座ファイルダウンロード・再生アプリLangDroidの公開を3/30に終了しました。理由は、4月から、ストリーミングを公開しているサイトが、会員登録とストリーミング再生時ログインを要求するようになったためです。ストリーミングを公開しているサイトの会員登録時の利用規約、マイ語学 利用規約を読んだところ、「第6条(禁止行為)」に「(8) IDとパスワードによる正規のログイン以外の方法で本サービスにアクセスし、またはアクセスを試みる行為」という記述があり、ツールによるファイルダウンロードが禁止されていると解釈できるので、本アプリの公開停止を継続します。アプリ公開再開の予定はありません。ご了承ください。
今までご利用ありがとうございました。

Androidラジオ語学講座ファイルダウンロード・再生アプリLangDroid公開終了のお知らせ

Mar 30, 2013、Androidラジオ語学講座ファイルダウンロード・再生アプリLangDroidの公開を終了しました。4月から、ストリーミングを公開しているサイトが、会員登録とストリーミング再生時ログインを要求するようになるので、本アプリの公開を終了しました。4月に入ったら、本アプリを改造して利用できるようになるか調査しますが、時間を要します。利用できない場合、公開停止は継続します。ご了承ください。

Androidラジオ語学講座ファイルダウンロード・再生アプリv1.1.41リリース

Androidラジオ語学講座ファイルダウンロード・再生アプリ v1.1.41 をリリースしました。2013年3/18にストリーミングを配信するサーバ側で仕様変更があったようで、アプリ側で、対応しました。今週公開分の語学ファイルをダウンロードできるようになりました。ただし、ストリーミングを公開しているサイトが、4月から会員登録をさせて、ストリーミング再生の時、ログインを要求するようになるようなので、本アプリは4月には使えなくなると思います。ご利用ありがとうございました。ダウンロードは、Google Playのラジオ語学講座ファイルダウンロード・再生アプリ(beta版)よりダウンロードできます。

3月いっぱいでLangDroidは公開、利用終了予定

某ラジオ放送局が、語学講座をストリーミングで公開していて、私は、それをAndroidアプリでダウンロードして、再生するアプリ LangDroid を公開していた。

公式なソースがない(追記、番組ストリーミングご利用方法の変更に関して)が、ストリーミングを公開しているサイトが、4月より、会員情報登録、PCでストリーミング再生の時、ログインを要求するようになるらしい。一応、4月になったら、本アプリで対応できるか調査したいと思うが、多分対応不可と思うので、3月いっぱいで、本アプリの公開、利用は終了になると思う。

私は、hikiで開発日記をつけているんだが、LangDroidについて最初に日記を書いたのは、2010年11月25日だった。このアプリのアイデアのヒントを得たのは、NHK語学講座ダウンロード @ ウィキ のページだ。このページによると、PCでソフトにより語学ファイルをダウンロードしていた。そのソフトではflvstreamerというコマンドラインソフトを使って、ストリーミングをファイルにダウンロードすることを行っていた。flvstreamerはGPLソフトで、それをAndroidアプリに組み込むと、Androidアプリのソースファイルを公開する義務が生じるし、コマンドラインツールをAndroidアプリに使うにはどうすればいいのかという課題があった。それらの課題には、2010年の夏から取り組んでいた、課題は何とかクリアできた。それについては、Androidデ部やABCのLTで発表し、資料は Androidデ部ミーティング発表資料ABC発表資料 ABC2011 Summer LT発表資料 – 「クローズドソースアプリでGPLソフトを使うには」にある。

本アプリは、語学ファイルを手動か予約自動でダウンロードすることができ、ダウンロードした語学ファイルをリスト表示することにより、聴きたいファイルを再生することができるし、また、外出時にダウンロード、再生ができるし、再生時に、休止や、シークバー操作で繰り返し再生ができ、ヒントを得たPCアプリに比べ格段に使い勝手がよかったと自負している。本アプリは、Google Playで平均評価4.6、レビュー数465、ダウンロード数 100,000~500,000を得て、私がはじめて本格的に開発して、公開したAndroidアプリとしては好評のできたった。Google PlayでのLangDroidの画面のキャプチャを記念にとった。

Google PlayでのLangDroidの画面

ただし、はじめて作ったためか、設計がよくなく、ソースコードも汚く、使い勝手が悪く、作り直しを検討していた。しかし、ストリーミングの内容の性質上、マネタイズに躊躇することがあり、作り直しのモチベーションがなかなか出てこず、今日に至ってしまった。有料アプリ、広告付き無料アプリ、アプリ内課金はダメだろうから、アプリ内課金をやって、任意で開発者に寄付してもらうのはどうかと思っていたが、4月に要ログイン仕様になるので、開発、公開、利用は終了せざるを得まい。結局、マネタイズは、アプリのメニューにサポートページをつけて、そこから私のサイトにアクセスしてもらい、サイトにはってある広告をクリックしてもらうという方法をとっていたが、開発コストに見合うお金が得られなかった。

LangDroidのご利用ありがとうございました。

Androidラジオ語学講座ファイルダウンロード・再生アプリv1.1.40リリース

PukiWikiの方でお知らせしましたが、Androidラジオ語学講座ファイルダウンロード・再生アプリ v1.1.40 をリリースしました。2013年3/11にストリーミングを配信するサーバ側で仕様変更があったようで、アプリ側で、対応しました。今週公開分の語学ファイルをダウンロードできるようになりました。しかし、期の変わり目に、サイトが仕様変更を行い、本アプリでファイルをダウンロードできなくなる恐れもあります。その場合は、ご了承ください。詳細は、LangDroid を参照ください。ダウンロードは、Google Playのラジオ語学講座ファイルダウンロード・再生アプリ(beta版)よりダウンロードできます。なお、以前からアナウンスしているのですが、このアプリは設計、作りが甘いため、作り直しを検討していますが、作り直しには着手していなく、機能は従来版と同じです。