<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>調べた事</title><link>http://blogs.wankuma.com/esten/category/1227.aspx</link><description>.NETとCLRとVisualStadio2005の関連で自分で調べた事</description><managingEditor>片桐　継（Tugu Katagiri）</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>片桐　継（Tugu Katagiri）</dc:creator><title>Intel(R) 6 Series/C200 Series Chipset Family USB Enhanced Host Controller - 1C26 - エラー 0x800f0219</title><link>http://blogs.wankuma.com/esten/archive/2016/06/19/536203.aspx</link><pubDate>Sun, 19 Jun 2016 14:10:00 GMT</pubDate><guid>http://blogs.wankuma.com/esten/archive/2016/06/19/536203.aspx</guid><wfw:comment>http://blogs.wankuma.com/esten/comments/536203.aspx</wfw:comment><comments>http://blogs.wankuma.com/esten/archive/2016/06/19/536203.aspx#Feedback</comments><slash:comments>25</slash:comments><wfw:commentRss>http://blogs.wankuma.com/esten/comments/commentRss/536203.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/esten/services/trackbacks/536203.aspx</trackback:ping><description>&lt;p&gt;マシンはASUSのU24E。&lt;/p&gt; &lt;p&gt;Windows10 にしてからUSBが不安定で、デバイスがこのエラーで動作してなかったんよねー。&lt;/p&gt; &lt;p&gt;んでもって、がんばって、対処してみた。&lt;/p&gt; &lt;p&gt;原因は、Intelさんとこから出てるドライバファイルがWindows10 さん的に「あやしくね？」「バージョンちがくね？」なものらしく、それで動かないんですわー、的簡単なものなので、対処としてはこのファイルをWindows10さんが「正しい」「動かしてええよん」と思うドライバファイルにすればよいだけ。&lt;/p&gt; &lt;p&gt;このサイトの&lt;/p&gt; &lt;p&gt;&lt;a title="https://downloadcenter.intel.com/download/19596/INF-Update-Utility-Primarily-for-Intel-6-5-4-3-900-Series-Chipsets-" href="https://downloadcenter.intel.com/download/19596/INF-Update-Utility-Primarily-for-Intel-6-5-4-3-900-Series-Chipsets-"&gt;https://downloadcenter.intel.com/download/19596/INF-Update-Utility-Primarily-for-Intel-6-5-4-3-900-Series-Chipsets-&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://esten.wankuma.com/blogs/IntelR-6-SeriesC200-Series-Chipset-Famil_C5D2/image.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://esten.wankuma.com/blogs/IntelR-6-SeriesC200-Series-Chipset-Famil_C5D2/image_thumb.png" width="367" height="346"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;青色ボタンの「infinst_autol.exe」を実行して、ファイル書き換えればＯＫ。&lt;/p&gt; &lt;p&gt;このページのこのボタンを押す、という行為に気付くのに時間がかかった＜を&lt;/p&gt; &lt;p&gt;実行後は再起動しておけば尚ＯＫ。&lt;/p&gt; &lt;p&gt;ドライバファイルはインテルさん証明書付なんで、Windows10さんはご機嫌に動かしてくれまする。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/esten/aggbug/536203.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>片桐　継（Tugu Katagiri）</dc:creator><title>片桐さんがUWPアプリを作ろうとしています。序</title><link>http://blogs.wankuma.com/esten/archive/2016/06/06/536013.aspx</link><pubDate>Mon, 06 Jun 2016 20:29:00 GMT</pubDate><guid>http://blogs.wankuma.com/esten/archive/2016/06/06/536013.aspx</guid><wfw:comment>http://blogs.wankuma.com/esten/comments/536013.aspx</wfw:comment><comments>http://blogs.wankuma.com/esten/archive/2016/06/06/536013.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/esten/comments/commentRss/536013.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/esten/services/trackbacks/536013.aspx</trackback:ping><description>&lt;p&gt;とりあえず、VisualStudio 2015 Update2 入れました。&lt;/p&gt; &lt;p&gt; VB.NETで「ユニバーサルアプリケーション」を新規作成して、出来立てほやほやプロジェクトをビルド。&lt;/p&gt; &lt;p&gt;そのまま素でエミュレートデバッグ実行してみた。&lt;/p&gt; &lt;p&gt;ぼーっと待つことしばらく（数分）、OSが上がってきて&lt;/p&gt; &lt;p&gt;&lt;a href="http://esten.wankuma.com/blogs/f9e0a2ece154_11E66/image.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://esten.wankuma.com/blogs/f9e0a2ece154_11E66/image_thumb.png" width="498" height="424"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;もうちょっと待ってたら&lt;/p&gt; &lt;p&gt;&lt;a href="http://esten.wankuma.com/blogs/f9e0a2ece154_11E66/image_3.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://esten.wankuma.com/blogs/f9e0a2ece154_11E66/image_thumb_3.png" width="500" height="411"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;真っ白画面キター！！&lt;/p&gt; &lt;p&gt;エミューレータデバッグ終わったら&lt;/p&gt; &lt;p&gt;&lt;a href="http://esten.wankuma.com/blogs/f9e0a2ece154_11E66/image_4.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://esten.wankuma.com/blogs/f9e0a2ece154_11E66/image_thumb_4.png" width="426" height="146"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;こんな感じ。ふむ。うちのPCだと&lt;strong&gt;デバッグだけで使用メモリ1.2G増しってとこなのね。&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;スペックそんなに高くないからなぁ。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;メモリが多いに越したことはないっぽい感じ。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/esten/aggbug/536013.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>片桐　継（Tugu Katagiri）</dc:creator><title>片桐さんがUWPアプリを作ろうとしています。／Zero</title><link>http://blogs.wankuma.com/esten/archive/2016/05/29/535955.aspx</link><pubDate>Sun, 29 May 2016 10:14:00 GMT</pubDate><guid>http://blogs.wankuma.com/esten/archive/2016/05/29/535955.aspx</guid><wfw:comment>http://blogs.wankuma.com/esten/comments/535955.aspx</wfw:comment><comments>http://blogs.wankuma.com/esten/archive/2016/05/29/535955.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/esten/comments/commentRss/535955.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/esten/services/trackbacks/535955.aspx</trackback:ping><description>&lt;p&gt;とりあえず、ここを読む&lt;/p&gt; &lt;h3&gt;Windows 10 アプリに関するハウツー ガイド：&lt;br&gt;&lt;a title="https://msdn.microsoft.com/ja-jp/library/windows/apps/mt244352.aspx" href="https://msdn.microsoft.com/ja-jp/library/windows/apps/mt244352.aspx"&gt;https://msdn.microsoft.com/ja-jp/library/windows/apps/mt244352.aspx&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;とにかく、色々が変わりすぎ。ここまでクラス化、ライブラリ化が進んでるのかと。&lt;/p&gt; &lt;p&gt;ゆとりっていいなぁ＜何&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/esten/aggbug/535955.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>片桐　継（Tugu Katagiri）</dc:creator><title>Android Studio で Junit を使いたいので、戦い続けて挫折して立ち返って立ち直った話</title><link>http://blogs.wankuma.com/esten/archive/2014/08/21/408431.aspx</link><pubDate>Thu, 21 Aug 2014 16:49:00 GMT</pubDate><guid>http://blogs.wankuma.com/esten/archive/2014/08/21/408431.aspx</guid><wfw:comment>http://blogs.wankuma.com/esten/comments/408431.aspx</wfw:comment><comments>http://blogs.wankuma.com/esten/archive/2014/08/21/408431.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/esten/comments/commentRss/408431.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/esten/services/trackbacks/408431.aspx</trackback:ping><description>&lt;p&gt;最初、EclipseでJunit 4.11+Robolectricを使ってたんだけど、AndroidStudioに移植した時に、全部グリーン状態のソースを移植したのでテストコードは省いてたｗ&lt;/p&gt; &lt;p&gt;なので、機能追加のついでに、テストコードも移植しようと思ったんだけど、意外な展開が。&lt;/p&gt; &lt;div class="insertcode"&gt;&lt;pre&gt;&lt;code&gt;!!! JUnit version 3.8 or later expected:

java.lang.RuntimeException: Stub!&lt;br&gt;&lt;/code&gt;&lt;code&gt;＜中略＞
Process finished with exit code -3&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;素直にRobolectricを依存ライブラリに追加して実行して、&lt;font color="#c0504d"&gt;&lt;strong&gt;なにこれ？？？&lt;/strong&gt;&lt;/font&gt;というわけで色々と調査。で、判ったことは&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Android StudioでRobolectric使うならプラグインいれましょう 
&lt;li&gt;クラスパスはJunit＞SDKの順番でライブラリ参照しましょう&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;あふー、gradleをいじる羽目になりましたですよorz　書き直すのメンドイなー。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://robolectric.blogspot.jp/" target="_blank"&gt;Robolectricスタッフのブログ&lt;/a&gt;や&lt;a href="https://groups.google.com/forum/#!forum/robolectric" target="_blank"&gt;GoogleGroup&lt;/a&gt;を見る限りだと、この辺りの問題はできたら解決したいなー的レベルらしくて、しばらくは手動でごにょごにょの世界のようです。&lt;font color="#c0504d"&gt;&lt;strong&gt;まぁAndroid Studio自身がbetaの立場だもんなー、正式版になってからなんだろうなぁ（遠い目）&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;で、やってみたこと。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;app/build.gradleにrobolectricの依存ライブラリ追加 
&lt;li&gt;ルートのbuild.gradleにrobolectricのプラグインのための依存ライブラリ追加 
&lt;li&gt;app/buid.gradleにrobolectircのプラグイン追加 
&lt;li&gt;ここで、いったんgladleをSync 
&lt;li&gt;ターミナルから、プロジェクトルートでgladle robolectric を実行し、必要なクラスがコンパイルされていることを確認 
&lt;li&gt;テストコードを書いて、ライブラリが追加出来ていることを確認 
&lt;li&gt;テストコードから生成されたクラスの出力先をクラスパスに追加 
&lt;li&gt;プロジェクトルートにある、.imlファイルの中にあるクラスファイルの読み込み順番を変更 
&lt;li&gt;gladlew androidTest を実行&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;さらっと書いたけど、&lt;font color="#9b00d3"&gt;２から５の間はgradleソースの読み込みだったので、簡単じゃなかったよorz &lt;/font&gt;　gradleソースはpom.xmlよりも何をやっているのかソースで追える分、楽と言えば楽だし、親切と言えば親切なんだけどね。やっててよかったgroovy。&lt;/p&gt;
&lt;p&gt;そして、何とかたどり着く9のフェーズ。&lt;strong&gt;&lt;font color="#ff0000"&gt;ここで恐怖のハマりポイント、自クラスをクラスパスにうまく追加できない、をやらかしてしまった。&lt;/font&gt;&lt;/strong&gt;いや、世界には、この方法で解決している人もいるので&lt;font color="#c0504d"&gt;&lt;strong&gt;（成功例がMacOSXだったりするのがとてもとても気になるけれどもｗ）&lt;/strong&gt;&lt;/font&gt;きっと、何かが悪いんだろう。&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;収穫はgradleソースが読めるようになった、ってことで、挫折orz&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;これに丸々二日ハマって、なんか疲れたんで、基本に立ち返ってみたんだ。&lt;/p&gt;
&lt;h1&gt;Android SDK　にテストフレームワークがあるのかな？&lt;/h1&gt;
&lt;p&gt;&lt;font color="#9b00d3"&gt;&lt;strong&gt;結論から言えば、ある、Junitがある。ただし、バージョンは3.8。&lt;/strong&gt;&lt;/font&gt;便利なassertもアノテーションも全滅のオールドタイプさん。まぁ悪いバージョンじゃないんだ、基本機能はガッチリ揃ってるし、実績も高いしさ。まさかとは思うけど、&lt;a href="http://mvnrepository.com/" target="_blank"&gt;Mavenリポジトリサイト&lt;/a&gt;で、Junit3.8のダウンロード数が廃れないのは、こいつのせいだったりしてねｗ　&lt;/p&gt;&lt;a href="http://developer.android.com/tools/testing/testing_android.html"&gt;Testing Fundamentals | Android Developers:&lt;br&gt;http://developer.android.com/tools/testing/testing_android.html&lt;/a&gt;&lt;br&gt;
&lt;p&gt;基本に立ち返って、もう一度、この記事を目皿にして読み直し、抜粋したポイントは&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ディレクトリを作成する 
&lt;li&gt;テストしたいAndroidオブジェクトに対応したTestCaseを継承してテストコードを書く 
&lt;li&gt;Android Test を実行する&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;これだけ。じゃ、やってみようか、もちろん、最初はレッドのテストでね。&lt;/p&gt;
&lt;p&gt;まず、ディレクトリ作成&lt;/p&gt;
&lt;p&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://esten.dip.jp/blogimg/Android-Studio--Junit-_4EA0/image.png" width="216" height="127"&gt;&lt;/p&gt;
&lt;p&gt;デフォルト配色で、androidTest/javaフォルダが緑色になればOK。これは、テストクラスのあるパッケージディレクトリですよ、を指している色で、これが指定されていないと、後の作業がメンドクサイ、フォルダ見難いｗ&lt;/p&gt;
&lt;p&gt;このフォルダの指定は、モジュールの.imlファイルに記述されているので、検索してフォルダ表記が無かったら、それを記述追加してリビルドすれば環境ができているはず。できるだけ、いじらないでいたいなら、テストクラスとして指定されている別のフォルダがすでにあれば、それを新規作成すると後も綺麗に続けられるので楽。テストクラスのパッケージフォルダ記述が無いなら、仕方ないから追加ね。&lt;/p&gt;
&lt;p&gt;そして、テストクラスを新規作成。これはいつもの新規作成の手順でOK。&lt;/p&gt;
&lt;div class="insertcode"&gt;&lt;pre&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; ApplicationTest &lt;span style="color: #0000ff"&gt;extends&lt;/span&gt; ApplicationTestCase&amp;lt;Application&amp;gt; {
    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; ApplicationTest() {
        &lt;span style="color: #0000ff"&gt;super&lt;/span&gt;(Application.&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;);
    }

    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; testAssertion(){
        assertEquals(1,3);
    }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;絶対レッドのテストｗ＜手抜きすぎｗ&lt;/p&gt;
&lt;p&gt;今回はアクティビティやコンテンツのテストではないので、ApplicationTestCaseを継承したけど、テストしたいものによって継承するテストクラスが異なるので、細かい事は前記述のサイトのリンクから参照で。(そのうち、まとめるとは思うけどｗ)&lt;/p&gt;
&lt;p&gt;クラスが書けたら、次は実行設定。私は、モジュール内のｘｘｘｘTestクラスのtestXXXXメソッドを総なめにした。細かくやりたい人はパッケージ事とかに分けると良いと思う。&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://esten.dip.jp/blogimg/Android-Studio--Junit-_4EA0/image_3.png" width="373" height="355"&gt;&lt;/p&gt;
&lt;p&gt;Android SDKのJunitは実行環境を必要とするのでエミュレーターは起動しておき、立ち上がりを確認したら、テストを実行してエミュレーターに環境割り当てをすると、テストモジュールがエミュレーターにアップロードされて……&lt;/p&gt;
&lt;p&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://esten.dip.jp/blogimg/Android-Studio--Junit-_4EA0/image_4.png" width="675" height="159"&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#ff0000" size="5"&gt;&lt;strong&gt;よっしあぁ！レッドすねぇぇくかもぉぉん♪&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;というわけで、立ち返ってからレッドになるまで、２時間だったというオチｗ&lt;/p&gt;
&lt;p&gt;&lt;font color="#c0504d"&gt;&lt;strong&gt;基本って大事だね！　痛感したわ。&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/esten/aggbug/408431.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>片桐　継（Tugu Katagiri）</dc:creator><title>F#で簡単な配列を遊んでみる。</title><link>http://blogs.wankuma.com/esten/archive/2014/08/12/387213.aspx</link><pubDate>Tue, 12 Aug 2014 12:23:00 GMT</pubDate><guid>http://blogs.wankuma.com/esten/archive/2014/08/12/387213.aspx</guid><wfw:comment>http://blogs.wankuma.com/esten/comments/387213.aspx</wfw:comment><comments>http://blogs.wankuma.com/esten/archive/2014/08/12/387213.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/esten/comments/commentRss/387213.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/esten/services/trackbacks/387213.aspx</trackback:ping><description>&lt;p&gt;とりあえず、型関連を遊んだら次は配列、というのが個人的にはお約束。&lt;/p&gt; &lt;p&gt;JavaやGroovyのListオブジェクト、Collectionオブジェクトと似たような感触でいじれるようなので、経験済だと困らないｗ&lt;/p&gt; &lt;div class="insertcode"&gt;&lt;pre&gt;[&amp;lt;EntryPoint&amp;gt;]
let main argv = 
    &lt;span style="color: #008000"&gt;// 1 - 100 step 1&lt;/span&gt;
    let baseList1 = [1 .. 100]
    &lt;span style="color: #008000"&gt;// 1 - 100 step 10&lt;/span&gt;
    let baseList2 = [10 .. 10 .. 100]

    printfn "&lt;span style="color: #8b0000"&gt;testing List = %A&lt;/span&gt;" baseList1
    printfn "&lt;span style="color: #8b0000"&gt;--&lt;/span&gt;"
    printfn "&lt;span style="color: #8b0000"&gt;List.Head = %d&lt;/span&gt;" baseList1.Head
    printfn "&lt;span style="color: #8b0000"&gt;List.reverse = %A&lt;/span&gt;" (List.rev baseList1)

    printfn "&lt;span style="color: #8b0000"&gt;partition mod 10&lt;/span&gt;"
    let filter x = ((x % 10) = 0) 
    let ansList1, ansList2 = List.partition filter baseList1

    printfn "&lt;span style="color: #8b0000"&gt;answer-1 = %A&lt;/span&gt;" ansList1
    printfn "&lt;span style="color: #8b0000"&gt;answer-1.length = %d&lt;/span&gt;" ansList1.Length

    printfn "&lt;span style="color: #8b0000"&gt;answer-2.length = %d&lt;/span&gt;" ansList2.Length

    printfn "&lt;span style="color: #8b0000"&gt;compare List = %A&lt;/span&gt;" baseList2
    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (baseList2.Head = ansList1.Head) then printfn "&lt;span style="color: #8b0000"&gt;Head is same!&lt;/span&gt;"
    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (baseList2.Tail = ansList1.Tail) then printfn "&lt;span style="color: #8b0000"&gt;Tail is same!&lt;/span&gt;"

    0 &lt;span style="color: #008000"&gt;// return an integer exit code&lt;/span&gt;


&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;1刻みとか10刻みの整数リストが作れるとか面白いね。そしてpartition関数((a ?&amp;gt; bool))?&amp;gt; list ?&amp;gt; (list * list))が気に入ったｗ　フィルター条件を関数に書いて、リストに通してあげるだけで、条件合致のリストを作り出せるとか、楽しすぎる。&lt;/p&gt;
&lt;p&gt;実行結果を見てみると、&lt;/p&gt;
&lt;p&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://esten.dip.jp/blogimg/F_BF02/image.png" width="412" height="335"&gt;&lt;/p&gt;
&lt;p&gt;こんな感じ。リストオブジェクトのComparate も書けるらしいので、色々と面白いことが出来そうだね。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/esten/aggbug/387213.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>片桐　継（Tugu Katagiri）</dc:creator><title>Androidアプリケーションでジェスチャーを実装するためのお作法</title><link>http://blogs.wankuma.com/esten/archive/2014/07/31/353803.aspx</link><pubDate>Thu, 31 Jul 2014 11:20:00 GMT</pubDate><guid>http://blogs.wankuma.com/esten/archive/2014/07/31/353803.aspx</guid><wfw:comment>http://blogs.wankuma.com/esten/comments/353803.aspx</wfw:comment><comments>http://blogs.wankuma.com/esten/archive/2014/07/31/353803.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/esten/comments/commentRss/353803.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/esten/services/trackbacks/353803.aspx</trackback:ping><description>&lt;p&gt;というのを知ったｗ&lt;/p&gt; &lt;p&gt;&lt;a href="http://making-interactive.htmlhttp://developer.android.com/training/custom-views/making-interactive.html"&gt;making-interactive&lt;br&gt;http://developer.android.com/training/custom-views/making-interactive.html&lt;/a&gt;&lt;br&gt;&lt;/p&gt; &lt;p&gt;ここに書いてあるんだけれど、&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Whether or not you use &lt;code&gt;&lt;a href="http://developer.android.com/reference/android/view/GestureDetector.SimpleOnGestureListener.html"&gt;GestureDetector.SimpleOnGestureListener&lt;/a&gt;&lt;/code&gt;, you must always implement an &lt;code&gt;&lt;a href="http://developer.android.com/reference/android/view/GestureDetector.OnGestureListener.html#onDown%28android.view.MotionEvent%29"&gt;onDown()&lt;/a&gt;&lt;/code&gt; method that returns &lt;code&gt;true&lt;/code&gt;. &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;片桐的超意訳によると&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;GestureDetcector.SimpleOnGestureListenerを使う時には、必ずonDown()メソッドでtrue返してねん&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;ってことらしい。&lt;font color="#ff0000"&gt;&lt;strong&gt;画面でジェスチャーを受け取る時、最初に発生するイベントがonDown()なのだそうで、ここからtrueが返ることで後続のイベントにeventオブジェクトを引き渡しつつ発火できるって仕組み。&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;イベント連鎖でジェスチャーを判断してるとか、面白いねー。&lt;/p&gt; &lt;h2&gt;閑話休題&lt;/h2&gt; &lt;p&gt;2014年の横浜恐竜博で恐竜ロボットの制作過程や実験なんかが展示されていたのだけれど、その中に、前に人が立つと、その動きに反応して動くドロマエオサウルスの展示があったの。&lt;/p&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;ノートPC＋キネクト→ロボットコントローラで構成されていたよ。&lt;/font&gt;フレームを認識して、反応させて、追いかけようとしたり、鳴いてみたり。将来、CGでもない、着ぐるみでもない恐竜コンテンツができそうな予感。個人的には、着ぐるみのモフモフ感と柔らかさは捨てがたいけれどもねｗ&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/esten/aggbug/353803.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>片桐　継（Tugu Katagiri）</dc:creator><title>Androidアプリケーションの設定画面設計と実装についてまとめてみた。</title><link>http://blogs.wankuma.com/esten/archive/2014/07/30/353339.aspx</link><pubDate>Wed, 30 Jul 2014 12:39:00 GMT</pubDate><guid>http://blogs.wankuma.com/esten/archive/2014/07/30/353339.aspx</guid><wfw:comment>http://blogs.wankuma.com/esten/comments/353339.aspx</wfw:comment><comments>http://blogs.wankuma.com/esten/archive/2014/07/30/353339.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/esten/comments/commentRss/353339.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/esten/services/trackbacks/353339.aspx</trackback:ping><description>&lt;h2&gt;そのまえに。&lt;/h2&gt; &lt;p&gt;フラグメント(Fragment)という用語が意外と大事って知った。&lt;/p&gt; &lt;p&gt;これは、画面の縦横制御や別個に動作する画面オブジェクトの制御にかかわるライブラリ群らしく、AndroidのバージョンHoneycombから追加されている機能。つまり、UIをプログラミングするにあたって、避けて通れない存在……と考えて良いみたい。&lt;/p&gt; &lt;p&gt;モデルやコントロール部分を作ってる間は考えなくてよかったんだけど、いざ、&lt;font color="#ff0000"&gt;画面の部分を作るとなると、この辺りきちんと考えて実装しないと、例外でストーンと落ちちゃうアプリができちゃう&lt;/font&gt;。&lt;font color="#a5a5a5"&gt;うむ、メンドクサイな＜を&lt;/font&gt;&lt;/p&gt; &lt;p&gt;一画面一機能で、メニューやダイアログはできれば使わないでいくと、Fragmentを実装しなくちゃ！的に追いつめられる感じではなさそうだけど。その一方で、&lt;strong&gt;&lt;font color="#0000ff"&gt;API使ってできるだけコードレスで楽ちんしたければ、Fragmentを意識して実装しつつ、APIコールもお作法に則っていきましょう、という事が基本&lt;/font&gt;&lt;/strong&gt;だってことを勉強した。&lt;/p&gt; &lt;p&gt;さて、設定画面作り、いってみよー。&lt;/p&gt; &lt;h2&gt;設定画面設計と実装の流れ。&lt;/h2&gt; &lt;p&gt;作業手順は次の通り&lt;/p&gt; &lt;ul&gt; &lt;li&gt;設定項目を洗い出す。  &lt;li&gt;項目のXMLファイルを実装  &lt;li&gt;項目を入力するためのXMLファイルを実装  &lt;li&gt;設定画面アクティビティの実装&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;まぁ、いつもの通り、っちゃぁそのままだ。&lt;/p&gt; &lt;h3&gt;設定項目を洗い出す&lt;/h3&gt; &lt;p&gt;設定項目洗い出しは設計のお話だけど、ここでのポイントは、&lt;font color="#0000ff"&gt;２階層のアウトラインでまとめておくこと&lt;/font&gt;。&lt;/p&gt; &lt;p&gt;たとえば、&lt;/p&gt; &lt;div class="insertcode"&gt; &lt;ul&gt; &lt;li&gt;一般  &lt;ul&gt; &lt;li&gt;画面の色&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;アカウント  &lt;ul&gt; &lt;li&gt;ユーザーID  &lt;li&gt;パスワード&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;ネットワーク  &lt;ul&gt; &lt;li&gt;プロキシの登録&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt; &lt;p&gt;とかいう感じで。小タイトル＆項目タイトル、中身の説明なんかあれば良い感じ。こうすることでそのままXMLにまとめて、APIからすんなり呼び出せるように実装できるよ。&lt;/p&gt; &lt;h3&gt;項目のXMLファイルを実装&lt;/h3&gt; &lt;p&gt;項目のタイトルや表示する説明書きが決まったら、それらを /res/values/pref_strings.xml にresources/stringとして実装。すでにあるstrings.xmlファイルでも良いんだけど、ファイルを分けておくと中身を管理しやすいと思う。といっても、好き好きだけど。&lt;/p&gt; &lt;p&gt;リストにしたいものがある場合には、ここで、選択肢の候補をresources/arrayで実装しておいてね。&lt;/p&gt; &lt;h3&gt;項目を入力するためのXMLファイルを実装&lt;/h3&gt; &lt;p&gt;実際に、どんな入力方式で項目を設定するのか、それを/res/xml/pref_xxxxx.xml　に実装。ここは肝。&lt;/p&gt; &lt;p&gt;入力形式には次の物があって、&lt;/p&gt; &lt;ul&gt; &lt;li&gt;テキスト  &lt;li&gt;リスト  &lt;li&gt;チェックボックス&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;が準備されてる。テキストは入力するときにダイアログが出るし、リストはあらかじめ作っておいた候補を選択、チェックボックスはON/OFFの形式ね。どの設定項目をどの方法で入力できるようにするかを決めて、実際にXMLに実装していくの。&lt;/p&gt;&lt;a href="http://developer.android.com/guide/topics/ui/settings.html"&gt;settings&lt;br&gt;http://developer.android.com/guide/topics/ui/settings.html&lt;/a&gt;&lt;br&gt; &lt;p&gt;サンプルはここに。&lt;/p&gt; &lt;h3&gt;設定画面アクティビティの実装&lt;/h3&gt; &lt;p&gt;ここまで準備できたら、次はアクティビティの実装。ここで、先述のフラグメントが登場。&lt;/p&gt; &lt;div class="insertcode"&gt; &lt;blockquote&gt; &lt;p&gt;If you're developing for Android 3.0 (API level 11) and higher, you should use a &lt;a href="http://developer.android.com/reference/android/preference/PreferenceFragment.html"&gt;PreferenceFragment&lt;/a&gt; to display your list of &lt;a href="http://developer.android.com/reference/android/preference/Preference.html"&gt;Preference&lt;/a&gt; objects. You can add a &lt;a href="http://developer.android.com/reference/android/preference/PreferenceFragment.html"&gt;PreferenceFragment&lt;/a&gt; to any activity?you don't need to use &lt;a href="http://developer.android.com/reference/android/preference/PreferenceActivity.html"&gt;PreferenceActivity&lt;/a&gt;.  &lt;p&gt;&lt;a href="http://developer.android.com/guide/components/fragments.html"&gt;Fragments&lt;/a&gt; provide a more flexible architecture for your application, compared to using activities alone, no matter what kind of activity you're building. As such, we suggest you use &lt;a href="http://developer.android.com/reference/android/preference/PreferenceFragment.html"&gt;PreferenceFragment&lt;/a&gt; to control the display of your settings instead of &lt;a href="http://developer.android.com/reference/android/preference/PreferenceActivity.html"&gt;PreferenceActivity&lt;/a&gt; when possible.  &lt;p&gt;Your implementation of &lt;a href="http://developer.android.com/reference/android/preference/PreferenceFragment.html"&gt;PreferenceFragment&lt;/a&gt; can be as simple as defining the &lt;a href="http://developer.android.com/reference/android/preference/PreferenceFragment.html#onCreate%28android.os.Bundle%29"&gt;onCreate()&lt;/a&gt; method to load a preferences file with &lt;a href="http://developer.android.com/reference/android/preference/PreferenceFragment.html#addPreferencesFromResource%28int%29"&gt;addPreferencesFromResource()&lt;/a&gt;. &lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;p&gt;って書かれててね。片桐的超意訳すると、 &lt;/p&gt; &lt;div class="insertcode"&gt; &lt;blockquote&gt; &lt;p&gt;APIのレベル11以降で作るなら、XMLで作った設定オブジェクト表示にはPreferenceFragment使わないとダメー、ダメダメ。PreferenceActivityは使わなくて良いからさ、使いたいActivityにPreferenceFragmentを追加してやってよ。  &lt;p&gt;どんなアクティビティを作った時でも、フラグメントはアプリをよりフレキシブルにしてくれる便利もんだよ。だから、設定画面にはPreferenceActivity使うより、こっち使う事をオススメ。  &lt;p&gt;PreferenceFragmentのonCreateでaddPreferencesFromResouceメソッド使うだけで簡単にできちゃうんだ。そのメソッドがXMLファイルから設定項目読みだしてくれるよ。&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;p&gt;的に、ご本家からは推奨されてる。  &lt;p&gt;実際に、そういう事なら、とかるーっく実装。&lt;/p&gt; &lt;div class="insertcode"&gt;&lt;pre&gt;&lt;b&gt;public class &lt;/b&gt;SettingsActivity &lt;b&gt;extends &lt;/b&gt;PreferenceActivity {

    @Override
    &lt;b&gt;protected void &lt;/b&gt;onCreate(Bundle savedInstanceState) {
        &lt;b&gt;super&lt;/b&gt;.onCreate(savedInstanceState);

        &lt;i&gt;// Display the fragment as the main content.
&lt;/i&gt;&lt;i&gt;        &lt;/i&gt;getFragmentManager().beginTransaction().replace(android.R.id.content,
                &lt;b&gt;new &lt;/b&gt;GeneralPreferenceFragment()).commit();
    }

    &lt;b&gt;public static class &lt;/b&gt;GeneralPreferenceFragment &lt;b&gt;extends &lt;/b&gt;PreferenceFragment {
        @Override
        &lt;b&gt;public void &lt;/b&gt;onCreate(Bundle savedInstanceState) {
            &lt;b&gt;super&lt;/b&gt;.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.pref_general);

        }
    }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Activityのクラスに、サブクラスとしてFragmentを実装し、それをonCreateで読みだすだけ。&lt;/strong&gt;うん、これだけだったわ。 &lt;font color="#9b00d3"&gt;&lt;strong&gt;テンプレに登録しておいても良いくらいだｗ&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/esten/aggbug/353339.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>片桐　継（Tugu Katagiri）</dc:creator><title>Javaを使っている時に、狭範囲内でランダムな整数をできるだけ平等に取りたい。</title><link>http://blogs.wankuma.com/esten/archive/2014/07/29/353192.aspx</link><pubDate>Tue, 29 Jul 2014 22:03:00 GMT</pubDate><guid>http://blogs.wankuma.com/esten/archive/2014/07/29/353192.aspx</guid><wfw:comment>http://blogs.wankuma.com/esten/comments/353192.aspx</wfw:comment><comments>http://blogs.wankuma.com/esten/archive/2014/07/29/353192.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/esten/comments/commentRss/353192.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/esten/services/trackbacks/353192.aspx</trackback:ping><description>&lt;p&gt;ランダムな数字を取り出すのには、Randomクラスを使う。&lt;/p&gt; &lt;p&gt;&lt;a href="http://docs.oracle.com/javase/6/docs/api/java/util/Random.html"&gt;Random (Java Platform SE 6)&lt;br&gt;http://docs.oracle.com/javase/6/docs/api/java/util/Random.html&lt;/a&gt;&lt;br&gt;&lt;/p&gt; &lt;p&gt;たとえば、サイコロのアプリケーションを考えた時、１～６の整数の間でランダムな数字を取り出したい、ってことがあると思う。&lt;/p&gt; &lt;p&gt;ふと思ったのだけれど、その時にRandomクラスをどう使えば、できるだけ結果が平等になるんだろうか。&lt;/p&gt; &lt;p&gt;500回振ったとして、アプリケーションの作り方は次の考え方があると思う。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;一回だけNewして、ランダム値を500回取る。  &lt;li&gt;500回Newして、ランダム値を取る。&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;インスタンスの生成と破棄を考えたら、まぁ前者で作るんだけど、それでいいのかしらん？&lt;/p&gt; &lt;p&gt;と考え込んでしまったので、サンプルアプリを書いてみた。&lt;/p&gt; &lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="rem"&gt;/**&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="rem"&gt; * サイコロサンプルアプリ&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="rem"&gt; * @author esten&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="rem"&gt; *&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="rem"&gt; */&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; RandomTests {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="rem"&gt;// ６面ダイスを count 回振ってみる&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; dice = 6;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; count = 500;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;span class="rem"&gt;/**&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&lt;span class="rem"&gt;     * 結果を画面に表示する&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&lt;span class="rem"&gt;     * @param rolled&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&lt;span class="rem"&gt;     */&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; print(&lt;span class="kwrd"&gt;int&lt;/span&gt;[] rolled){&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        final String formatString = &lt;span class="str"&gt;"dice %d = (%4d) %s \n"&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        DecimalFormat df = &lt;span class="kwrd"&gt;new&lt;/span&gt; DecimalFormat(&lt;span class="str"&gt;"#0.00%"&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0 ; i &amp;lt; dice ; i++){&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            System.&lt;span class="kwrd"&gt;out&lt;/span&gt;.printf(formatString, i, rolled[i], df.format((&lt;span class="kwrd"&gt;double&lt;/span&gt;) rolled[i] / count));&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;    &lt;span class="rem"&gt;/**&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;&lt;span class="rem"&gt;     * @param args&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;&lt;span class="rem"&gt;     */&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; main(String[] args) {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;        &lt;span class="kwrd"&gt;int&lt;/span&gt;[] rolled = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[dice];&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;        &lt;span class="rem"&gt;// ランダム一回パターン&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;        Random rnd = &lt;span class="kwrd"&gt;new&lt;/span&gt; Random();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;        &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0 ; i &amp;lt; count ; i++){&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;            rolled[rnd.nextInt(dice)] += 1;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;        System.&lt;span class="kwrd"&gt;out&lt;/span&gt;.println(&lt;span class="str"&gt;"One New"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;        print(rolled);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;        System.&lt;span class="kwrd"&gt;out&lt;/span&gt;.println(&lt;span class="str"&gt;"---"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        &lt;span class="rem"&gt;// ランダムnewパターン&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;        rolled = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[dice];&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;        &lt;span class="kwrd"&gt;for&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt; i = 0 ; i &amp;lt; count ; i++){&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;            rnd = &lt;span class="kwrd"&gt;new&lt;/span&gt; Random();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;            rolled[rnd.nextInt(dice)] += 1;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;        System.&lt;span class="kwrd"&gt;out&lt;/span&gt;.println(&lt;span class="str"&gt;"New in loop"&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;        print(rolled);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;        System.&lt;span class="kwrd"&gt;out&lt;/span&gt;.println(&lt;span class="str"&gt;"---"&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;で、実行してみた結果。まぁ、何回かやってみるわけだけど。&lt;/p&gt;
&lt;div class="insertcode"&gt;&lt;pre&gt;One New
dice 0 = (  86) 17.20% 
dice 1 = (  86) 17.20% 
dice 2 = (  84) 16.80% 
dice 3 = (  83) 16.60% 
dice 4 = (  84) 16.80% 
dice 5 = (  77) 15.40% 
---
New &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; loop
dice 0 = (  77) 15.40% 
dice 1 = (  70) 14.00% 
dice 2 = (  91) 18.20% 
dice 3 = (  93) 18.60% 
dice 4 = (  88) 17.60% 
dice 5 = (  81) 16.20% 
---
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;うーん、差は大きなものではない感じ。どっちでもいいのかな？　サンプル回数を増やしてみよう。count = 50000で＾＾；&lt;/p&gt;
&lt;div class="insertcode"&gt;&lt;pre&gt;One New
dice 0 = (8380) 16.76% 
dice 1 = (8444) 16.89% 
dice 2 = (8222) 16.44% 
dice 3 = (8287) 16.57% 
dice 4 = (8282) 16.56% 
dice 5 = (8385) 16.77% 
---
New &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; loop
dice 0 = (8304) 16.61% 
dice 1 = (8309) 16.62% 
dice 2 = (8402) 16.80% 
dice 3 = (8391) 16.78% 
dice 4 = (8259) 16.52% 
dice 5 = (8335) 16.67% 
---
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;あんまり差が出ない。でも、処理時間が後者だと目に見えて遅いのが判った。ってことは、前者の方法で良さげ。納得して使おう。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/esten/aggbug/353192.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>片桐　継（Tugu Katagiri）</dc:creator><title>Androidアプリケーション開発にORMLiteを使う。</title><link>http://blogs.wankuma.com/esten/archive/2014/07/08/338936.aspx</link><pubDate>Tue, 08 Jul 2014 11:23:00 GMT</pubDate><guid>http://blogs.wankuma.com/esten/archive/2014/07/08/338936.aspx</guid><wfw:comment>http://blogs.wankuma.com/esten/comments/338936.aspx</wfw:comment><comments>http://blogs.wankuma.com/esten/archive/2014/07/08/338936.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/esten/comments/commentRss/338936.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/esten/services/trackbacks/338936.aspx</trackback:ping><description>&lt;p&gt;というわけで、Androidアプリでデータベース機能を気軽に使うために？　ORMLiteを使ってみるｗ&lt;/p&gt;&lt;a href="http://ormlite.com/"&gt;OrmLite - Lightweight Object Relational Mapping (ORM) Java Package&lt;br&gt;http://ormlite.com/&lt;/a&gt;&lt;br&gt; &lt;p&gt;使い方は次のとおりで良いみたい。&lt;/p&gt; &lt;ol&gt; &lt;li&gt;プロジェクトへライブラリ参照を組込み  &lt;li&gt;マッピングするテーブルクラスを作成  &lt;li&gt;リソースにConfigファイルを設定  &lt;li&gt;DatabaseOpenHelperクラス作成  &lt;li&gt;ORMLiteが提供するクラスを継承して、ServiceやActivityの処理クラスを作成&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;大まかにはこんな感じ。まぁ細かい事はまだまだこれからお勉強なので、今は、ほんの触りだけ。&lt;/p&gt; &lt;h2&gt;プロジェクトへライブラリを組込み&lt;/h2&gt; &lt;p&gt;Maven使っていれば簡単。&lt;/p&gt; &lt;p&gt;&lt;a href="http://mvnrepository.com/artifact/com.j256.ormlite/ormlite-android/4.48"&gt;Maven Repository: com.j256.ormlite ≫ ormlite-android ≫ 4.48&lt;br&gt;http://mvnrepository.com/artifact/com.j256.ormlite/ormlite-android/4.48&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt; &lt;p&gt;ここにリポジトリ定義があるので、pom.xmlへコピペして保存。その後でプロジェクト更新すれば組込み完了。&lt;/p&gt; &lt;p&gt;&lt;font color="#9bbb59"&gt;自力の人は、jarファイルをダウンロードして、各自、プロジェクトから参照。依存関係は都度、解決してやってくださいまし。&lt;/font&gt;&lt;/p&gt; &lt;h2&gt;マッピングするテーブルクラスを作成&lt;/h2&gt; &lt;p&gt;いつものORMマッピングクラスと一緒ｗ　使うアノテーションについては、ここにリファレンスが。&lt;/p&gt; &lt;p&gt;&lt;a href="http://ormlite.com/javadoc/ormlite-core/doc-files/ormlite_2.html#Class-Setup"&gt;ORMLite Documentation: 2. How to Use&lt;br&gt;http://ormlite.com/javadoc/ormlite-core/doc-files/ormlite_2.html#Class-Setup&lt;/a&gt;&lt;br&gt;&lt;/p&gt; &lt;p&gt;シンプルな方法は、@DatabaseTableアノテーションでテーブル名を指定して、各マッピングフィールドに@DatabaseFieldアノテーションを追加していくこと。&lt;font color="#9b00d3"&gt;ID列の存在はORMするときにはお約束。作っておくと後々楽に対応できるので、持たせる方が吉。&lt;/font&gt;&lt;/p&gt; &lt;h2&gt;リソースにConfigファイル設定&lt;/h2&gt; &lt;p&gt;ORMLiteのConfigファイルはテキスト形式なんだけど、雛型を作るためのクラスが提供されてるの。&lt;/p&gt; &lt;p&gt;OrmLiteConfigUtil っていうんだけど、これをつかってConfigファイルをリソースフォルダに生成するとミスが無く簡単。&lt;/p&gt; &lt;div class="insertcode"&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color: #008000"&gt;/**
** /res/raw/ormlite_config.txt Gen.
** !! /res/raw directory is exists before running !!
**/&lt;/span&gt;
&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; DatabaseConfigUtil &lt;span style="color: #0000ff"&gt;extends&lt;/span&gt; OrmLiteConfigUtil {
  &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;final&lt;/span&gt; Class&amp;lt;?&amp;gt;[] classes = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Class[] {
    &lt;span style="color: #008000"&gt;// Add your ORM-Mapping classes (ex.SimpleData.class)&lt;/span&gt;
    SimpleData.&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;,
  };
  &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; main(String[] args) &lt;span style="color: #0000ff"&gt;throws&lt;/span&gt; Exception {
    writeConfigFile("&lt;span style="color: #8b0000"&gt;ormlite_config.txt&lt;/span&gt;", classes);
  }
}&lt;/pre&gt;&lt;/blockquote&gt;&lt;/div&gt;
&lt;p&gt;さくっとクラスを作成して、Javaアプリケーション起動すると作ってくれる。&lt;/p&gt;
&lt;p&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://esten.dip.jp/blogimg/AndroidORMlite_5BFC/image.png" width="594" height="85"&gt;&lt;/p&gt;
&lt;p&gt;そして、作成したテキストファイルに対してアクセスできるように、次のクラスにもgenフォルダ配下のRクラスにエントリーが出来てる。&lt;/p&gt;
&lt;p&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://esten.dip.jp/blogimg/AndroidORMlite_5BFC/image_3.png" width="203" height="263"&gt;&lt;/p&gt;
&lt;p&gt;これでConfigファイルの設定が完了。&lt;/p&gt;
&lt;h2&gt;DataBaseHelperクラスの作成&lt;/h2&gt;
&lt;p&gt;データベースへの接続とか、初回のテーブルオブジェクト生成とか、コードにするとメンドクサそうなデータベース関連の処理をまとめてやってくれるお助けクラスがAndroidアプリケーションには準備してある。それが SQLiteOpenHelperというクラス。このクラスをラップしたORMLiteSqlliteOpenHelperクラスっていうのがORMLiteから提供されているので、これを使うとデータベース周りのことをORMLiteにお任せできる仕組みになってるんだね。&lt;/p&gt;
&lt;p&gt;ここで、ORMLiteを使う最大のメリット？　といえると思うのだけれど、色々と毎回作るのが面倒くさいDaoクラス、DAOパターンを使うとなると必ずついて回るこのクラスをここで定義しておくと、わざわざクラスを定義する必要が無くなる！。&lt;font color="#ff0000"&gt;&lt;font color="#000000"&gt;実はORMLiteはDAOクラスのひな型を中で持っていて、データベーステーブルクラスと紐づけさえしておけば、そのクラスのDAOとして機能するあるの。&lt;/font&gt;&lt;font color="#000000"&gt;つまり、&lt;/font&gt;FindAllとIDを条件とするSELECT、INSERT、UPDATE、DELETEの処理だけなら、わざわざ自分で作らなくても、ORMLiteのDAOクラスを使うことで書く手間もテストの手間も省ける寸法。&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#9b00d3"&gt;たしかにねー。毎回、FindAllとFindByIdとsaveとupdateとdeleteのために書いて、テストして、じゃねぇ（遠い目&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;ソースは長いので、サンプルのURLで割愛しとくｗ&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/j256/ormlite-examples/blob/master/android/HelloAndroid/src/com/example/helloandroid/DatabaseHelper.java"&gt;ormlite-examples/android/HelloAndroid/src/com/example/helloandroid/DatabaseHelper.java at master ・ j256/ormlite-examples ・ GitHub&lt;br&gt;https://github.com/j256/ormlite-examples/blob/master/android/HelloAndroid/src/com/example/helloandroid/DatabaseHelper.java&lt;/a&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Helperクラスができてくれれば、後は、いつもと一緒？＜を&lt;/p&gt;
&lt;h2&gt;ORMLiteが提供するクラスを継承して、ServiceやActivityの処理クラスを作成&lt;/h2&gt;
&lt;p&gt;せっかく作ったHelperクラスを使用できるように、後はORMLiteXXXX系クラスを継承して、自分の欲しい処理クラスを書いて、動かしていくだけｗ&lt;/p&gt;
&lt;p&gt;後の詳しい事は、また触りながら色々と覚えていくことにしてみようｗ&lt;/p&gt;
&lt;p&gt;気持ち、ActivityはViewのつもり、でいるので、ModelとViewModelの層でのみHelperを参照するようにしたいなぁ、というのが本音。&lt;/p&gt;
&lt;p&gt;ORMLiteXXXクラスはActivityで継承して使うから、コンストラクタで渡していくしかないけど、なんとかなりそうな感じだし、この方針でやってみよう。&lt;/p&gt;
&lt;p&gt;SpringFrameworkを使うなら、HelperクラスをSingleで持っておいて、アプリケーションコンテキストにぶら下げてガンガン使っていけるんじゃないかなーとも思うんだけど、今回は使わなかったのでそのあたりはちょっと不格好というか不器用な作りになっちゃうけど、まぁいいやｗ&lt;/p&gt;
&lt;p&gt;今日はここまでｗ&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/esten/aggbug/338936.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>片桐　継（Tugu Katagiri）</dc:creator><title>Androidアプリケーションでデータベースを使いたい。</title><link>http://blogs.wankuma.com/esten/archive/2014/07/07/338651.aspx</link><pubDate>Mon, 07 Jul 2014 13:33:00 GMT</pubDate><guid>http://blogs.wankuma.com/esten/archive/2014/07/07/338651.aspx</guid><wfw:comment>http://blogs.wankuma.com/esten/comments/338651.aspx</wfw:comment><comments>http://blogs.wankuma.com/esten/archive/2014/07/07/338651.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/esten/comments/commentRss/338651.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/esten/services/trackbacks/338651.aspx</trackback:ping><description>&lt;p&gt;さて、アプリケーション作る上で必要なもののひとつ、データベースにデータ格納して、取り出して使いたい、なんて時。&lt;/p&gt; &lt;p&gt;まぁ普通にORMでゆとりして、DAOパターン使えばいいよね、とか考えるんだけど、Androidだとどうなんだろう。&lt;/p&gt; &lt;p&gt;調べてみて、判ったことは&lt;/p&gt; &lt;ul&gt; &lt;li&gt;データベースにはSQLiteを使う。&lt;/li&gt; &lt;li&gt;SQLiteを使うように、処理クラスが用意されている。&lt;/li&gt; &lt;li&gt;ORMするには、追加jarライブラリが必要。&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;ってことまで判った。&lt;/p&gt; &lt;p&gt;&lt;font color="#ff0000"&gt;ORMしなくても、地道にSQL書いたり、用意されてるメソッド読んだりして処理できるらしいけど、書くソースコードが多いので疲れそう。あとでメンテするのもメンドクサそう。&lt;/font&gt;&lt;/p&gt; &lt;p&gt;なのでやっぱり、ORMしようかな。&lt;/p&gt; &lt;p&gt;Hibernateは使い慣れているけれど、Android環境ではどうなんだろう。&lt;/p&gt; &lt;p&gt;なんて考えながら、ネットをうろうろして、ちょっとみつけたものがあるので使ってみようと思う。&lt;/p&gt;&lt;a href="http://ormlite.com/sqlite_java_android_orm.shtml"&gt;OrmLite - Lightweight Java ORM Supports Android and SQLite&lt;br&gt;http://ormlite.com/sqlite_java_android_orm.shtml&lt;/a&gt;&lt;br&gt; &lt;p&gt;軽そう＆面白そう。使い方はアノテーション＆Configファイルで良さそう。&lt;/p&gt; &lt;p&gt;試してみることにするｗ&lt;/p&gt; &lt;p&gt;話変わるけど、Mavenってツールがあるのね。これは、コンパイルするときに必要なリンクライブラリをかき集めて取ってきてくれるツール。他にも色々と便利な機能があるけど、複雑になっちゃうので割愛。&lt;font color="#ff0000"&gt;依存関係とかあると、これを使うならこれが必要、あれリンクするならあれも必要、とか、人力でやってると、ライブラリがないよエラー連発でキーーッてなるような事故がよく起きる。&lt;/font&gt;&lt;strong&gt;それを「これ使います」と特定のファイルに書いておくと、関係ライブラリもひっくるめて、探して全部まとめて取ってきてライブラリパスからリンクできるようにしてくれるから、ストレスが減っておすすめ。&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;つまりは、リンクライブラリで苦労したくないなら、入れておけってこと&lt;/font&gt;&lt;/strong&gt;だｗ&lt;/p&gt; &lt;p&gt;話を戻して、さっきのOrmLiteを追加してみる。&lt;/p&gt; &lt;p&gt;で、Mavenプロジェクトにしていると、リソースに、pom.xmlってファイルができる。ここにOrmLite用の依存ライブラリを追加すればいい。&lt;/p&gt;&lt;a href="http://mvnrepository.com/"&gt;Maven Repository: Search/Browse/Explore&lt;br&gt;http://mvnrepository.com/&lt;/a&gt;&lt;br&gt; &lt;p&gt;というサイトを知っておくと、この作業がとっても幸せ＆楽ちん。&lt;/p&gt; &lt;p&gt;実はこのサイトは、検索してMaven用のリポジトリをpom.xmlにコピペできるように提供してくれるサイト。&lt;/p&gt; &lt;p&gt;ここで検索すると大概のリポジトリ定義は見つかるので、さっそくコピペ追加して、プロジェクト更新。&lt;/p&gt; &lt;p&gt;必要なjarライブラリが追加されるので、プロジェクトの準備完了。&lt;/p&gt; &lt;p&gt;さっそく、OrmLiteのサイトの説明を見ながら、ちょっとサンプルアプリを作ってみようｗ&lt;/p&gt; &lt;p&gt;&lt;font color="#cccccc"&gt;でも、疲れたから、今日はここまでorz　&lt;/font&gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/esten/aggbug/338651.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>