そういえば2025年になってた
2025年になりました。
去年(2024年)は割とこのページを更新した方ですね。
今年もよろしくお願いいたします。
2025年01月10日 独り言
xdomain.jpからのお引越し
お知らせです。
このWebページは@niftyとxdomain.jpに置いてありますが、xdomain.jpの方は2025年7月31日にサービスを終了するとのことですので、お引越しします。
廃止: xdomain.jp
移転先: XServer Static
@niftyは今のまま残ります。
はて、xdomain.jpは無料だけれど数か月に一回利用期間の更新が必要で、更新しないと消えてしまうサービスだったのですけれど、XServer Staticはそのような説明書きがありません。もしかしてXServerのサービスが終了するまでずっと残るのかしら
2025年02月01日 このページのリフォーム
chatGPTとかSQLとか
流行りのchatGPSとかは食わず嫌いであまり使っておらず、また、SQLはSQLiteを我流でSQLiteサイトのチュートリアル見てリファレンスのページを見てなんとなく使っている私です。
先日、「その月までの累積の数値」が入ったテーブルから「その月の数値」を求めたいと思いましたが、SQLの書き方がわからず難儀しました。
そんなのExcelに入れて差分を計算すれば瞬殺じゃん、というのがまあ普通の反応だと思います。でも今回はExcelを使わない縛りでどうしても作ってみたいと思ってしまったのですよね。
1時間くらい考えて、やってみた方法は、即値でWHERE month='先月の日付'で先月の数値のviewを作って、同様の方法で今月の数値のviewを作って、SELECT 今月の数値 - 先月の数値 で差分を作るという方法。
何日か経ってしまったので記憶があいまいですが、確か、"SQLite データ 先月との差"みたいな検索ワードでググってみましたが、日付の計算みたいなのばかりヒットしてデータの差分の出し方にうまくたどり着けなかったのですよね。
そういえば職場でもAI活用って話題が出ていたなぁと思い、chatGPT君に尋ねてみることにしました
sqliteで月ごとの料金が入ったテーブルがあり、前の月との差異を出力したい
すると「SQLiteで月ごとの料金データが入ったテーブルにおいて、前の月との差異を求めるには、自己結合を使用する方法が一般的です。」とのことで、次のコードが出てきました
SELECT
t1.month,
t1.charge AS current_charge,
t2.charge AS previous_charge,
(t1.charge - t2.charge) AS difference
FROM
monthly_charges t1
LEFT JOIN
monthly_charges t2 ON strftime('%Y-%m', t1.month) = strftime('%Y-%m', t2.month, '+1 month')
ORDER BY
t1.month;
monthly_chargesがデータの入ったテーブルです。
ここには転記しませんがchatGPT君はクエリの解説までしてくれました
FROMとJOINで同じテーブルを結合するなんて、SQLってそんな使い方ができるの? とか、SELECTの出力対象にmonthly_chargesが無く、後から出てくるFROMやJOINでつけたt1とかt2とかの名前で参照するなんてアリなんだ? とか、目から鱗です。いや、ちゃんとSQL勉強しろよ、って言われた気がしました。
ちなみに、もしかしたら上記SQLは動くかもしれませんが、その時に私が得たSELECTは期待した出力が出てこなかったので、ちょっと手直しして、データを読み込むimportを追加して、次の形になりました
.mode csv
CREATE TABLE monthly_rates (
id INTEGER PRIMARY KEY,
month TEXT, -- YYYY-MM 形式で年月が格納される
rate INTEGER -- 料金
);
.import rates.csv monthly_rates
SELECT
current.month AS current_month,
current.rate AS current_rate,
previous.rate AS previous_rate,
(current.rate - previous.rate) AS difference
FROM
monthly_rates AS current
LEFT JOIN
monthly_rates AS previous
ON
strftime('%Y-%m', date(current.month || '-01')) = strftime('%Y-%m', date(previous.month || '-01', '+1 month'))
WHERE
current.month = strftime('%Y-%m', '2025-02-01');
monthに'YYYY-MM-DD'形式でデータが入っていないので「|| '-01'」を追加しただけだったんですけどね
私がchatGPTに入れた指示が適当だったので完全な答えは得られませんでしたが、chatGPTってスゲーって思いましたね。もう、知らないことをググるよりもchatGPTに聞いてから、それが正しいかどうかググったり自分で実験して検証する という手順の方が良いのかもしれません
この、今日のこの記事を書くにあたり、あらためてchatGPT君に聞いてみました
sqliteで月ごとの料金が入ったテーブルから前の月との差異を出力したい
で、出てきたのは次のSQL
SELECT
month,
fee,
LAG(fee) OVER (ORDER BY month) AS previous_fee,
fee - LAG(fee) OVER (ORDER BY month) AS fee_difference
FROM
monthly_fees
ORDER BY
month;
ちょっと指示が異なるだけなのに全然違うのが出てきちゃったよ
LAGとかORDERって何? この記事を書き終えてから勉強します
chatGPT君のクエリの解説に「前月のデータがない最初の月(データが存在する場合)は、差異が NULL になるので、それを適切に処理したい場合は COALESCE を使って NULL を 0 に変換することができます。」とありました。
SELECT
month,
fee,
LAG(fee) OVER (ORDER BY month) AS previous_fee,
COALESCE(fee - LAG(fee) OVER (ORDER BY month), 0) AS fee_difference
FROM
monthly_fees
ORDER BY
month;
COALESCEって何?(以下略)
ってことで、SQLの本を買ってきました。「初めてのSQL」O'REILLYの翻訳本。ジュンク堂でその他の本もいろいろ手に取りましたが、ほんとのほんとに初歩の初歩から手取り足取りのチュートリアル本が多くて、いや、そのあたりの話は全部すっ飛ばしていいのでもうちょっと実のある話をしてくれないかなぁ? とか思ってこの本になりました。
あと、AIに対するアレルギーを治療するために「ディープラーニングG検定 最強の合格テキスト」(ソフトバンクパブリッシング)ってのも買ってきました。緑本って呼んでほしいみたいです。
2024年は2月にEffective Javaを買ってきて学ばせていただきましたし、今年はSQLとAIの初歩くらい身に着けたいものです。
2025年02月02日 プログラミング雑談
スマホを買ってきた
今まで使っていたスマホはXperia Ace。2019年秋にSIMフリーで買ったもの。
Android 9、メモリー4GBの多分当時としてはミドルクラスのスマホだったと思う。
2025年現在のスマホとしてはスペックが足りないのか、どこか故障気味なのか、時々フリーズするようになりました。音量ボタンと電源ボタン長押しで強制再起動はかかるので何とかなっていましたが、そろそろ新しい機種を買いたいなと思っていました。
私は通信回線はiijと契約していますのでまずiijのサイトで端末ラインアップを見ながら、おサイフケータイが使える機種で絞り込むと3万円位からかなって感じ。
今メモリー4GBの機種で調子が悪いので6GBか8GBが良いなとか言うと候補が減っていく。
大晦日に実家の両親に買ったタブレットはXiaomiだったなー、とか、昔CPUじゃなくてMPUはモトローラのMC68000とか使いたかったなー、とか思いながら、Xperiaは良さそうだけど高いしな、ってことでほとんどモトローラかXiaomiで決めかけていたのですが、そうだ、歩数計用のセンサーを持っていない機種はその他のセンサーを活用して歩数計機能を実現するのでバッテリーの消費が多いって聞いたことがあるな・・・とか言いながらステップカウント機能がある機種とか思ってスペックを細かく見るとどちらも安い機種にステップカウントのセンサーが入っているという記述が見つからない。モトローラさんXiaomiさんさようなら。
ちょっとお高いけれどOPPO Reno11 Aって一応条件に当てはまるのでこの線で・・・。家電量販店サイトを見たらOPPO A79ってメモリーは4GBになるけれど2万円でおつりがくるお手頃価格のエントリーモデル。5万円弱でスマホを買って5年使うより2万円で買って2年で乗換ってのもありかな。私はLINEとモバイルsuicaが使えれば大体足りるので、高スペックの機種は多分いらないし。
で、買ってきましたOPPO A79 G5
でかい。重い。右手で持ったまま親指で操作できない。まあこのあたりは買う前から覚悟していたので良いのですが、誤算が一つ。
2011年に初めてAndroidスマホを買ったときから使っていた小遣い帳アプリMoneyNoteが古すぎてインストールできない
あらためて調べてみると当時のスマホはAndroid 2.3くらいのバージョン。最近はAndroid 6以前をターゲットにしているアプリはインストールできなくなっているのですって? なんてこったい。これまでの14年分の小遣い帳データはどうなってしまうの? しばらくは今までの機種で小遣い帳を使い続けつつ、エクスポートしたデータを別のアプリに読み込ませる策でも考えようと思います。ありがたいことにMoneyNoteはcsvでデータをエクスポートできるので、最悪自分でSQLを書くとか、アプリを作るとかになるかも・・・
OPPO A79は充電器とかUSBケーブルとか付属していないのですが、なんかサービスで純正充電器がついてきました。ケーブルは無いけど。
いろいろ調べた結果、OPPO A79はSuperVOOCとかいう充電規格に対応していて、これはUSB PDの上位規格らしい。USB PD-PPSとSuperVOOCの違いはまだよく理解できていません
USB PDってUSB Type-C -- USB Type-Cのケーブルでしか使えない規格らしいと思ってたのでそういうでケーブルを買おうかなと思ったら1,000円超。高い。最初に歩いた範囲で一番安かったのがCandoの330円のPD 60W対応ケーブル。
まあ昔のフィーリングだと超高速充電ってバッテリーの寿命を縮めそうだし、普通に充電すれば良いかなって思って帰宅。
充電器に書かれている出力の仕様の細かい文字をスマホで撮影して拡大して読んでみるとUSB Type-Aコネクタ側も11V 3A出力できるらしい。これで33Wになるのか・・・。ふと思って手元にあった数年前XiaomiのスマホについてきたType-A -- Type-Cの線をつないだら超高速充電モードで充電できてしまった
ウォーキングがてら近所のセリアに行ったらUSB PDの充電専用ケーブルが売ってて、20V 3Aで60W対応ってことらしい。これでいけるのかしら。まあダメでも110円だし、と思って購入。高速充電できませんでした。残念。
きちんとPD-PPSかSuperVOOC対応のケーブルを買う必要があるみたい。とりあえずはXiaomiスマホについてきたケーブルが使えるし、日ごろは通常速度の充電でいいので、そのうち探してみようかな。Amazonで見てもSuperVOOC対応ケーブルは1,000円とかするみたいだし。
2025/3/15 追記
- Xiaomi Redmi 9T : クイックチャージ 3.0 18W
- OPPE A79 5G : 33W SuperVOOC と 33W PPS. 11V 3A
2025/3/22 追記
- MoneyNote、手持ちのAndroid 12のデバイス(Redmi 9T)にはインストールできた
2025年03月08日 独り言
LINEアプリの最新版がAndroid 9に入らなくなった
3月8日にスマホを買ってきてOPPO A79 5Gに切り替えたと書きました。
でかいとか古いアプリが入らないとか文句もありますが、私にとっては新しいオモチャなのでかれこれ2週間なかなか楽しく遊んでいます。
そんな中、LINEの最新バージョンからLINEアプリがメインとサブの2台のAndroidデバイスにインストールできるようになったというニュースがありました。今まで使っていたXperia Ace(初代)のLINEアプリも生かしておいて両方にLINEアプリを入れられるかなと思ったのですが、なんとびっくりLINEの最新バージョンはAndroid 9に入らない。15.3が入らなくて15.2.1までしか入りませんでした。ということで、私としてはギリギリのタイミングでAndroid 9からAndroid 14に移行したのだなと。
その他、以前のAndroidバージョンでもあったようですが、サイレントモードという設定がある事や、Quick Shareの存在を知りました。今までPCとスマホでちょっとしたファイルのやり取りもGoogleドライブを使いたくない場合にはいちいちUSBケーブルで接続していましたが、Quick Shareで十分じゃん!と知りました。早速PCにQuick Shareのアプリをインストールしてしまいました。
そうそう、いろいろな店のアプリをインストールしていて、新しい方のスマホにも一通りインストールしたのですが、アプリの数が多いので通知も多い! でも通知を全部OFFにするのもどうかなと思って通知設定は悩みどころです。
職場の勤務時間帯はスマホをサイレントモードにしていますが、家からの緊急の電話はちゃんと鳴動してほしいし、カレンダーに入れたリマインダーのアラームも鳴動してほしい・・・とかも、ちゃんとサイレントモードの例外アプリの設定が必要だとか、こまごまとした設定がいろいろ必要なのだなと学びました。
今思い出せる範囲で
- おやすみ時間モード はDigital Wellbeingから設定する。googleの時計アプリからも設定可能
- googleカレンダーのフロントエンドに他のアプリ(例えばDigiCal)を使用しているときはgoogleカレンダーかフロントエンドアプリのどちらかのみ鳴動する通知を設定する
- LINEのメッセージ着信時の通知は「メッセージ通知」の着信音をアプリのデフォルトにするといつものLINEの通知音になる。「アプリのデフォルト」が選べる場合は「アプリのデフォルト」に設定するのがよさそう
- カレンダーとどうでも良さそうなアプリの通知音は分けたい。
2025年03月22日 独り言
AndroidStudioでjavaを使うまでにいきなり壁
やっと重い腰を上げて小遣い帳アプリを書こうとしているのに、AndroidStudioで入門書を見ながらEmpty Activityを作るとjavaが選択できずkotlin一択になる。
Geminiさんに聞いても「最新のバージョンのAndroidStudioではJavaが使えない場合があります」などと冷たいコメントしかないし。
ググってもなんかアフィリエイト目当てっぽい、どこかのチュートリアルをそのまんま引き写したような古い情報に基づく記載しかないサイトばっかりヒットするし。
結局、qiita内のサイトが一番頼りになりますね。javaを選択するにはEmpty Views Activityを選択する必要がありました。
いきなりこんなところに壁を作らなくてもいいのに。
Androidアプリ 次の壁
前回までののあらすじ
2011年Android 2.3時代に使い始めた小遣い帳アプリがAndroid14のスマホにインストールすらできないことが判明。これでもプログラマーの端くれ(ただし永遠の初心者)、自分で小遣い帳アプリを作ろうとAndroidアプリ開発のチュートリアル本を見ながら作成に着手。
チュートリアル本を見ながら作り始めたものの、Javaで開発したいのにJavaを選択できない! この問題はしばらくググってやっと解決したのであった
ってことで、今日はメニューを表示して今まで使っていたcsvファイルをインポートする処理を作ることにしました
チュートリアル本を見るとoption_menu.xmlとかいうファイル名でres\menuフォルダの下にMenu Itemを配置するだけで良さそう。でもどうしてもメニューを表示するためのボタン(…が縦に並んだやつ)すら表示されません。チュートリアル本を隅から隅まで読んだわけではないので表示方法がどこかに書いてあったのを読み飛ばしたかしら? でも普通にEmpty Views Activityを作ってそこにoption_menu.xml作ってMainActivity.javaにonCreateOptionsMenu()メソッドを置くことしかチュートリアル本に書いていないし・・・。
たかがメニューを表示することで悩むこと2時間とか。結局今回はGeminiさんに聞いてみたらマニフェストに書かれているthemeがNoActionBarになっているのでは? ってことで、マニフェストファイルを開いてそれっぽいところを見たら確かに書いてありました。そんな。私はそんなところいじっていないよ。Empty Views ActivityのデフォルトがNoActionBar設定なのね? そんなところに罠が仕掛けてあるとは・・・。
一応チュートリアル本は一通り斜め読みして大体雰囲気だけはつかんだ気でいましたけれど、ちゃんと最初から最後まで熟読することが結局近道なのでしょうか。急がば回れとも言いますし・・・・
でもチュートリアル本をざっと見た感じだとAndroidアプリ開発はそんなに難しそうに見えなかったのだけどなぁ。
今日はメニューが表示されたところで力尽きました。メニューを選択したら何か動くところまで作りたかったけれど、まだ表示しただけで何も動いていません・・・・
5月連休が終わるまでに自分が使えるレベルにしたかったけれど、こりゃちょっと難しいかなぁ
ysktrt.moneynoteのデータをインポートできた
Android14で動かないysktrt.moneynoteのデータを読み込めて、今後も小遣い帳として使い続けるためのysktrt.moneynoteとデータ互換のある自作アプリの開発中。
Androidアプリはチュートリアル本見ながらHello worldしただけのレベルだからつらい。
やっとysktrt.moneynoteでエクスポートした小遣い帳データを読み込んでDBに入れる処理が書けた。とりあえず動いたってレベルでしかないけれど。
さて、次はデータを表示する処理を書かねば・・・。その次は日々の入出金を入力する処理。過去データを検索する機能も欲しいな。
最初は5月連休中に使い始められるレベルまでもっていきたかったけれど、この調子では今年中に使えるようになる事やら。
2025年04月14日 プログラミング雑談
ysktrt.MoneyNoteビューワー試作版
2025年3月8日に「2011年に初めてAndroidスマホを買ったときから使っていた小遣い帳アプリMoneyNoteが古すぎてインストールできない」とか書きましたが、結局自分でアプリを書くことにしました。
Javaは最近1年くらい趣味で使っていましたし何とかなるに違いないと思っていましたがAndroidアプリを作るのは新しいことが多すぎて難しかった・・・・
とはいえとりあえず14年分の小遣い帳データを読み込んで引き続き入力できるアプリが作れそうなめどが立ちましたので、趣味で開発しているよ表明をば。
このアプリは
このアプリはysktrt.MoneyNoteからエクスポートしたデータを読み込んで表示や簡単な編集を行う、実現可能性確認用試作アプリです
Android 12以上のスマホで使えるはず
制限事項
- 簡単に異常終了します
- 費目の設定はできません。ysktrt.MoneyNoteのcsvをインポートしたままの設定となります
- カードや月極収支や分析などの機能は使えません
- その他いろいろなことができません
- 過去28か月のデータを見ることができます。14年分のデータを扱う自信が無かったので、仮に制限しています
- 動きがカクカクしているのは私のスキルが足りないからです
ライセンスなど
- このアプリ自体はMITライセンスを適用します。
- このアプリはApacheライセンス Version 2.0で公開されているApache Commons CSVを使用しています。
ライセンス・ダウンロード
MITライセンス
Apacheライセンス Version 2.0
Apache Commons CSV
Download
2025年05月04日 プログラミング雑談
誰得ysktrt.MoneyNoteビューワー実現確認試作は終わり
「誰得ysktrt.MoneyNoteビューワー」はysktrt.MoneyNoteでUTF-8エクスポートしたファイルを読み込むことができる自作こづかい帳アプリの名前です。
ビューワーと言っていますが、新規入力も既存データの編集もできます。新しいNoteの追加や費目の追加などできませんので、ysktrt.MoneyNoteのエクスポートファイルを持っていないと使い始めることができないことからビューワーと言った方がむしろ誤解が少ないかなと。
ysktrt.MoneyNoteがAndroid 14にインストールできなかったので対策をどうしようかしばらく悩んだ結果、4月の初めからAndroidStudioの使い方を学びつつアプリの試作を始めてほぼ1か月。とりあえず今までの小遣い帳データに続けて今後のデータも入力し続けられそうです。今後は「急いで」開発する必要はなくなったので年内完成を目指してちゃんと設計や自動テストをしながら秋くらいに最初の公開かな。良さそうな感じになったらGoogle Playに公開しても良いけれどアカウント登録料が25ドルかかるとか聞くとめんどくさいからやめとこうかなと思ったり。
ysktrt.MoneyNoteってNoteをまたがった検索ができなかったので、収支は「おさいふ」Noteに全部入力して、suicaやWAONやPayPayなどはノート間送金でつじつまを合わせるという運用を数年続けてきましたが、全ノート横断検索できるようにしたのでこれも終わり。
こづかいと家計を分けて管理したかったので「家計立て替え」Noteを作って、データ上はこづかいは一旦ここに入金して、実際におさいふやsuicaなどに入金した段階でこれもノート間送金で現実のお金の状態を反映するという運用をしていましたが、今後開発する正式版ではノート間送金によらず、それぞれの入出金データに何かフラグを付けて管理できるようにしたいなぁ。
プログラムは作り始める前の仕様を妄想している段階が一番楽しいかもしれない。
2025年05月05日 プログラミング雑談
ysktrt.MoneyNoteデータ互換 誰得おこづかいちょう進捗
5月5日に「実現確認試作は終わり」宣言をした誰得おこづかいちょうアプリ、開発のペースは落とさざるを得ないですけれど継続しています。
開発しようと決めた4月から5月連休が終わるまでは、これをとりあえず使えるレベルまでもっていかないと日々の支出監理に支障が出るので4月はじまりのアニメも見ないで使える時間をほぼすべて投入にして試作していました。
今は実現確認試作版は使いながら見つけた不具合を修正するだけで、その他の使い勝手改善などは一切手を付けずに、本番の開発に入りました。
とはいえAndroidアプリ開発のチュートリアル本をみながらヨチヨチ開発するレベルのままGoogle Playに公開するつもりのアプリを作ることはできないと思いますので、ちょっと真面目にいろいろ勉強しながら開発しています。
最初はバックエンド側の単体テストを作るところから始めました。MVVMのMの部分のテストですね。
基本的にはjavaでの開発なのでVisualStudio Codeでmavenベースで開発していたときと同じノリで入れたので比較的入りやすかったですね。いまはバックエンド側のテストだけだからいいですけれど後日UI側のテストに入るときはわからないことばかりで進まなくなるのだろうな・・・
バックエンド側の単体テストの次はMVVMの導入にトライ。
Model ViewはMicrosoft VC++でMFCに入門したときから馴染みのある概念(当時はDocument Viewって言ってたっけ?)だと思うのですが、Model View ViewModelってどこが違うの? から。
最近業務ではちっとも設計も実装もさせてもらえませんが気持ちは職業プログラマーなのでMVVMという言葉はしょっちゅう聞きますし、MVVMという概念もすんなり腹落ちしているのですが、AndroidでMVVMというとViewバインディングとかDataバインディングとかいう仕組みが絡んできて、試作版アプリをどう作り替えればMVVMになるの? とか、自動テストも組み込みたいんだけど? とかで学ぶことが多い感じです。
試作版はEmpty Views Activityのテンプレートを使いましたが、本番はNavigation Drawer Views Activityのテンプレートを使う予定です。
Navigation Drawrが欲しいと思ったのは「現金/suica/paypay」などおさいふごとのviewと、「おこづかい/生活費」など誰のお金か管理するviewと「銀行口座/クレジットカード」などのviewを持ったおこづかい帳を作りたいから。
ysktrt.MoneyNoteで不満だったのは、csvエクスポートされるときはAmount.csvに全てのNoteの入出金データが入るのにUI上は各Noteは独立していて、全てのNoteをまとめて個々の入出金記録を見たり検索したりできなかったことと、Noteを「現金/suica/paypay」などおさいふとして分類すると「おこづかい/生活費」の管理ができないこと。ysktrt.MoneyNoteでは疑似的に「生活費」のNoteを作っておさいふごとのNoteと生活費のNoteに二重入力してた時期もありましたが、二重入力するのはめんどくさいし数字はすぐに合わなくなるし・・・。
ということで開発中の誰得おこづかいちょうのターゲットユーザーは私自身と収入をすべて自由に使える独身世帯です。もちろんおこづかいと生活費を分けて管理する必要が無い中高生も使えるでしょうけれど、それなら既にGoogle Playに多種多様な家計簿アプリやおこづかい帳アプリがありますので私の出る幕はなさそうだなと。
私のフィーリングだと、昭和の時代は紙の家計簿がありましたけれど、あれって過去の記録を見るのが難儀なので、家計簿をつけているという自己満足の役にしかたたなかったと思うのです。律儀に毎月の食費がいくらで光熱費がいくらで・・・と集計していれば計画的な支出計画の役に立つと思うのですけどそこまでやってた人はどれくらいいたのかなと。
今はスマホの家計簿アプリに日々の支出を入力するだけで、それらデータを生かすことも簡単です。
1月は靴と本を買ったりして支出超過だった、2月は職場の飲み会の支出が多かったけれど収支はトントンだった、3月は腕時計が壊れて新しいの(でも安物)を買ったしスマホが5年経過し不調だったので新しいの(でも安物)を買ったので支出超過だった、4月はやっと通常モードになって支出が少なかった・・・みたいな振り返りも簡単です。
PCやスマホで大量のデータを扱うのが容易な時代になりました。個人・家庭で大量のデータというと家計のお金の流れのデータは真っ先に管理されるべきだと思うのですが、どのくらいの家庭・個人が家計簿をつけているのだろう? と気になります。家計簿アプリのダウンロード数を見ると家計簿をつけている人は多いのだろうと思いますが、全世帯の何割くらいなのかなと。
ふと思って自分のPDA遍歴を確認してた・・・。1994年からPDAを使い始め、2006年にはスマートフォン相当のものを使い始めているけれど、収支記録をつけ始めたのは2011年のAndroidスマホを買ってからだなぁ。PCみたいな大物を買った記録は残っているけれど日々の収支は全然記録に残っていないや。家電とかビデオレコーダーとかオーディオ機器とか、結構浪費した記憶になってる・・・記録はないけれど。
2025年05月25日 プログラミング雑談
androidのデータバインディングって・・・
データバインディングって簡単なんだか難しいんだかわからん
fragment_gallery.xmlとGalleryFragment.javaを関連付けるならばfragment_gallery.xmlはルートが<layout>になって、<data>があればとりあえず良さそう。実際に関連付けたいデータが無ければ<data>は無くても良い
<data>の中の<variable name="xxx">の場合GalleryFragmetn.javaで
private FragmentGalleryBinding binding;
public View onCreateView( 引数は略 ) {
binding = FragmentGalleryBinding.inflate(inflater, container, false);
binding.setXxx(this);
View root = binding.getRoot();
return root;
}
とかやっておけば、GalleryFragmentクラスのpublic変数やprivateでもgetterとsetterがある変数はfragment_gallery.xmlと関連付けられる模様。
viewBindingを併用しない場合レイアウトのxmlファイルは全部、ルートを<layout>にしないとエラーになる気がします。
2025年05月26日 プログラミング雑談
Android レイアウトファイルとActivity.javaとMVVMと
誰得おこづかいちょうを作っています。っていうか、AndroidアプリのUIの作り方とかMVVMとかGeminiに教えてらもってAPIリファレンスなどで裏どりしている時間の方が長いかも。
データバインディングはなんとなくぼんやりと「わかったような気がする」レベルに来たけれど、Gemini君はLiveDataとかオブザーバーとか新たなキャストを次々に紹介してくるのでなかなか前進できません。
平日日中は普通に職場で働いているし、深夜に放送されるアニメは録画しているし、健康な老後のために有酸素運動は欠かせないし・・・時間が足りない!って状況の中、2024年の秋くらいからよちよちチュートリアル本を読んでいた私が誰得おこづかいちょうを公に公開できるのはいつの日になるのでしょう?
今週は、Androidアプリをチュートリアル本通りに作るとレイアウトのxmlファイルと~Activity.javaが対になるけれど、MVVMでデータバインディングするとレイアウトのxmlファイルと~Activity.javaは切り離すのが原則らしいってあたりにつまづいていました。
こういう設計にすべき というのを勉強しながら実現していくのは良いプログラムを作るために必要な行為だと思うけれど、学ぶべきことが多すぎるので、「設計は雑だけれどとりあえず動くものを作りたい」と「理想的な形で実現したい」のギャップが素人には超えられない幅に広がってしまっている気がします。
2025年06月07日 プログラミング雑談