<未来予測>税金の無い未来へ

 

はじめに

私は遠い未来、税金が無い社会になればよいと考えています。

理由は、「生きるためのコスト」を少しでも下げた方が、生きやすい社会になると考えるからです。

「生きるためのコスト」に税金も含まれており、税金が無くなれば、生きるの必要なコスト・労力(確定申告、帳簿付け、領収書保存、脱税により罰を「課す・受ける」作業、事業者による税制の情報収集作業)が少なくなると考えます。

 

本記事では、主に、以下の観点を考慮して、「税金の無い未来」へ到達するための「実現方法」を考察します。

 ・【税金の無い未来への到達過程】・【税金の無くなった社会】で発生する問題・デメリット

 ・人間の労働力が不要な社会なら、「お金の価値」もそれに応じて減少していく可能性がある。

 ・「お金自体に純粋に価値を見出している人」、「お金そのものに魅入られている人」がいる可能性

 

この記事は、「コメント」や「自分が得た知識・考え方」を元に、随時更新予定です。

「税金の無い未来」へ到達するための「順序」

時系列の古い順に①~記載します。

①この手順のシミュレーションシステム・補助装置の作成
財務省・税理士等「税目の削減」による不利益を被る人への保障政策の実行
③税率の軽減・税目の削減
④人を手助けできる人間の育成システムの構築
⑤お金の再配分:パターン「⑤-a」~「⑤-b」
【⑤-a】お金の再配分(金融システムによる捕捉)
【⑤-b】お金の再配分(デジタル通貨による捕捉)
⑥「インフラ・物流・第一次産業・公共事業・警察・自衛隊等、生活に最低限必要な事業の機械・自動化・インフラ整備」と「そのエネルギー源の確保」
  ~西暦2050年前後~
⑦円の価値を下げないための対外国政策
⑧税金の徴収の任意制度の導入(税金を払いたい人のみ払う)
⑨税金制度の廃止

 

①この手順のシミュレーションシステム・補助装置の作成

以下のシステム・装置の作成はデジタル庁が作成するのが、効率がよい可能性がります。理由は、本手順は多くの企業・組織からデータを収集する必要があるため、政府・行政の方が「データベースの接続権限」を取得できる可能性が高いからです。

 

 ■この手順を実行する人間の補助装置の作成

   →この手順の実行結果による税金・所得・物価・エネルギー(電力・ガソリン等)・人間の生活等の変動を予測する「シミュレーション」システム

    ●大学等の研究機関にも「シミュレーション」をお願いする予定です。

 

 ■「実行する人間」がいない手順を補う装置の作成

 

上記の【システム・装置】が必要な理由は【税金の無い未来】への到達するためには、下記のような【懸念材料】があるので、少しでも、【目標への達成確率】【人間の安全性】を上げる必要があると考えたからです。

【懸念材料】 

 ・人間だけの力では無理な可能性がある。

 ・この手順を実行する人が不利益を被る可能性がある。

 ・この手順を実行する人間がいない可能性がある。

 

財務省・税理士等「税目の削減」による不利益を被る人への保障政策の実行

「③税率の軽減・税目の削減」が進んでいくと、税金に関わる仕事をしている人が不利益を被ることになる可能性があります。

 また、「③税率の軽減・税目の削減」に強く反対している人達への説得・利益の提供も必要になるかもしれません。

 まず、不利益を被ることになる可能性になる人を洗い出して、補償内容を考えて、実行する方が、不利益を被ること人をなるべく減らせるのではないかと考えます。

 具体的な方法を下記に記述します。

  ・財務省に【「⑤お金の再配分」のシステムから不正に逃れている人がいないか調査して、不正者に対してお金を徴収する】権限を付与する。

  ・財務省の「日本銀行に対する権限」を強化

  ・財務省に「貨幣の発行・管理」権限の付与(「中央銀行」と「財務省」の両方に「貨幣の発行・管理」の権限を持たせる)

  ・財務省に「マイナンバー」と「口座」の紐づけが正しく行われているかの調査権限を与える。

        ・税理士等の税金を主に利用して、ビジネスをしている法人・個人に補償金を出す。

   →会計ソフトの開発・管理・提供している会社
   →会社の経理担当者

 

③税率の軽減・税目の削減

 ドバイという国で所得税が無く、恐らく、日本でも税率の軽減・税目の削減の実現可能性は高いと考えます。

 段階的に「税率の軽減・税目の削減」に取り組んで、日本社会の様子を見て、アフターケアを実施しながら、進める方向でよいと考えます。

 具体的な方法を下記に記述します。

  ●法律「財務省設置法第3条」の改正

   →「第3条」の「健全な財政の確保、適正かつ公平な課税の実現」の文言を「段階的な減税・税目削減とその影響による問題点の調査・補償政策の実現」に書き換える。

  「税率の軽減・税目の削減」を公約している党を与党・内閣にすること。

   →私が考えた下記記事に記載している「民意を政策に反映させる社会システム」(直接民主制)を導入することにより、国民の過半数以上の人が「税率の軽減・税目の削減」してくれる人がいれば、実現可能性が高まると考えています。

porimon.hatenablog.com

  税金の決定権を持つ下記の組織の人間への【お願い】・【交渉】。

   □「政府税制調査会

   □「与党税制調査会

   □「閣僚」

   □「財務省

   □「総務省

   □「財務金融委員会衆議院)」

   □「財政金融委員会(参議院)」

   □「総務委員会」

④人を手助けできる人間の育成システムの構築

⑤~⑨」の手順が実行されていくと、人間が社会システムに依存するようになり、以下のような事象が発生する可能性があります。

●人を手助けできる人間が少なくなる。

●政治・政策・社会システム・他人への興味が無くなる。

●基幹産業の人間の労働力を利用した経営・労働方法を知っている人間の減少

 

よって、【この記事の社会システム「⑤~⑨の手順」が壊れた時】、【社会システムで助けられない人間がいる時】に備えて、以下のような政策が必要になると考えます。

●人を手助けできる人間の育成システムの構築

●政治・政策・社会システム・他人への興味を促す人間の育成システムの構築

●基幹産業の人間の労働力を利用した経営・労働方法を知っている人間の育成システムの構築とマニュアル化

 

⑤お金の再配分:パターン「⑤-a」~「⑤-b」

⑥の「社会システムの機械・自動化・インフラ整備」が進むと1人の人間が「事業・お金」を独占する可能性があります。

そこで、「お金の再配分」が必要になってくると考えます。

「お金の再配分」の方法論として、下記のような「【⑤共通】」や「【⑤-a】お金の再配分(金融システムによる捕捉)」、「【⑤-b】お金の再配分(デジタル通貨による捕捉)」の方法を考えてみました。

 

【⑤共通】

 ●「一定以上の所得を持つ個人・法人」→中央銀行→「一定以下の所得を持つ個人、社会保障費や教育費、公共事業費等」に再配分 

  →再配分で「一定以上の所得を持つ個人・法人から徴収する金額」は、現在の日本の「所得税率・法人税率」より低くなるように調整。

  →再配分と同時に、所得税法人税を廃止する。(税負担を軽減するため)

  →生活保護受給者はこの「お金の再配分」システムから除外する。

  →再配分の[徴収/還元]割合は下記のように所得に応じて累進性にする。

 表1:1年間の再配分の[徴収/還元]割合(未完成)

所得 就業者※1
の人数
再配分
の徴収率(年間)
再配分
の還元率
1,000円 から
 1,949,000円まで
  1%  
1,950,000円 から
3,299,000円まで
  4%  
3,300,000円 から
6,949,000円まで
  15%  
6,950,000円 から
 8,999,000円まで
  19%  
9,000,000円 から
 17,999,000円まで
  30%  
18,000,000円 から
39,999,000円まで
  38%  
40,000,000円 以上   44%  

※1就業者の定義は下記リンク参照(総務省統計局の「労働力調査 用語の解説」)

www.stat.go.jp※所得毎の徴収率に関しては下記リンクを参考に設定しました。

www.nta.go.jp所得税率毎の日本全体の「就業者の人数」はデータが見つからなかったで、今後見つけることができたら、シミュレーションし易くなるかもしれません。

※「再配分の還元率」についても、所得毎の「就業者の人数」が分かれば、「国の所得税額」を元に計算して考えたいと思います。

 

 ●「【円から外貨への交換・海外送金】の一定割合」→「一定以下の所得を持つ個人、社会保障費や教育費、公共事業費等」に再配分

  →現金(円)を海外に直接持出す場合、空港でチェックして、持出す分の一定割合を徴収して、「一定以下の所得を持つ個人、社会保障費や教育費、公共事業費等」に再配分

  →以下の税金の廃止(税負担を軽減するため)

   〇不動産取得時の印紙税

   〇不動産譲渡税

   〇関税

   〇株式投資にかかる税金「譲渡益課税」「配当課税」

 

 ●「【仮想通貨取引所・ウォレットに送金した額】の一定割合」→「一定以下の所得を持つ個人、社会保障費や教育費、公共事業費等」に再配分

  →仮想通貨の利益にかかる税金の廃止(税負担を軽減するため)

 

 ●金融庁に「お金の再配分」機能を持たせる

   ■法律「金融再生委員会設置法第一節第三条」と「金融再生委員会設置法第二節第十七条」に以下の文言を追記する。

    〇「一定以上の所得を持つ個人・法人」から「一定以下の所得を持つ個人、社会保障費や教育費、公共事業費等」に再配分するシステムを構築する。(デジタル庁との協力を推奨する。)

 

 ●災害又は盗難若しくは横領による損失金額が発生した場合、支出の金額の領収を証する書類を税務署に提出して「補償金」をもらえるようにする。
 補償金=災害又は盗難若しくは横領による損失金額-保険金等の額
 ※下記の雑損控除制度の転用

www.nta.go.jp

 

 ●実際に支払った医療費の一部を「補償金」としてもらえるようにする。 

  補償金 = (実際に支払った医療費の合計額-(1)の金額)-(2)の金額

          (1) 保険金などで補てんされる金額

          (2) 10万円

       ※下記の医療費控除制度の転用

www.nta.go.jp

 

   ●物価に合わせた変動制ベーシックインカムの導入

 

 ●「貧困層をターゲットにしたビジネス」「貧困層の支援」を実施している「個人・組織」への補償。

  →【「お金の再配分」が上手く機能しなかった時の保険策】+【「お金の再配分」が上手く機能して「支援・ビジネス」ターゲットがいなくなった人・組織への補償策】

      →「生活保護受給者」を対象にした「ビジネス・支援」を実施している「個人・組織」は対象外にする。

 

【⑤-a】お金の再配分(金融システムによる捕捉)

ここ「⑤お金の再配分」では「所得」を以下のように定義する。
口座 =銀行口座[海外口座含む]・証券口座・仮想通貨の取引所/ウォレット・電子マネー・「売り手側のマイナンバー」と「売買の記録」を紐づける機能をもつ【レジ】・「売り手側のマイナンバー」と紐づいた「電子商取引の記録」
月の所得(or"1年間"etc...) =「月(or"1年間"etc...)の口座の振り込み(プラス)額」-「月(or"1年間"etc...)の口座の引き落とし(マイナス)額」+(※1「月(or"1年間"etc...)の口座から現金に交換した額」)

※1<代替え案>「ATM等で現金を引き落とした金額だけ」を捕捉するのが難しい場合、「一定以上の所得を持つ個人・法人」がATM等で現金を引き落とすタイミングで一定割合を徴収して、「一定以下の所得を持つ個人、社会保障費や教育費、公共事業費等」に再配分するシステムを構築。

 

 ●【⑤共通】の内容が実現できる金融資産(銀行口座[海外口座含む]・証券口座・仮想通貨の取引所/ウォレット・電子マネー・「売り手側のマイナンバー」と「売買の記録」を紐づける機能をもつ【レジ】・「売り手側のマイナンバー」と紐づいた「電子商取引の記録」)を捕捉して、自動【引き落とし・振り込み】ができるシステムの開発

   ↓お金の再配分の金融システムの概要図↓

f:id:porimon:20220113234446j:plain

お金の再配分の金融システムの概要図

  →お金の再配分の金融システムの概要  

   中央銀行管理のシステムで以下の処理を実行

    ①個人や法人の口座の情報を収集(日時処理)

     以下、月次処理(or"年次処理"etc...)

    ②個人・法人毎の所得を計算

    【円から外貨への交換・海外送金】の合計額を計算する。

    仮想通貨取引所・ウォレットに送金した額】の合計額を計算する。

    ⑤持つ個人・法人の口座(③、④含む)から、「表1:再配分の[徴収/還元]割合(未完成)」("1か月"or"1年間"etc...)の徴収割合分を引き落とす。

    ⑥「⑤」で引き落とした分の合計額を計算

    ⑦【「⑥」で算出した合計額】から 「表1:再配分の[徴収/還元]割合(未完成)」("1か月"or"1年間"etc...) の【マイナンバー毎・所得毎】の還元割合分を算出する。

    「⑦で算出したマイナンバー毎・所得毎の還元割合分」から「一人当たりのシステム維持費(累進性)」(将来的には社会保障費・教育・公共事業費等)を引いた金額を個人の口座に振り込む。

 

  →マイナンバーと金融資産(銀行口座[海外口座含む]・証券口座・仮想通貨の取引所/ウォレット・電子マネー・「売り手側のマイナンバー」と「売買の記録」を紐づける機能をもつ【レジ】・「売り手側のマイナンバー」と紐づいた「電子商取引の記録」)紐づけ

  

  →「売り手側のマイナンバー」と「売買の記録」を紐づける機能をもつ【レジ】を、「売買」を行う「店舗」「自動販売機」「事務所」に行政主導(費用も負担)で設置して、その【レジ】に買い手側が直接入金して、人間の現金の「受け渡し」を原則、禁止にする。(災害などの有事の際、障碍者等は例外)

   ※既存レジの仕様変更でも可

 

  →「売り手側のマイナンバー」と「電子商取引の記録」を紐づける仕様に、行政主導(費用も負担)でECサイトを仕様変更する。

 

  →「給与の支払い」の現金の「受け渡し」を原則、禁止にして、銀行口座等の「マイナンバー」と紐づいた所得を記録できるシステムを利用する。(災害などの有事の際、障碍者等は例外) 

 

  →日本で外国人が事業をする場合、マイナンバーを外国人にも割り当てる。

    ■「ECサイト」・「レジ」・「日本の居住者の給与の支払い」も上記の要件を満たすように法整備・行政指導を実施する。

 

  →システム・運用テスト段階で消費電力を計測できるようなテスト環境を構築する。

 

  →再配分の基幹システムのサーバーはなるべく寒い地域に設置する(消費電力を少しでも抑えるため)。

    ※海外のクラウドサーバーを使用する場合は考慮しなくてもよい。

 

 ●段階的に社会保障費や教育費、公共事業費等へ再配分できるように上記の金融システムを改修していく。(該当税目の削減も同時並行で行う。)

 

 ●実装方法として、「小規模の人数1000人くらい(所得分布に応じた希望者)の人数」、あるいは、「地方自治体レベル」からこのシステムを実験的に導入して、徐々に対象人数を広げていく。

 

 ●上記の金融システムが安定して稼働したら(所得・口座の捕捉)、生活保護受給者レベルの人間へ、申請なしで、給付・打ち切りできるシステムを導入する。

  ※生活保護の財源は全て、国債で賄い、「一定以上の所得を持つ個人・法人」から徴収したお金は使用しない。

【⑤-b】お金の再配分(デジタル通貨による捕捉)

売買取引を原則、日本円デジタル通貨「DCJPY(仮称)」あるいは、中央銀行デジタル通貨(CBDC:Central Bank Digital Currency)等の「通貨(コイン)や物、権利の移転が台帳へ記録される」【デジタル通貨(外貨送金にも対応したもの)】で行うように、金融・決済インフラを整備する。

 

⑥「インフラ・物流・第一次産業・公共事業・警察・自衛隊等、生活に最低限必要な事業の機械・自動化・インフラ整備」と「そのエネルギー源の確保」

 「③税率の軽減・税目の削減」のデメリットとして、円の価値が少しずつ無くなって行く可能性があるので、労働人口が減る可能性があります。

 労働人口が減っても今のインフラ・社会システムを維持するには、人間以外の物に頼る必要があると考えます。

 ゆえに、「インフラ・物流・第一次産業・公共事業・警察・自衛隊・医療等、生活に最低限必要な事業の機械・自動化・インフラ整備」と「そのエネルギー源の確保」が必要だと考えます。

 

 物流に関しては西暦2025年までに、一部のエリアで無人自動運転(レベル4)が可能な「車両」と「インフラ」が実現されている可能性がります。(下記リンク参照)

自動運転に関する取組 (METI/経済産業省)

 

 無人自動運転レベルの車両が「ガソリン車」か「EV車」かによって、エネルギー源が変わってくるので、無人自動運転による「石油・電力」の消費量の変化について、さらに調べていく予定です。

 

 電力の供給量に関しては、水素エネルギー等を利用した発電により、今後も増加していく可能性があります。(下記リンク【水素・燃料電池について:総合資源エネルギー調査会 基本政策分科会】参照)

https://www.meti.go.jp/committee/kenkyukai/energy/suiso_nenryodenchi/pdf/001_04_00.pdf

 

 日本全体で、今後どれくらい電力の供給量が増えるのかは、これから調べていく予定です。(今後の日本全体での、電力の供給量と消費量を把握するため。)

 さらに、機械・自動化によって、仕事が無くなっった人への、「お金」や「別の仕事の斡旋」等、手厚い補償も同時に必要だと思います。

 「③税率の軽減・税目の削減」のメリットとして、ドバイのように海外資産が流入してくる可能性があります。

 その資金流入が拡大することによって生じうるデメリットの1つは、インフレの加速になるので、「⑥インンフラ・物流・第一次産業・公共事業・警察・自衛隊等、生活に最低限必要な事業」を利用するコストも同時に下げる必要があると考えます。

 また、インフレの加速を防ぐために、「中央銀行による、短期金利の調整」と「為替介入」は今まで通り、必要があると考えます。(既存政策の維持)

 

⑦円の価値を下げないための対外国政策

 円の価値を下げないためにも、「外国に金を配る」、「外貨の流入を促す」、「日本の税制・社会システムの発信」「経済的相互依存関係の深化」等を今より積極的に行い、外国に円を信用させる必要があると考えます。

 ODA(政府開発援助)の「金額・対象国」の増加も必要だと考えます。

 特に「サウジアラビア」や「UAE」等の「原油輸入国」、「オーストラリア」や「マレーシア」等の「天然ガス輸入国」との「経済的相互依存関係の深化」や「ODA(政府開発援助)」が必要だと考えます。

 

⑧税金の徴収の任意制度の導入(税金を払いたい人のみ払う)

 この制度は、確定申告した人・企業のみが税金を払うという制度です。

 この段階になると、税収は大幅に減少していると考えられるので、公共事業等は今よりも国債で賄う必要があると考えます。

 基本的に、人間は大きな変化にストレスや抵抗を感じることが多いと思うので、「⑨税金制度の廃止」の前の緩衝材の意味を持つ政策になりうると考えます。

 また、この政策により起こりうる想定外の問題に対応・アフターケアも必要であると考えます。

 

⑨税金制度の廃止

 ①~⑧で発生した問題を解決できて、安定した社会が実現できていれば、税金の制度の廃止は可能だと考えます。

このデメリット・問題点としては以下のことが挙げられます。

  ・労働人口の減少により、未曽有・突発的な災害・事故に弱くなる可能性がある。

  ・エネルギー不足による、インフラ維持ができなくなる可能性がある。

  ・インフレへの対応策(税金)が減るので、税金に代わる安定してインフレの加速を防ぐシステムの構築が必要

  ・お金の再配分の金融システムで捕捉できない【新しい通貨】 または 【既存通貨の代替システム】の発生
       ・確定申告と税金の意識が無くなることによる、政治・政策への興味の希薄

 上記の問題点を解決方法が、今思いつかないので、これから考えていきたいと思います。

おわりに

 現時点のこの記事は抽象的な内容が多いので、もっと具体化していきたいと考えます。

 また、内閣府財務省のホームページから、この考察を伝えていきたいと思います。

#7初心者学習用 java言語 数値型「整数型と実数型」

 

はじめに

「データ型」とは、格納するデータの種類をあらかじめ制限することです。

これにより、想定外の形式のデータが登録されないないようになり、コードの可読性、メンテナンス性、システムの安全性が増加します。

数値型「整数型/実数型」は「データ型」の一つです。

数値型は「基本データ型」とも呼ばれ、「基本データ型」を用いて「変数を宣言する」※1と、メモリ上に決められた分のサイズの領域を確保して、情報を保持します。

 ※1「変数の宣言」は下記の記事で解説しています。

porimon.hatenablog.com

本記事では数値型「整数型/実数型」について解説します。

 

整数型の紹介

byte

 入る値の範囲:-128~127

 サイズ(ビット数):8

short

 入る値の範囲:-32768~32767

 サイズ(ビット数):16

int

 入る値の範囲:-2147483648~2147483647

 サイズ(ビット数):32

long

 入る値の範囲:-9223372036854775808~9223372036854775807

 サイズ(ビット数):64

 

実数型の紹介

float

 入る値の範囲:±3.4×10^38~±1.4×10^-45

 サイズ(ビット数):32

double

 入る値の範囲:±1.8×10^308~±4.9×10^-324

 サイズ(ビット数):64

 

数値型の変数の宣言・代入・表示

↓コード↓    

        byte a = 45;
        int b = 456578798;
       //  long型変数に整数を代入する場合は数値の後ろに「l」または「L」をつける。
        long c = -457678l;
      //  float型変数に実数を代入する場合は数値の後ろに「f」または「F」をつける。
        float x = 2.6f;
        double y = 0.45;
        
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(x);
        System.out.println(y);

↓実行結果↓    

 45
 456578798
 -457678
 2.6
 0.45

#6初心者学習用 java言語 変数の宣言と代入

 

変数とは

変数はデータ格納しておく領域のことです。

 

変数の宣言

変数を宣言するには以下のように記述します。

 int a;

・「int」:変数のデータ型の1つ。データ型については下記の記事で説明しています。

porimon.hatenablog.com

・「a」:変数名。先頭文字は数字以外で記述する。

 

変数の代入

↓コード↓

 int x;
 int y;
 x =3;  //  xに3を代入する
 y = 8;  //  yに8を代入する
 x = y;  //  xにyを代入する
 
 sytem.out.println(x);
 sytem.out.println(y);

↓実行結果↓

 8
 8

 

変数の初期化

変数は宣言と代入を同時に行うことができる。

このことを「変数の初期化」と呼ぶ。

「変数の初期化」は下記のようにコードを記述する。

 int a =5;

#5初心者学習用 java言語 書式付きでデータを出力

 

複数のデータの表示

↓コード↓

System.out.printf("%d > %d", 5+6, 3);

↓実行結果↓

11 > 3

 

printfメソッドは書式を指定してデータを表示することができる。

 

書式指定の種類

書式指定には主に以下の種類があります。

%d : 整数を10進数で表示。

%f : 実数(小数点)を表示。

%c : 文字(’で囲まれた半角文字1個)を表示。

%s : 文字列("で囲まれた文字)を表示。

 

桁数の指定

↓「25」という数字を空白を含めて5文字で表示するコード↓

int a= 25;
System.out.printf("%5d\n",a);

↓実行結果↓

   25

👆空白3つと「25」が表示される。

 

↓「25」という数字を0を使って4文字で表示するコード↓

int a= 25;
System.out.printf("%04d\n",a);

↓実行結果↓

 0025

 

 

↓全体を6桁(少数点含む)、小数点以下を4桁で表示するコード↓

double a= 8.62;
System.out.printf("%6.4f\n",a);

↓実行結果↓

8.6200

 

↓「25×4.12」の計算結果を9桁(少数点含まない桁数)で表示するコード↓

int a= 25;
double b= 4.12;
System.out.printf("%9f\n",a*b);

↓実行結果↓

103.000000

#4初心者学習用 Javaプログラム 「文字列の表示」と「特殊文字」

 

文字列の表示

 

コード↓

System.out.print("Hello");

実行結果↓

Hello

 

・()の中の"(ダブルクォーテーション)で、はさまれた文字列を表示します。

・「System」はJDKにてあらかじめ用意されたクラスの一つで、Java.langパッケージ※1の中に含まれています。

・「System.」の記述によって、「System」クラスを呼び出しています。※2

・「System.out」はSystemクラスのフィールドの一つで、標準出力※3へ出力するときに使用しています。

・「print("")」は"(ダブルクォーテーション)ではさまれた文字列を表示するメソッドです。

・「;(セミコロン)」:コードの1文の終わりを意味します。

 

※1・2「クラスの呼び出し」・「パッケージ」については、別の記事で説明します。

※3「標準出力」とは「eclipseのコンソール画面」や「コマンドプロンプトの画面」等、プログラムの実行環境・設定により変わります。

 

文字列を改行して表示

 

コード↓

System.out.println("Hello");
System.out.println("Apple");

実行結果↓

Hello
Apple

 

・「println("")」は"(ダブルクォーテーション)ではさまれた文字列を表示して、改行するメソッドです。

 

特殊文字

 

特殊文字は「\」から始まります。

 

「\n」:改行

 

コード↓

System.out.println("Hello\nHello");

実行結果↓

Hello
Hello

 

「\\」:「\」を表示する。

コード↓

System.out.println("\\Hello");

実行結果↓

\Hello

 

「\"」:「"」を表示する。

コード↓

System.out.println("\"Hello");

実行結果↓

"Hello

#3初心者学習用 Javaプログラム 「クラス」と「main」メソッド(デバッグ機能の解説付き)

 

はじめに

本記事では「クラス」と「mainメソッド」について解説します。

デバッグ機能の使い方も解説しています。

まずは、Java言語の命名規則について説明します。

命名規則」とは「クラス名※1」や「変数名※2」等を分かり易く統一するための一般的なルールです。

命名規則」は開発現場によって、独自に決められていることもあります。

Java命名規則は以下の通りです。

・すべてのUnicode文字を使用できる。ただ基本的には英数字や_(アンダーバー)を用いる。

・先頭文字に数字は使えない。

・文字数に制限はない。

予約語は使えない(予約語とはプログラムであらかじめ使用目的が定められている文字列)

 ↓JDK15の予約語一覧は下記URLから閲覧可能

docs.oracle.com※1「クラス名」については、本記事にて後述します。

※2「変数名」については、以下の記事にて解説しています。

porimon.hatenablog.com

 

「class」について

*** class Hello{

     ***

}

クラス名:「class」の後に任意のクラスの名前を記述する。

Javaのコードは「class」というブロックから成り立っている。この「class *** {」と「}」の間のブロックのことを「クラス」と呼ぶ。

※クラスの命名規則は以下のようになっています。

 ・1文字目は大文字

 ・それ以外は小文字だが、単語区切りは大文字

  例)TestPrint, BookStand

 

「アクセス修飾子」について

public class Hello{

    public static void main(String args){

      ***

   }

}

アクセス修飾子:public、protected、privateといった修飾子の総称で、クラスやメンバーがどこからアクセス可能であるかを決定します。

※アクセス修飾子については別の記事で詳しく説明します。今は、原則「class」や「mainメソッド」の前には「public」の記述が必要だと考えて下さい。

※メンバーについては別の記事で説明します。

※メソッドについては本記事で後述します。

 

「static」について

public class Hello{

    public static void main(String args){

      ***

   }

}

「static」がついているメソッドを「staticメソッド」と呼びます。

「staticメソッド」はインスタンスを生成しなくても呼び出せます。

「mainメソッド」(main(String args))はプログラムが実行されると最初に動く部分なので、インスタンス化を行うことができません。

そのため、「mainメソッド」は必ず「static」をつけておく必要があります。

※「インスタンス」については別の記事で説明します。

※「mainメソッド」については後述します。

 

「void」について

public class Hello{

    public static void main(String args){

      ***

   }

}

メソッドの戻り値が必要ないときに使う「型」の一つ。

メソッドの戻り値の「型」を指定することにより、システムのメンテナンス性が向上する。

mainメソッドの戻り値が「void」の理由は、スレッドのでの実行結果を戻り値にしたい場合、プログラム全体の戻り値があると、システムが正常に動作しない可能性があるからです。

※メソッド:一連の処理の集まり。原則、以下のような書式で記述します。

      [修飾子] 戻り値のデータ型 メソッド名(データ型 変数名){

                             メソッド内で実行する処理

                     }

※スレッドについては別の記事で説明します。

 

「mainメソッド」について

public class Hello{

    public static void main(String args){

      ***

   }

}

プログラムを実行する時に最初に呼び出されるメソッド。

(String args):「データ型」と「変数名」・・・mainメソッドに渡す引数の値を定めている。

String:文字列(複数の文字の集まり)を格納できる型。は配列を意味する。配列は同じデータ型の複数の値をまとめて管理できる。

args:変数名(任意)

※「データ型」と「変数名」については、別の記事で説明します。

 

「mainメソッド」の引数に渡した値の確認

eclipseデバッグ機能を使って、mainメソッドの引数(String args)に渡した値を確認します。

eclipseのインストール・設定をまだ実施していない方は下記の記事で説明しています。

porimon.hatenablog.com

eclipseでHello.javaというクラスファイルを作成し、下記のようなコードを記述します。

public class Hello{

    public static void main(String args){

      System.out.println("Hello");

   }

}

ブレークポイント(強制的にプログラムの実行を一時的に停止する箇所)を付けます。

mainメソッドの「{ と } の間」(ブロックと呼ぶ)の処理(System・・・)の行の「数字」の少し左側を「ダブルクリック」する。

※青い丸印がつけばokです。

f:id:porimon:20211020215238p:plain

 

javaファイルを右クリックする。

f:id:porimon:20211021012237p:plain

「Debug As」→「Debug Configurations・・・」を押下する。

f:id:porimon:20211021153206p:plain

「Main」タブの「Search」ボタンを押下する。

f:id:porimon:20211021165713p:plain

ブレークポイントを付けたクラス名を選択。(この場合は「Hello」)

f:id:porimon:20211021175224p:plain

「OK」ボタンを押下

f:id:porimon:20211021200528p:plain

「(x)=Arguments」タブを押下。

f:id:porimon:20211021205802p:plain

「Program arguments」入力欄に任意の文字列を入力。この場合「dog human」と入力している。(文字列の間に半角スペースを入れる。)

f:id:porimon:20211022121734p:plain

「Apply」ボタンを押下。

f:id:porimon:20211022124115p:plain

「Debug」ボタンを押下。

f:id:porimon:20211022133719p:plain

「Confirm Perspective Switch」ダイアログが出てきたら、「Switch」ボタンを押下。

f:id:porimon:20211022134737p:plain

「x=Variables」タブの「args」の左の矢印を押下。

※mainメソッドの引数である配列argsに値(dog human)が渡っていることが確認できる。

f:id:porimon:20211022150945p:plain

スポンサーリンク

#2初心者学習用 Javaプログラム 環境構築(Eclipse)から

はじめに

本記事では「Java言語の開発環境のEclipse」の導入・設定、「Eclipse」でのプログラムの実行方法について説明します。下記のURLからyoutubeで見ることできます。(よろしければチャンネル登録もお願いします。)

youtu.be

jdkのインストール方法は下記記事に記載しています。

porimon.hatenablog.com

また、「本」で学習したい方向けに初心者のお勧めの本を下記の記事で紹介しています。

porimon.hatenablog.com

 

Eclipseとは?

開発の生産性を上げるための統合開発環境IDE(Integrated Development Environmen)」。
主にJavaの開発環境として使用されているが、C、JavaScriptPHPなどでも利用可能です。

 

1.Eclipseのインストール

1-① 以前の記事(#1初心者学習用 JAVAプログラム 環境構築(cmd)から - porimon’s blog)で、 JDKのインストールを実行していない場合はインストールをする。インストールをしている場合は下記の「1-②」の作業から実行する。

 

1-② 以下のURLからeclipseをインストールする。
https://www.eclipse.org/downloads/packages/

 

1-③ OSがWindowsの場合、「Eclipse IDE for Java Developers」の「Windows x86_64」アンカーを押下する。

f:id:porimon:20210524021533p:plain

 

1-④ 「ダウンロード」ボタンを押下してファイルを保存する。

f:id:porimon:20210524145129p:plain

 

1-⑤ ダウンロードが完了したら、zipファイルを任意のフォルダに解凍する。

f:id:porimon:20210524165031p:plain

 

1-⑥ 解凍したフォルダ配下の「eclipse」フォルダと同じフォルダにワークスペース用のフォルダを作成する。

f:id:porimon:20210524181738p:plain

 

2.Eclipseの起動~設定

2-① 「eclipse」フォルダ配下の「eclipse.exe」を起動する。

f:id:porimon:20210524204341p:plain

 

2-② 「Browse...」ボタンから先ほど作成したワークスペース用のフォルダを指定する。

f:id:porimon:20210524212657p:plain

 

2-③ 「Launch」ボタンを押下する。

f:id:porimon:20210529161631p:plain

 

2-④ 「Windows」メニューの「Preferences」を押下する。

f:id:porimon:20210531234131p:plain

 

2-⑤ 「Java」メニューの「Installed JREs」を押下する。

f:id:porimon:20210601203254p:plain

 

 

2-⑥ 「Add」ボタンを押下する。

f:id:porimon:20210603201411p:plain

 

2-⑦ 「Standard VM」を選択して「Next」ボタンを押下する。

f:id:porimon:20210606110909p:plain

 

2-⑧ 「Directory」ボタンを押下して「JDK」のインストール先のフォルダを指定する。

f:id:porimon:20210606111726p:plain

jdkのインストール方法は下記記事に記載しています。

porimon.hatenablog.com

2-⑨ 「Finish」ボタンを押下する。

f:id:porimon:20210606112325p:plain

 

2-⑩ インストールした「JDK」のパス(「2-⑧」で指定したフォルダ)のチェックボックスにチェックする。

f:id:porimon:20210606120830p:plain

 

 2-⑪ 「Apply and Close」ボタンを押下する。

f:id:porimon:20210606121730p:plain

 

 2-⑫ エクスプローラーからインストールした「JDK」のフォルダを開く。

f:id:porimon:20210606131859p:plain


 2-⑬ 
「release」ファイルを開く。 

f:id:porimon:20210606132430p:plain

 

 2-⑭ JDKのバージョンを確認する。

   ※「JAVA_VERSION="14.0.2"」となっている場合、「JDKのバージョン」は「14」

f:id:porimon:20210606134502p:plain

 

 2-⑮ Eclipseの「Windows」メニューの「Preferences」を押下する。

f:id:porimon:20210606135422p:plain

 

 2-⑯ Java」メニューの「Compiler」を押下する。

f:id:porimon:20210606135624p:plain

 

 2-⑰ 「Compiler compliance level」のプルダウンで、先ほど「release」ファイルで確認したJDKのバージョンを選択して「Apply and Close」ボタンを押下する。

f:id:porimon:20210606135911p:plain

 

3.プロジェクトの作成

 3-① 「File」メニュー→「Java」→「Java Project」を押下する。

f:id:porimon:20210606152052p:plain

 

 3-② ・「Project name」の入力エリアに任意の名前を入力。(例、JPRT1)

            ・「Use a project specific JRE」のプルダウンで、先ほど(2-⑨)設定した「JRE name」を選択。(この場合、「JAVA14」)

f:id:porimon:20210606153100p:plain

 

 3-③ 「Finish」ボタンを押下。

f:id:porimon:20210606183841p:plain

 

 3-④ 「Don't Create」ボタンを押下。

f:id:porimon:20210606190455p:plain

 

 3-⑤ プロジェクトフォルダ(JRT1)の左の矢印)を押下。

f:id:porimon:20210606203522p:plain

 

 3-⑥ 「src」フォルダの削除。

    ・「src」フォルダを右クリック。

    ・「Delete」を押下。

f:id:porimon:20210606203726p:plain

 

 3-⑦ 「Delete」ダイアログで「OK」ボタンを押下。

f:id:porimon:20210606213519p:plain

 

3-⑧ コンパイル後に生成されるクラスファイルの出力先フォルダを作成する。

   ・プロジェクトフォルダ(JPRT1)を右クリック。

   ・「New」メニューを押下

f:id:porimon:20210606213740p:plain

 

3-⑨ 「Folder」を押下。

f:id:porimon:20210606224358p:plain

 

3-⑩ 「Folder name」に「target/classes」と入力。

f:id:porimon:20210606233316p:plain

 

3-⑪ 「Finish」ボタンを押下。

f:id:porimon:20210606233444p:plain

 

4.Java言語のソースコードの保存場所の作成

4-① ・プロジェクトフォルダ(JPRT1)を右クリック。

   ・「New」メニューを押下

f:id:porimon:20210607002232p:plain

 

4-② 「Source Folder」を押下。

f:id:porimon:20210607002419p:plain

 

4-③ 「Folder name」に「src/main/java」と入力。

f:id:porimon:20210613134002p:plain

 

4-④ 「Finish」ボタンを押下。

f:id:porimon:20210613134219p:plain

 

5.コンパイル後に生成されるクラスファイルの出力先フォルダを設定

5-①  「3-⑧」から「3-⑪」で作成した「target/classes」フォルダをクラスファイルの出力フォルダに設定する。

           ・プロジェクトフォルダ(JPRT1)を右クリック。

   ・「New」メニューを押下。

   ・「Properties」を押下。

f:id:porimon:20210613135337p:plain

 

5-②  「Properties」ダイアログの「Java Build Path」メニューを押下する。

f:id:porimon:20210613141333p:plain

 

5-③  「Source」タブの「Brouse...」ボタンを押下する。

f:id:porimon:20210613141653p:plain

 

5-④  「3-⑧」から「3-⑪」で作成した「target」と「classes」フォルダを押下。

f:id:porimon:20210613143237p:plain

f:id:porimon:20210613143525p:plain

 

5-⑤  「OK」ボタンを押下。

f:id:porimon:20210613144255p:plain

 

5-⑥  「Apply and Close」ボタンを押下。

f:id:porimon:20210613144430p:plain

 

6.Javaファイルの作成

6-① ・プロジェクトフォルダ(JRT1)を右クリック。

   ・「New」メニューを押下。

   ・「Class」を押下。

f:id:porimon:20210613150130p:plain

 

6-② Java Class」ダイアログの「Name」に任意のクラス名(ファイル名)を入力。

   ※下の画像では「Hello」と入力。

f:id:porimon:20210613161205p:plain

 

6-③ 「Finish」ボタンを押下。

f:id:porimon:20210613182108p:plain

 

7.プログラムの記述と実行

7-① ・「public class Hello {」と「 }」の間に以下のソースコードを張り付ける。

            public static void main(String args) {
             System.out.println("Hello");//「Hello」という文字列を表示するプログラム
            }

          

   ・キーボードの「Ctrl」+「S」キーを押してファイルを保存する。

   ※Eclipseはファイルを保存すると、同時にコンパイルも行われ、クラスファイルが作成される。

f:id:porimon:20210613190004p:plain

 

7-② プログラムを実行するために、キーボードの「Ctrl」+「F11」キーを押す。

           画面下部の「Console」ビューに「Hello」と表示される。

f:id:porimon:20210613202519p:plain

 

7-③ 先ほど(6-①~③)と同じようにJavaファイルを作成する。

          ※ここではファイル名(Name)を「cmd」としている。

f:id:porimon:20210613212128p:plain

 

7-④ ・「public class cmd {」と「 }」の間に以下のソースコードを張り付ける。

              public static void main(String args) {
                  int i; //int型の変数iを宣言
                  if(args.length == 0) { //mainメソッドで受け取る引数argsがない場合
                     System.out.println("引数がない");
                  } else { //mainメソッドで受け取る引数args
が0以外の場合
                     for(i=0; i<args.length; i++) {
                         System.out.println(args[i]); //mainメソッドで受け取る引数をConsoleに表示する。
                     }
                  }
              }

f:id:porimon:20210704132930p:plain

 

7-⑤  mainメソッドの「args[]」に引数を渡す設定をする。

    ・「Packege Explorer」の「cmd.java」を右クリックする。

    ・「Run As」メニュー → 「Run Configuration」をクリックする。

f:id:porimon:20210704140459p:plain

 

7-⑥  「Run Configuration」ダイアログの「Main」タブの「search」ボタンを押下。

f:id:porimon:20210704145533p:plain

 

7-⑦ 「Select Main Type」ダイアログで先ほど作成したクラス名「cmd」を選択して「OK」ボタンを押下。

f:id:porimon:20210704211340p:plain

 

7-⑧ ・「Main」タブの「Apply」ボタンを押下。

   ・「(x)=Arguments」タブを押下。

f:id:porimon:20210709134628p:plain

 

7-⑨ ・「Program arguments」の入力欄に任意の引数「dog human」と入力する。

   ※引数を2個以上入力する場合、引数の間に半角スペースを入力する。

f:id:porimon:20210709134820p:plain

 

7-⑩ 「(x)=Arguments」タブの「Apply」ボタンを押下する。

f:id:porimon:20210710115243p:plain

 

7-⑪  「Run Configuration」ダイアログの「Run」ボタンを押下する。

f:id:porimon:20210710145204p:plain

 

7-⑫  先ほど、「Program arguments」の入力欄に入力した値が画面下部の

    「Console」ビューに表示されている。

f:id:porimon:20210710154317p:plain

 

スポンサーリンク