sh1’s diary

プログラミング、読んだ本、資格試験、ゲームとか私を記録するところ

Unity エディタ拡張でスクリプトファイルのテンプレートを作成する

Unity のスクリプトファイルを標準の作り方だと「Create/C# Script」をつかうと思いますが、十分なフォーマットとは言えないですよね。ほかにも

  • 文字コードを OS にあわせたい
  • MonoBehavior を継承しないクラスでいいときがある
  • ときどきは最初から UniRx を using していたい

デフォルトは、Windows だと「Unityのインストールフォルダ\Editor\Data\Resources\ScriptTemplates」を利用します。

などなど、ひとつのテンプレートファイルでは要望を解決できない。

そんなわけで、ケースバイケースで生成するスクリプトファイルの雛形は、いくつかの選択があったほうが望ましそうです。そこで複数のスクリプトファイルを選択・生成するエディタ拡張を作成しました。

f:id:shikaku_sh:20210121190532g:plain:w600
やってみた雰囲気

わりといい感じ。最後に、アセットをパッケージ化して使い回せるようにしておきました。

スクリプトテンプレートを呼び出すエディタ拡張

まず、スクリプトファイルを保存するためのメニューを追加します。

f:id:shikaku_sh:20210121184545p:plain:w600
オリジナルのメニューを追加します

こんな感じで、「Create」メニューの中に Add Script Files というメニューを追加して、3パターンのファイルを選択できるようにしてみました。 パターンファイルは、別に用意しておいてパッケージに含めておけば、各プロジェクトで使い回せる&微調節も可能です。

使い回すことを目的にしているので、サンプルだと名前空間 (Sh1ch.Plugins) を設定しています。名前空間の指定がないと衝突が発生する恐れがあるので。(通常のプラグインは、名前空間を利用します)

using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEditor;
using UnityEngine;

namespace Sh1ch.Plugins
{
    static internal class MenuItemSettings
    {
        private const string PLUGIN_PATH = "Assets/Plugins/ScriptFilesFromTemplate/";
        private const string NEW_FILENAME = "NewFile.cs";

        private const string MENU_ITEM_ROOT = "Assets/Create/Add Script Files/";

        private const string SimpleScript = "Simple Script";
        private const string MonoBehaviour = "MonoBehaviour";
        private const string MonoBehaviourWithUniRx = "MonoBehaviour (UniRx)";

        [MenuItem(MENU_ITEM_ROOT + SimpleScript)]
        private static void CreateSimpleScript() => CreateScriptFile("SimpleScript.txt", NEW_FILENAME);

        [MenuItem(MENU_ITEM_ROOT + MonoBehaviour)]
        private static void CreateMonoBehaviour() => CreateScriptFile("TemplateMonoBehaviour.txt", NEW_FILENAME);

        [MenuItem(MENU_ITEM_ROOT + MonoBehaviourWithUniRx)]
        private static void CreateMonoBehaviourWithUniRx() => CreateScriptFile("TemplateMonoBehaviourWithUniRx.txt", NEW_FILENAME);

        private static void CreateScriptFile(string templateFileName, string newFileName)
        {
            ProjectWindowUtil.CreateScriptAssetFromTemplateFile(System.IO.Path.Combine(PLUGIN_PATH, $"Templates/{templateFileName}"), newFileName);
        }
    }
}

拡張メソッドとしてのポイントは、ファイル追加を Unity の用意してくれているメソッド ProjectWindowUtil.CreateScriptAssetFromTemplateFile で済ませています。これ便利でテンプレートファイルを読み込んで、スクリプトファイルを追加してくれます。あと、既定の予約文字を使うことで自動的に変換してくれたりします。

  • #SCRIPTNAME#
  • #ROOTNAMESPACEBEGIN#
  • #ROOTNAMESPACEEND#
  • #NOTRIM#

#ROOTNAMESPACEBEGIN##ROOTNAMESPACEEND# はセットで、名前空間を作成します。名前空間のテキストは「Edit>Project Settings>Editor>Root namespace」 を参照しています。

f:id:shikaku_sh:20210126120217p:plain:w600
名前空間の設定

なお、プラグインはデフォルトの Assets\Plugins を利用しました。UniRx, Unity for Github なども同じやり方です。

Priority の設定

MenuItem 属性のパラメーターに Priority を設定することで、右クリックメニューの表示する並び順を変更することができます。

private const int SCRIPT_PRIOPRITY = 30;

[MenuItem(MENU_ITEM_ROOT_SCRIPT + SCRIPT_SIMPLE, priority = SCRIPT_PRIOPRITY)]
private static void CreateScript_SimpleScript() => CreateScriptFile("SimpleScript.txt", NEW_FILENAME);

設定変更しても反映されないことがあり、その際は Unity を再起動すると反映できました。

また、Priority の値は Unity のメニューの表示が変更されることもあって、確定させないほうが無難です。とりあえず、現状だと 30 に設定することで、「C# Script」の上に separator を挟んで表示することができるのでよい感じです。(おそらく、10 以上 priority が離れているため、separator が自動生成される)

テンプレートファイルのサンプル

こんな感じにしました。 #region の追加なんかもオススメです。

チームだと1ファイルのコード量がわからなくなる傾向があるので、region は注意が必要です。

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;

#ROOTNAMESPACEBEGIN#
    /// <summary>
    /// <see cref="#SCRIPTNAME#"/> is the class that inherits from <seealso cref="MonoBehaviour"/> class.
    /// <para>
    /// <see cref="MonoBehaviour"/> is the base class from which every Unity script derives.
    /// </para>
    /// <see href="https://docs.unity3d.com/ScriptReference/MonoBehaviour.html">Unity Documentation - MonoBehaviour</see>
    /// </summary>
    public class #SCRIPTNAME# : MonoBehaviour
    {
        /// <summary>
        /// <see cref="Start"/> is called on the frame when a script is enabled just before any of the <seealso cref="Update"/> methods are called the first time.
        /// </summary>
        private void Start()
        {
            #NOTRIM#
        }

        /// <summary>
        /// <see cref="Update"/> is called every frame, if the <seealso cref="MonoBehaviour"/> is enabled.
        /// </summary>
        private void Update()
        {
            #NOTRIM#
        }
    }
#ROOTNAMESPACEEND#

Unity Package の作成

メニューから「Assets>Export package」を選択して、プラグインを作成します。この際は、プラグイン以外のファイルは除外するようにします。

f:id:shikaku_sh:20210121185418p:plain
あらかじめファイル選択してからメニューを操作すること

サンプル

参考

うたわれるものロストフラグ マツリ「花札」対策と攻略

1月なので 🎴 (花札)。

個人的に博打が好きじゃないので、正直どうかと思っていたくせ毎月必要になる報酬が大きくなってしまい、これはもうしっかりやらざるをえない……というか、本編のゲーム以上にマニュアルでやらざるをえないという意味不明な状況にあると思います。

そんなわけで、個人的な「マツリ」攻略をメモします。五光役は難しいですが、1週間に1回くらいは出せてるんで基本的なポイントをメモ。

やってみている感じだと毎月に数回程度は、150点くらい勝ち越す打ち方ができています。五光の10回クエストも全部マツリで達成しました。(というか、数十回は達成してる)

f:id:shikaku_sh:20210119104340j:plain:w580f:id:shikaku_sh:20210119104345j:plain:w580
花札好きでもない人にはつらいよな

所要時間は 5 ~ 20 分。通勤時間に処理できるとよし。(最近は通勤自体なくなったので、家でのんびり消化してるけど)

基本的な花札の流れ

基本的に運ゲー。なんで、ダメなときはどうやってもダメ。とくにマツリは1手目、2手目で即あがりになるケースがあり、体感値でも不快な程度に多いです。

このゲーム、相手も札を叩きつけるようにして取るんで気分わるい。

ともかく、ここでの花札は規定の局数(うたわれは3局)が終わったときに、相手より1点でも多くの点をとるゲーム。でも、うたわれるものデイリー花札は「3,000木札回収するまでが、ひとつの花札」ですよね。

個人的なおすすめは

  1. 10~500 木札以下になるまでオートで花札を終わらせる(おすすめは、50勝できていないキャラのクエスト自動消化)
  2. 100 枚単位の自動対局(対戦無し)でで木札と交換して残り取得できる枚数を 10~90 枚にする
  3. 「マツリ」と花札をして大きく勝つ

デイリー花札のポイントは、最後に大きく勝利することで一日の獲得上限の「3,000木札」を大きく超えて木札を獲得することができます。

最後の1回、マツリに大きく勝って大きく木札を取る。これ。

対マツリ

個人的にポイントは、こんな感じに今は思っています。

  • 1局、2局目で6点以上勝っているのが大切

マツリは通常だと「こいこい」をしません。しかし、3局目は同点になるまで、こいこいし続ける機械になるので、これを利用します。

具体的には、すこし無茶な状況でも「光札」「赤札」「青札」「猪鹿蝶」を待つような、手の遅い打ち回しが可能になります。

もっと言えば、相手のよい手を妨害しつつ、よい上がり手を狙った札の取り方ができる。

2局の間に6点以上の差をつけておけば、マツリお得意の酒構成も5点止まりなんで、「光札」「赤札」「青札」「猪鹿蝶」など狙えるところを狙いつつ、カス、タン、タネのどれかをじわじわ育てる方針。(点数に差がなければ、普通に打つしかない)

逆に素早くタンやタネなんかであがると、こいこいで相手に高い点入るケースをフォローしないといけないので積極策ではない。開始時点での手札がつまらないとき以外はやりたくない。

得点で勝ってる3局目は横綱ができる。だから、1局2局での得点がほしい。理想はこの形です。数千点を荒稼ぎする。

f:id:shikaku_sh:20210119104644j:plain:w580
月に1回あればいいなくらいのあがり

一局目で大きく勝っても、これくらいの点数になるんで面白くない。

f:id:shikaku_sh:20210119104726j:plain:w580f:id:shikaku_sh:20210119104730j:plain:w580
わりとよくあるあがりかも

花札の基本

花札の札の枚数は、1~12月にそれぞれ札が4枚ずつの合計48枚です。自分と相手と場に8枚x3の合計24枚消費された状況からはじまります。

この時点で、お互いにすべての札のうち33%(16/48)の札を把握しています。

山札には残り24枚(50%)の札が残っており、最大で16枚めくられます。残8枚(17%)はこの局では絶対に登場することがありません

そこに含まれてしまうと、どうしようも作れない役がある。残念。

最大で38枚(先攻)~40枚(後攻)くらいになるけど、相手よりも先に上がるゲームなんで、通常はここまでもつれにくいです。

1、2局目はマツリの打ち方を真似るとよいです。ただ、確定して取れる札は急いで取らないでいいです。なるべく残すことで、確定で取れる=確定で上がれる、こいこいできるシーンを作っておけると思います。(点数が欲しいので、確定こいこいが正義すぎる)

でも、3局目はそうではない。こいこいして消費できるやり方を知っていると、もうすこし長い局を打つことができます。(ただ、あっさり酒を引けたりすると、速攻がいいケースも当然ある)

細かい部分だと、タネとタンどっちも同じくらい伸ばせやすさがあるなら基本はタンかも。枚数の確率からするとタンは10枚でタネは9枚。複数役からもタンは赤・青あるのと、タネの複数役は猪鹿蝶と酒絡みで人気になりやすい。酒を引けてない+猪鹿蝶に目がないとうま味が薄い。

個人的に一番ムカついているのはマツリじゃなくて、毎日通常戦闘どころか調伏連合編成にすら顔を出さず、遠征にも適正がないのに、花札よわすぎ主人公。歴代最カス。

花札

f:id:shikaku_sh:20210119104910j:plainf:id:shikaku_sh:20210119104913j:plainf:id:shikaku_sh:20210119104916j:plainf:id:shikaku_sh:20210119104919j:plainf:id:shikaku_sh:20210119104922j:plainf:id:shikaku_sh:20210119104925j:plain
慣れるまで違和感のある札も

個人的に12月の光札かどこかウィツァルネミテアにしてほしかった。専用役はあってもよかっただろう。

2020 年 会社勤めの買ってよかったモノ、まとめ

12月です! なので、風物詩をば。

よく覚えてなかったので amazon の履歴と過去記事なんかのまとめ。個人的な記録にもなったので満足。

資格関係

色彩検定3級 本試験対策

色彩検定3級 本試験対策

今年は、例によって COVID-19 の影響でほとんど資格試験を受けに行く機会がありませんでした。個人的には、Python あたりも行きたかった気がしています。

私物

雑多に。今年はやはりテレワークの影響で家の環境にテコ入れした部分が目立つ気がします。クッションもゲーミング用のちょっといいやつに更新。背もたれクッションも検討中です。

とくに、わかりやすいのは指紋認証。顔認証ではないです。マスクをつけることが増えたので顔認証ではない方法を選択しました。あとは、メインの鞄を GREGORY に更新して、パーカーとダウンを NorthFace に更新しました。ほんとはマフラーも更新したかったんですが、売り切れてしまって失敗しました。ふるさと納税関係も今年はしっかりできたのはよかったな。

最近読んだものだけ。テレワークにあわせてゼロトラスト関係の知識を多く勉強した気がします。オンラインセミナーでもかなり増えた印象。個人的に、今年は歴史関係の読書があんまり充実していないな。失敗の本質くらいしか読めていないかも。

総括

今年は例年と比べて2倍の記事を書くことができました。例年は年末ごろに時間があったのですが、今年は COVID-19 の影響でまったく逆になった感じもあります。

会社への通勤量が減って、ライフワークバランスが本格的に考えられるようなったのはよいのですが、原因が原因だけに複雑です。なにか別の困難を乗り越えるような条件でもないと、この社会は従業員のライフスタイル改善に取り組めないものなのか、という体験でもあって複雑でした。

資格勉強は、取り組むことが減って(試験自体が中止になったり、受験場へ行くのが難しかった)色彩検定くらいになりましたが、Unity をそれなりに触ってみることができたのはおもしろかった。来年も継続したいと思っています。

私生活では、日常的な運動量が減って数キロ体重が増えました。ただ、ジムへ行く頻度自体は(下期にかけて)増えたので筋力量は増えつつあるんだけど、重たくもなってしまった感じ。

来年も資格試験はすこし控えて、Unity や技術系の参考書を読む時間を増やそうかな、と思っています。

履歴

Word ですこしデザインのよい資料を作成する

Word で資料を作成する際に、すこしデザイン性を上げるためのメモです。

なんだかんだで今も一部の資料を作る際は(慣例などによって)、Word が推奨されたりしますよね。といって、Word を雑に使うとヒドい見た目の資料になるので、ちょっとは見た目に気をつけよう、という内容です。

個人的には、word でマニュアルを作成するよりも InDesign を使ったほうがきれいでよいと思うし、簡単なものでいいなら markdown を使ったメモでいいと思う。

目次のデザイン

Word の目次は、単純にいれるだけだとシンプルな出来になってしまうので、個人的に好みではないです。でも、ユーザー設定の目次で、アウトラインレベルを「3」つくらいまでちゃんと自分で設定すれば、それなりに格好がつけられると思う。

f:id:shikaku_sh:20201221151731p:plain:w600
Word で生成した目次

これくらいの出来でも、参考書と見比べてもそれほど見劣りしないと思います。

  • 目次1
    • フォント:BIZ UDP ゴシック 12pt 太字
    • 段落:前と後に1行
    • 網掛け:下段に太さ 1pt のラインを追加
  • 目次2
    • フォント:BIZ UDP ゴシック 10pt 太字
    • 段落:前と後に 0.5 行
  • 目次3
    • フォント:游ゴシック 10pt、文字色(緑を使った)
    • 段落:左を2文字空ける

タブとリーダーの設定は、あとから「スタイル」で追加したほうが良い気がしています。「スタイルの右下」の矢印からスタイルの一覧を表示します。

f:id:shikaku_sh:20201221151919p:plain
ここ

スタイル書式の詳細 SHIFT + F1 を表示して、最後の微調節。

目次は他を完成させてから、最後に調整すること。「目次の更新」F9 で目次をすべて更新すると適用したスタイルが初期化されてしまう。

両面印刷用の余白設定

両面印刷するときの個人的デフォルトで、パンチ穴を空ける用です。

f:id:shikaku_sh:20201221151952p:plain:w300f:id:shikaku_sh:20201221151949p:plain:w300
両面印刷の設定例

ヘッダーとフッターに入れた文字との距離が 1.5 行くらい空いているものを好みます。ただ、デフォルトだとかなり広いので、すこし狭く設定しているかもしれません。

ヘッダーフッターの設定

ページ番号を挿入します。自動入力よりもマニュアルでフィールドを追加したほうがよい(できるようになったほうがよい)と思います。

f:id:shikaku_sh:20201221152140p:plain
こういうやつ

単純な資料だと { PAGE } だけでいいと思います。ときどき、「現在ページ / 総ページ」という書き方が好まれることがあります。このときは「 { PAGE } / { = { NUMPAGES } - n } 」の形式がよいと思います。この場合は現在ページよりも総ページは小さいフォントサイズにします。(現在ページも本文より小さいフォントがよいと思います)

f:id:shikaku_sh:20201221152159p:plain
複雑なページ表示

f:id:shikaku_sh:20201221152309p:plain
ヘッダーはこういうのが好き

個人的には、フッターにページ番号を入れて、ヘッダーには章などを表すテキストを入力します。

本文のデザイン

f:id:shikaku_sh:20201221152405p:plain:w600
本文は、左インデント6文字の例

本文は、左インデントを「6文字」追加するか、段落なしで書きます。文のはじまりを1文字落とすかどうかは好みですが、最近は落とさない設定も多くなっていると思います。(手元にあった参考書をいくつか参考にしました)

左インデントを「6文字」空けていると、あとでアイコンを強調しやすいと思うのです。また、余白部分が増えることでデザイン的な読みやすさがある気がしています。

f:id:shikaku_sh:20201221152448p:plain:w500
図を入れたときの雰囲気

「2行段組」も好みますが、Word は段組みがイマイチなので、段組みをするなら InDesign のほうがいいかも。

フォントの設定

本文のフォントは、こんな感じが今は好きです。

  • 本文「游ゴシック」、「ヒラギノ角」
  • 題名「BIZ UDP ゴシック」
  • ID など「HGP ゴシック M」
  • ページ番号「Lucida Console」など

参考

色彩検定3級 受験と合格

色彩検定(3級)を受験して合格したので結果を記録します。昨日、結果速報が公開されて、自分の試験番号も掲載されていました。

f:id:shikaku_sh:20201217183825j:plain:w600
届いた 12/17 日でした

これで、デザインに関して発生しがちな豪腕な立ち回り(個人的好き嫌い)に振り回される程度が軽減できそうです。

試験日は11月8日。結果発表が一か月後の12月7日。試験日を予定するのも面倒だし、結果が出るのも遅いというのが、どうにも。

f:id:shikaku_sh:20201207163226j:plain:w500
会場の建物。結構きれいなところでした

色彩検定PDCA 自己評価とかやってるけど、ここまで自画自賛してるの初めてみた。

f:id:shikaku_sh:20201207163412j:plain:w500
受験前の雰囲気

ちなみに、受験者の多くは珍しく女性でした。年齢層も若い傾向でしたが、30~40歳くらい人もそれなりにいる感じ。開始直前になるとわりと席は埋まった感じです。

そんな感じで、というわけじゃないけど、あんまりやる気がでていませんでした。でも、色彩のことはかじっておきたい。公式の参考書を買うモチベーションにも欠けたので、古本屋で 90円で購入(10% オフ だった)した試験対策本ひとつで受験してきました。(なお、公式資料は一度も手に取っていません。ちなみに熊谷 佳子さんの参考書でした)

ただし、当日の会場は公式の教科書を開いているひとが多かった中で、古い古い参考書を開くのは「勇気」が高まった。

ともかく、受験するために勉強したやりかたをメモ。

色の名前をおぼえる(期間中:全体)

ある程度覚える必要があるけど、モーブ菖蒲色のように似たような色の中から正しい色味を選択できないとダメ。なので、問題形式のアプリを使おう。

色相番号+トーン番号で記憶するとか、そういうのを通勤電車とか寝る前に毎日2,3回、10問クイズをやるようにする。問題となる可能性が高いので、やればやるだけ基本点が見込めるのでオススメ。

注意する必要があるのは、カラーチャートのように厳密な数値(例:#FF0000)に基づいたものよりも、それぞれの人が持つ色のイメージを包摂していることから、色相番号+トーン番号のような値で理解しておくといいかも。

桜色(さくらいろ)だと、つぎの4つの色が例に挙げられているなど、厳密で一意な RGB 値で表現されないです。

色相環を覚える(期間中:全体)

3級は、色相環マンセル表色系とは別で 24 個の色に分ける。R, yR, rO, O,... というやつ。小文字は修飾子(y:黄色味の~)のようになってて、大文字はその色自体を表す(BG:青緑)ので、「なんとか色の~」にはならない。

たまにペンタブでお絵描きする人なんかは、色彩検定を受けて一番メリットがあるのここかも。色相環の理解が深まる。長波長(赤系)~短波長(青系)とかも、理科に興味なかった人は理解の支えになるね。

桜色は「ごくうすい、紫みの、赤」と修飾語表現されます。このあたりから色相・明度・彩度を評価できるような理解が大切になっていると思います。

  • 「ごくうすい」明度:高、彩度:低
  • 「紫みの」色相を表す
  • 「赤」有彩色であること、基本色を表す

JIS Z-8102(物体の色名)も勉強はじめの参考にしました。ただし、修飾語や区分は PCCS とすこし違うので留意しましょう。

参考書の使い方雰囲気

私の参考書はほとんど問題形式になっていました。実試験でも簡単な出題が結構あるので、それは参考書でざっくりとカバーできてそうでした。

現在最新の色彩検定の参考書は、問題を結構掲載しているのも(ざっくりと立ち読みで)確認しました。なので、問題になっているポイントを押さえる傾向なのかも。

一応、重要になっている用語の意味は、誤解なく理解して自分の言葉で説明できるのが大切っぽいです。デザイン系なので、感覚的に捉えてしまいがちなんですが、それを体系化するのが本来の目的だったはず。理屈で解けることを増やす努力が尊い。とりあえず次のあたりで引っかかるところは無いようにしよう。

  • 色相
  • 彩度
  • 明度

どれかの要素を上下された色はどれか、みたいなのがわからないとダメ。ここがポイントだと思う。

最後まで問題を解ける割合がイマイチなら、色の名前をしっかりと覚えましょう。覚える数も決まっているし、色の名前を答えるタイプの問いはやっとくだけの問題なので、悩む余地がすくないのでオススメ。(詰めてやると苦痛だけど)

似たような色の中から選択する形式になっていても、ミスを減らす努力をしておくとベストです。私は、どうも彩度を見るのが下手だったので、色相と明度から選択肢を減らしてから彩度の評価をしていました。

問題用紙の中では、(問題の都合などで)何個かは色の名前を(問題が)示したものも当然あります。その色は自分の頭の中にある予定した色味と一致しているかはポイントです。そこから類推して別に問われる問題の色味が何色か、で考えたほうがよさそうです。当日の試験会場の照明・印刷の具合などで、アプリ・対策本と若干見え方・色味が違うかもしれないからです。

参考

色彩検定 公式テキスト 3級編 (2020年改訂版)

色彩検定 公式テキスト 3級編 (2020年改訂版)

  • 発売日: 2019/12/26
  • メディア: 単行本(ソフトカバー)

色彩検定3級 本試験対策

色彩検定3級 本試験対策

Visual Studio フォルダー検索で対象のファイルを除外条件に指定する方法

Visual Studio のフォーラムに「フォルダ検索で、対象のファイルに除外条件を指定したい」という質問が挙がっていました。

*.vb*.cs は検索対象にしたいが、*.Designer.vb*.Designer.cs は検索対象にしたくない

回答がついていたのですが、あまり適当なものとは思えず、自分なりにやってみたところの答えをメモ。

「検索と置換」でファイル種類でフィルタリングする

f:id:shikaku_sh:20201205151223p:plain
フィルタリング例

こんな感じで、「ファイルの種類」でフィルターを設定する。「!*\bin*;」のように「!」をつけることで排他条件になっている。(と思われる)

.Designer.cs ファイルと AssemblyInfo.cs ファイルを除外した cs ファイルの検索だとこんな感じでどうだろう。

  • !AssemblyInfo.cs;!.Designer.cs;.cs;

ショートカットキー

検索と置換

  • Ctrl + F
  • Ctrl + H

フォルダーを指定して検索

  • Ctrl + Shift + F
  • Ctrl + Shift + H

フィルタリングして検索したほうが使い勝手いいなら、shift キーも押して検索するようにしよう。

参考

Visual Studio パーフェクトガイド

Visual Studio パーフェクトガイド

Visual C# 2019パーフェクトマスター

Visual C# 2019パーフェクトマスター

プログラマーのためのVisual Studio Codeの教科書

プログラマーのためのVisual Studio Codeの教科書

ふるさと納税に使える金額を自分で頑張って調べる方法

社会人の方だとわりとやってるだろう「ふるさと納税」について、個人的なやり方・調べたことをメモ。

いわゆる、ふるさと納税に使える上限金額、特例分の上限金額をどうやって調べるのか、です。いろんなシミュレーターがあるのですが、中でどんな計算をしてるのか信用しきれず、自分なりに調べてみた記録です。

ふるさと納税に使った金額の宛先

つぎの3つに充てられます。

  • 所得税からの控除(総所得の 40% まで)
  • 住民税からの控除(基本)(総所得の 30% まで)
  • 住民税からの控除(特例)(総所得の 20% まで)

和光市の書き方がわかりやすかったです。

ざっくりと来年支払う税金から控除を受けるという仕組みのようです。このうち、一番上限が低い「住民税からの控除(特例)」の上限を「ふるさと納税に使える上限金額」とするようですね。

ちなみに、住民税は、市民税4%と都・県・府民税6%をまとめたもので、およそ10%ですが、細かくは微妙に違います

ともかく、今年なら 2020 年にいくら課税の対象となる収入があったかがポイントになります。まず、これがどんな感じなのか調べてみます。課税対象となる所得を「課税標準の総所得」というみたいです。これは、毎年6月ごろに市民税・府民税の徴収通知書が届いているので、それを見ればわかります。

ふるさと納税をして控除できた金額を知るのもそのタイミングになるはずです。なので、2020 年の分は 2021 年の6月の通知書でわかるはずです。

課税標準の総所得の計算

徴収通知書に書かれている数字(金額)を整理しながら進めていきます。徴収通知書のサンプルはこちら。

f:id:shikaku_sh:20201127173112j:plain:w600
参考になりそうなあたりに目印を入れました

給与所得の計算

まず、課税対象になる所得「課税標準の総所得」をどのように計算しているのかやってみました。まず、完全な収入金額「給与収入」がスタート地点になります。この次が「給与所得」です。ここで結構な金額が減っていますが、これは給与所得控除額を除いた金額です。

給与所得控除額とは、いわゆる「経費」です。なので、課税対象外のお金として扱ってくれているので、「給与所得」の額面が小さくなっているなら、その分だけ課税対象となる収入が少ないということです。お得感あります。

この給与所得控除額も 2020 年はポイントになっています。2019 年のときよりも、ざっくりと10万円少なくなりました。なので、2020 年は給与所得が10万円高くなるはずです。その分だけ課税対象となる収入になる、ということです。ここのロジックがそれぞれの名詞の意味を理解していないと頭がバグりそうですね。

計算式はこちら国税庁の式を参照してください。

たとえば、360 万円~660 万円の給与収入だとすると、給与所得控除額は以下の式で計算できるようです。

{
収入金額×20%+440,000円
}


余談ですが、この式で電卓計算しても通知書の金額とぴったり一致しませんでした。(数千円ズレます)しかし、国税庁の給与所得(給与収入 - 給与所得控除額)を計算する Java Script で計算するとぴったり一致します。コードを見てみるとこんな式になっています。

kakaku = 給与収入の金額;
m = kakaku;

m = (parseInt(m/4000))*4000;
z=m*80/100-440000;

alert("給与所得の金額は、" + "(" + change(kakaku) + "÷4 (千円未満の端数切捨て))×4×80%-440,000=" + change(z) + "円になります。");

4000 で割って整数にして、4000 で掛け算して、元の金額の千円以下の値を消し込んでいますね。これは誤差の原因になりそうですね。しかし、これだと端数を切るだけ(1000 で割って掛け直せよって)なりませんか? 小数点以下の端数が変化しちゃうから、これも誤差の原因になっています。

調べてみたところ、実際に正となるのは所得税法別表第五のようになります。この別表が曲者で、4,000 円区切りで給与所得控除額が決まっているのですよね。なので、4000 で割り算して、小数点以下のマス目を別表にあわせたんだと思います。(私しらべ)

給与所得者の基礎控除申告書 だと、それをフォローする式になっています。 4 で割ってから 3.2 を掛けています。(80% × 4 = 3.2)

そんな感じで、給与所得が算出できました。

所得控除

所得控除は、給与所得からさらに控除される金額で、課税対象となる総所得=(給与所得 - 所得控除)で決定しています。(所得控除合計も千円以下は切捨みたいです)

なので、これも課税対象の金額に含まれないので、家計簿的には助かるけど、ふるさと納税の金額は減る要素になります。(保険、扶養、配偶者等の控除はここで計算)

ちなみに社会保険料は給与収入に対して 15% ~ 14.22% あたりになることが多いため、簡易シミュレーターはそんな感じで動作しているようです。

ともかく、これで「課税標準の総所得」を計算できました。

所得税

課税標準の総所得」から所得税率がわかります。

課税対象額 税率
195万円まで 5%
330万円まで 10%
695万円まで 20%
900万円まで 23%
1800万円まで 33%
4000万円まで 40%
4000万円以上 45%

※実際の所得税率は令和19年まで復興特別所得税として所得税率×1.021%されたものとなります。

たとえば、400~500万円くらい稼いでいる人だと 5% か 10% のどちらになるかで、ふるさと納税金額に違いがでる際どいラインです。コロナ禍による純粋な給与収入減があるなら、給与所得控除額の減額 10 万円による、納税の増額とあわせて、どのくらいの「課税標準の総所得」になるかを推定するのが大切になりそうです。

ちなみに、5% を選択しても、現在は 5×1.021 になるので注意。

所得割額

「所得わりがく」と読むみたいです。

課税標準の総所得」から所得割額を計算できるようになります。所得割額は「割」というのがポイントみたいで、所得金額に比例して課税される住民税額のことです。以下の式のようになるようです。

{
所得割額=「課税標準の総所得」×税率-税額控除
}


こんな感じで、さらにさらに控除があります。ややこしいですね。でも、「税額控除」は計算式のあとのほうで出てきたので、節税効果は高いといえます。つまり、税額控除があると、ふるさと納税金額の大きな誤差に繋がるので注意

源泉徴収税額、住宅借入金等特別控除、省エネ改修工事、多世帯同居改修工事など、控除の種類が多くてここの部分で所得割額を正確に算出しづらいと思います。でも、ここ注意。たとえば、住宅借入金等特別控除を利用することで課税所得が減り、ふるさと納税の寄付上限額が低くなります。

ふるさと納税の上限額

こんな感じになります。

{
(所得割額 \times 20%)÷ (100% - 住民税率 10% - 所得税率) + 2000円
}


ざっくりと計算するなら、個人的には次がいいと思いました。

{
((市民税+都・県・府民税) \times 0.2)÷(1-住民税0.1-所得税)+2000円
}


もっとも参考になる上限値を調べる

都道府県の生活市民課まで、ふるさと納税の上限額を問い合わせてみるとよいかもしれません。都道府県にもよりますが、徴収税額の変更通知書の「指定番号」と「宛先番号」がわかると去年の分が最大でいくらまで使うことができたのか計算できます。(ちなみに、この番号は見た限りだと毎年同じ番号でした)

f:id:shikaku_sh:20201127173504j:plain:w600
通知書のサンプル

私の都道府県では、電話問い合わせをすると30分くらいで折り返しの電話をいただけました。ざっくり目安金額を教えてもらえます。

やってみた感じだと、自分で計算した結果と何万何千円のところまで一致した解答例を頂戴した感じになりました。もちろん、去年と今年で収入は違うので、あくまで参考値ですが、自分にとって(ふるさと納税の上限値と)もっとも密接な関係を持つ既知の値となります。ひとりで全部やるなら、市民課への相談は結構おすすめだと思います。

答え合わせ(2021 年 5 月末追記)

2021 年の住民税決定通知書が届いたので、ふるさと納税の答え合わせ。

f:id:shikaku_sh:20210527104505j:plain:w500

次のようになっていたら、ふるさと納税の成功確定だと思います。

参考