Raspberry Pi で機械学習

どうでも良いことですが、私の大学(院)時代の専門は機械学習やパターン認識の近接領域です。

当時は侵入検知や一般物体認識など、一部の限られた研究者のあいだで非線形手法が流行していたところに、古臭くて見向きもされていなかったニューラルネットが圧倒的な性能を見せつけ、シンギュラリティという言葉が生まれて一躍、大ブームが巻き起こりました。

流行の波に乗って、多くの人が新たに機械学習ライブラリに触れてみる機会が多くなった一方で、個人的には徐々に機械学習から距離を置いていきました。

それは、数十台のサーバコンピュータを数日連続して動かし続けたり、国内に数えるほどしかない大型計算機システム(つまりはスパコン)の利用申請をしたり、要するに計算資源だよりの力技でゴリ押しする風潮に魅力を感じなかったわけです。

特定の環境に依存しすぎていて、少しでも条件が変わったときにプロジェクトの再現や継続が難しいのはどうなのかなと。

Raspberry Pi(ラズパイ)は、ある意味、その対局にあります。

スマートフォンよりも小さく物理的に持ち運ぶことも容易、処理性能は玩具かせいぜいが低価格PCと比較できるくらい、学習データは外付け HDD に頼ればいいとして、それを取り込んでモデルを構築する際にメモリに載せられるかどうかというスペックです。

[toc]




Continue reading “Raspberry Pi で機械学習”

Android Room で relationships を扱う

Android アプリ開発においてデータの永続化を考えたとき、2021年12月現在において、最初の選択肢に挙げられる候補は Room です。

Room は SQLite の抽象化レイヤを提供する一種の ORM であり、Android Jetpack で提供されるライブラリの一つです。

基本的には Android Kotlin FundamentalsLesson 6: Room database and coroutines を通読すれば、おおよその操作感は理解できるのですが、実際のアプリ開発においては1つ問題が残ります。

Room がラップしている SQLite は関係データベースであり、そこに蓄積される情報は当然ながら正規化されています。

言い換えると、エンティティ単体で用いられることは、ほとんどありません。

もっと分かりやすく言うと INNER/OUTER JOIN 使いたいんだけど、どうするの?と思われるはずです。

そのあたりが知りたかったのに、とっ散らかっていて分かりづらいと個人的には不満を覚えました。




Continue reading “Android Room で relationships を扱う”

Android 開発機としての Kindle Fire HD

日進月歩で進化していくモバイル OS。

消費者としては3年前から大きく変化していないように見えても、開発者としては AsyncTask に Kotlin synthetics に JCenter にと もういい加減にしろと言いたくなるほど 仕様変更がつづき、安定して動作していていたアプリが非推奨技術の塊になる場面や、想定通りに動作しなくなっていく現象を目撃する機会が増えてきました。

Android 端末は低価格で高機能を提供する反面、その旬の期間は極めて短いと思えます。毎日のように酷使して、落下して故障させる可能性もそれなりにある携帯電話であれば、およそ2年ごとに機材ごと新製品に交換するので、それでも良いかもしれません。

ところが、タブレット端末を対象としたアプリ開発では、そんなに頻繁に OS が更新されることは手放しで歓迎できることではありません。

タブレット端末はそれほど頻繁に買い換えることはないからです。

それにもかかわらず、Android タブレットは、一定期間を過ぎると販売が終了して市場から姿を消します。

タブレット向けのアプリ開発を行っていると、正常動作することが確認されている機種を定めても、それが数ヶ月から1年ぐらいの頻度で販売終了してしまう光景に飽きるほど出くわします。

そして、手元には OS アップデートから取り残された端末が、延々と積み上がっていきます。

そこで開発してきた Android アプリ資産を活用できる端末として目に着けたのが Amazon Kindle Fire HD です。

これは Fire OS という Android をフォークした OS で動作するタブレット端末であり、ただでさえ安価な Android タブレットよりもさらに安価で、長期間に渡って供給が安定しているロングセラー商品という特徴を持っています。


Fire HD 8 タブレット ブラック (8インチHDディスプレイ) 32GB

これはアプリの動作環境としては非常に魅力的です。

なにしろ、2019年製のどこのメーカの OS verion X.X でアップデートされているものなどと細かく仕様を見ていかなくても、「最新の Kindle Fire であれば正常に動作します」と言い切ることができるようになるからです。

しかも、米国や中国などの特定の国でしか販売されていないような端末とは異なり、Kindle Fire であれば全世界共通の仕様なので、検証機とユーザの動作環境との差異をより一層、小さくすることが可能となります。

その上、ただでさえ安価な Android タブレットよりも、さらに価格が抑えられている点も見逃せません。




Continue reading “Android 開発機としての Kindle Fire HD”