わんくま同盟 Blog's

わんくま同盟

メニュー

わんくま同盟

  勉強会情報

  メンバリスト

掲示板

ブログ

リンク

統計

わんくま同盟メンバ

わんくま同盟わんくま同盟

わんくま同盟メンバの最新の記事

9月分のパッチきたよー

今月もマイクロソフトさんとアドビさんはどうじにきましたよ^^/

 

◆マイクロソフトさん

2014 年 9 月のマイクロソフト セキュリティ情報の概要
https://technet.microsoft.com/ja-jp/library/security/ms14-sep

◆Adobeさん

Security Bulletins and Advisories
http://helpx.adobe.com/security.html

posted @ 2014/09/10 8:58 by ちゅき

[Kinect]KineBrickEV3

LEGO MINDSTORM EV3は、各種センサーやモーターを組み合わせてロボットが作成できるLEGO社の教育用製品です。

IMG_2251

 

EV3は、プログラミングブロックを組み合わせて作成した動作プログラミングをインストールすることで自律的に動き回ることができます。

image

 

また、BluetoothやWiFi(別売りのドングルが必要)を経由してPCから直接コマンドを送信して動作させることもできます。

KineBrickEV3は、Kinect 2で検知した人の動きをPCで解析し、解析結果をEV3コマンドに変更してEV3に送信することでリアルタイムにEV3の操作を行うアプリです。

IMG_2305

 

KineBrickEV3を使えば左右の手の動きがEV3のモーターの動きに変換されレスポンスよくスムーズに操作できます。

posted @ 2014/09/10 2:20 by 初音 玲

[Kinect]東京エレクトロンデバイス様のセミナーに登壇します。

イベント・セミナー|東京エレクトロン デバイス株式会社

2014/09/24(水)に開催される東京エレクトロンデバイス様の「Kinect for Windows V2最新情報セミナー」に登壇します。

--

14:30-15:15 Kinect V2デモアプリ紹介

(2) KinebrickEV3におけるスタイリッシュモーションの取り組み
Kinect 2を始めとするモーションセンサー対応アプリの使い勝手はどのように高めればよいのでしょうか。
デモ展示するKinebrickEV3のスタイリッシュで気持ちのいい操作性はどのような事に留意してどのように実装したのか、設計時とのギャップも含め実践的な内容をお届けします。 

--

第14回レスキューロボットコンテストにてデモ展示を行い、体験者に絶賛されたKinect 2によるLEGO MINDSTORM EV3コントロールアプリを展示および紹介セッションします。

気持ちの良い操作感をどう実現するのか、持ち時間15分ですが可能な限り詳しくお伝えします。直前にある中村さんのセッションをあらかじめ聞いておくとより理解が深まると思います。

平日の午後ですが、ぜひ、お越しください。

posted @ 2014/09/09 13:50 by 初音 玲

いろいろを引っ越し予定

プライベートも含めて

なので、今後は
ここを気にしてくれると有難いかも。

生きていくのってホント大変だよね。良い子のミンナは、私みたいな人間にならないようにv

posted @ 2014/09/08 3:34 by 片桐 継(Tugu Katagiri)

[AED]AEDオープンデータプラットフォームをなぜやっているの?

Q1.
AEDとか救急医療財団とかNPOとかそういった専門家の人にまかせておけばいいじゃない?
A1.
専門家の人が10年かけて様々なところにAEDを設置して十分な数ではないそうですが国内に一般の人が使えるAEDは20万台を超えているそうです。
しかし、その使用率は3.7%。生存率がAED非使用時の4倍になるのにも関わらず、一般の人が使えるような機械に仕上げているのにもかかわらずです。
なので、医療の専門家ではなく、開発者がアプリやITなどの視点からお手伝いをしないとブレークスルーは起きないと考えたのです。

Q2.
AEDデータ集めたって、どれくらい利用率が上がるのか分からない。1%でも上がればいい方。
A2.
救急搬送(つまり通報する人がいた)心肺停止者は2012年で2万3797件。この3.7%である881人がAEDを使った人だとすると1%はだいたい200人強。十分な数値です。0.1%アップだっていいんです2人ですから。0.05%アップだっていいです誰かを助けたことになるのですから。

だからこそ、1日でも早く1件でも多くAEDの位置情報を登録していきたいのです。

posted @ 2014/09/03 23:30 by 初音 玲

[AED]千葉県のデータが揃いました

千葉県を早めにと思ったのは下記の記事を読んだからです。
http://www.chibanippo.co.jp/news/politics/207816

 

この想いを汲んで頂き千葉県担当者につないでいただいたおかげで、緯度経度追記の千葉県内のAED位置情報を入手できました。

データがAED単位ではなく施設単位だったので、AED単位にバラして、なおかつ、スタジアムなどでは位置を展開してなどの作業を行って千葉県のデータを登録完了しました。

 

これにより、
https://aed.azure-mobile.net/api/aedinfo/千葉県/
のような指定で千葉県全域のAED情報を一括して取得可能です。

ここで取得できる形式はJSON形式といってJavaScriptで利用しやすい形になっておりますので、Webアプリから簡単に参照することができます。
サンプルコードは以前にもお知らせしたとおり下記のコード共有サイトにて公開ししております。
https://github.com/hatsunea/aedmap
このサンプルコードを実行すると下記のURLのような地図が誰でも表示できます(表示まで10秒ほどかかります)。
http://aedmap.azurewebsites.net/

 

これを応用すると下記のようなサイトも構築可能です。
http://aedmap.catchball.co/a/chiba

 

今回は緯度経度付のデータをご提供頂けたので、非常に短期間で投入が進みました。
本当にありがとうございます。

 

今回、プラットフォームとしてアプリから使いやすいオープンデータが公開できましたので、記事の中の小学生にも納得してもらえる情報提供方法をぜひ開発者の皆さんは構築していただけたらと思います。

posted @ 2014/09/01 1:01 by 初音 玲

LT

30日、.NETラボの勉強会の LT で発表させていただきました。

内容は「Active DirectoryでDHCPを使う」です。

LT で使ったスライドです。

http://www.slideshare.net/mitchin227/active-directorydhcpdhcp

 

 

ブログ一覧

http://www.pbyk.com/blog/bloglist.html

posted @ 2014/08/30 23:58 by mitchin(mitchin@wankuma.com)

[AED]AEDの位置情報をオープンデータとして公開したいと考えている担当者の方へ

AEDの位置情報をオープンデータとして公開したいと考えている行政担当者の方は、是非ともAEDオープンデータプラットフォームへの掲載を検討していただければ幸いです。

 


AEDオープンデータプラットフォームであれば、いま、お手元にあるAED位置情報を初期投資を抑えて公開することができます。
そして、データとして出すところではなく活用するところにシステム化費用を投資してほしいと思います。

 


AEDオープンデータプラットフォームは、誰でも無償でAED情報の検索できるプラットフォームです。
また、AED情報の登録については、Facebook認証および変更が行われた場合にはFacebookの「https://www.facebook.com/AEDSearch」に自動投稿が行われるので変更追跡が可能です。なお、登録のAPIは現時点ではWindowsストアアプリである「AED検索」のみに限定して提供していますが、androidやiOSへの移植も検討しております。
※android版やiOS版への展開をお手伝い頂ける方も募集しております。

 


本ソリューションのマネタイズは、AEDオープンデータプラットフォームではなく、そのデータを使った関連アプリにて行いますので、AEDオープンデータプラットフォーム自体の利用は将来にわたっても無償ですし、その利用方法についても特に制限を設けることはありません。

 


AEDオープンデータプラットフォームは、パブリッククラウドを活用したWebサービスでHTTP-GETによりJSON形式で以下のデータを取得できます。

・指定した都道府県単位のAED情報一覧
・指定した市町村区単位のAED情報一覧
・指定した緯度経度の直近AED情報
・指定した緯度経度の指定範囲内のAED情報一覧
・指定したIDのAED情報

指定方法や返却されるJSONデータ形式は、 http://hatsunejournal.jp/w8/aedSearch/ を参照ください。


もし、お手元にAED情報がExcelなどでまとまっているのであれば、そのデータをぜひご提供ください。
施設名と住所があれば1週間、WGS84形式(google mapで表示できる形式)の緯度経度があれば、最速1晩でデータ投入可能です。
繰り返しになりますが、行政担当者の方はぜひご検討いただき、費用をかけずに住民サービスの向上を図っていただけたらと思います。

 


ご参考までに、AEDオープンデータプラットフォームを使って、第三者が作成したWEBサイトをご紹介します。

http://aedmap.catchball.co/

このサイトではAEDデータの管理を一切行わず、すべてAEDオープンデータプラットフォームから情報を取得しています。
処理速度なども含めて、行政公式ホームページからAEDオープンデータプラットフォームを利用したときの雰囲気を感じていただければ幸いです。


行政公式ホームページの中で「AEDオープンデータプラットフォームからデータを取得してGoogleマップに表示」することを想定したHTML+JavaScriptのサンプルをGitHubに登録しました。ご活用ください。
https://github.com/hatsunea/aedmap
http://aedmap.azurewebsites.net/

posted @ 2014/08/26 14:51 by 初音 玲

[AED]埼玉県AEDマップの謎

http://www.pref.saitama.lg.jp/site/aed/aed-map.html

埼玉県は、Excelファイルと「街の情報館」の2つの方法でAED情報を提供してくれています。

 

ところが、

【届出件数】 2,649台(平成19年8月1日開始時) → 11,405台(平成26年6月末現在)

とあるのですが、Excelファイルにあるのは、9,797台(平成26年6月末現在)となっています。

これは、届出したけれど公開に同意していないAED情報があるからですね。

一般の人がアクセスできないようなところにあるAEDの場合、公開していないものも多いようですね。

ただ、「携帯電話やスマートフォン、パソコンから、県内のAEDの設置場所を検索いただけます。」の下にあると、あれ?「街の情報館」の方には全部乗っているの?とか思ってしまいます。「街の情報館」は一度に100か所しかポイントできないので県全体で何件なのか把握できないのも疑問に拍車をかけますね。

 

なお、「街の情報館」には、地図に表示するので当然、緯度経度は登録していますし、それ以外に「電話番号」「パッドの種類」「使用可能な曜日」「使用可能な時間帯」

などがありますが、Excelファイルにはこの情報は登録されていません。

公開方法によって公開情報が増減するのってちょっと違和感がありますね。

 

 

posted @ 2014/08/26 11:10 by 初音 玲

ググレカス先生は偉大だ……

http://blogs.wankuma.com/chuki

でアクセスができなくなったためか、Google先生が見つけてくれない^^;。
もう、ほとんど見てもらえないサイトになってしまった。

やっぱり、Google先生に出てこないものは、世の中ではなかったこと扱いというのはマジなのかもですorz

posted @ 2014/08/25 13:11 by ちゅき

デブサミ関西2014の懇親会に申し込んできた^^

懇親会もあるので申し込んできました^^
お会いできることを楽しみにしています^^/

さて、デブサミ関西懇親会 2014でググると、私のGoogle+での書き込みしか出てこない件についてw

「デブサミ関西2014 アンオフィシャル懇親会「コミュニティと出会おう」<2014年9月5日>」

http://www.seshop.com/product/detail/17161/

posted @ 2014/08/25 13:05 by ちゅき

[AED]AEDデータに和歌山県全域のデータ投入が完了しました。

image

和歌山県全域のデータを頂いたのでデータ確認しつつ時間を見つけてデータ登録していましたがやっと完了しました。

 

なお、登録件数は現状で10,176台となり1万台の大台にのりました。これもみなさんのご協力のおかげです。始めたときはここまでくる決意はありましたが自身はありませんでした。本当に最初の通過点ですが、通過できてよかったです。

posted @ 2014/08/21 22:08 by 初音 玲

[Azure]Microsoft Azure SQL Databaseのバックアップ

AEDオープンデータプラットフォームは、Microsoft Azure上に構築されデータベースとしてMicrosoft Azure SQL Databaseを採用しています。

以前にもお伝えしたように、Azureの機能で定時エクスポートを行っています。現状は毎日定時に実施するようになっています。

image

 

エクスポート時間ですが、約10MBの現状で11分くらいの時間で終了しています。

image

posted @ 2014/08/21 22:04 by 初音 玲

Android Studio で Junit を使いたいので、戦い続けて挫折して立ち返って立ち直った話

最初、EclipseでJunit 4.11+Robolectricを使ってたんだけど、AndroidStudioに移植した時に、全部グリーン状態のソースを移植したのでテストコードは省いてたw

なので、機能追加のついでに、テストコードも移植しようと思ったんだけど、意外な展開が。

!!! JUnit version 3.8 or later expected:

java.lang.RuntimeException: Stub!
<中略> Process finished with exit code -3

素直にRobolectricを依存ライブラリに追加して実行して、なにこれ???というわけで色々と調査。で、判ったことは

  • Android StudioでRobolectric使うならプラグインいれましょう
  • クラスパスはJunit>SDKの順番でライブラリ参照しましょう

あふー、gradleをいじる羽目になりましたですよorz 書き直すのメンドイなー。

RobolectricスタッフのブログGoogleGroupを見る限りだと、この辺りの問題はできたら解決したいなー的レベルらしくて、しばらくは手動でごにょごにょの世界のようです。まぁAndroid Studio自身がbetaの立場だもんなー、正式版になってからなんだろうなぁ(遠い目)

で、やってみたこと。

  1. app/build.gradleにrobolectricの依存ライブラリ追加
  2. ルートのbuild.gradleにrobolectricのプラグインのための依存ライブラリ追加
  3. app/buid.gradleにrobolectircのプラグイン追加
  4. ここで、いったんgladleをSync
  5. ターミナルから、プロジェクトルートでgladle robolectric を実行し、必要なクラスがコンパイルされていることを確認
  6. テストコードを書いて、ライブラリが追加出来ていることを確認
  7. テストコードから生成されたクラスの出力先をクラスパスに追加
  8. プロジェクトルートにある、.imlファイルの中にあるクラスファイルの読み込み順番を変更
  9. gladlew androidTest を実行

さらっと書いたけど、2から5の間はgradleソースの読み込みだったので、簡単じゃなかったよorz  gradleソースはpom.xmlよりも何をやっているのかソースで追える分、楽と言えば楽だし、親切と言えば親切なんだけどね。やっててよかったgroovy。

そして、何とかたどり着く9のフェーズ。ここで恐怖のハマりポイント、自クラスをクラスパスにうまく追加できない、をやらかしてしまった。いや、世界には、この方法で解決している人もいるので(成功例がMacOSXだったりするのがとてもとても気になるけれどもw)きっと、何かが悪いんだろう。

収穫はgradleソースが読めるようになった、ってことで、挫折orz

これに丸々二日ハマって、なんか疲れたんで、基本に立ち返ってみたんだ。

Android SDK にテストフレームワークがあるのかな?

結論から言えば、ある、Junitがある。ただし、バージョンは3.8。便利なassertもアノテーションも全滅のオールドタイプさん。まぁ悪いバージョンじゃないんだ、基本機能はガッチリ揃ってるし、実績も高いしさ。まさかとは思うけど、Mavenリポジトリサイトで、Junit3.8のダウンロード数が廃れないのは、こいつのせいだったりしてねw 

Testing Fundamentals | Android Developers:
http://developer.android.com/tools/testing/testing_android.html

基本に立ち返って、もう一度、この記事を目皿にして読み直し、抜粋したポイントは

  • ディレクトリを作成する
  • テストしたいAndroidオブジェクトに対応したTestCaseを継承してテストコードを書く
  • Android Test を実行する

これだけ。じゃ、やってみようか、もちろん、最初はレッドのテストでね。

まず、ディレクトリ作成

image

デフォルト配色で、androidTest/javaフォルダが緑色になればOK。これは、テストクラスのあるパッケージディレクトリですよ、を指している色で、これが指定されていないと、後の作業がメンドクサイ、フォルダ見難いw

このフォルダの指定は、モジュールの.imlファイルに記述されているので、検索してフォルダ表記が無かったら、それを記述追加してリビルドすれば環境ができているはず。できるだけ、いじらないでいたいなら、テストクラスとして指定されている別のフォルダがすでにあれば、それを新規作成すると後も綺麗に続けられるので楽。テストクラスのパッケージフォルダ記述が無いなら、仕方ないから追加ね。

そして、テストクラスを新規作成。これはいつもの新規作成の手順でOK。

public class ApplicationTest extends ApplicationTestCase<Application> {
    public ApplicationTest() {
        super(Application.class);
    }

    public void testAssertion(){
        assertEquals(1,3);
    }
}

絶対レッドのテストw<手抜きすぎw

今回はアクティビティやコンテンツのテストではないので、ApplicationTestCaseを継承したけど、テストしたいものによって継承するテストクラスが異なるので、細かい事は前記述のサイトのリンクから参照で。(そのうち、まとめるとは思うけどw)

クラスが書けたら、次は実行設定。私は、モジュール内のxxxxTestクラスのtestXXXXメソッドを総なめにした。細かくやりたい人はパッケージ事とかに分けると良いと思う。


image

Android SDKのJunitは実行環境を必要とするのでエミュレーターは起動しておき、立ち上がりを確認したら、テストを実行してエミュレーターに環境割り当てをすると、テストモジュールがエミュレーターにアップロードされて……

image

よっしあぁ!レッドすねぇぇくかもぉぉん♪

というわけで、立ち返ってからレッドになるまで、2時間だったというオチw

基本って大事だね! 痛感したわ。

posted @ 2014/08/21 16:49 by 片桐 継(Tugu Katagiri)

[VisualStudio]Visual Studio “14” CTP 3 Released

Visual Studio “14” CTP 3がリリースされました。

  • 14はバージョン番号であって2014年に登場するというものではありません。
    Visual Studio 2013はバージョン12なので見事に13を飛ばしたことになります。
  • CTPとは、Community Technical Previewという意味で、技術系コミュニティでのプレビューを想定しています。
  • CTPなのでAzureなどを使って仮想環境上で試して、手元の環境はそのままにしておくことをお勧めします。

今回のCTP3でもいろいろな新機能が実装されてきましたが最も注目するのは次の機能です。

Shared Projects. With CTP 3, you can create an empty C#, VB, and JavaScript shared project from the “File > New Project” menu. Windows Store/Phone Projects written in C#/VB/JavaScript, as well as some classic desktop projects (Console Application, Class Library, Windows Form Application, Portable Class Library, WPF) written in C#/VB can consume one or many of these shared projects.

やっとVBでもWindowsストアアプリとWindows Phoneストアアプリでソースコード共有なソリューション構成がとれるようになります。

 

それだけではなく、WindowsフォームやWPFのプロジェクトともソースコード共有できるようになりました。

「はじめてのVisual Basic 2012」や「はじめてのVisual C# 2012」では、Windowsフォーム、WPF、Windowsストアアプリでロジック部分のコードを同一にしていましたが、今回の機能追加でView相当以外をSharedプロジェクト、各Viewをそれぞれのプロジェクトとしたソリューション構成がとれるようになり非常にすっきりした構成にできます。

 

posted @ 2014/08/21 9:36 by 初音 玲

[AED]AEDデータに東京都文京区のデータが追加されました。

image

東京都文京区のデータを頂きましたので、投入!

posted @ 2014/08/21 7:28 by 初音 玲

[AED]一般市民のための自動体外除細動器(AED)講習会にいってきました。

AEDオープンデータプラットフォームに取り組んでいる割には、知識としての心肺蘇生、知識としてのAEDは詳しくなりましたが、実習が伴っていなかったので、日本光電さんの講習会に行ってきました。

WP_20140820_001

 

AED単体だけではなく、AEDが届くまでの間、そしてAEDで除細動が取れたあとにも救急車が到着するまでに必要な「胸骨圧迫(心臓マッサージ)」も込みの3時間コースでの受講です。

 

実習には、実習用の二郎くんを使って、倒れている人を見つけてから、

WP_20140820_003

  1. 意識の確認
  2. 周りへの呼びかけ(119番してください、AEDもってきてください)
  3. 呼吸の確認
  4. 心臓マッサージ
  5. AED使用
  6. 心臓マッサージ
  7. 救急車到着

と一通りを2人1組のペアで、第一発見者とAED運んできた人の役割を交代しながら合計2セット経験していきます。

 

最後に資料を見ずに理解度テストを行って見事合格すれば修了証を交付していただけます。

WP_20140820_010

 

今回の講習をうけて、知識と実地の差を感じたのは以下のようなことです。

  • 1分間に100回という心臓マッサージは思った以上にペースが速い
  • 肘を伸ばして体全体を使って、5cmくらい押せる力で続けるのは辛い。1分か2分ごとに交代(あまり頻繁に交代すると交代するときの中断時間が)するとしても、ローテで交代というより1分ごとに新戦力を投入するのが理想的
  • 修了テストの実地チェックで、「3.呼吸の確認」を忘れてしまった。周囲に呼びかけて「よし心臓マッサージだ」となってしまう。
  • 心臓マッサージと人工呼吸を交互にというのは正直一人では思い出せない。心臓マッサージだけで手一杯。人工呼吸は無理してしなくていいという最新のガイドラインは、人工呼吸という心理的に「どうしよう」というだけじゃなくて心臓マッサージをきちんとやる上でも重要

なお、発見が遅かったり、おぼれたり、子供(呼吸が止まってから心臓停止のパターンが多い。大人は心臓停止→呼吸停止という順番が多い)だったりのように、呼吸が止まってから時間がたっているケースでは人工呼吸がかなり有効らしいけど、そうであったとしても、迷うならやらずに心臓マッサージ一択がよいと私は思いました。

そうそう日本光電の最新型AEDは、AEDとAEDの合間に100回/分のリズムを刻んでくれます。アプリに実装しようと思っていた機能がAEDにも実装されていて、「こういうのが必要だよね?」というブレインストーミングの結果が正しい方向だっと分かってよかったです。

 

http://aedmap.catchball.co/

https://www.facebook.com/AEDSearch

http://hatsunejournal.jp/w8/aedSearch/

posted @ 2014/08/20 19:12 by 初音 玲

[Azure]AEDオープンデータのデータ量が全体数の2%になったのでAzrueの状況を調べてみた

まずは、Microsoft Azure Mobile Servicesの該当サービスのダッシュボード表示はこんな感じです。

image

 

使用しているMicrosoft Azure SQL Databaseのダッシュボード表示はこんな感じです。

image

 

SQL Serverのデータ量としては11MBですので、全部入れても0.5GB程度になりそうですね。

image

 

Mobile ServicesもSQL Databaseも最小構成なので、スケールアップもスケールアウトも余力がかなりあります。

早くAEDの位置情報がすべて入った状態をみてみたいですね。

posted @ 2014/08/20 13:39 by 初音 玲

[AED]AEDオープンデータプラットフォームのデータ量が全台数の2%を超えました。

image

日本国内には約44万台のAEDがあり、そのうち約20万台が一般の人でも使うことができるAEDだといわれています。

実は、AEDの位置情報だけではなく、稼働しているAEDの台数すらも把握できないのが現状です。

 

AEDオープンデータプラットフォームに登録されているのは2014/08/20 13:00現在で、9,074台。

全体の2%とみるか、9,074台とみるかの視点の違いはありますが、私は「9,074」という数字に重みを感じます。データを提供してくれている多数の方の思いが積み重なった数字であり、もしかしたら、現在のデータ数でも救える命が1つでも増えれば、少しづつでも確実にデータ件数が増えていくのは、まさに安心感のカウントアップともいえると思います。

 

本日、かなり大規模なデータの提供を頂きました。なるべく早く投入します。こういうときだけ専業になりたいなーと少しだけ思いますねw

posted @ 2014/08/20 13:12 by 初音 玲

[AED]AEDデータに和歌山県のデータ投入が開始されました。

 

image

和歌山県のデータが届いたので順次投入しています。

posted @ 2014/08/19 21:34 by 初音 玲

[Windows8.1]//publish/結果発表

結果発表

http://blogs.windows.com/buildingapps/2014/08/15/publish-connecting-the-worlds-developers-results-in-innovative-apps/

残念ながら日本勢で入賞者はいませんが、今回の入賞作品を把握して次回こそ!

 

posted @ 2014/08/19 11:26 by 初音 玲

JavaとF#で、AndroidアプリのListAdapter を書いてみる。

Androidアプリで、リストを画面に表示したい時、用意するソースは4つ。

  • リスト表示するためのListViewを含むレイアウトファイル
  • リスト一行分の項目を定義したレイアウトファイル
  • リスト表示するためのアクティビティクラス
  • リスト一行分の項目を編集するためのリストアダプタクラス

この4つのファイルが必要。ちょっとメンドクサイw

でも、使い方を覚えれば簡単に色んなリストを作れるようになるので、ちょっと自慢できる、かも<を

で、今回のお話の主人公は、リストアダプタクラス。

実はAndroidアプリの中ではお約束がとても多くて、このリストアダプタクラスなんかは典型的。リストを作りたい時には、一行分のことだけ作者は考えてればいいんだよ、という仕様になっていて、とてもシンプルにできている。だから、作る側はそのお約束さえ守っていれば、後はAndroidさんの方で良しなにリストしてくれるの。

で、そのお約束なんだけど、次の事がリストアダプタクラスで定義出来ていれば動くみたい。

  • BaseAdapterクラスを継承していること(継承の継承でもOK)
  • 保持するリスト件数を返すgetCountメソッドがあること
  • 保持するリストの項目を返すgetItemメソッドがあること
  • 保持するリストのIDを返すgetItemIdメソッドがあること
  • 一行分のリスト項目を返すgetViewメソッドがあること

こうしてできたアダプタクラスを目的のListViewのプロパティAdapterにセットしておくと、Androidアプリのフレームワークは、getCountして取れた件数だけ、getViewを回してリストを作成してくれるし、クリックされたリストのアイテム項目をgetItemやgetItemIdを使ってアクティビティに返すようにもしてくれる。うん、便利だね。

ポイントは、基リストの保持はアダプタでやっても良いし、別のクラスで持っても良いところ。リスト生成する間、リストアダプタクラスがインスタンスをもっている間、リストが維持できていればOKだから、意外と自由。一つの基リストを色んなアダプタでリスト項目に展開することだって可能。使いこなしたい機能の一つだなって思うよ。

そんなリストアダプタクラス、JavaとF#で作ってみた。

レイアウトはresult_item, 項目は数値だけの表示リストでidをresultとして名前を付けて作ってあるとしての例ね。

Javaだと

public class ResultAdapter extends BaseAdapter {
    private List<Integer> list;
    private Context context;
    public ResultAdapter(Context context, List<Integer> list) {
        this.context = context;
        this.list = list;
    }
    @Override
    public int getCount() {
        return list.size();
    }
    @Override
    public Integer getItem(int position) {
        return list.get(position);
    }
    @Override
    public long getItemId(int position) {
        return position;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = null;
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.result_item, null);
        } else {
            view = convertView;
        }
        Integer result = getItem(position);
        TextView resultView = (TextView) view.findViewById(R.id.result);
        resultView.setText(result.toString());
        return view;
    }
}

F#だと

type ResultAdapter(activity : Activity, list:int[]) =
    inherit BaseAdapter()
    let _list : System.Collections.Generic.List<Java.Lang.Integer> =
        new System.Collections.Generic.List<Java.Lang.Integer>()
    do for i in list do _list.Add(new Java.Lang.Integer(i))
    override this.get_Count() = _list.Count
    override this.GetItem(position) = _list.Item(position) :> Java.Lang.Object
    override this.GetItemId(position) = int64(position)
    override this.GetView(position, view, parent) =
        let item = this.GetItem(position) 
        let view = 
            match view with
            | null -> activity.LayoutInflater.Inflate(Resource_Layout.ResultItem, null)
            | x -> x
        view.FindViewById<TextView>(Resource_Id.result).Text <- item.ToString()
        view

命名規約の問題で若干差があるけど、こんな感じ。F#の場合、JavaのObject型を使わなくてはならない分キャストがメンドイけれど、まぁクラスの一部だと考えれば、ただの変換作業なので苦も無く。Androidのクラスライブラリ群がJavaととても親和性がある、というかJavaで作られてるというのがよく判るよね。他言語で作るとなると、Javaの型を無視して作るなんて出来ないんだもの。まぁ、JNIを書いてラップして、なら出来るのかもしれないけど、ちょっとなんだか、それも違うんじゃないかなぁとか思ったり。

posted @ 2014/08/19 8:58 by 片桐 継(Tugu Katagiri)

[AED]AEDオープンデータプラットフォームの利用案

AEDオープンデータプラットフォームのAPIを使うと、現在位置から直近のAEDとその周辺のAEDを検索できます。

Web版AED検索であれば次のようなURLです。

http://aedmap.catchball.co/a/near?lat=35.96&lon=136.185

 

この2つの位置情報を使って、AEDを取りに行って戻ってくるときに使うナビゲーションシステムをGoogleマップを使うと比較的簡単に作成できそうです。

このような時にはGoogleマップに対して次のようなパラメタを付与してあげると良いでしょう。

https://www.google.com/maps/dir/35.9623467,136.1857611/35.96201,136.1866/35.96,136.185/

 

パラメタの意味は、

https://www.google.com/maps/dir/[現在位置緯度経度]/[AED位置緯度経度]/[心肺停止者緯度経度]/

となります。

 

[現在位置緯度経度]を随時更新してあげることで、googleマップ上で残り距離と残り移動時間(80m/sでの時間なのでAED抱えて向かう時はきっともっと短時間)が表示できます。もちろん、AEDを受け取ったら /[現在位置緯度経度]/[心肺停止者緯度経度]/ に切り替えてあげてという事になりますね。

こうしておけば現場からAEDを取りに行った後もどこに戻るのかがわかりやすいでしょう。

 

また、道に迷いそうなときはGoogleマップの「全区間を表示」によりルート案内、「プレビュー」によりストリートビューによるルート案内が可能です。

 

さらにGoogleマップ自身にも現在位置の取得機能がありますから、アプリ側で[現在位置経度緯度]を更新せずとも、Googleマップの右下にある◎をタップして自動的に現在位置を取得しておけばよいでしょう。

 

何か作ってみようかなとか、ハッカソンのアイデアとかに使っていただければ幸いです。

 

posted @ 2014/08/18 10:18 by 初音 玲

[AED]AEDデータに奈良県のデータが増えてきています。

posted @ 2014/08/18 8:44 by 初音 玲

メイリン♪メイリン♪

image

メイリンがVisual Studioに遊びにきてくれたよ!

メイリン♪メイリン♪

posted @ 2014/08/16 7:11 by 初音 玲

[AED]奈良県磯城郡田原本町のAED位置情報を頂きました

奈良県磯城郡田原本町のAED位置情報をCSV化したものを頂きました。

個人でコツコツと地元の位置を集めていたとの事、効果的な公開データとするためにAEDオープンデータプラットフォームへデータを投稿していただきありがとうございます。

image

posted @ 2014/08/16 6:35 by 初音 玲

シリアライズの偉大さを知ったw

SerializableAttributeAndoridアプリの画面を切り替える時、画面同士の情報の引き渡しができる仕組みがあるの。この時に、仲介役となるIntentクラスはとても大切。

やりたかったことは、とあるクラスに格納された情報を、画面の受け渡しに使いたいって事だったんだけど、Javaだと次の方法で出来る。

  • 受渡のためのクラスにSerializableを持たせる
  • そのクラスを含むIntentを作成する
  • StartActivityする

NextActivityが次に行きたいActivity、Serializedが自分で作った型だという想定で、サンプルコートだと、

Serialized serialized = new Serialized();
String record_key = "Key"
Intent intent = new Intent(this, NextActivity.Class);
intent.putExtra(record_key, serialized);
intent.setAction(Intent.ACTION_VIEW);
startActivity(intent);

こんな感じ。ISerializableを持たせることで、情報を一つのクラスに取りまとめて渡せるので便利。

そして、この部分で使ってるJavaDocは、

http://developer.android.com/reference/android/content/Intent.html#putExtra(java.lang.String, java.io.Serializable)
http://developer.android.com/reference/android/content/Intent.html#putExtra%28java.lang.String,%20java.io.Serializable%29

これ。確かに、putExtra( String, Serializable ) のメソッドが使えるように、作られている。

で、これを今度は、F#で作る。調べたところ、C#でも同じようにクラスの宣言でISerializableを使うことができるので、出来るんだろうなと気楽に思ってた。さらに調べると、F#のtype宣言は[<SerializableAttribute>]を使うことで実現できるというところまで学習。

ところが、ちょっと問題w C#やF#でいうISerializableは.NetFrameworkのものであって、Java.IOのそれではない。

考えれば当たり前。

そこをラップしてくれるなんていう便利なものがXamarinAPIにあればなー、なんて思って頑張ったけど、行き着いた答えがこれ。

Working With JNI | Xamarin
http://developer.xamarin.com/guides/android/advanced_topics/java_integration_overview/working_with_jni/

ラップは自分でしろ、そのためのJNIは用意してやるから(ニッコリ)と、読めたw

つまり、

  • Java.IO.ISerializableをJNIした継承インターフェイスを作る
  • 継承インターフェイスとSerializableAttributeをもつクラスを作る
  • putExtraでそのクラスを受渡す

うーん、はまりそう。深い闇というか沼の入り口に立ってる予感。とすると、逃げ道を考える。

  1. Json化して、テキストにした後、Intent.Extras.GetSerializableメソッドでシリアライズしてputExtra
  2. 受渡クラスを保持するシングルトンクラスを作成し、項目を特定するIDでputExitra

どちらも、JNIを使わなくても、できる形。Json使うのも魅力だけど、2の方法で作ってみた。受渡したいクラスをリストで保持するシングルトンのrecordServiceを作って、メソッドGetPositionでそのリストの場所を取得できるようにしておく。

let position : int16 = int16 recordService.GetPosition
let activity = new Intent(this, typeof<NextActivity>)
let extra : int16[] = [|position|]
activity.PutExtra(record_key, extra) |> ignore
activity.SetAction(Intent.ActionView) |> ignore
this.StartActivity(activity)

これで、とりあえず、やりたいことは実現できた。個人で好きにやってるから、こんな風なやり方したけどJson化する方がC#やJavaとの移植性が高い感じがするので、良いかもしれない。

posted @ 2014/08/15 21:02 by 片桐 継(Tugu Katagiri)

Toastを焼いてみる

Androidアプリで、好きなところ、Toastがあるところ。

Toastっていうのは、画面のメッセージで、下の方に出てくる、ちょっと角の円いメッセージ表示のやつね。

これ。

表示するのはとても簡単。

たとえば、Toastにエラーメッセージを表示したい、とする。エラーの内容はエラーコードをIDに割り付けておいて、IDを渡すだけで表示できるように、メソッド化しておけば便利だよね。そんなメソッドを書いた時、

Javaだと

void displayError(int errorId) {
    Toast.makeText(this, errorId, Toast.LENGTH_LONG).show();
}

C#だと、

void displayError(int errorId) {
    Toast.makeText(this, errorId, ToastLength.Long).show();
}

F#だと、

member this.DisplayError(id:int) = 
    Toast.MakeText(this, id, ToastLength.Long).Show()

やってることは同じなのに、言語の違いで微妙な違いがあるのが面白いw

こういうのを楽しめるのがプログラミングの楽しい所の一つだと思ってるの。

JavaからC#への移植は簡単だけど、JavaからF#への移植は意外と手間かかるってのが、この1メソッドの比較からでも判る。

でも、間にC#を挟んで移植すると、もうちょっと楽になりそうな気がするね。

posted @ 2014/08/14 11:50 by 片桐 継(Tugu Katagiri)

[AED]AEDオープンデータプラットフォームの情報を登録・更新したときにFacebookページに自動投稿するようにしました

AEDオープンデータプラットフォームの情報を登録・更新したときに自動投稿するFacebookページを作成しました。

情報を更新するときにFacebook認証を必須とし、AEDSearchページに自動投稿することでAED情報の更新が把握できます。

AEDSearch | Facebook


 

ご意見をお聞かせください(1)

現状は「いつ」「だれが」「何を」のみ記録してますが、「どのように」が必要かどうかなど皆さんのご意見をお聞かせください。

 

ご意見をお聞かせください(2)

SwarmでチェックインできるようにFoursquareのログインも必要な感じで実装予定なのですが、このあたりも「面倒だけで多重認証の方がいいよね」とか「いや、チェックインもFacebookの方がいいんじゃない?」とかのご意見も頂ければと思います。

 

posted @ 2014/08/14 9:10 by 初音 玲

Xamarin Studio がバージョンアップしてるよ

Xamarin studio が 5.2.1 にバージョンアップしてた。

2回目以降のデバッグ時に既存エミュレーターへアタッチできるように修正してくれたのが大きいw

地味に効いてたんだよなー、これ。

posted @ 2014/08/14 8:50 by 片桐 継(Tugu Katagiri)

2014/10/18 わんくま東京の予定

速報なので細かいセッション内容は決まっていません。

 

今回は Xamarin Day です。

C# で iOS、Android、Mac アプリを簡単に開発できる夢のプラットフォーム開発環境。

慣れ親しんだ VisualStudio や フル機能を持つ Xamarin Studio で開発できます。
まる1日 Xamarin のセッションをいち早くお届けできるのもわんくま東京ならではです。

 

・ 10:40 ~ 11:00 開場・受付開始

・ 11:00 ~ 11:10 わんくまについて

・ 11:10 ~ 12:00 「」 by エクセルソフト田淵さん

・ 12:00 ~ 13:00 おひるごはん

・ 13:00 ~ 13:30 ライトニングトーク

・ 募集中

・ 募集中

・ 13:40 ~ 14:30 「」 by 黒柳さん

・ 14:40 ~ 15:30 「」 by 初音さん

・ 15:40 ~ 16:30 「」 by えムナウ

・ 17:00 ~ 懇親会

posted @ 2014/08/13 23:51 by えムナウ

TEST

久々なのでTEST投稿です。

posted @ 2014/08/13 23:45 by えムナウ

【チラ裏】さて、今月もいっぱいしました^^

■マイクロソフトさん
https://technet.microsoft.com/ja-jp/library/security/ms14-aug

緊急:2件
重要:7件

■アドビさん
http://helpx.adobe.com/security.html
・APSB14-18 Adobe Flash Player
・APSB14-19 Adobe Reader and Acrobat 8

シス管さん、みなさん頑張りましょう^-^

posted @ 2014/08/13 9:14 by ちゅき

[AED]奈良県のAEDデータが続々あつまってます

image

大学生の皆さんが1点1点確認しながら送っていただいている奈良県のAED位置情報。

指導されている先生によれば、自分たちの住む地域の色々な特色が見えてくるとのこと。

確かにAED位置を確認していく作業をしていると、小学生のころに学校の周りを調べたころのような「あ、こんなところにこんなものが」的は発見がありますね。

posted @ 2014/08/12 22:07 by 初音 玲

[CodeZine]軽量な表形式コンポーネントFlexGridでタッチ対応業務アプリを構築する

http://codezine.jp/article/detail/7957

------(引用開始)

表形式コンポーネントだとSPREADが非常に中心的な存在としてありますが、それと共に人気があるのがFlexGridです。VB6時代に提供されたFlexGridは「SPREADほどの高機能はいらない代わりに少しでも軽いコンポーネントが欲しい」という要望に極めてマッチしたコンポーネントで、バージョンアップにより機能が増えてきましたが、現バージョンでも軽快な動作は失われておらず、特に表形式で参照したいようなときは最初に検討するコンポーネントであることに変わりはありません。

 また、Windowsフォーム、WPF、Windows Runtime(いわゆるモダンUI)の各々をサポートするエディションが提供されている特徴もあります。

------(引用終了)

結論、FlexGridは軽くて使いやすいコンポーネントでした。

posted @ 2014/08/12 19:03 by 初音 玲