ラズパイ自宅WEBサーバ構築 ubuntu22
第16回 勘定システム
2026.02.18
WEBインターフェイスを利用した勘定システムを作成しました。
令和7年分の確定申告まで利用していた勘定システム・アプリケーションから
勘定科目、勘定元帳(仕訳日記帳)、家事按分データをCSV形式でダウンロード、解析して
個人事業主向けのシンプルな会計システムに纏めました。
WEBサーバにApache、DBMSにMySQL(MariaDB)、処理言語にはPHPを使用しています。
●テーブル定義(MySQL/MariaDB)
勘定科目
create table acc (
acc int unsigned not null, -- 勘定科目1
acc_sub int unsigned not null, -- 勘定科目2
name varchar(30), -- 勘定科目名称
business float not null, -- 按分比率/ビジネス
homework float not null, -- 按分比率/家事
PRIMARY KEY (acc_sub),
KEY (acc)
) ENGINE=MyISAM default charset=utf8mb3 auto_increment=1;
この程度のシステムであれば、リレーショナルデータベースにする必要もなく、
また試作段階では、テーブル定義変更も容易なISAMが使い易いです。
勘定科目データを登録します
insert into acc values (100,100,'現金',0.0,100.0);
insert into acc values (100,101,'現金期首残高',0.0,100.0);
insert into acc values (110,110,'PayPay銀行',0.0,100.0);
insert into acc values (110,111,'PayPay銀行利息',100.0,0.0);
insert into acc values (110,112,'PayPay銀行期首残高',100.0,0.0);
insert into acc values (113,113,'三井住友銀行/普通預金',0.0,100.0);
insert into acc values (113,114,'三井住友銀行利息',100.0,0.0);
insert into acc values (113,115,'三井住友銀行/普通預金期首残高',0.0,100.0);
insert into acc values (130,130,'売掛金',100.0,0.0);
insert into acc values (140,140,'有価証券',0.0,100.0);
insert into acc values (160,164,'未収金',100.0,0.0);
insert into acc values (160,167,'仮払金',100.0,0.0);
insert into acc values (290,290,'事業主貸',0.0,100.0);
insert into acc values (290,298,'資産譲渡損',100.0,0.0);
insert into acc values (300,301,'買掛金',100.0,0.0);
insert into acc values (330,333,'貸倒引当金',100.0,0.0);
insert into acc values (390,390,'事業主借',0.0,100.0);
insert into acc values (500,500,'売上高',100.0,0.0);
insert into acc values (500,505,'売上高/amazonコミッション',100.0,0.0);
insert into acc values (500,590,'売上高/雑収入',100.0,0.0);
insert into acc values (740,740,'租税公課',100.0,0.0);
insert into acc values (740,741,'固定資産税',100.0,0.0);
insert into acc values (740,742,'国保税',100.0,0.0);
insert into acc values (703,703,'消耗品費',100.0,0.0);
insert into acc values (704,704,'荷造運賃',100.0,0.0);
insert into acc values (705,705,'通信費',100.0,0.0);
insert into acc values (705,776,'IIJmio',50.0,50.0);
insert into acc values (706,706,'広告宣伝費',100.0,0.0);
insert into acc values (707,707,'接待交際費',100.0,0.0);
insert into acc values (708,708,'損害保険料',0.0,100.0);
insert into acc values (709,709,'診療費',0.0,100.0);
insert into acc values (710,710,'水道光熱費',0.0,100.0);
insert into acc values (710,711,'水道料金',10.0,90.0);
insert into acc values (710,712,'東京電力',5.0,95.0);
insert into acc values (720,720,'旅費交通費',100.0,0.0);
insert into acc values (733,733,'福利厚生費',100.0,0.0);
insert into acc values (734,734,'外注工賃',100.0,0.0);
insert into acc values (750,750,'減価償却費',100.0,0.0);
insert into acc values (760,760,'雑費',100.0,0.0);
insert into acc values (760,761,'新聞図書費',100.0,0.0);
insert into acc values (760,762,'会議・打合せ費',100.0,0.0);
insert into acc values (760,765,'支払手数料',100.0,0.0);
insert into acc values (770,770,'システム開発',100.0,0.0);
insert into acc values (770,771,'NTT東日本光回線',95.0,5.0);
insert into acc values (770,772,'ドメイン維持管理費',100.0,0.0);
insert into acc values (770,774,'ソフトウェア開発費',100.0,0.0);
insert into acc values (770,775,'デザイン資料費',100.0,0.0);
insert into acc values (770,777,'GMO固定IPサービス',100.0,0.0);
insert into acc values (790,790,'貸倒金(損失)',100.0,0.0);
insert into acc values (910,910,'社会保険料控除',100.0,0.0);
insert into acc values (920,920,'生命保険料控除',100.0,0.0);
勘定科目は事業に合った科目を作成してください。
この例では、勘定科目1の700番台が経費で、水道光熱費のみを集計したい場合は、710で絞り込みます。
単独項目の集計は勘定科目2で絞り込みます。
また、在庫を抱える商売をされる場合は、棚卸などの項目を追加する必要があります。
家事按分は仕事と家事で分けていますが、合計100なので、一方のみの項目でも足りてしまいます。
勘定元帳
create table cash (
seqno int unsigned not null auto_increment, -- SEQNO
registdate date not null, -- 摘要日付
status varchar(1) not null default 'A', -- 登録区分
cashtype int not null, -- 預金種別
acc int not null, -- 勘定科目1
acc_sub int not null, -- 勘定科目2
acc_name varchar(64), -- 勘定科目名称
contents varchar(255), -- 摘要内容
payment int default 0, -- 出金
received int default 0, -- 入金
PRIMARY KEY (seqno),
KEY (registdate),
KEY (cashtype),
KEY (acc),
KEY (acc_sub)
) ENGINE=MyISAM default charset=utf8mb3 auto_increment=1;
status(登録区分)`は、W:保留 A:有効 T:雛型のいずれかです。
cashtype(預金種別)には勘定科目テーブル・勘定科目1の100番台の現金あるいは各種預金口座の科目コードがセットされます。
前年各月に決まって入出金が行われた内容を年度を変更して事前に登録しておきます。
insert into cash values (58,'2026/01/06','W',110,710,712,'東京電力','電気料金11月分',7036,0);
insert into cash values (59,'2026/02/03','W',110,710,712,'東京電力','電気料金12月分',9256,0);
insert into cash values (60,'2026/03/03','W',110,710,712,'東京電力','電気料金1月分',14517,0);
・・・・・
insert into cash values (70,'2026/02/02','W',110,770,771,'NTT東日本光回線','12月利用料金',13929,0);
insert into cash values (71,'2026/04/02','W',110,770,771,'NTT東日本光回線','2月利用料金',13929,0);
insert into cash values (72,'2026/06/02','W',110,770,771,'NTT東日本光回線','4月利用料金',13929,0);
・・・・・
この際、statusは保留(W)に設定します。
勘定科目名称(acc_name)は勘定科目テーブル内の名称(name)と同一で重複していますが、
システム開発時、デーブル定義の最適化時に誤って変更した場合に修復可能なように設定しています。
では帳票操作をしていきます。

最初に現金、各種預金の期首残高を登録します
※画面は説明のため簡略化しています。

その都度、経費などを入力していきます。
statusの雛型(T)は頻繁に使う項目を事前登録しておいて、複写して利用します。
次に登録済みデータを表示してみます。
例えば1月の登録情報は次のSQLを実行することで得られます。
select seqno,registdate,status,cashtype,acc_sub,acc_name,contents,payment,received from op31_cash where ('2026-01-01' <= registdate) and ('2026-02-01' > registdate) order by registdate asc;

9が並んでいるところは実際には正確な金額がはいっています。
一覧最後の2行は銀行から引き落としたお金を現金として登録しています。
登録データは摘要内容をクリックすると更新・削除を行えるようになっています。
2か月後の4月のデータを表示してみます。


確定した段階で金額を更新、statusをA(有効)に変更します。
確定申告用のデータ集計をしてみます。

収入・支出の部の計算
収入は勘定科目1の値が500(売上)を、支出は経費(700番台)を集計します
select received from cash where acc=500 and ('2026-01-01' <= registdate) and ('2026-02-01' > registdate) and status != 'T';
select payment from cash where acc like '7%' and ('2026-01-01' <= registdate) and ('2026-02-01' > registdate) and status != 'T';
を実行して、received と payment を各々足し込んでいきます。
これを各月で繰り返します。
経費内訳の計算
経費内訳の計算は、700番台の各勘定科目でSUMを取ります。
select sum(payment) from cash where acc=703 and ('2026-01-01' <= registdate) and ('2027-01-01' > registdate) and status != 'T';
上記は消耗品費(acc=703)を算出しています。これを700番台の各勘定科目で繰り返します。
保険料控除の計算
保険料控除は勘定科目1の900番台で取得されます。
select acc_name,contents,payment,from cash where acc like '9%' order by acc_sub;
現時点での各種残高計算
現金(cashtype=100)の場合
select sum(payment) from cash where cashtype=100 and registdate <= '2026-02-17';
select sum(received) from cash where cashtype=100 and registdate <= '2026-02-17';
'2026-02-17' は date('Y-m-d') で求めた日付です。
2月17日時点での口座残高は入金合計(received)から支払合計(payment)を引いて算出されます。
同様に、cashtype を変更して、各銀行口座の残高を算出します。
●確定申告
来年以降、自作勘定システムで集計結果をもとに、来年は国税庁・確定申告書等作成コーナーから申告をしようと思っています

国税庁 確定申告書等作成コーナー
青色申告決算書・収支内訳書作成コーナー
決算書作成(青色申告)編(PDF/2.6MB)
青色申告決算書・収支内訳書を作成した後に確定申告書を作成する手順編(PDF/1.51MB)
|
Raspberry Pi(ラズベリー パイ)は、ARMプロセッサを搭載したシングルボードコンピュータ。イギリスのラズベリーパイ財団によって開発されている。
たいていのことは100日あれば、うまくいく。長田英知著
「時間がなくて、なかなか自分のやりたいことができない」
「一念発起して何かを始めても、いつも三日坊主で終わってしまう」
「色んなことを先延ばしにしたまま、時間だけが過ぎていく」
そこで本書では、そんな著者が独自に開発した、
まったく新しい目標達成メソッド「100日デザイン」について、
その知識と技術を、余すところなくご紹介します。
まんがで納得ナポレオン・ヒル 思考は現実化する
OLとして雑務をこなす日々に飽き足らず、科学者だった父が残した薬品を商品化すべく、起業を決意した内山麻由(27)。彼女はセミナーで知り合った謎の女性からサポートを得ながら、彼女と二人三脚でナポレオン・ヒルの成功哲学を実践し、さまざまな問題を乗り越えていく。
ヒル博士の<ゴールデンルール>に従い、仕事に、恋に全力疾走する彼女の、成功への物語。
今日は人生最悪で最高の日 1秒で世界を変えるたったひとつの方法 ひすいこたろう著
偉人の伝記を読むと、最悪な日は、不幸な日ではなく、新しい自分が始まる日であることがわかります。最悪な出来事は、自分の人生が、想像を超えて面白くなる兆しなのです。偉人伝を読むことで、このときの不幸があったおかげで、未来にこういう幸せがくるのかと、人生を俯瞰する視線が立ち上がるのです。
ご飯は私を裏切らない heisoku著
辛い現実から目を背けて食べるご飯は、いつも美味しく幸せを届けてくれる。
29歳、中卒、恋人いない歴イコール年齢。バイト以外の職歴もなく、短期バイトを転々とする日々。ぐるぐると思索に耽るけど、ご飯を食べると幸せになれる。奇才の新鋭・heisokuが贈るリアル労働グルメ物語!
【最新版Gemini 3に対応!】できるGemini (できるシリーズ)
Geminiを「最強の知的生産パートナー」として使いこなすための、実践的なノウハウを凝縮した一冊です。
基本的な操作方法から、具体的なビジネスシーンでの活用、日々の業務を自動化するGoogle Workspaceとの連携、さらには自分だけのオリジナルAIを作成する方法まで余すところなく解説します。
Rustプログラミング完全ガイド 他言語との比較で違いが分かる!
Rustの各手法や考え方を幅広く解説!
500以上のサンプルを掲載。実行結果も確認。
全24章の包括的なチュートリアル。
ポチらせる文章術
販売サイト・ネット広告・メルマガ・ブログ・ホームページ・SNS…
全WEB媒体で効果バツグン!
カリスマコピーライターが教える「見てもらう」「買ってもらう」「共感してもらう」すべてに効くネット文章術
小型で便利な Type-C アダプター USB C オス - USB3.1 オスアダプター
Type-C端子のマイコンボードをこのアダプタを介して直接Raspberry Piに挿すことができます。ケーブルなしで便利なツールです。
Divoom Ditoo Pro ワイヤレススピーカー
15W高音質重低音/青軸キーボード/Bluetooth5.3/ピクセルアート 専用アプリ/USB接続/microSDカード
電源供給USBケーブル スリム 【5本セット】
USB電源ケーブル 5V DC電源供給ケーブル スリム 【5本セット】 電源供給 バッテリー 修理 自作 DIY 電子工作 (100cm)
|