そういえば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日 プログラミング雑談
生存証明
いろいろ忙しくて誰得ysktrt.MoneyNoteの進捗はイマイチです。
ysktrt.MoneyNoteビューワーのActivityは結構書いたのですけれど、費目選択などのDialogを書き始める作業に取り掛かる気分になかなかなれなくて。このペースだと盆休みに公開は無理だなぁ。いろいろ忙しくて8月もあまり誰得ysktrt.MoneyNoteの作業ができない気がしてます。
ダイアログを一つ作れば気分も向上するかもだけど。
何はともあれ3連休。連休の最終日は午後4時半なのに近所のアメダスの気温が34℃って・・・・。今日は一歩も外に出ていない。でも昨日はちゃんと参議院議員選挙の投票に行ってきたよ。ひきこもってるわけぢゃないよ。
2025年07月21日 独り言
xdomain.jpもまだ見えてる
7月31日の昼の12時にxdomain.jpのページが見えなくなるようなアナウンスでしたが、8月2日時点でまだ見えています。
cgiを使ったページは表示されなくなっているのかもしれませんが、スタティックなhtmlが置いてあるだけだから見えるのかな? この調子だと9月末にデータの削除が開始されるまで表示できるかもしれません。
こちら新潟市ですが、毎日暑いです。よくわかっていませんが、太平洋に台風があるとフェーン現象で暑くなると言っている人がいました。そろそろ雨が降ってくれるとありがたい、です。
明日はアイビスサマーダッシュですけど、暑すぎるので見に行かないかなぁ。いや、明日は涼しくても用事があって行けないのだった。
2025年08月02日 独り言,このページのリフォーム
xdomain.jpのページは消えてしまいました
8月2日時点で見えていると書いた、xdomainに置いたページは見えなくなりました。
無料で作らせてもらっていたページでしたので、今までありがとうございました としか言えません。
引き続き同じ会社提供のstatic.jpを無料で使わせてもらっています。このページはhttpsになるというのがありがたい。気のせいだろうけれどxdomainやniftyのページよりブラウザでの表示が早いような気がします。
ということで、ここにアクセスしている方には無用な情報ですけれど、私のWebページは次の2箇所になります。
@nifty
XServer Static
これを書いていて、私のwebページをマークダウン風のテキストファイルから変換するプログラム、箇条書きの中にリンクを書けないバグを見つけてしまった・・・・。今は誰得おこづかいちょうを作っている最中なので、そちらが落ち着いたらデバッグします。
2025年08月11日 独り言,このページのリフォーム
誰得MoneyNote 残りはダイアログとUIの見た目だけどとっても面倒
お盆の休暇。お盆ならではの用事がぽろぽろありますが、それ以外はずっとプログラム書いてる気がします。これを、充実した休暇の過ごし方と考えるか、不毛な過ごし方と考えるかは諸説ありますが。
誰得ysktrt.MoneyNoteビューワー、5月連休から試作版を使いながら、Google Playに無料で公開するぞという野望を実現すべくちゃんとしたバージョンを作成中です。
試作版で実現していたビューワー部分について、「ちゃんとしたバージョン」でも骨格となる機能は既にできていて、ビューワーとして本家ysktrt.MoneyNoteでエクスポートしたcsvを読み込まなくては使えない現状を卒業し、費目やノート(このアプリではノートは財布や交通系電子マネーやバーコード決済のマネーなどと一つ一つ紐づきます)を作ったりして単独のアプリとして使えるようにする作業に取り掛かっています。
費目やノートの編集はダイアログで作ればいいから楽勝だよね・・・と思っていたのですが、劇甘(死語)でした。
確かにダイアログで編集する機能は難しくないのですが、ダイアログでいろいろ編集した結果、他の画面に影響するので他の画面との連携する処理がめんどくさくて。
一気にバーっとアプリを書いていればどこの処理はどこにあるとかが頭の中に入っていて比較的なんとかなるのでしょうけれど、5月から作り始めてかれこれ3か月。歳も取って記憶力なんて皆無なのに、3か月前の私という、今の私からすれば別人が作ったコードを探索しながら影響する画面を探して、設計的におかしくならないように連携処理を作っていくという困難極まりない作業に負けそうです。
これも設計書を作らずに見切り発車してしまった報いなのでしょう。いまさらながらPlantUMLで絵を描きながら昔の私が書いたコードにコメントをつけて設計書を作って・・・というあたりの作業もしながら開発を進めています。
そうそう、ダイアログでいろいろな設定ができるようになったのですが、変更した設定に合わせて表示するところも作らなければならないのでした。知人には年末くらいに公開するのを目標にしてますとか話していましたが、盆休みが終わるとまとまった休み(=作業時間)もとれませんし、年末までに作り切るのは難しそうです。
スマホ、落としたら画面が割れた。悲しい。
運動不足は体に悪そうなのでウォーキングしてて、暑いので立ち止まって汗を拭いてたらスマホがポケットから落ちて画面が割れた・・・
広義のスマホになりますが、zero3を2007年に使い始めてから今までスマホの画面が割れた事なんてなかったのに。
今回は落とした場所が悪かった。道路の側溝のグレーチングの金属の網の棒状の細いところにスマホの電源ボタンの近くの弱そうなところが直撃したらしい。道路の普通のところに落ちてたら多分割れなかっただろうに。運が悪かったね。修理すると一週間くらいかかるらしい。通勤定期もスマホに入っているので一週間もスマホなしはつらい。とりあえず家電量販店のWebショップでスマホを注文してしまいました。
2025年08月17日 独り言
OPPO Reno 13Aの指紋認証表示を消す
OPPE A79 G5の画面が割れて、修理するにもどうするにも何はともあれ代替機が必要ということで、OPPE Reno 13Aを買ってきました。ポイントが付かないお店で4万円ちょっと。
春にA79を設定したときは5年ぶりの機種変更という事でとても時間がかかりましたが今回は割と簡単に移行出来ました。最初の起動に引き続いて自動実行されるデータ移行の処理が実に優秀で、ファイルマネージャーでアクセスできないアプリ固有のデータを保存するフォルダからもデータを転送してくれました。
で、このアーティクルで書きたいのは、指紋認証の表示を消すのに難儀したという話です。
今まで使っていたXperia Ace(初代)もOPPE A79も指紋認証は電源ボタンのところに配置されていましたので、電源に触れるとそのまま認証されたわけですが、OPPO Reno 13Aは画面の下の方、昔のiPhoneでいうとホームボタン(?)のあたりに指紋センサーが配置されています。スマホを少し動かすと指紋センサーの場所が光ります。
これを消したいけれどなかなか消し方がわかりませんでした。
設定 → 壁紙とスタイル → 指紋のアニメーション → なし、画面のライト効果 → なし
で消えてくれればいいのに、消えてくれません。
結局、
設定 → セキュリティとプライバシー → デバイスのロック解除 → 指紋認証と顔認証 → 指紋 → 指紋のアイコンを表示する をOFF
で消えました。
気のせいかもしれませんが、指紋のアイコンの表示をOFFにしたらバッテリーの持ちも良くなったような?
2025年08月23日 独り言
niftyのホームページサービス「ミニプラン」の提供終了のお知らせ
先日xdomainのサービス終了でひとつwebページを閉じたばかりですが、今度は私のwebページの本家であるところのniftyのホームページサービス「ミニプラン」の提供終了ということで、niftyのwebページも終了することになりました。
終了日 : 2025年9月30日(火)
niftyは今までは何らかの接続サービスの契約があればホームページサービスも使えていたので、メール維持もかねて月々250円+税くらいでメールとホームページを持てていたのですが、今回はホームページサービスが切り離されて有料化されたという事のようです。年額7,722円(税込)払って維持する意味が私のページにあると思えないので、segu.static.jpに一本化って事ですね。
niftyはブログサービスはまだ使えるようですが、私の場合スタティックなhtmlファイルを手元で作っているのでやたら重くて遅いブログサービスっていまいち好みじゃないのですよね・・・・・
2025年08月22日 このページのリフォーム,独り言
誰得おこづかいちょう本実装版イテレーション1
5月4日に試作版をここにアップしたysktrt.MoneyNoteビューワー試作版の後、いつかgoogle playに登録したいと思いながら本番バージョンの開発をヨチヨチ進めていました。
5月以降ずっと試作版を使っていました。どのように操作すると異常終了するか知っていますので、安全に使える範囲で使っていて、試作としてはこんな感じで十分かなって思っていたところです。
MVVMとかViewバインディングとかデータバインディングとかいろいろGoogle Geminiに教えてもらいながら、やっと5月の試作版と同等のことができるところまで匍匐前進してきました。アプリの安定性はまだ試作版の方がマシかな。
試作版では全く編集できなかったノート(このアプリではおさいふをノートと呼びます)の追加・並べ替えや、費目の追加・並べ替えができるようになりました。ノートの振る舞いを設定するダイアログは作りかけていますが、まだ設定した通りに動きません。制限事項が多すぎるのですが、とりあえず「ysktrt.MoneyNoteからエクスポートしたデータ」を持っていなくても使い始めることができなくはない(事実上できない)状態になったと思います。
しばらくは安定性とパフォーマンスを向上させて、それからダイアログで設定できるノートの振る舞いを作っていこうと思います。
このアプリは
このアプリはysktrt.MoneyNoteからエクスポートしたデータを読み込んで表示や簡単な編集を行うアプリのイテレーション開発の1サイクル目のバージョンです
- ysktrt.MoneyNoteからエクスポートしたデータを取り込むことができます
- 月・年・無期限のビューで収支を見ることができます。ただし無期限の場合は表示するデータ数は100件に制限しています。
- ysktrt.MoneyNoteはノート毎の収支を見ることができました。このアプリはノートごとの収支のビューと全ノートのビューがありますので、全ノートの収支をまとめて見ることができます
- 収支の備考欄の文字列で収支の表示をフィルタリングできます
- UIからはわかりにくいですが、ノートと費目を並べ替えることができます
- このアプリでエクスポートしたcsvファイルはysktrt.MoneyNoteでインポートすることができます
Android 12以上のスマホで使えるはず
制限事項
- 簡単に異常終了します
- タップしても何も起きないメニューやボタンがあります
- ノート(このアプリではおさいふをノートと呼びます)の追加・ノート名の変更はできますが、ノートの削除はできません。
- 費目の追加・費目名の変更はできますが、費目の削除はできません。
- カードや月極収支や分析などの機能は使えません
- その他いろいろなことができません
- 動きがカクカクしているのは私のスキルが足りないからです
ライセンスなど
- このアプリ自体はMITライセンスを適用します。
- このアプリはApacheライセンス Version 2.0で公開されているApache Commons CSVを使用しています。
ライセンス・ダウンロード
MITライセンス
Apacheライセンス Version 2.0
Apache Commons CSV
Download
誰得おこづかいちょうイテレーション1バグ多数
誰得おこづかいちょうを5月から使っていた実現可能性試作版から本実装版に切り替えました。
試作版で直したバグは直して作りこんだつもりだったし、PCのエミュレータでいろいろ動作確認しながら作っていたのにやっぱり実使用ではバグが出るわ出るわ。画面更新タイミングのバグが今のところ多いです。っていうか、viewPager2やRecyclerViewの扱い方、根本的に勘違いしていたらしいことに気が付きましたので、しばらくはそれ関連のデバッグかな。
既知のバグ
- 新しい月になって、その月の最初のデータを入力したとき、起動時に表示される画面(=各ノートの残額画面)まで一度戻らないと入力したデータが見えない
- 入力済の個々の収支データを更新するとき、別の月に日付を変えると各ノートの残額画面まで一度戻らないと更新したデータが見えない
使い勝手の問題
- ノート毎の収支一覧画面から新規データを登録したい
しばらくはデバッグの日々に入るのだな
私は作った本人だから気を付けて使えるけれど。