linux でUSB外付けHDのボリューム名(mediaのサブディレクトリ

linux でUSB外付けHDのボリューム名(mediaのサブディレクトリ名)を設定する。

linux でUSBに外付けHDを差すと、自動的に認識されて、「/media/」ディレクトリにマウントされるのだが…

[tk@EeePC-40 ~]$ ll /media/
合計 20
drwxr-xr-x  5 root root 4096 2015-10-09 15:58 ./
drwxr-xr-x 26 root root 4096 2015-03-23 09:58 ../
drwxr-xr-x  5 root root 4096 2015-01-23 10:36 1fa58830-fb51-45d5-99dd-0a8234475f09/
drwxrwxrwx  4 root root 4096 2015-01-23 10:45 5267adf1-42b4-4d41-afbd-4e5db6b3e1de/
drwxr-xr-x  4 root root 4096 2013-12-02 16:27 ca42958c-c6b3-4b4d-9293-40945db6c7f2/
[tk@EeePC-40 ~]$

「ca42958c-c6b3-4b4d-9293-40945db6c7f2」というディレクトリ名はどうにかして欲しい。
そのHDには「imation-28」という管理名があるので、その名前になって欲しい。
ということで、やってみた。

ネットで調べると「e2label」というコマンドで変えられるらしい。

[tk@EeePC-40 ~]$ e2label
Usage: e2label device [newlabel]

[tk@EeePC-40 ~]$ sudo e2label /dev/sda1
/boot

という感じで使う。

変更する対象を指定するためには「device」を知る必要がある。
df を使えば、マウントしたディレクトリ名から device を調べることができる。

[tk@EeePC-40 ~]$ df -h
ファイルシステム サイズ  使用  残り 使用% マウント位置
rootfs             223G   27G  185G  13% /
/dev/root          223G   27G  185G  13% /
/dev              1006M  600K 1005M   1% /dev
/dev/sda1          101M   28M   69M  29% /boot  ← ☆さっきのはこれ。
none              1006M   76K 1006M   1% /dev/shm
/dev/sdb1          917G   78G  794G   9% /media/5267adf1-42b4-4d41-afbd-4e5db6b3e1de
/dev/sdd1          917G   19G  852G   3% /media/1fa58830-fb51-45d5-99dd-0a8234475f09
/dev/sdf1           74G   22G   49G  31% /media/ca42958c-c6b3-4b4d-9293-40945db6c7f2 ←★
・・・
[tk@EeePC-40 ~]$

目的のdeviceは「/dev/sdf1」であることが分かった。
「/dev/sdf1」を調べてみると、ラベルがセットされていない。セットされていないのでUUIDがセットされたのだろう。

[tk@EeePC-40 ~]$ sudo e2label /dev/sdf1
[tk@EeePC-40 ~]$

ということで、新しい名前をセットする。

[tk@EeePC-40 ~]$ sudo e2label /dev/sdf1 imation-28
[tk@EeePC-40 ~]$ sudo e2label /dev/sdf1
imation-28
[tk@EeePC-40 ~]$

USBを抜き差しする。

[tk@EeePC-40 ~]$ ll /media/
合計 20
drwxr-xr-x  5 root root 4096 2015-10-09 15:58 ./
drwxr-xr-x 26 root root 4096 2015-03-23 09:58 ../
drwxr-xr-x  5 root root 4096 2015-01-23 10:36 1fa58830-fb51-45d5-99dd-0a8234475f09/
drwxrwxrwx  4 root root 4096 2015-01-23 10:45 5267adf1-42b4-4d41-afbd-4e5db6b3e1de/
drwxr-xr-x  4 root root 4096 2013-12-02 16:27 imation-28/  ← ★OK★
[tk@EeePC-40 ~]$

でした。

問題5のelixir版をruby版に翻訳してみた。

http://d.hatena.ne.jp/take_tk/20150710 で作った。
http://www.softantenna.com/wp/software/5-programming-problems/
1時間以内に解けなければプログラマ失格となってしまう5つの問題が話題に

問題5
1,2,…,9の数をこの順序で、”+”、”-“、またはななにもせず結果が100となるあらゆる組合せを出力するプログラムを記述せよ。例えば、1 + 2 + 34 - 5 + 67 - 8 + 9 = 100となる
のelixir版をrubyに翻訳してみる。

    # prefix は文字列、rest は文字の配列
    # 文字列の配列を返す。
    #
  def make(prefix,rest=nil)
      # make/1
    return make("", prefix.split(//)) if rest.nil?
      # make/2
    h = rest[0]
    t = rest[1..-1]
    case
      when prefix == "" # 始め
        return make( h , t )
      when rest == []   # 最後
        if eval(prefix) == 100
          return [ prefix ]
        else
          return []
        end
      else              # 途中
        return make( prefix + '+' + h , t ) +
               make( prefix + '-' + h , t ) +
               make( prefix    +    h , t )
    end # case
  end

p( make '123456789' )
#=> ["1+2+3-4+5+6+78+9", "1+2+34-5+67-8+9", "1+23-4+5+6+78-9", "1+23-4+56+7+8+9", "12+3+4+5-6-7+89", "12+3-4+5+67+8+9", "12-3-4+5-6+7+89", "123+4-5+67-89", "123+45-67+8-9", "123-4-5-6-7+8-9", "123-45-67+89"]

確かに、rubyでも実行可能だ。elixirと同様にコンパクトだ。しかし…。

不安感が爆発するね。「これでよい」という安心感が全くない。

というより、何をやっているのかも理解不能だ。
そもそも、ruby脳で、これを作れと言われても作れないだろう。

何故混乱するかというと、
まったく異なった処理を行なうメソッドが、同じメソッドの中に入っている、というのが理解不能/不安の原因だな。

elixirの場合には引数のパターンごとに別の関数になっているので、その関数が呼ばれる場合だけを想定して理解すればよい。

ということで、ruby版で場合分けを行なうメソッドを分離してみた。elixir版とそっくりになった。

    # prefix は文字列、rest は文字の配列
    # 文字列の配列を返す。
    #
  def make(prefix,rest=nil)
      # make/1
    return make_1(prefix) if rest.nil?
      # make/2
    h = rest[0]
    t = rest[1..-1]
    case
      when prefix == "" # 始め
        return make_first(prefix,h,t)
      when rest == []   # 最後
        return make_last(prefix,rest)
      else              # 途中
        return make_mid(prefix,h,t)
    end # case
  end

  def make_1(prefix)
    make("", prefix.split(//))
  end

  def make_first(prefix,h,t)  # when prefix == ""
    make( h , t )
  end
# ↑ ruby版 ⇔ elixir版 ↓
# def make([],[h|t]) do # 始め
#    make( [h] , t )
#  end

  def make_last(prefix,rest)   # when rest == []
    case eval(prefix) 
      when 100 ;  [ prefix ]
      else     ;  []
    end
  end
# ↑ ruby版 ⇔ elixir版 ↓
#  def make(prefix,[]) do  # 最後
#    case Code.eval_string(prefix) do
#      {100, _} -> [ prefix ]
#      _        -> [ ]
#    end
#  end

  def make_mid(prefix,h,t)    # else
    make( prefix + '+' + h , t ) +
    make( prefix + '-' + h , t ) +
    make( prefix    +    h , t )
  end
# ↑ ruby版 ⇔ elixir版 ↓
#  def make(prefix,[h|t]) do # 途中
#    make( prefix ++ '+' ++ [h] , t ) ++
#    make( prefix ++ '-' ++ [h] , t ) ++
#    make( prefix     ++    [h] , t )
#  end

p( make '123456789' )
#=> ["1+2+3-4+5+6+78+9", "1+2+34-5+67-8+9", "1+23-4+5+6+78-9", "1+23-4+56+7+8+9", "12+3+4+5-6-7+89", "12+3-4+5+67+8+9", "12-3-4+5-6+7+89", "123+4-5+67-89", "123+45-67+8-9", "123-4-5-6-7+8-9", "123-45-67+89"]

このパターンで分解すると、問題が簡単になる、というケースは多いのだろうか?

問題5 の elixir版

http://www.softantenna.com/wp/software/5-programming-problems/
1時間以内に解けなければプログラマ失格となってしまう5つの問題が話題に

問題5
1,2,…,9の数をこの順序で、”+”、”-“、またはななにもせず結果が100となるあらゆる組合せを出力するプログラムを記述せよ。例えば、1 + 2 + 34 - 5 + 67 - 8 + 9 = 100となる
をelixirでやってみる。

    • -

● お答え。17行で答が出る。

defmodule Make do
  def make([],[h|t]) do # 始め
    make( [h] , t )
  end
  def make(prefix,[]) do  # 最後
    case Code.eval_string(prefix) do
      {100, _} -> [ prefix ]
      _        -> [ ]
    end
  end
  def make(prefix,[h|t]) do # 途中
    make( prefix ++ '+' ++ [h] , t )  ++
    make( prefix ++ '-' ++ [h] , t )  ++
    make( prefix     ++    [h] , t )
  end
end

Make.make([],'123456789')
    • -

● iex に放り込んで実行してみる。

[tk@NA501-33 ~]$ iex
Erlang/OTP 17 [erts-6.4.1] [source] [64-bit] [async-threads:10] [kernel-poll:false]
Interactive Elixir (1.0.4) - press Ctrl+C to exit (type h() ENTER for help)

iex(2)> defmodule Make do
...(2)> def make([],[h|t]) do # 始め
...(2)>   make( [h] , t )
...(2)> end
...(2)> def make(prefix,[]) do  # 最後
...(2)>   case Code.eval_string(prefix) do
...(2)>     {100, _} -> [ prefix ]
...(2)>     _        -> [ ]
...(2)>   end
...(2)> end
...(2)> def make(prefix,[h|t]) do # 途中
...(2)>   make( prefix ++ '+' ++ [h] , t )  ++
...(2)>   make( prefix ++ '-' ++ [h] , t )  ++
...(2)>   make( prefix     ++    [h] , t )
...(2)> end
...(2)> end

{:module, Make, <<70, 79,  ...>>, {:make, 1}}

iex(4)> Make.make([],'123456789')
['1+2+3-4+5+6+78+9', '1+2+34-5+67-8+9', '1+23-4+5+6+78-9', '1+23-4+56+7+8+9',
 '12+3+4+5-6-7+89', '12+3-4+5+67+8+9', '12-3-4+5-6+7+89', '123+4-5+67-89',
 '123+45-67+8-9', '123-4-5-6-7+8-9', '123-45-67+89']

何をやっているかというと・・・、

3個の make/2 関数はすべて、リスト文字列の prefix と rest を受け取って、条件にマッチしたリスト文字列のリストを返す、という点で共通。
make/2関数は再帰的に呼ばれる。最初はprefix=''、restは全部。呼ばれるに従ってprefixが延びていき、restは短くなっていく。

「途中」の「make(prefix,[h|t])」関数はprefix文字列の最後に、「+」「-」「」を挟んで、rest文字列の先頭の文字(h)を追加して、下位のmake/2関数を呼び出す。「+」「-」「」を挟むので3回呼び出して、それぞれが返して来た文字列のリストを合成して返す。

「最後」の「make(prefix,[])」関数は、受け取った prefix が条件にマッチした場合には、その文字列が一つだけ入ったリストを返す。マッチしない場合には空リストを返す。もしマッチ判断をせずに全て返した場合には、最初の make/2 関数は3の8乗(=6561)個の文字列のリストを返すことになる。

    • -

◎ elixir って、超おもしろい。

pdumpfs-copy.rb

【取扱説明書】

pdumpfs-copy.rb は pdumpfs が作成したバックアップのコピーを作成します。

自家用の使い捨てコマンドとして作成したので、引数で対象ディレクトリを指定するようにはなっていません。スクリプト中に書かれた下記の部分を自分用に書換えてから実行してください。

DEFAULT_SRC_BASE = "/mnt/NP11-34/storage2/pdumpfs_of"
DEFAULT_SRC_NAME = "backup_of"
DEFAULT_DST_BASE = "/storage2/pdumpfs_of"

実行すると次のように表示されていきます。pdumpfs-copy が行うのは、「rm・・、ln -s・・、pdumpfs・・、mkdir・・、mv・・」だけです。実行するコマンドは全てシェルコマンドであり、全部表示されます。<<<
−−−
[tk@EeePC-40 /]$ sudo ruby /samba_public/apollo/tkUtils/pdumpfs-copy.rb
・・・
"'/storage2/pdumpfs_of/2013/07/11/backup_of' already exists, then skip." ←前回実行分はスキップする。
"'/storage2/pdumpfs_of/2013/07/12/backup_of' .. start on Tue Jul 23 13:19:41 +0900 2013." ← 開始
["rm /storage2/pdumpfs_of/latest"]
["ln -s /storage2/pdumpfs_of/2013/07/11 /storage2/pdumpfs_of/latest"]
["pdumpfs /mnt/NP11-34/storage2/pdumpfs_of/2013/07/12/backup_of /storage2/pdumpfs_of"]
["mkdir -p /storage2/pdumpfs_of/2013/07/12"]
["mv /storage2/pdumpfs_of/2013/07/23/backup_of /storage2/pdumpfs_of/2013/07/12/backup_of"]
・・・
−−−

実行に長時間(何日も)係ることを想定して、途中でハングしたり、Ctrl+C で中断しても、再開後は実行済みの部分をスキップするようになっています。

【pdumpfs-copy.rb】<<<
DEFAULT_SRC_BASE = "/mnt/NP11-34/storage2/pdumpfs_of"
DEFAULT_SRC_NAME = "backup_of"
DEFAULT_DST_BASE = "/storage2/pdumpfs_of"

def get_date_directories(src_dir)
Dir.glob(src_dir+"/????/??/??/").collect{|dir| dir[-12,12] }.sort
end

def main
# →/storage2/pdumpfs_of/2001/01/01/backup_of ・・・ src
# --------base-------- ---date--- --name--- src_base src_date src_name
# →/storage3/pdumpfs_of/2002/02/02/backup_of ・・・ dst
# --------base-------- ---date--- --name--- dst_base dst_date dst_name
# →/storage3/pdumpfs_of/2001/01/01/backup_of ・・・ correct
# --------base-------- ---date--- --name--- correct_base correct_date correct_name
#
src_base = DEFAULT_SRC_BASE # "/mnt/NP11-34/storage2/pdumpfs_of"
src_name = DEFAULT_SRC_NAME # "backup_of"
dst_base = DEFAULT_DST_BASE # "/storage/pdumpfs_of"
#
cor_name = dst_name = src_name
cor_base = dst_base
#
date_directories = get_date_directories(src_base)
p date_directories
# #=>["/2012/08/24/", "/2012/08/25/"・・・"/2012/09/01/", "/2012/09/02/"] 古い順に並んだ配列。
#
latest = dst_base + "/latest"
#
# rescue Interrupt を準備する。
#
dst = src = cor = old = nil
begin
#
date_directories.each{|src_date|
#
# pdumpfs は独自に今日の日付を取り出すので、毎回 dst_date を作成すべき。
# 長時間かかることが予想され、日付をまたいで実行する可能性が多い。
#
# この時刻から、pdumpfs開始の時刻の間で日付が変わった場合には例外で終了するはず。
#
today = Time.now
dst_date = "/%04d/%02d/%02d/" % [today.year,today.month,today.day]
cor_date = src_date
#
old = File.dirname(cor) if cor
src = src_base + src_date + src_name
dst = dst_base + dst_date + dst_name
cor = cor_base + cor_date + cor_name
#
# コピー先に既に存在する場合には、
# 前回の試行で途中で中断した場合であると想定されので、
# スキップする。
#
if File.exist?(cor)
p "'#{cor}' already exists, then skip."
next
end
p "'#{cor}' .. start on #{Time.now.to_s}."
#
# 存在するディレクトリのうち直前のディレクトリを latest にセットする。
#
if old
if File.exist? latest
cmd = "rm #{latest}"
p [cmd]
`#{cmd}`
end
cmd = "ln -s #{old} #{latest}"
p [cmd]
`#{cmd}`
end
#
cmd = "pdumpfs #{src} #{dst_base}"
p [cmd] #=> ["pdumpfs //NP11-34/moc_root/storage2/pdumpfs_of/2012/09/01/backup_of /storage/pdumpfs_of"]
`#{cmd}`
#
raise "'#{dst}' is not created by pdumpfs" if !File.exist?(dst)
#
cmd = "mkdir -p #{File.dirname(cor)}"
p [cmd]
`#{cmd}`
#
# これだと latest がリンク切れになって、次回に全てコピーになってしまうような気がするのだが、
# なぜか、うまくいっているような気がする。
#
if dst != cor
cmd = "mv #{dst} #{cor}"
p [cmd] #=> ["mv /storage3/pdumpfs_of/2012/09/03/ /storage3/pdumpfs_of/2012/09/01/"]
`#{cmd}`
end
}
#
# 例外(中断など)で中間ディレクトリが残っていたら削除する。
#
# 途中で消していくと、次の日の取得に時間がかかる模様。
#
# 最後の raise を忘れたら、中断できなくなったよ。rebootせざるをえなくなった。
#
rescue Interrupt
if dst != cor && File.exist?(dst)
cmd = "rm -r #{dst}"
p [cmd]
`#{cmd}`
end
raise
end
end

main if __FILE__ == $0

インドでのベーシックインカムの実験

http://binews.org/2012/09/india-basic-income-pilot-project-finds-positive-results/

INDIA: Basic Income Pilot Project Finds Positive Results
USBIG ? September 22, 2012 ? ? Post a comment

Filed Under India

Over more than a year, India's Self Employed Women's Association (SEWA) with support from UNICEF has been conducting a cash transfer pilot project in rural villages. They have just released some of their preliminary findings, and results are extremely encouraging. The study was conducted in 20 rural villages in India. Adult residents of 8 of those villages received a cash transfer of 200 Rupees (about US$3.75) per month. Children received 100 Rupees. Residents of the other 12 villages were observed as a “control group” as in a medical trial. The money was distributed unconditionally. Residents were told they could do whatever they wanted with the money.

1年以上にわたり、インドの自営女性協会(SEWA:Self Employed Women's Association)は、ユニセフの支援を受けて、農村での現金移転のパイロットプロジェクトを実施した。彼らはこのたび予備調査結果の一部を発表した。その結果は非常に勇気づけられるものです。研究はインドの20の農村で行った。それらうちの8つの村では、成人住民は毎月200ルピーの現金移転(cash transfer。3.75ドル程度)を受け取り、子どもたちは、100ルピーを受け取った。他の12の村の住民は、医療研究で行われるような"対照群"とされた。お金は無条件に配布され、住民はそのお金を彼らが望んで何でも出来ると言われた。

Positive results were found in terms of nutrition, health, education, housing and infrastructure, and economic activity. The researchers found that the cash transfer group spent significantly more on eggs, meat, and fish than the control group. Researchers found a positive impact on health and access to medical treatment. The most visible impact of the study was on educational attainment. Researchers found increased spending on school-related items such as school uniforms, school fees, shoes for school, books, school supplies, and private tuition. School attendance in the cash transfer villages shot up, three times the level of the control villages. Performance in school improved significantly relative to control villages. There was increased investment in housing, such as the installation of in-door plumbing. Twice the number of cash transfer households started new activity over the study period as those in non-cash transfer villages.

ポジティブな結果は栄養、保健、教育、住宅、インフラ、経済活動の面で見られた。研究者たちは、現金移転グループは対照群よりも卵、肉、魚にかなり多くを費やしたことを見つけた。また、健康や医療へのアクセスにプラスの影響があることを発見した。中でも、研究の最も目に見える影響は教育関係で見られた。研究者たちは、学校の制服、授業料、学校の靴、書籍、学用品、プライベート授業など学校関連の項目での支出が増加したことを発見した。送金の村の学校の出席率は対照群の村の3倍のレベルに上がり、学校での成績も対照群の村に比べて有意に改善した。また室内への水道管の導入といった住宅投資も増加した。研究機関中に新しい活動を開始した世帯の数は、非現金移転村に比べて、2倍に達した。

SEWA has released a video explain the results and including interviews with participants in the study.

SEWAは、研究の参加者へのインタビューを含めた結果と説明ビデオをリリースした。

See also: http://binews.org/2012/09/india-video-with-results-of-basic-income-pilot-project/

アンパンマンは日本的行者である。

311の後でアンパンマンのマーチが話題になり、聞いてみたら、感動してしまった。なぜなのか?

アンパンマンのマーチ   作詞 やなせたかし 作曲 三木たかし

そうだ!嬉しいんだ生きる喜び
たとえ胸の傷が痛んでも

何の為に生まれて 何をして生きるのか
答えられないなんて そんなのは嫌だ!
今を生きることで 熱いこころ燃える
だから君は行くんだ微笑んで。

そうだ!嬉しいんだ生きる喜び
たとえ胸の傷が痛んでも。

嗚呼アンパンマン優しい君は
行け!皆の夢守る為

* 「そうだ!」の前の状態が問題なのである。《私》は、生きる喜びが分からなかったのである。胸の傷が痛んでいたのである。何の為に生まれたのか分からなかったのである。何をして生きるのがよいのかが分からなかったのである。

* 《私》は、「今を生きる」が、その答えである気とがついたのであろう。「今を生きる」ことが「生きる喜び」であり「嬉しさ」なのだと気がついたのである。

* 気づきは悟りである。ただし、小悟かもしれない。小さな悟りかもしれない。大悟(一切の疑問が一時に解決するような悟り)ではないかもしれない。しかし、大悟の大筋をたどっているのかもしれない。十牛図を見てみよう。

* 十牛図 http://ja.wikipedia.org/wiki/%E5%8D%81%E7%89%9B%E5%9B%B3

(8)人牛倶忘(にんぎゅうぐぼう) - すべてが忘れさられ、無に帰一すること。悟りを得た修行者も特別な存在ではなく本来の自然な姿に気づく。

(9)返本還源(へんぽんげんげん) - 原初の自然の美しさがあらわれてくること。悟りとはこのような自然の中にあることを表す。

(10)入[廛+郡-君]垂手(にってんすいしゅ) - まちへ... 悟りを得た修行者(童子から布袋和尚の姿になっている)が街へ出て、別の童子と遊ぶ姿を描き、人を導くことを表す。

* 「答えられないなんて そんなのは嫌だ!」が「本来の自然な姿」なのである。

* 「そうだ!(人々は)嬉しいんだ。生きる喜び(があるから人々は生きているんだ)」「今を生きることで 熱いこころ燃える」。これが人々の「本来の自然な姿」なのであり、人々の「原初の自然の美しさ」なのである。

* 「だから君は行くんだ微笑んで。」「嗚呼アンパンマン優しい君は。行け!皆の夢守る為」。「修行者が街へ出て、別の童子と遊ぶ」「人を導く」のである。

何が君の幸せ 何をして喜ぶ
解らないまま終わる そんなのは嫌だ!

忘れないで夢を 零さないで涙
だから君は飛ぶんだ何処までも

そうだ!恐れないでみんなの為に
愛と勇気だけが友達さ

嗚呼アンパンマン優しい君は
行け!皆の夢守る為

* 「愛と勇気だけが友達さ」。このフレーズが物議を呼んでいるようである。人である友達はいないのか? 当たり前である。修行者や覚者は人である友達を持たないのである。

時は早く過ぎる 光る星は消える
だから君は行くんだ微笑んで

そうだ!嬉しいんだ生きる喜び
たとえどんな敵が相手でも

嗚呼アンパンマン優しい君は
行け!皆の夢守る為 

* 「時は早く過ぎる 光る星は消える。《だから》君は行くんだ」。諸行無常の悟りの先に、アンパンマンは居るのである。

アンパンマンのイメージは、仏教的、禅的な行者のイメージに重なっている。

文化的に、日本人は行者のイメージになじんでいるのである。日本的行者のイメージは寺にこもるイメージではない。コトバを語るだけの人のイメージではない。橋を作り、堤防を作り、ボランティア活動をする人のイメージであり、無欲で企業を運営する人が日本的な行者のイメージなのである。

その文化的なベースがあったがゆえに、やなせたかしアンパンマンのイメージを膨らませることができた。そして、やなせが作ったアンパンマンのイメージを日本人はすんなりと受け入れられたのである。

(他の解釈)

http://bokuashi.exblog.jp/8028584/
アンパンマンの歌詞が異様に深い

http://d.hatena.ne.jp/f_iryo1/20081028/1225205632
アンパンマンのマーチ」から戦争を想起することは「正しい」のか

GDPと《消費税型ベーシック・インカム》

http://mixi.jp/view_diary.pl?id=1676416119&owner_id=5049163

たけ(tk)2011年02月20日 17:16
グリーン・スーさん、なかなか中身のあるレスポンス、ありがとうございます。

《消費税型ベーシック・インカム》の発想の原点の一つは、生産活動への影響を最小限にしたい、ということです。

> GDP �陝\坼椹拿弌覆海海吠〇磴癲法槎唄崚蟷顱槎唄崗暖�

《消費税型ベーシック・インカム》は、この式の「民間消費」の部門の内部で、定率負担の消費税の総額=定額給付の給付金の総額となるようにし、差引きのゼロで民間消費が変らないように再分配するだけ、という仕組みです。

政府支出にとって税金は収入、支給金は補助金ということになりますが、《消費税型ベーシック・インカム》であれば収入=補助金という関係になり政府支出は変動しません。

* 福祉の給付金は政府最終消費支出にではなく、民間最終消費支出に含まれると思います。

民間消費も政府支出も変らないので、民間投資も変らない。

よって、理論的には、《消費税型ベーシック・インカム》であれば、《ベーシック・インカム》とGDPとは関係がないことになる。

とはいえ、実際には多少の影響は考えられる。

■GDPをどうやって大きくするか? それと《ベーシック・インカム》との関係は?

基本的には《ベーシック・インカム》はGDPの問題とは切り離されるように設計されるべきだとは考えるが、関係がないわけではない。

現状で、何故GDPが増えないのか、という問題から考えてみる。

「民間消費」(内需)が実際よりも低く抑えられているからGDPが増えないと、たけ(tk)は考えている。

内需(民間消費)が頭打ちだとはとても思えない。カネがないので欲しいモノが買えない、老後が不安だからカネがあっても欲しいモノを買わない、という人口は都会でも、また地方でも多い。

「民間消費」が少なければ、「民間投資」は増えない。需要がないところに投資する企業はいない。いくら低金利でも、需要が見込めなければ、借りない。

現状は、民間投資につぎ込もうとするカネ(投資資金)が金余りで、民間消費につぎ込もうとするカネ(消費資金)がカネ不足になっている。

従って、供給拡大を直接に増大させようとすることよりも、内需(民間消費)の拡大を通して民間投資の拡大を考えていくべきだと思う。

その意味では、金融資産税とか、金融取引税で金余りから吸収し、《ベーシック・インカム》によって消費資金を支給するという方法が本来ということになるかもしれない。しかし、そうすると、経済全体への影響が大きくなりすぎる。

《消費税型ベーシック・インカム》であれは、経済全体への直接的影響は少ない方法で消費資金の不足を解消することができるようになる。カネ余りの金持ちの消費資金を、カネ不足の貧乏人への消費資金に再分配することによって、消費資金のカネ不足を解消することができるようになる。

ベーシック・インカム》が実施されれば、

(a)カネがないのでモノを買えない、という層に対しては、直接的な消費資金の供給を意味するので、その分だけ民間消費は増える。

(b)カネがあっても老後が不安だから欲しいモノを買わない、という層に対しては、持続的な制度が維持されると信頼されれば、現在時点での消費を拡大するようになり、民間消費が増える。

(c)カネ余りの金持ちの層では多少消費性向が下がる可能性も考えられるが、上記2者の民間消費拡大を超えるほどに消費性向が下がるとは思えない。カネ余りの金持ちであれば、多少貯金の増え方を減速させることになっても、消費を減らすことはないだろう。金持ちが消費資金を減らすことは投資資金を減らすことになる。しかし、もともと、投資資金は金余りなのでGDPの民間投資を減らすことにはならない。

* 将来、投資資金の不足になった場合にはどうなるのか。その場合には、旧来の金融政策の手法で日銀から銀行を経由して資金を提供すればよい。

従って、《消費税型ベーシック・インカム》は、現状の消費資金不足のデフレ状態においては、消費資金の不足を解消することによって民間消費を拡大し、GDPを大きくすることにつながる。

その他、GDPを拡大する方法については、いろいろ意見はあるけれど、《ベーシック・インカム》に関係する部分はこの程度だと思います。

* 消費資金不足が解消しても、さらに、GDPを増やしたいのであれば、別の方策が必要になるだろう。((たとえば、住宅政策によって、国民全員の居住空間を大きくしてしまえば、それを満たすモノが欲しくなるだろう、とか・・・))。