2011年10月3日月曜日

QLife 添付文書Pro リリース

Twitter等でも告知させて頂きましたが情報を集約させるためにブログでまとめたいと思います。

さて本日株式会社QLife様よりiOS上で利用出来る添付文書Proがリリースされました。私いのうえしげゆきもこのアプリの開発に監修という形で参加させて頂いております。



AppStoreはこちらからアクセス出来ます。
http://itunes.apple.com/jp/app/id467352729

上記アプリを継続してご利用頂くにはQLM IDを取得して頂く必要があります。
QLM IDの取得は以下から行なってください。

https://qlifebooks.com/entry/index.php

上記URLは現状iPhoneでの登録について準備中です(10/3現在)。iPhoneでご利用予定の方は事前にIDを取得しておくことをお勧めします。

そしてFacebookページも作成されておりますので是非情報収集等にお役立てください。

このアプリの特徴としては多くの医薬品が画像付きで表示されること。そしてiOS上の添付文書閲覧アプリでは初だと思いますがインタビューフォームを閲覧することが可能です。

またローカルにデータを保持(約1GB)するため回線不通時でも添付文書の閲覧が可能です。
このデータを端末に登録するため初回利用時にちょっと大きめなデータダウンロードが必要となります。サイズの関係上wi-fi接続のみ対応となっておりご自宅や職場等でのインストールをお勧め致します。

添付文書Proに関するご意見等は私 @kaepapa33 もしくは@QLife_JP までお寄せ頂けますようお願い致します。



2011年10月2日日曜日

メディア初登場!?

はてさて拙作添付文書検索ツールが雑誌に掲載されました。

掲載されたのはGetNaviという情報雑誌の11月号。

はじめての事なのでちょっと嬉しい・・・ものの添付文書というものがどういうものなのかちゃんと認識されてない点がちょっと残念です。


でもこの雑誌はとりあえず永久保存ということにしましょう。ちゃんとスキャンして画像としても残したので記念ぱぴこ。

2011年9月20日火曜日

AndroidLibraryプロジェクトの作成とテスト(2)

 ちょっと間があいてしまいましたが前回の続きです。


 今回は実際にテストを作って実行する部分について紹介したいと思います。ではまずはテスト対象となるクラスをライブラリプロジェクトに作成したいと思います。



 ライブラリプロジェクトのパッケージ直下にクラスを作成するためにコンテキストメニューから「新規」-「クラス」を選択し以下の新規Javaクラスダイアログを表示します。


 クラス名はプロジェクトと同じ「AndroidLibrary」としました。他は今回なにも変更をしていません。



 作成されたクラスファイルにとりあえずコンストラクタメソッドのみ作成して続いてテストクラスを作成します。私はQuickJUnitを利用しているのでAndroidLibraryクラスに対するテストクラスが未作成状態ではCtrl+9で以下のようなダイアログが開きます。既にテストクラスが作成されている場合にはテストクラスがパースペクティブに表示されテスト対象クラスとテストクラスをショートカットで行き来することが出来ます。


 ここで「はい」と答えると新規JUnitテスト・ケースダイアログが表示されますのでテストクラスを生成させましょう。



 ソース・フォルダーがLibraryプロジェクトのsrcフォルダがデフォルトで指定されているのでLibraryテストプロジェクトのsrcフォルダに変更しておきます。またスーパークラスをAndroidTestCaseに変更してあります。



 作成したAndroidLibraryTestクラス内にとりあえず簡単なテストを作成しました。AndroidLibraryクラスのインスタンスを生成してそのインスタンスがAndroidLibraryクラスのものであるか確認しているだけです。コンストラクタメソッドは既に作成してあるのでテストファーストじゃありませんが今回は気にしません。



 また「新規作成」-「その他」から「Java」-「JUnit」-「Junitテスト・スイート」からAllTestsクラスを作成して配下のテストクラスを収集するよう実装しました。


 ここで一点注意が必要です。プロジェクトを作成したときに自動ビルドの設定になっている場合空プロジェクトがビルドされて既にapkファイルが作成されています。この状態でテストを実行するとエミュレータにLibraryプロジェクトのパッケージがインストールされてしまいテストが上手く実行出来なくなってしまいます。Libraryプロジェクトフォルダ内のbinフォルダは以下のようになっていることと思います。


 これら3つのファイルは必要ありませんのでテスト実行前に必ず削除しておくようにしてください。そうしないとエミュレータ起動ごとにAndroidライブラリパッケージがエミュレータにインストールされてしまいアンインストールしないとテスト実行が出来なくなってしまいます。もしインストールが実行されてしまった場合は.settingあたりを一度削除する必要があるかもしれませんがそこまでは検証していません。



 さて実際のテストの実行ですが「実行構成」を開き通常のAndroidテストと同じように設定を行います。ここは特に詳しい説明は必要ないことでしょう。


 そしてテストを実行するともちろんコンストラクタクラスが作られているのでグリーンです。


 いかがだったでしょうか。注意点はあるもののお手軽にライブラリプロジェクトのテストを行うことが出来ます。ライブラリなのでandroid.jarに依存しないものであれば普通のJavaプロジェクトとして作成したほうがテスト実行速度も速く優位だと思いますがどうしてもandroid.jarに依存してしまう場合にはこの手法でテストが可能となることと思います。


 さてさてこの手法を用いてライブラリを作成しなくちゃ!

2011年9月17日土曜日

AndroidLibraryプロジェクトの作成とテスト(1)

ADTの機能としてLibraryProjectの作成がある。たしか0.9.7あたりから追加されたものだったと思うが複数のアプリケーションから参照が可能なLibraryプロジェクトが作成可能となっています。


ライブラリであるので当然このLibraryプロジェクトはjarとしてbuildされ複数のAndroidプロジェクトで利用可能ということです。


しかもADTの機能としてLibraryプロジェクトをライブラリとして参照するとそのAndroidプロジェクトの中からもソースコードの添付等を経ずソースコードの参照可能となり使い勝手の面で大きなメリットがあるように思われます。


@ussy00さんのブログで春頃に紹介されていますが画像が無くなってしまっているようなのでATECの一員として後追い記事ではあるものの詳細をまとめてみようと思います。


ということで先ずはLibraryプロジェクトとLibraryテストプロジェクトの作成から行なってみたいと思います。




まずは新規作成より通常のAndroidプロジェクトの作成と同様に「Androidプロジェクト」を選択します。作成仮定としてはAndroidプロジェクトとほぼ同じですが一点だけ違うのはAcitivyを作成しないということです。


上記のようにプロジェクト名を付け内容の部分についてはそれぞれの環境にあわせて設定を行ってください。ビルド・ターゲットとしては今回はAPIレベル7を選択しました。



パッケージ名をを指定した下の部分でAndroidプロジェクトではアクティビティ名を入力してアクティビティクラスを自動生成させていると思いますが今回のライブラリではAcitivityは使わないという設定にしてチェックを外しています。「次へ」ボタンを押してテストプロジェクトも一緒に作成します。


こちらはデフォルトのままでOKです。変更する必要がある場合は随時行なってください。


私はQuickJUnitを使う関係でパッケージ名をAndroidプロジェクトと同じにするようにしています。このあたりも好みかと思いますので自由に設定しましょう。「完了」ボタンを押すと上記ではAndroidLibraryプロジェクトとAndroidLibraryTestプロジェクトの二つがパッケージエクスプローラに表示されるようになったかと思います。続いてそれぞれのパッケージについてLibraryプロジェクトとする設定を行います。


パッケージエクスプローラでAndroidLibraryプロジェクトを右クリックしてコンテキストメニューからプロパティを選択しその中のAndroid項目を開きます。


下の「ライブラリー」という中の「Is Library」にチェックを入れこのプロジェクトがLibraryプロジェクトであることを設定します。続いてAndroiManifest.xmlを開きます。


上記はAndroidManifest.xmlファイルのアプリケーションタブの一部です。上部にある「Define an <application> tag in the AndroidManifest.xml」のチェックが入っていると思うのでこれを外します。


するとAndroidManifest.xmlファイルは上記のようにとても簡単な物になります。


続いては必要のなresフォルダの中身を削除してしまいましょう。リソースを利用する場合は残しておいても構いませんが初期設定で置かれるiconやlayout/main.xmlやvalues/string.xmlは必要ないことが多いのではないかと思います。genフォルダ、assetsフォルダそしてresフォルダ自身は残しておかないとコンパイル時にエラーとなってしまうようです。


続いてはAndroidLibraryTestプロジェクトのプロパティを設定します。先程「Is Library」にチェックを入れた部分で「追加」ボタンを押しAndroidLibraryプロジェクトをライブラリとして登録します。



登録すると上記のように表示されライブラリとして追加されたことが表示されます。



またパッケージエクスプローラ上ではAndroidLibrary_srcとして参照されていることがわかるかと思います。この中身はAndroidLibraryプロジェクトのsrcフォルダがそのままリンクされているような感じで表示されています。こちらからファイルを変更してもAndroidLibraryプロジェクトの内容に反映してくれるようです。


ちょっと長くなってきてしまったのでとりあえずこのあたりでいったん〆め。
次の記事では実際にテストを実行するまでをご紹介します。

2011年8月13日土曜日

AndroidTestCaseを継承したテストケースでテストプロジェクト内のリソースを利用

今日は朝一から外出して若松通商さんで愛用のT61のCPUFan交換後、第一回Androidテスト・ソースコードリーディングに参加してきました。

ちょっと人数が少なめで寂しかったですがデ部とのダブルブッキングやら時期的な事を考えると致し方ないことだったでしょうか。
少人数でスイーツを頂きながらまったりとActivityInstrumentaionTestCase2あたりを眺めてきました。

その中で先日からハマっていたAndroidテストパッケージの中のassets以下のファイルにアクセス出来ない問題についてmike_neckさん例を提示して頂いたのでAssetManagerの呼び出しに@hideされているgetTestContextメソッドを利用してアクセス出来るようになりました。

public class AndroidExtendedTestCase extends AndroidTestCase {

    public Context getExTestContext() {
        Context context = null;
        @SuppressWarnings("unchecked")
        Class clz = (Class) this.getClass();
        try {
            Method method = clz.getMethod("getTestContext");
            context = (Context) method.invoke(this);
        } catch (SecurityException e) {
            fail();
        } catch (NoSuchMethodException e) {
            fail();
        } catch (IllegalArgumentException e) {
            fail();
        } catch (IllegalAccessException e) {
            fail();
        } catch (InvocationTargetException e) {
            fail();
        }
        return context;
    }
}

まんまソースを頂いてループしてしまっているようだったのでメソッド名をちょっと変更しましたがこのAndroidExtendedTestCaseを継承したテストケースクラスで

AssetManager assetMgr = getExTestContext().getAssets();
// filenameはassetsファイル以下相対パスを指定
InputStream is = new InputStream(assetMgr.open(filename));

という感じでばっちりと読み込むことが出来ました。@mike_neckさんいつもありがとうございます。

2011年8月8日月曜日

読まねばならぬもの

だいぶ前に知人の方からMacBookをお借りしてiOS開発にも挑戦しようとぼちぼちと準備中。

第一の目的は添付文書検索ツールのiOSへの移植…メインはiPadをターゲットにしたいと思います。
理由としては今後調剤室で添付文書の閲覧が必要になったときには常に最新のものを見てもらいたいということとなかなか業務中にはパソコンの前に座って最新の添付文書を開くというのが難しいということ。

これをクリアするためにiPadなりAndroidタブレットに最適化した添付文書検索ツールのリリースをと
大分前から考えていたりしますがなかなか形にすることが出来ずにいる訳です。

iPad向け開発もAndroidタブレット向け開発も未経験ではありますがなんとか頑張らないといけません。

とりあえずまったくわかってないiOS開発の勉強をしている訳ですがAppleから膨大なドキュメントが日本語で提供されています。ところがこのページがどこにあるのかDeveloperサイトからなかなか辿ることが出来ないので備忘録的に記事にしておきます。

iOS Developer Library

上記リンク先に日本語化されたドキュメントが沢山あります。
全部じっくりと読めばかなりの知識になりそう。

iOS Developer Library(英語)

上記にはさらに沢山のドキュメントが英語ではありますが用意されています。

とりあえずじっくりと腰を据えてドキュメントを読み込みたいと思っています。

Groovy環境を作ってみる。

さてさて半年以上も放置してしまいまいたがぼちぼち書かないといけませんね。
いろんなことに手をだしていてネタは沢山あるので時間を見つけて書くこととしましょう。

昨日はAndroidテスト部の祭りに参加してきた訳ですが(それも記事にしたらいいのにw)その途中で重いから辞めときゃいいのに本を3冊程買ってしまいました。

そのうちの一冊がこちら



テスト部でご一緒させて頂いているmike_neckさんに触発されておもわず購入です。

ということでWin7とOSX上に環境構築してみました。

公式サイトよりWindows用インストーラをDLして起動
インストールパスをC:\JavaLib\Groovy\Groovy-1.8.1に変更したのみ
環境変数まで設定してくれるので楽チン。

一旦ログアウトしてGroovyConsoleを起動してHello, Groovy!を実行。


Groovyのインストール@OSX
http://groovy.codehaus.org/DownloadよりバイナリzipをDLして
Matsumoto.JSさんのMac OS XでのGroovy等をインストールする場所の記事を参考にさせて頂き/Library/Frameworks/Groovy.frameworks/Versions/1.8.1に展開して/Library/Frameworks/Groovy.frameworks/Versions/Currentにシンボリックリンクを作成

.bash_profileを以下にように変更
export JAVA_HOME=/Library/Java/Home
export ANT_HOME=/usr/share/java/ant-1.8.2
export GROOVY_HOME=/Library/Frameworks/Groovy.framework/Versions/Current
export PATH=$PATH:/Developer/android-sdk-mac_x86/platform-tools
export PATH=$PATH:$GROOVY_HOME/bin
そして確認。
MacBook:~ kaepapa$ source .bash_profile
MacBook:~ kaepapa$ groovy -version
Groovy Version: 1.8.1 JVM: 1.6.0_26

同じくgroovyConsoleを起動してHello, Groovy!を実行


ということで環境構築は完了しました。
徐々にいろいろといじってみたいと思っております。