2026年2月25日水曜日

[Android]RoomとKPSとKotlinのバージョン(2026/02)

AndroidのRoomは、SQLiteを簡単に扱えて、Flowで値を取得できます。
RoomのFlowを使った制御の何がよいかというと、データベースを更新すると、勝手にデータをリフレッシュしてくれるんですよね。

最初にRoomを使ったときは、「え?なんでDBを更新すると、画面が勝手に更新されるの?」というのが理解できませんでした。 そうなんです。仕組みを理解していないと、これが分からないんですよね。

ざっくり言うと、DAOにFlowで値を返す関数がある場合、データを更新すると自動でFlowに新しいデータが流れてきて自動的にFlowデータを取り込む。
データを取り込むとFlow(State)を参照しているUIが勝手に更新される。そんな感じ。

ただ、Roomはクセが強い。どこがクセ強かというと、KSPとKotlinのバージョンの組み合わせに依存関係があって、例えばKotlinの版を上げたいなら、合わせてKSPとRoomもいい感じのバージョンにそろえる必要があるのです。 ということで、今日ちょっと調べてみると、最新環境ではこんな感じで合わせられそうだな、ということが分かったので、備忘としてメモ。


■libs.versions.toml抜粋(Kotlinが2.3.10)
[versions]
agp = "9.0.1"
coreKtx = "1.17.0"
junit = "4.13.2"
junitVersion = "1.3.0"
espressoCore = "3.7.0"
lifecycleRuntimeKtx = "2.10.0"
activityCompose = "1.12.4"
kotlin = "2.3.10" // ★2026/02時点では最新版
composeBom = "2026.02.00"
■build.gradle.kts(:app)
plugins {
  alias(libs.plugins.android.application)
  alias(libs.plugins.kotlin.compose)
  id("com.google.devtools.ksp") version "2.3.5" // ★Kotlin 2系に対応したKSP 2026/02時点では最新版

}

・・・省略・・・

dependencies {
  implementation("androidx.room:room-runtime:2.8.4") // ★Room関連 2026/02時点では最新版
  implementation("androidx.room:room-ktx:2.8.4")
  ksp("androidx.room:room-compiler:2.8.4") // ★KSP 2026/02時点では最新版


・・・
}
依存関係に負けてRoomをあきらめた人や、これからRoomちょっと使ってみようかな。という人参考までに。 最新版は↓からたどれます。
Room(部屋って訳されるのが笑える)
KSP

2026年2月10日火曜日

[バイク]レッグウォーマー

仕事中、足元が冷えるんだよねー。冬は。という方にお勧めしたいのが、コレ。おたふく手袋 の冬用レッグウォーマー

スーツなど、もこもこしたタイプのレッグウォーマーをつけるのがむつかしい服装で働く人にお勧め。しかも安い。股引とかタイツ的なものを使うならこっちのほうがイイかも。っていうくらいイイ。足首やふくらはぎがあったかいと、意外と全体的にあったかくなる。

また、この製品「発熱・防風・保温」をうたっているので、バイクに乗った時どうなんだろう?と試してみるとこれが効果抜群。イイ買い物したな、と思います。

ただ残念なのが、歩いているとズルズルちょっとずつ下がってくる。が、もう手放せないです。

[バイク]後付けグリップヒーター

冬のバイク。楽しいんだけど、乗るまでのハードルが高いんだよねー。

ということで、その辺を緩和する方法として “あったかくする” がある。体は着込めばイイんだけど、手先と足など末端が寒くて死にそうに。ということで、緩和案としてグリップヒーターを買ってみました。

製品は何だっけ?買ったはいいけど一年くらいかしてたんだよね。買ったのはコレ。 

グリップ巻き付け式のUSB電源のタイプのもの。モバイルバッテリーでも行けるタイプ。


使った感想としては、いまいち。個人的な感想。素手で触ると結構あったかいんだけど、グローブ越しだと出力がちょっと足りていない。機能はしているが効果が大きくはない感じ。
ないよりは全然イイ。まぁ冷風を当て続けているので仕方かないのかも。


[バイク]スマートモニタ。意外と悪くない

今までバイク用のナビとして Pixel Watch(+Pixel 9 Pro)を使っていたんだけど、タイムラグがあるのと画面が見づらいせいで、曲がるポイントをよく見逃していました。

まぁあれですね。ないよりは全然イイ。そんな感じ。

しかし、ソロの時はいいのだけど、仲間内でコレをやっちゃうとさすがに迷惑。ということで、スマートモニタを買ってみました。

いや、最初はスマホフォルダを買おうかなと Amazon を物色していたんだけど、そこでスマートモニタを発見。しかも9,000円くらいのタイムセール。これは買うしかない。と思い勢いでMG100を購入。

この製品は USB 電源でも稼働するタイプの機材なので、ハンドルにつけた USB 電源でそのまま動きます。さらに、モバイルバッテリーでも動作するらしい。

で、今日使ってみました。

感覚的に言うとすごくイイ。スマートウォッチと違って反応が早い。あと、5インチと小さいので目立たない。
自宅で初動確認やペアリングしていた時は、正直画面解像度が低いなと思ったんだけど、実際バイクに乗せて動かしてみると、「いや、運転中はこれくらいで十分」と納得。
製品のレビューを見ると、ねじが緩む的なことが書いてあるけど、今のところ大丈夫そう。

そんなに多くの製品を知っているわけじゃないけど、しっかりしてるんじゃないかなーと思う。


ということで、高価なスマフォフォルダ買おうとしている人は一考の価値があると思う。

2026年2月4日水曜日

[Other]Google Books APIsを使う

Google Books APIsは、基本APIキーなしでも使えるんですが、最近キーなしのアクセスが多発気味なのか、すぐに制限がかかっちゃいます。 ということで、APIキーの作り方と、APIの有効化についてメモを残しておきます。 APIキーを取った後は、次のような感じで、アクセスすればOKということで、GETのパラメータにつける簡単な方法を紹介。

書式はこんな感じ
 https://www.googleapis.com/books/v1/volumes?q=inauthor:%E8%8A%A5%E5%B7%9D%E9%BE%8D%E4%B9%8B%E4%BB%8B&key=AIza・・・・
これは、著者が芥川龍之介の書籍を検索する例。key=の後ろに取得したAPIキーをつけることで、制限がかかることがほぼなくなります。

登録手順は次の通り。

まず、「https://console.cloud.google.com/」にアクセス

■プロジェクトの作成
初回のアクセスの場合、利用の同意を求められれます。ということで、チェックをつけて「同意して継続をクリック」

















続けて、プロジェクトの作成。
デフォルトで「My First Project」というプロジェクトができている感じがありますが、なければ、右上の「新しいプロジェクト」をクリックし新規プロジェクトを作成する。





■APIの有効化

Google Books APIsをアクティブ?にします。




「プロジェクト選択」をクリックし、プロジェクトを選択した後、メニュー(3本線)ボタンをクリックする。














有効なAPIとサービスをクリックする。










検索バーに「google books」あたりまで入れると、一番上に、    Books APIが出てくるのでこれをクリック。




有効にするボタンをクリックする。










■APIキーの作成
メニューから、「認証情報」を選択。
    

















「+認証情報を作成」をクリックすると、何の認証情報を作るかを選択できる。
ここで、「APIキー」をクリック。








特に制限することもないので、デフォルトのまま「作成」ボタンを押す。







APIキーの生成が終わると、認証情報の一覧に戻る。






■APIキーの確認

認証情報一覧の画面で、「鍵を表示します」をクリックする。
    
ポップアップが表示されてキーの情報表示される。
この「自分のAPIキー」をコピーし、URLの最後に

「&key=Al.....」をくっつければOK。











2025年10月15日水曜日

[Firebase]firebase deployでハマる

 Firebaseは、googleさんのいろんなAPIやサービスを提供するプラットフォームです。

Firebase Hostingというのがあり、ちょっとしたWebサイト(HTMLなどの公開)がちょっと便利。今回はFirebase Hostingではまった話。


久しぶりに上げていた情報を更新し、Firebase Hostingにdeployしようと思ってコマンドをたたく。の前に、firebase-toolsのアップデート

c:\>npm install -g firebase-tools

いい感じに進んでいく。で、ログインの確認。これもOK

c:\>firebase login
Already logged in as gen**********.com

じゃあコンテンツ修正したしデプロイ行ってみよう!

c:\>firebase deploy

Error: Assertion failed: resolving hosting target of a site with no site name or target name. This should have caused an error earlier

ナニコレ

フォルダの中身を確認すると、認証がダメっぽいログが...

[debug] [2025-10-15T03:05:55.323Z] <<< [apiv2][body] POST https://cloudresourcemanager.googleapis.com/v1/projects/ao-program:testIamPermissions {"error":{"code":401,"message":"Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.","status":"UNAUTHENTICATED","details":...

そこで、cliでfirebaseにログアウトしてログイン。いくつか質問(Geminiを使うか的な確認等)が出てくるがこれをnoで回答。その後再度デプロイでうまくいった。

前回からの作業で、ちょっと時間がたっている場合は、認証に期限切れに注意ってことですね。

2025年9月21日日曜日

[バイク]早旅の登録ができない?

バイク用のETC2.0を付けたのは、速旅という制度があり、コレいいよね。と友人と話していたのがきっかけです。

この速旅にはバイク用のツーリングプランというのがあり、2日間一定の区間が乗り降りし放題など、いろんなプランが用意されている。というバイクに乗る人には、ちょっとうれしい仕組みがあります。

その他の利用シーンとしては、バイクの場合、車と比べ一般的に走行距離が短め。私の所有するXJR1300(98年)は、燃費があまりよくありません。町中を走ると、1リットル当たり10Km走らないことも(これは個体差によるものだと思います。。。)。

ということで、次のSAまでにガソリン尽きるんじゃないコレ。みたいなときに、ちょっと降りて給油する。的なことができるのはいいかもしれませんね。心理的に安全な感じがいい。というかETC2.0なら早旅じゃなくても、一時下車なら2時間まで行ける。仲間内に1系のETCをつけている人がいるならば、いろいろ融通が利きそう。

わき道にそれましたが、この早旅を使わない手はない。ということで利用できるようにするため、速旅のサイトでETCカードと車載器を登録。仕組み的には、ETCカードと車載器番号を紐付けて、その組み合わせが一致したら、事前登録したエリアが乗り放題になる。という仕組みらしい。

・・・で、さっそく登録するも失敗。
登録できるようになるまで、しばらく時間がかかるらしいことが書かれている。

友人(ハーレ)はつけた翌日に登録できたといっていたので、ちょっと心配になってくる。

取り付けしてもらってから3日後、改めて登録をするとすんなり完了。

おそらく、システム間の連携問題。バッチなんだろう。と想像がつく。バッチの処理件数が上限で先送りされたか、そもそもバッチの処理間隔が3日などで、一番遅いパターンにはまったのかな。と推測。

登録ができなかった間、ちょっと試行錯誤。
車載器登録番号って何よ?ってよく見てみると連番ぽい感じがする。自分の番号-1で登録を試みると、なんと成功。確認画面に遷移した。

なんだコレ、大丈夫か?と思ったけど、仕様的にはETCカードと車載器番号が一致しないと割引にならん。ということなんだろう。あと、複数台所有している人向けの考慮だと思う。設計したやつか要件を考えた人が複数台持っているのかなー。

で、車載器番号について、他人の番号がわかってもいいのか?と思ったけど単なる連番の数字だし、何か個人的な情報が洩れることもないだろう。と思われる。。。今時点では。

しかし逆に考えると、友人にバイクを貸す。とか、レンタルバイクに乗車したときに、うまく登録すれば、この割引が使えるじゃない?ということになる。そういうところは芸が細かい。

調べてみると、レンタルバイクの場合、レンタルバイクのオーナーがOKと言ったらコレ使えるらしい。


OKといわなくても、車載器に車載器番号のシール的なものが貼られていて、やろうと思えばできちゃう問題があることはさておき。。。
少し前の話に戻るが、こういう都合もあり、ETCカードと車載器番号で一意に割引対象を特定するシステムなんだろうな。という推測ができる。コレはこれでありだなー。という感想。

しかし、サイト側の画面ちょっと使いづらい。PCの場合、ID/PW入力後、エンターキーでログインしてほしいよね。携帯じゃなくPCを主に使うおじいさんとしては。

たぶん、芸が細かい人が設計して、雑なやつが画面作ったんだろうなー。