2020年1月27日月曜日

WebView と HTTPS

HTTPS の証明書の有効期限が切れていたりしてエラーになる場合、WebView では読み込みがされないという(デフォルトの)挙動結果となるようだ。

また、エラーの場合でも強制的に読むようにオーバーライドもできるようである:Android WebView not loading an HTTPS URL

2020年1月17日金曜日

複式簿記システムの構築

個人的に青色申告による複式簿記が必要なので、そのための必要十分なシステムを構築する。
(市販の会計ソフトは決して「必要十分」ではなく、単なる「十分」(つまり不必要な余計な要素を過剰に備えている)ので、論外。)

おおまかなイメージとしては:

  • 逐次発生する会計イベントは人手によって「仕訳」してデータを入力し、1 年を通じてデータベース(仕訳帳)に蓄積する
  • 年間の蓄積された仕訳帳に基く年度末の「総勘定元帳の集計」と「決算整理仕訳」と「損益計算書の作成」は、Python プログラムで自動化する。

具体的には:

  • 仕訳帳は Google SpreadSheets を利用して家族で共有
  • 集計・決算整理・損益計算は、Google SpreadSheets から TSV をダウンロードして、SQLite にインポートし、Python で SQL を駆動してそれらの定型化された作業を行い、結果を複数の TSV としてアウトプットする。最後にそれら TSV を単一の .xlsx ファイルにマージして一つの総勘定元帳として得る。

仕訳帳のスキーマ(Google SpreadSheets)

create table Journal (
 id integer primary key,
 parent_id integer,
 date date,
 amount integer,
 debit text,
 credit text,
 description text
);

ID は Google SpreadSheets 上では、単に「行番号+1」の計算式を使っただけのもの。

親IDは、借方 or 貸方が諸口(複数科目)となる場合の「一対多」または「多対多」の仕訳のために用意した要素。グルーピングするエントリーのIDを親ID として指し示す。

通常の一対一の仕訳
「ID」「日付」「金額」「借方科目」「貸方科目」を示し、「親ID」は NULL
一対多(または多対多)の仕訳の親エントリー
「ID」「日付」を示し、「親ID」は NULL
「金額」「借方科目」「貸方科目」は両方とも「諸口」の場合は NULL だが、片方が単一の場合は、そのままその科目と金額を使い、一方だけ諸口とすればよい。
一対多(または多対多)の仕訳の子エントリー
「ID」「親ID」「金額」「借方科目」「貸方科目」のみを示し、「日付」は NULL

プロトタイプ

  1. Google SpreadSheets からは手動で journal.tsv をダウンロードする。
  2. pptsv.py で TSV をプリプロセスする(日付や金額のフォーマットの修正)。
  3. macOS 標準の sqlite3 コマンドを使って、accounting.sqlite ファイルに table を新規作成し、プリプロセスした journal.pp.tsv をインポートする。
    .mode tabs
    .import journal.pp.tsv Journal
  4. Python 経由で上記データベースを処理して、決算整理仕分けを行ってデータベースをアップデートし、各勘定科目に分け、.tsv でエクスポートする(accounting.py)。
  5. 勘定科目別にエクスポートされた .tsv を merge2xlsx.py で単一の 総勘定元帳.xls にマージする。

このプロトタイプで、各処理を確立できたので、最終的に、accounting.py のみで TSV のプリプロセス以降の処理を一挙に行えるようにコーディングし直して、一応の完成を見た。


今後の課題

毎年の確定申告に困らない程度のシステムの構築には至ったが、損益計算書までであり、資産に関する処理(貸借対照表)は未対応である。特に減価償却費が自動化できていないと、損益計算書も本当の意味で完成したとは言えないので、せめて減価償却資産については、対応できるようにしておきたい。

2019年6月26日水曜日

縁起説

アッシジ長老がサーリプッタ長老に語ったとされる句:

Ye dhammā hetuppabhavā,

tesaṃ hetuṃ Tathāgato āha

tesañca yo nirodho;

evaṃvādī Mahāsamaṇo.

なぜか「諸法(事象・現象)が縁によって生じる」と解釈され、いわゆる「縁起説」として定着している。仏教の最も基本的な思想とされているが、この句の解釈は実は違うのではないか?

Ye dhammā は Tathāgato āha に係っているだけで、実質は hetuppabhavā, tesaṃ hetuṃ, tesañca yo nirodho と(四諦のうちの)三諦を言ったに過ぎない。「Ye dhammā Tathāgato āha」は単に、「如来が語られたこの法は」と言っていて、「方法(dhammā)」という単語に、事象・現象などと多義的な解釈を持たせて、何やら大げさな神秘性を帯びた体系に、仏教の位置付けを飛躍させる必要はなかったのではないかと思う。

hetuppabhavā は「原因から生まれる諸々の(複数形)もの」tesaṃ hetuṃ は「その原因(単数形)」、tesañca yo nirodho は「それら(原因から生まれた諸々のもの)が消滅するところの(原因に係る)」

つまり、全体を訳すとこうなる。

如来が語られたこの法というのは、

(一つの)原因から生じた諸々の結果(複数)と、それらの原因(単数)、

(その原因はまた)諸々の結果を消滅させる原因でもあるところのもの。

それ(その方法)を大沙門は説かれた。

結果が複数で、それら複数の結果の原因となっているものが単数であるというのが一つのポイントである(参考)。

そのように、神秘性の方向性なしに素直な話として解釈してみれば、その前後のコンダンニャ長老、サーリプッタ長老、モッガラーナ長老らの、最初に正見を得た時の常套句である、「生じるものは、滅する性質の云々」とイマイチ訳のわかったようなわからないようなセリフも、本来はどういうものであったかどうかが見えてくる気がする。つまり:

「諸々の結果を生じている一つの(大元となる)原因がわかれば、それは反対に諸々の結果を一挙に消滅させる鍵ともなるわけだ」

そういうやりとりだとすると、四諦→コンダンニャ長老の常套句、アッサジ長老の概説→サーリプッタ長老・モッガラーナ長老の常套句のやりとりが、まったく自然な受け答えだとわかるわけである。

仏教学者なんかで「縁起ガー、縁起ガー」なんて、縁起そのものが、もの凄い奥義のような概念として、釈尊が悟ったその内容の核心概念として奉り上げている人がいる気もするが、こんな風に解釈してしまうと、かなり根底部分から神秘性面で倒壊しかねないことになってしまうのかもしれない。

まあそれはおいておいて、上のようなごく自然なやりとりだったと解釈するのであれば、「その諸々の結果の原因となっている一つの物事を、見つけ出してしまえばいいじゃないの」ということになるわけで、その方法が仏法(Ye dhammā Tathāgato āha)であり、具体的にはウィパッサナー瞑想や、四念処といったものなのだろう。勘違いしないように念を押しておくが、「諸々の結果」を、この客観世界の万人、万物に普遍的な「事象」として拡大解釈し(dhammā に事象という拡大解釈を付したように)、その万人万物の普遍事象の、一つの統一的な根本原因を悟るのが仏教、なんていう風に、「その諸々の結果の原因となっている一つの物事を、見つけ出してしまえばいいじゃないの」という話のことを受け止めないように。各人において内的に、一つの原因と、それから生じている諸々の結果は千差万別である。ただ言えるのは、それ(原因と結果)が一対多対応の関係だというだけの話で、「この世にたった一つの原因と、あらゆる森羅万象と」の外的関係に風呂敷を広げては甚しい妄想で、大乗仏教はまさしくその愚の骨頂に陥ったわけであるが、パーリ経典が定まった段階でも既にこういう風に拡大解釈の萌芽が見られるという点には留意しておきたい。