一つの問いを投げかけてみた話

 

人生の意味とは何か?

 

ない。

 

これは即答。

別に悲観的なわけでもないし、

なにか拗ねているわけでもない。

 

一方で、

 

どうしたら満足して死ねるか

悔いはないか

って考えると

おや?ってなりました。

 

もしくは、

じいちゃんは何をしたから満足して死んで

あるいは

なにかを悔いて死んだのか、

そんなことを思う余裕もなかったのか

そういうことを考えてみました。

 

当然、死ぬときは

あれやっときゃよかったな...なんて思いながら

死にたくはないから

 

どうしたら満足して死ねるか

 

この問いの答えを用意するのが

ぼくらの急務となるわけです。

 

まあ、すぐ用意できるなら苦労しませんて...

 

結論

先送り。

 

答えに近づくためのアプローチ

明日、自分が死ぬと仮定する。

特に00:00ジャストにしよう。

余命2時間44分。

 

...

......

........

...........全く実感が湧かん。

 

ってか仕事疲れで死んだら死んだやな、

くらいの雑な感覚。

頭が動いてない。

 

でもこれ真剣に考えると

絶対いい答えが出る気がするんだ...

 

別に1週間後とかでもあり。

 

ま、これで見つかった答えが

すなわち、自分のやりたいことなんでしょうな。

 

 

そもそも、難しいところ

「人生の意味」と「やれば満足して死ねる何か」

これらはダブってないか、切り分けられるのか

がわからないです。

 

つまり、

「人生の意味」

「人生の目的」

と考えると

 

「やれば満足して死ねる何か」

「やれば満足して死ねる何か目的」

と思ってもあんまり違和感がない。

 

ここで気づいたこと

「人生の意味」だとあまりにも壮大なんですね。

何か大きな意味(目的)があって

人生に意味があるとは

その大きな意味に向かっていきている、

という感があります。

 

一方、「やれば満足して死ねる何か」とは

自分でもわかっていないもので

ただ、暗黙の前提として

「人生をかけてほどの大層な何か」ではない

と思っていました。

 

つまり、後者の方は

一個に限らず複数存在するかもしれない。

重みが違うような気がすると。

 

うん、なるほど。

 

さらに気づいたこと

とても安直には、

「人生の意味」「やれば満足して死ねる何か」

です。部分集合の記号、覚えておいでですか?

ぼくは忘れてました。

 

「人生の意味」とは

「やれば満足して死ねる何か」を複数個達成すること

なり。

 

→ならば、「やれば満足して死ねる何か」

を全て達成したらば、人生は悔いなし。

となるか。

 

これはこれで

味気ないというかなんというか。

10個目標があったら10個クリアすればいいんでしょ?

っていう。

小学生の漢字テストか何か?

 

ここまでの結論

「人生の意味」とは

「やれば満足して死ねる何か」の集合体で

満足して死ぬには、

「やれば満足して死ねる何か」を己で

定義し順次こなしていくのが良い。

 

ここで、問題点はありまして

「やれば満足して死ねる何か」とは何か

を決めなければならない。

と、何かわかったようで

あんまり何もわかっていないという。

 

しかしまあ、

「やれば満足して死ねる何か」とは何か

→人生にふさわしいものは何か

→限られた時間でやらなければ、と思うものは?

→明日死ぬなら、どうする?

の問いに行き着くんですねえ...

 

これによって、限られた時間でやらなければ、

の優先順位もできるでしょう。

 

なお、いつ考えるかは未定。

 

自作(出費記録)アプリなかなかいけてますねえ...という話【個人開発】

 

こんにちは、たちつてとです。

おりゃ!と。

f:id:tachitutetoNosuke:20211202221144p:plain



最初から飛ばしていきます。

上の画像は、気分で改修し続けてて

僕独りが使用してる自作アプリです(Flutter/Dart言語)。

 

なお、画面のやたら赤いとこは

僕の極めて平均的な収入を隠してるだけです。

 

ざっくりモード(手入力)

ぱっと見で、察せるかと思うんですが

飲み物とかゲームとかの出費を記録しています。

ただし、10円単位の入力とかたるいので

(初期の)コンセプトとしてはざっくりの出費を知りたい。

本当は入力画面があって、

概算の出費を入力→出力(出力画面は上画像の左側)してます。

 

左側の画面をざっくりモードと呼びます。

 

ところがいざ作ると、細かい値というか

実際の口座からの出金と概算値が合うかも

気になり始める。

そこで作ったのが、上画像の右側。

 

厳密モード(CSV取り込み)

銀行のク○システムがあまりにもク○で

しょっちゅうシステムを経由するのも癪だったので。

CSVだけ頂戴することにして、

当アプリにCSV取り込み機能をつけました。

CSVとは、まあ実用的にはExcelファイルもどきです。

 

登録機能は未実装、まだ気分が乗らないので

 

こちらの表示内容に関しては、出金・振込を

銀行のシステムが記録してくれてるはずなので

金額としては厳密に正しいです。

 

右側の画面を厳密モードと呼びます。

 

※ざっくりモードでは実際に使った金額を

記録していくのに対し、

厳密モードでは口座からの出金を出すだけなので

「出費」と「出金」、ちょっと違うんすけどね。

ま、細かいことはいいやってなってます。

 

厳密モードとざっくりモードは

親子関係みたいな感じです。

厳密モードで出金を知り

ざっくりモードで出金の行方を知る

って感じですかね。

さっき思いついた。

 

いけてるなってとこ

さて、見た目とか機能とかもっともっと便利には

できる余地あるんですが。

 

結局、概算の出費金額と

口座の出金金額が概ね同じ値だったとこが

ちょっと嬉しかったって話です。

 

いや、もちろんそうでないとダメなんですが。

 

ざっくりモードはスマホのストレージに

データがあるからいつでも見れるし

厳密モードはCSVファイルさえあれば、

(ネットに繋がってなくても)同様にいつでも見れます。

 

わざわざログインとかしなくていいし

UIもシンプル(すぎ?)で色々操作する必要もない。

ファイル選んだり、ボタン押すだけ。

 

なお、アプリ通さなくても

スマホくんに任せて、

直接CSVファイル見ればええやん

というツッコミは無しで。

 

あと自作アプリなんで

煩わしい広告とかないの大きいですね。

繰り返しになりますが

UIがシンプルなので、操作に迷うこともないし。

 

思いついたこと

厳密モードの一つ一つの出金と

ざっくりモードの一つ一つの出費を

紐づける

→出金の内訳が記録できる?

と思いました。

 

例えば、20000円の出金の内訳は

5000円:メシ、3000円:あやしいツボ...

こんな感じです。

これが出金一つ一つに対して記録できるなあ...と

 

ま、やろうと思えばの話で

特にやろうとは思わなそうですな。

人にお説教とか注意とかするときに注意したいこと   

 

こんにちは、たちつてとです。

 

説教

目下のものに対して、教え導くために言い聞かせることや、

堅苦しい教訓を言う場合もある

 

今日(2021/11/29)仕事でうーん...

となったことがあったので、記事にする次第です。

 

といっても僕が何か説教されてなんじゃらほい

と言うわけではありませんが。

 

僕の場合ですが

幸い、人間関係には恵まれているようで

なるほど。

と思うような注意(というかアドバイスと言った方が

適当な気がしますが。)の方が多いです。

 

よくない説教・注意

具体性に欠ける。

これに尽きると思います。

言われた方は、はい。気をつけます。

としかいえません。

 

だし、抽象的な注意って

なんでもあり状態だと思うんで

ほぼ注意してないのと同じことだと思います。

 

ちなみにここまで

抽象的なことしか言ってないので

これで終わっちゃうとク○記事認定。

 

本日の出来事

このメッセージのために僕は記事を書いたんですが。

「場所A・道具Bの使い方が大変悪い。

客商売なのに、こんなことをやっていて大丈夫か。

こんな注意はしたくない。」

という旨の連絡が会社全体になされました。

 

いやいや、これはいくらなんでも

連絡の概要でしょ?と思った方は

おられるでしょうか。

 

いいえ、もちろん原文ではないんですが

ほとんど内容のレベルは同じです。

 

このメッセージ見ても

具体的にどうしたらいいかわからない。

該当者が僕かもわからない。

 

「使い方が悪い」とは言いますが具体的な話がないと

全部、各々の常識に委ねられますね。

連絡の発信者の常識、連絡を見た人の常識...

 

連絡者は言った気になれますが、

もしかすると、本来注意を受けるべき人は

「常識的に使っていた」可能性もあるので

そこが指摘されないと改善もされないという...

 

いや、そんなん常識ですやん、と。

そんなことぐらい分かろうよ...と。

これ言ったらおしまいだと個人的に思います。

 

なぜか。

それこそ、そんなことぐらいわかってくださいよ...

と思います。

(つっても、話の中心が何かにもよりますが。)

 

こういう注意なら直しやすい

例えばですが、

  • ほうきとちりとりが元の場所に戻っていない
  • 便器の中にトイレットペーパーが残っている→流してほしい
  • 変数名は何が格納されているかすぐわかるように
  • あいさつを大きな声で。

とか。下二つは僕言われるやつです。

 

あくまで個人的に思うことですが、

例えば、コード読みにくいわ〜って

めちゃくちゃざっくり言われるより、

このインデントとか変数名とか直して

って言われた方が何に気をつけるべきか

明らかですよね。

 

読みにくいわ〜って実質何も言ってないですからね。

 

あ、この例は別に実話(=愚痴)ではなくて

妄想で書いたシチュエーションです。

 

余談

これが理由で、僕あんまり

自己啓発書とかも読まないんですよね。

 

抽象的な話ってなんでもあり状態なので

受け手(聴く側・読む側)もなんかそれっぽい気になりがち

だと思います。

 

なんかそれっぽいことを読んで(言われ)て、

それっぽい気になって、

お互いになんとなく勝手に満足してはい終わり。

 

その実、何かみのりがあるかというと微妙。

ま、例えば読んだことをすぐ実践に移せる人は

素晴らしい!となるんかもですが。

 

僕は読もうが読むまいが

常にできることを必死こいてやるだけなので

あまり関係ないのです。

 

という裏側で久々になんか一冊読みたいな

という気もしている...。

【Flutter/Dart開発】csv形式をtxtファイルに直してアプリに取り込み、収支の一覧を表示した話(前編)【個人開発】

 

こんにちは、たちつてとです。

 

○○銀行のシステムが酷すぎるので、極力システムを経由せずに厳密に出入金を記録する機能を作る話

の過去記事では、CSVファイルを

銀行システムからダウンロードし、

出費管理アプリに取り込むことで

極力銀行のシステムを介さずに、

出費等を把握したい、ということを話しました。

 

とりこみのプレビュー?みたいな画面を作ったので

記事にする次第です。

 

なお、上記の通りCSVファイル自体は

ダウンロードしてあって、Google Drive

スマホのストレージなどから

CSVにアクセスできる状態というのが

前提(というか準備?)となります。

(file_pickerでDriveやストレージへ

アクセスするため)

 

結論

  • file_pickerかandroidcsv形式に対応してない?
  • しゃあないので、csv→txtのひと手間を添えることに
  • 表示の仕方や取り込み方は別記事、主に失敗談

追記

csvが悪いんじゃなくて、ファイルそのものの問題ぽい

ダウンロード→ファイルをコピペ

コピペで複製したファイルは読み込める

×コピペの複製元のファイルはエラー

 

どゆことやねん...。

 

CSVを取り込むプレビュー的な

以下、成果物の画面遷移になります。

デザインはこれ以上ないくらい雑っす。

f:id:tachitutetoNosuke:20211128181355p:plain

「+」ボタンでスマホのファイル選択、

内容を「見にいく」。

拡張子が「txt」なのは後述します。

(一時フォルダに保存とかしてるわけではなく、

単純にファイルの内容を

参照するのを待機してる状態です。)

 

画像にメモるの忘れてたんですが、

↑最後の画像のファイル名のとこは、

ボタンになってて押下すると↓画像につながります。

f:id:tachitutetoNosuke:20211128181401p:plain

そして実際のファイル内容の表示になります。

赤いところは、僕の年収がわかっちゃう(いやん)ので

伏せてあります。

 

一行が結構長めなので、

横スクロールで適宜見れるようにしています。

まあ、クレカの払い出しなんて一回だし

ATMの出し入れも月3,4回ないくらいなので

表示の改善の余地はあります。

 

スクロールとするよりは、

CSVでの一行をアプリの方で二行に分けて表示した方が

便利そうではあります。

 

まあ、おもろいからよし。

 

なお、この状態は

CSVの内容を一覧表示してるだけで

登録とかはしてないです。

(ですので、プレビュー的)

 

拡張子について

ここからわからんくて悔しかったところ。

結論を書くと、CSVファイルの内容取得が

どうしても上手くいきませんでした。

しかし、txtファイルでの読み取りはできたので

とりあえずcsv→txtとファイルの拡張子を変更して

インポートしてます。

 

さて、file_picker(4.2.4)という

パッケージを使っているんですが。

 

1.わからんだとこ

まずcsvの選択のみでフィルターをかけると

Androidくんの方が悪いのか

csv形式も選択不可にしちゃってる...

→結局、CSVのファイル選択できず...

 

// 以下、ダメな例
FilePickerResult? result =
await FilePicker.platform.pickFiles(
type: FileType.custom,
allowedExtensions: ["csv"]// CSVファイルだけを選択肢に(作戦1)
);

if (result != null) {
PlatformFile file = result.files.first;

if (file.extension != "csv") {// CSVファイル以外が選択ならNG(作戦2)
_showAlertDialog(buildContext);
return null;
}

File newFile = File(file.path.toString());
//String name = basename(newFile.path);//.replaceAll(RegExp(r"\..*"), "");

//newFile.copy("temp/$name");

return newFile;

(外部パッケージ:file_pickerの)PlatformFlieの

プロパティallowedExtensionsで"csv"を設定しても

csvが選択できない...

↑ソースのコメント:作戦1が失敗。

 

 

仕方ないので↑のソースの

作戦1のあたり、

type:Filetype.any

という指定だけに直しました。

(加えてallowed〜を削除)

 

で、PlatformFlieのプロパティextensionを利用して

if(file.extension != "csv"){

 return ;// CSV以外なら強制終了

}

と選択ファイルのチェックを書いてました。

作戦2は上手く機能しており

あとはCSVの内容を取り出すだけでした。

 

2.わからんだとこ

しかし、今度はファイル読み込みで

なんかわからんけど失敗...

 

final File file = File(ファイルパス);
Stream fread = file.openRead();

fread
.transform(systemEncoding.decoder)
.transform(const LineSplitter())
.listen((String row) {
    // 変数rowにCSVの一行一行が入る予定だった...
}

こんな感じのソースを書いていて

一行目のファイルパスにCSVのパスを渡せば

ほぼ実装は終わっていたはずでした。

 

FormatException: Unexpected extension byte (at offset 1)

 

おわた\(^o^)/

 

正直原因(というか英語が)わからず。

もちろんググりはしました。

 

作戦2、失敗。

 

あまりにもわからず、魔がさしたのか

試しにcsv→txtに拡張子直してみたんです。

csvは、たかがカンマ付の文字列データですし、

少なくともmacはtxtでも表示してくれたので。

 

通った...

 

はい。

 

file_pickerかAndroid

両方が悪いのかも分かりませんが

csv相性悪い?

 

追記

上述の通り、ファイルの問題?

コピペしたファイルは取り込めるという謎。

 

まとめと補足

  • file_pickerかandroidcsv形式に対応してない?

→現象としては、csvファイルも

選択不可になってしまいました。

  • しゃあないので、csv→txtのひと手間を添える
  • 追記:ではなく、ファイルをコピペする手間を添える

→読み込みに失敗するので、このような処置をとりました。

 

 


基礎から学ぶ Flutter


Flutter モバイルアプリ開発バイブル

エンジニア発オンラインスクール【RUNTEQ】

【Flutter/Dart開発】twitterのような#ハッシュタグ検索をしてみたい話(実践編)

 

こんにちは、エメラルドどハマり中おじさん

たちつてとです。

 

過去記事で

【Flutter/Dart開発】twitterのような#ハッシュタグ検索をしてみたい話(理屈編)

表題通りタグ検索の作るためのロジックを

考えてみたんですが。

 

実際に作ったで。という話を忘れてしまいそうで

悲しかったので記事にする次第です。

基本的に作戦は過去記事にある(はず...)。

 

大前提

以下にはソースを書いていくんですが

流石に全てを載せても仕方がないので

箇条書きで前提を書きます。

  • 雑学等を保存するメモアプリが主役
  • メモアプリにはオリジナルクラス「Memo」がある
  • 「Memo」には「#タグ」に相当するプロパティがある
  • 「#タグ」プロパティには、半角スペースを境に複数のタグを格納している

こんな感じです。

f:id:tachitutetoNosuke:20211127134504p:plain

 

順に補足

メモアプリにはオリジナルクラス「Memo」がある

「Memo」クラスには、「#タグ」プロパティの他に

「タイトル」・「メモ内容」というものがあります。

 

「Memo」には「#タグ」に相当するプロパティがある

過去記事での話では、

「#タグ」プロパティをわざわざ用意する必要があるか

ということに、簡単に触れました。

→まとめると、めんどくさいので用意しました

 

これ以降出番はありませんが、

入力画面は以下の画像です。

f:id:tachitutetoNosuke:20211127134942p:plain

画像のようにタグを登録するテキスト欄を用意しています。

 

「#タグ」プロパティには、半角スペースを境に複数のタグを格納している

りんご バナナ もも...

こんな感じで、単語(半角スペース)単語(半角スペース)...

という保存形式です。

 

プロパティをタグ1、タグ2...と

それぞれに一個ずつ保存する方法も考えましたが、

参考もとのtwitterはタグ同士を空欄で区別してましたから

これから着想し実装しました。

 

実際の登録形式とかは知らないです。

 

実際のコード

以下、方針と実際のソースコードになります。

作戦概要

  1. データからタグをList型に格納
  2. 重複があるので、重複を除く
  3. 格納したタグをfor文で、1つ1つ配置

 

登録メモデータからタグを取得する

登録してあるデータからタグをList型に格納。

基本的にはコメントしてある通りです。

「Hive〜」という記述は、

ストレージからデータを取得するための文なので

適宜、参考/無視でお願いします。

 

  1. メモループを回す
  2. ループ内で空白付きのタグ(=tag1というプロパティ)を分解
  3. さらに1つ1つのタグをListに格納
List<Category> _cates = [];// オリジナルクラス Category 重要ではない
List<Memo> _memos = [];// オリジナルクラス Memo(の中のtagがやや)大事
List<String> _tags = [];// タグ格納用 やや大事
Hive.openBox<Memo>(_memo).then((value) {// 保存データの読み込み
Box<Memo> mesBox = value;
_memos.clear();
_tags.clear();
_cates.clear();

for (Memo memo in mesBox.values) {// 保存データを(検索条件で)表示分add
if (memo.categoryCd == _categoryCd) {
if (new RegExp(r'^.*' + _contTitle.text + '.*').hasMatch(memo.title) &&
new RegExp(r'^.*' + _contMemo.text + '.*').hasMatch(memo.memo)) {
_memos.add(memo);
}
}

for (String tag in memo.tag1.split(' ')) {// ※保存データを分解し格納
_tags.add(tag);// 保存データ全てからタグをadd※※
}
_tags = _tags.toSet().toList();// ※※タグダブりがあるのでSet型にして解消
}
});

 

やや細かい補足

最後のtoSet.toList()という記述。

一度、Set型という型に変換しています。

Set型というのは、値の重複が許されないList型と思えばよくて、

この変換で、重複をのぞいてくれます。

 

なお、重複が発生する理由を具体的に述べると、

全データを1回目のループで回すので

1回目:りんご

2回目:りんご

3回目:バナナ

とかってあると、

Listの中に「りんご」タグが2個格納

→表示も2個表示

となってしまいます。

 

下手にロジック組むのも面倒だったので、

全データでループかけるのはそのままで

後からtoSetで重複を取る方針にしました。

 

取得したタグを画面に表示する

上述した通り、for文で取得したタグを配置しています。

Widget build(BuildContext context) {
if (asyncWidget != null) {
return Scaffold(
backgroundColor: Color.fromRGBO(240, 248, 255, 1.0),
persistentFooterButtons: <Widget>[// 画面下部に固定表示
Column(children: <Widget>[
SingleChildScrollView(
scrollDirection: Axis.horizontal, // 横スクロール仕込み
child: Row(children: [
for (String tag in _tags) ...{// タグ1つ1つを画面に横並べ
if(tag.trim() != '')...{
Container(
height: 90,
child: TextButton(
onPressed: () {// タグをタップで検索
Navigator.push(context,
MaterialPageRoute(builder: (context) {
return MemoList(tag: tag);// 検索
}));
},
child: Card(
child: Container(
//height: 50,
padding: EdgeInsets.all(10),

child: Text(
'#' + tag,// 見た目のために#をつける
style: TextStyle(
fontSize: 17,
color: Colors.blueAccent,
decoration: TextDecoration.underline,
)),)// 見た目のために下線とかをつける
),
),
),
}
},
]),
),
])
],
);
}
return Scaffold(//気にしないでOK
appBar: AppBar(
title: const Text('loading...'),
));
}

この時点で、タグデータの取得ができているので

あとは簡単...つっても横並びに表示させるので

ちょっと時間取られたんですが...

 

大事なのは2点で、

  • タグ表示エリアをpersistentFootterButtonsで画面下部に固定している
  • SingleScrollViewで横スクロールを実装している
  • for文で横並びにタグを設置している

これくらいだと思います。

あとは、タップイベントに何を仕込むかとか

見た目をどうするかという問題だけです。

 

僕は、タップイベントには

検索機能(まあ、普通ですよね)を入れてます。

検索機能はまた別の話なので割愛します。

 

見た目をどうするかについては、

まあ、それっぽくしました。

twitterリスペクトってことで

「#」+登録タグ名って感じで表示してます。

 

 

以上となります。

この実装は結構楽しかった。

ソースは役立たないかもしれませんが

考え方などなんかの参考になれば幸いです。

 


基礎から学ぶ Flutter


Flutter モバイルアプリ開発バイブル

エンジニア発オンラインスクール【RUNTEQ】

○○銀行のシステムが酷すぎるので、極力システムを経由せずに厳密に出入金を記録する機能を作る話

こんにちは、たちつてとです。

表題通り、現状を打開するために動こうという

社会人の鑑のような記事です。

 

イントロ.愚痴

僕が利用している銀行の一つに

○○銀行があるんですが、そのシステムがひどい。

Web上に明細等があるので、

定期的に確認しに行かないとなんですが。

 

訪れるたびにひどいわ。と思う次第です。

  • 過去の収支が数ヶ月しか見れない⇨期間はぼかしてるけど、短すぎ。
  • ログインすると、表示期間が今日〜今日⇨誰が今日だけの収支見たいねん。
  • あるサービスに新規登録するものの、既存のサービスと同期してないのか過去データが出ない⇨言葉でんわ。
  • エラーがコードで表示される(10XYZとか)→日本語で出ないので、解決策がわからない⇨草。
  • ブラウザの「戻る」で画面遷移すると、表示に失敗しログインし直しが強要される⇨草。

いや〜描いてるだけでイライラしてくる内容ですね。

どの銀行か特定されないように、かなりぼかしてますが

ここまで文句を書くとわかるのでは?ってレベル。

 

あ、ちなみにみずほではありません。

僕は、使ってなくてよかった...と安心した勢なので。

 

それともWeb通帳でありがちな問題なんですかね。

いやでも三井住友のは、↑の4つくらいはクリアしてましたが...

 

ということでアプリに追加機能をつけたい

何回か記事にしていますが、出費管理アプリを作ってます。

【個人開発】自分で作った出費管理のスマホアプリが地味に便利だった話【Flutter/Dart開発】

↑リンクでは、めちゃんこざっくりで、こんな使い方してます。

ってのを書きました。

 

で大事なところなんですが、今ある使い方としては、

出費があるたびに

ざっくりした金額

毎回手入力で記録していく

ってところです。

 

アプリ製作当初のコンセプトとしても

「ざっくり」だったんですが。

 

いざ作り上げてみると、

「通帳の収支とちゃんとあってるか」

(もちろん概算で、です)

も気になるものです。

 

結局、アプリの方には

  • ざっくり把握モード(既存)
  • 厳密確認モード(新規)

こんな感じでモードを設けようと思っています。

上記の通り、収支記録は銀行の方の電子通帳には

数ヶ月しか記録されないんで、

自分で記録していく必要があります。

したがって、アプリ製作!です。

 

作戦会議

ところで、どうやって厳密に正しいデータを

持ってくるかなんですが。

もちろん、手入力で一個一個入れるのはだるい。

 

幸い、例の銀行には収支一覧を

CSV出力することができましたから、

これを利用します。

CSVExcelもどきみたいな感じです。

 その実中身はコンマ付のデータ。

 Excelより(装飾とかの意味で)大変素朴。

 

作戦は以下です。

  1. ク◯システムよりCSVダウンロード
  2. Google Driveとかに保存
  3. アプリで読み込みにいく
  4. 適当に加工して、アプリに保存・表示

こんな感じ。

4番「加工して」というのは

新しくImportDataみたいなクラス作って

incomeとかdateとかプロパティ作って...

CSV読み込み→一行一行をストレージに登録

という意味になります。

 

できそうではありませんか?

 

まあ、今のところ2,3番を細かくすると

  • Google Drive等にCSVを保存
  • スマホのストレージにCSV保存
  • アプリ側でファイル選択
  • 上述の通り、クラス作って順次登録

とややめんどいことを想定しています。

理由は、こったこと実現しようとすると

プログラミングするのに

まあまあめんどくさそうだから。

 

まあ、CSVダウンロードして

Google Driveに保存するだけなんで

そんな手間でもないですわ。

 

むしろ、最低一回は

例の銀行のシステムを経由しないといかん

ことの方がしんどい。

 

今回はここまで。

こういう風に頭いい(実際に頭いいかはともかく)

ことを考えるのは楽しいですな。

 


基礎から学ぶ Flutter


Flutter モバイルアプリ開発バイブル

エンジニア発オンラインスクール【RUNTEQ】

【個人開発】自分で作った出費管理のスマホアプリが地味に便利だった話【Flutter/Dart開発】

 

こんにちは、たちつてとです。

 

今回は、自分で作ったアプリを自画自賛

(して、日頃の行いを反省)する記事です。

表題通り、出費を自分で入力して

スマホのストレージに記録していくアプリを自作しています。

 

で、便利機能はあんまりないものの

最低限の記録処理はできているので、

実際に独りで利用しています。

 

↓実際のアプリです。

f:id:tachitutetoNosuke:20211123164938p:plain

画面を見ると、ある程度何が表示されているかは

わかるんじゃないでしょうか。

 

機能概要

1行目だと、2021/11/01に

カップ麺と昼飯のおかずに550円使った。」

という記録で、おかずがないと寂しいので

「必須だった」というカテゴリの出費になっています。

 

で、2行目だと、GBASPってなんじゃらほい

かもしれませんが、

ゲームボーイアドバンスSPのことです。

7000円くらいでした

(5990円だった気が...他になんか買ったんかな)。

カテゴリとしては、「今月限りのやつ」。

(※カテゴリ名は、自分(ユーザー)が好きに

変えることのできるようにしてます)

 

一行一行に詳細出てもうるさいので、

「+」「ー」ボタンで開閉できるようにしました。

画面の通り、カテゴリが違うと、背景色も違うと。

これで、どの出費が節約できる余地になるかを

すぐ判断できます。

 

で画面最下部の方に表示されている金額は、

もちろん出費の合計になります。

 

まあ、感覚的にもわかりやすいんじゃないでしょうか。

 

ムダを数値と色で

で、なんですが。

もっとわかりやすく、ムダを知りたいと。

 

下画像、ほぼ紫になってますやんか。

各行を横スライドさせると、一時的に非表示になって

最下部の合計表示も画面に出ている項目のみ

集計になります。

f:id:tachitutetoNosuke:20211123164933p:plain

11/26日分は先月のクレカ分なので

今月はまあ、2万くらい使っちゃってるわけですが...

(2021/11/23日現在)

 

それで感想

しかも内容としては、8割が

ゲームボーイアドバンスSP

(ファイアレッドとかの古い)ポケモンのソフトなんですよね...

 

加えて、来月12月には4000円のクレカ支払いもある。

GBASPの二台目購入分です。

二台ないとポケモン通信できませんからね。

 

一方で、この事実にぐっと腹の底が重くなる気分になります。

あくまで気分ですが。

 

やっぱちょっと使いすぎたよね。

淡々と数字で出されると、地味にきついですね。

自分で作ったもんなんですが。

 

2021/11/23は、勤労感謝の日、祝日で休みなんですが

この2マンをすでに使っているという事実により

特に出費はしませんでした。えらい。

なんならもう一週間耐えたいところ...

 

要はこういう話

スマホっていう大抵の場合持ち歩いてるものに

すぐ出費状況を確認できるアプリが入ってんのは

いいよね。って話でした。

 

これによって、

財布の紐を閉めるか緩めるか

すぐ判断できますから。

 

今までは、なんとなく頭に

これまでの出費の合計があるものの、

多分計算漏れとかはしてたと思うので

どうしても小さく見積もりがち

→後になってこんなに出費したか...

ってなってました。

 

これがなくなりますから。

今月は4マンまで...!とかって思ってる時にも

現状がわかりやすいですね。

 

あと僕の話

いや最初から最後まで僕の話なんですけど。

感覚的には、家計簿をつけてるんだなって

思われるかもしれません。

 

しかし、僕はそう思ってなくて。

大変どうでもいいかもしれませんが、

アプリには収入の登録機能はないし、

金額はざっくりしたものを入れてますから。

(例)

  645円→700円で記録

みたいな。

 

一円単位で入れるのもめんどいし、

そこまで厳密なものは求めてないし。

 

あとお気づきかもしれませんが、

なんの出費かメモるの時も

割と適当で、

(例)

  • ラーメン→らめん
  • 「スケール 生命、...的法則」→かがくのほん

とかです。何しろ入力だるいので。

 

これで2ヶ月弱くらい

いちいち出費を手入力してますが

続いているのは、このラフさのおかげか

思います。

 

家計簿とか続かない...って方、

ちょっとラフにやってみたらどうでしょうか。

 

え、なんの話?

 


基礎から学ぶ Flutter


Flutter モバイルアプリ開発バイブル

エンジニア発オンラインスクール【RUNTEQ】