2023年12月16日 (土)

大学等修学支援制度ができた後の生活保護世帯からの進学

大学等修学支援制度においては、自宅通学の場合の給付奨学金(*1)の金額が一般の低所得世帯と生活保護世帯等で異なっています(*2)。

区分 支給月額
通学区分 設置者区分 一般の低所得世帯(住民税非課税世帯) 生活保護世帯等
自宅通学 国公立大学 29,200 33,300
私立大学 38,300 42,500
自宅外通学 国公立大学 66,700
私立大学 75,800

これを見ると、生活保護世帯等の方が優遇されているのではないかと思われるかもしれませんが、実際は生活保護世帯の方が自己負担が多く、貸与奨学金や民間の奨学金の併用とアルバイトで賄う必要が生じてきます。

例えば、都区内に住む3人家族(50歳母、17歳、13歳)で、17歳(*3)の長子が私立大学に進学して自宅から通学し、13歳の次子は引き続き中学生のパターンを想定します。この場合の一家の支出月額は次のとおりです。

支出(月額) 進学前 進学後 計算方法
家での生活費 205,629 東京都区内における3人世帯(50歳母、17歳、13歳)の生活扶助の額(期末一時扶助、冬季加算を含む年額を12で除したもの)(*5)。端数処理は小数点以下第1位を四捨五入(以下同じ)。
家賃 69,800 東京都区内における3人世帯の住宅扶助上限額。
長子の高校の費用 21,428 (なし) 「子供の学習費調査」(文部科学省、令和3年度)「学年(年齢)別,所在市町村の人口規模(学科)別の学習費」の公立高校(全日制)平均の学校教育費309,261円から、授業料52,120円を控除した257,141円≒月21,428円。
次子の中学の費用 11,029 上記「子供の学習費調査」の公立中学校平均の学校教育費132,349円≒月11,029円。なお、学校給食費は無償化された区が複数あり、また実額が生活保護又は就学援助から支給されるため考慮しないものとした。
大学の授業料その他の学校納付金 (なし) 98,708 日本学生支援機構「令和2年度学生生活調査結果」「居住形態別・収入平均額及び学生生活費の内訳(大学昼間部)」「自宅」「私立」の「授業料」及び「その他の学校納付金」の合計。
大学の通学費等 9,342 同調査結果「修学費」及び「通学費」の合計。
大学の学生生活費等 34,017 同調査結果「課外活動費」及び「小計(生活費)」の合計。なお、生保世帯では学生が国保に加入する必要があるが、ここでは考慮しない。
支出合計 307,886 428,525  

高校から大学に進学すると、月額12万円、年額145万円も負担が増えます。

生活保護を受けていない場合、進学前は親の給与収入や養育費、預貯金の取り崩しなど(ここでは「親の収入」と一括します。)で賄っていたと考えられます。これらは、長子が大学に進学しても通常は減少しないと考えられますから(*4)、進学後に大学等修学支援制度を満額利用できた場合(住民税非課税世帯の場合)、次の計算となります。

収入(月額) 進学前 進学後 計算方法
親の収入 226,068 進学前の収支差額を計算。
給与、遺族年金、預金の取り崩しなど。
児童手当(次子分) 10,000 児童手当法6条1項
児童扶養手当 54,560 44,140 東京都福祉局ウェブサイト
東京都国公立高等学校等奨学のための給付金(長子分) 9,758 (なし) 東京都教育委員会ウェブサイト
就学援助(次子分) 7,500 品川区「令和5年度就学援助のお知らせ」記載の学用品費、修学旅行費、校外教授費及び卒業アルバム費(8年、9年の平均額)年70,048円、大田区ウェブサイト記載の学用品費、校外授業費、移動教室参加費、修学旅行参加費、卒業アルバム費(2年、3年の平均額)年78,400円、杉並区「令和5年度 就学援助費 費目別支給額表」記載の学用品費、学校行事費、移動教室費、修学旅行費(2年、3年の平均額)年121,780円の平均額を踏まえ、年9万円とした。
大学等修学支援制度
(授業料免除)
(なし) 58,333 大学等における修学の支援に関する法律施行令2条1項1号の上限額(年70万円)
大学等修学支援制度
(給付奨学金)
38,300 独立行政法人日本学生支援機構法施行令8条の2第1項1号
自己負担
(アルバイト・貸与奨学金)
44,184 進学後の収支差額を計算
収入合計 307,886 428,525  

他方、生活保護世帯では、進学した長子が世帯分離により生活保護の対象から外れるため、生活扶助が減額されてしまいます。
そのため、次の計算となります。

収入(月額) 進学前 進学後 計算方法
親の収入
(生活扶助、児童手当、児童扶養手当など)
205,629 157,118 進学後は東京都区内における2人世帯(51歳母、14歳)の生活扶助の額(期末一時扶助、冬季加算を含む年額を12で除したもの)。なお、児童手当及び児童扶養手当は収入認定されるため合算した。
親の収入
(住宅扶助)
69,800 東京都区内における3人世帯の住宅扶助上限額。
なお、進学に伴い世帯分離しても住宅扶助は減額されない。
生業扶助・東京都国公立高等学校等奨学のための給付金(長子分) 21,428 (なし) 高校の費用は全額、生業扶助・東京都国公立高等学校等奨学のための給付金で賄うものとして計算した。
教育扶助・修学援助(次子分) 11,029 中学の費用は全額、教育扶助・就学援助で賄うものとして計算した。
大学等修学支援制度
(授業料免除)
(なし) 58,333 大学等における修学の支援に関する法律施行令2条1項1号の上限額(年70万円)
大学等修学支援制度
(給付奨学金)
42,500 独立行政法人日本学生支援機構法施行令8条の2第2項1号
自己負担
(アルバイト・貸与奨学金)
89,745 進学後の収支差額を計算
支出合計 307,886 428,525  

これを図にすると次のような感じになります。

231216

毎月89,745円をアルバイトで得ることは不可能ではないものの、それなりに重い負担です。生活保護世帯の場合、「進学費用について親の支援が得られない」というよりも、生活扶助の減額により「親は支援できないし、むしろ家計にお金を入れてもらわないと生活できない」という状況があります。
生活保護世帯からの進学にあたっては、大学等修学支援制度で入学金が26万円まで免除されるものの、いったん納付するよう求める大学が少なくないため、この工面もハードルとなります(生活福祉資金や母子父子寡婦福祉資金などを借り入れることを考えます。)。
しかし、入学してしまえば大丈夫、ではなく、入学後も在学費用の負担が重く、結局、アルバイトを増やすか貸与奨学金を併用するなどしないと卒業までの資金繰りができないということになりかねません。

 

 

» 続きを読む

2023年3月15日 (水)

「出産で奨学金減免」をどうみるか

自民党で議論されているという「出産したら奨学金減免」という制度について、かなり批判が強いようです。

私はこの制度には賛成ですし、むしろこれまでこういった仕組みがなかった(猶予=先送りのみ)ことがおかしいくらいだと考えています。他方、奨学金の返還免除を餌に子どもを産ませようという発想であれば軽薄であり、また「異次元」と呼ぶには貧弱だと感じます。

なお、現時点では「出産したら奨学金を減免する」というアイデア程度しか明らかにされておらず、その詳細が分からないことは前提として指摘しておきます。
例えば、次の点も明らかにされていませんが、これによって評価が変わることもありうるでしょう。

  • 免除範囲:産休・育休期間中の返還額のみ免除するのか、将来の返還分まで免除するのか(例えば、1人産めば半額免除、2人目なら全額免除など)
  • 対象者:出産する女性のみか、その配偶者や子の父を対象とするのか。
  • 条件等:出産したら(休業の有無や期間を問わず)免除とするか、出産~育児中の休業期間に応じて免除とするのか。

1 なぜ批判されるのか。

私が見た限りでは次のような見地からの批判がなされているように思います。

  • 不平等、不公平その1

奨学金を借りた人の多くが返還で苦しんでいるのに、出産した人だけ救済するのは不平等である。特に子どもを産めない人、子どもを産まない選択をした人、結婚しない選択をした人、LGBTQカップルなどは最初から対象にならないではないか。

  • 不平等、不公平その2

出産や育児で大変な人はたくさんいるのに、奨学金を借りていた人だけ救済するのは不平等である。頑張って学費を稼いで大学や専門学校を出た人はどうするのか。

  • 少子化対策として効果があるのか疑問
  • 少子化対策として行うこと自体に疑問がある。
  • 奨学金を免除するから子どもを産め、といわれているようで納得がいかない。

いずれも、そういった感情を抱く方がそれなりにいることは理解できます。

2 不平等、不公平その1(返還者の間での比較)

たしかに、奨学金を借りた人のうち、出産した人だけ返還免除になるというのは、一見すると不平等、不公平なようにみえます。

しかし、少なくとも女性は、出産に伴いある程度の期間就労できなくなります。就労が制限される(短時間勤務など)ことも少なくないでしょう。男性についても、育休を取得するなどして育児を分担することへの期待が強くなっており、子が生まれることに伴い、男性もある程度の期間、就労できなくなったり、就労が制限されたりすることは少なくありません。
子どものいない人は引き続き就労収入を得られる一方、出産した人は就労収入が得られなくなります。就労収入がなければ、奨学金を返せないことは容易に想像できますから、出産した人だけ支援することは合理的です。

ここで、減免ではなく返還を先送りするという制度も考えられます。
例えば、現在の日本学生支援機構は、産休・育休中は返還を猶予(先送り)する制度を設けています。
しかし、出産・育児で休業しても定年が延びることはありません。つまり、休業した分だけ、生涯を通じた就労収入が減少します。休業しなかった同期と比べて出世が遅れるかもしれません(*1)。そうであれば、ますます生涯を通じた就労収入が減少します。
生涯を通じた就労収入が減るわけですから、奨学金返済額も減らすのが合理的で、実質的平等に資するでしょう(*2)。

なお、社会保険料については、産休・育休中の保険料が免除されています(使用者負担分も免除)。年金額に影響はなく、保険料を支払った場合の金額がもらえます。これと同様に考えればよいのです(*3)。

3 不平等、不公平その2(奨学金を借りていない人との比較)

たしかに、出産・育児で就労収入が断たれ、子育てにお金がかかるのは同じなのに、奨学金を借りた親だけ返還免除の支援があるというのは、一見すると不平等、不公平なように見えます。

しかし、奨学金を借りていない親の多くは、奨学金を借りている親と比較して、学生時代に家族からの経済的支援を受けることができ、その結果として社会人のスタートラインにおいて負債のない状態でスタートできた人たちです。そうすると、奨学金を借りている親に対してのみ支援することは、実質的平等を確保する政策といえます。

中には、ご自身で相当の苦労をされ、貸与奨学金なしで高等教育を終え、親になった方もいるでしょうが、奨学金を借りていない親のうち一部にすぎず、その点に着目して議論するのが妥当とは思えません。

4 少子化対策としての効果

中央労福協の奨学金や教育費負担に関するアンケート報告書によれば、「奨学金返済による生活設計への影響」として「結婚」「出産」を挙げた割合が37.5%、31.1%であり、出産により奨学金の返還が減免されることになれば、一定の効果があるとみてよいと考えます。

他方、効果がどの程度あるかというは分かりません。奨学金返還を続けなければならい負担「のみ」から結婚や出産を見送っているのであれば相当の効果があるのでしょうが、現実には結婚相手と巡り合えるか、結婚・出産後(その間の配偶者の転勤なども含め)も雇用を継続できるかなど様々な要素がありますし、そもそも影響があるのは高等教育に進学して日本学生支援機構の奨学金を借りた人だけです。劇的な効果は見込めないのではないでしょうか。

5 少子化対策として行うこと自体問題なのか

この点は評価が分かれるかもしれません。
私は上記2・3のとおり、実質的平等に資する公正な施策である以上、動機が不純でも実施すべきものは実施すべきという考えです。

なお、出産のような個人の自由の領域に踏み込む施策であると批判する人もいるようですが、それを言い出したらおよそ出産・子育てを支援する政策はすべて否定することになりますし、追記に記載したとおり、出産・育児は社会全体にとってもメリットの大きいものです。
「個人の自由の領域に踏み込む」というのは、出産や育児を強制するような政策を批判するときに使うものであって、経済的メリットを提示して出産や育児を推奨するに過ぎない政策に対する批判に用いるものではありません。

6 奨学金を免除するから子どもを産め、といわれているようで納得がいかないという点について

奨学金免除で誘導するのはいいですが、あくまで産むかどうかは個人の自由です。
少子化対策として打ち出したから余計に批判を浴びたという面はあるのではないかと感じています。

なお、少子化対策といっても、女性の社会進出を制限したり、強権的に避妊や中絶を禁止したりすることは許されませんから、現実には出産や子育てを支援する政策を行って誘導するしかありません。その上では、教育費を中心とする子育て費用の軽減は避けて通れないのですから、まじめに少子化対策に取り組むなら、教育に関する権利を保障することになるはずです。
したがって、「教育機会の均等の問題を少子化対策として論ずるのはけしからん」といった観点からの批判は、教育機会均等に資する政策を進めていくという観点からは妥当でないでしょう。

7 まとめ

以上のとおり、出産にあたって奨学金の返還を減免する制度は、実質的平等に資するものであり、これまでなかったのが不思議なくらいです。ただ、奨学金の返還免除を餌に子どもを産ませようという発想なら軽薄だと感じますし、この程度で何が「異次元」だとは感じます。

8 雑感

本件について、貧困問題や奨学金返還問題に関心が高いはずの人たちの側から、上記2や3の形式的平等の見地からの批判が加えられていることには驚いています。

たとえば、POSSEは「結婚しないと選択した人や、LGBTQのカップルだったりとか、子どもを作らない、作れない人だったりとか、そういった人を置き去り、排除してしまう政策といえる」と批判しています(テレビ朝日 23/3/3 23:30配信)。

まさに形式的平等の見地からの批判であり、出産した人だけ救われるのはずるいという意見と同じです。
貧困問題や奨学金問題に取り組むということは、まさに実質的平等を実現しようというもののはずです。
批判するのに都合よく、実質的平等と形式的平等をつまみ食いすべきではありませんし、そんなことをやっていたら実質的平等を実現する政策を進めようという社会になっていかないのではないでしょうか。

» 続きを読む

2023年1月24日 (火)

【VB2019/VBA】公共座標の経緯度への変換方法(法務局地図データの活用)

昨日(22/1/23)から、法務局の地図データがG空間情報センターで無償ダウンロードできるようになりました。

早速アクセスしてみましたが、昨日はずっとビジーで今日ようやくデータ(zip)を2つダウンロード(25MBと50MB)。
ファイル名は市区町村コードで始まっているので、整理はしやすいですね。

中には

(1)索引ファイル(csv)
(2)地図データ(xmlをzipにそれぞれ圧縮)

が入っています。索引ファイルで見たい地番に対応する地図データを探し、解凍してxmlを開く感じでしょうか。それぞれ圧縮しているのは、圧縮率が高く、解凍すると30~40倍の容量を食うためでしょう。試しに10個解凍したところ、35倍でしたから、まとめて1回圧縮しただけだと、単純計算で25MB・50MB→875MB・1750MBになります。ただ、数が多い(25MBの方は46個、50MBの方は585個)ので、手作業で扱うのは大変そうです。

地図データは、

  1. 地図名、市区町村コード、市区町村名、座標系など。
  2. 点データ:XY座標
    IDは、「P+数字9桁」
  3. 線データ:土地と土地の境界線データか。起点と終点が 2 の点データで設定されている。
    IDは、「C+数字9桁」
  4. 面データ:1筆の土地のデータ。土地を囲む線が 3 の線データで指定されている。
    IDは、「F+数字9桁」
  5. 属性データ:2~4の各点・線・面の属性(三角点・筆界点、行政区界線・筆界線、地番など)が設定されている。
    面の属性データのみ「筆」として「H+数字9桁」のIDが割り振られている。
    理由は分からないが、飛び地も表現できるようにするためかも。
  6. 図郭データ:元の地図番号や地図の種類、各地図に含まれる土地のリストなど。
    各地図に含まれる土地は、「筆」データが指定されている。

という感じになっています。地番から目的土地を探すなら、

  1. 索引ファイルで必要なxmlファイルを探して開く。
  2. 属性データでほしい地番を探す。見つかったら、面データのIDを拾う。
  3. 面データのIDでほしい面データを探す。見つかったら、線データのIDを拾う。
  4. 線データのIDでほしい線データを探す。見つかったら、点データのIDを拾う。
  5. 点データのIDでほしい点データを探す。見つかったら、XY座標を拾い、直線で結ぶ。
  6. 4・5を 3 で拾ったすべての線データについて行う。

となりましょうか。検索しやすいように独自の形式を変換したほうが早いかもしれません。

さて、このデータを活用するのに必須と思われる「点データのXY座標」⇒「経緯度」変換プログラムを作りました。
ただし、地図データの最初の方にある「座標系」データが「公共座標●系」となっているものにしか使えません。「任意座標系」はその地図の中でしか使えない独自の座標系なので、経緯度に換算できません。

また、平面直角座標系は、原点から遠くなるほど誤差が大きくなるため、日本国内に19の原点が設けられ、1~19までの「系番号」を割り振っています。どの原点を参照するかは、地域ごとに決まっています(詳しくは国土地理院ウェブサイトの解説参照)。「公共座標●系」の「●」の部分が系番号です。

X座標・Y座標・系番号から、北緯・東経を返す関数です。系番号は K に投入します。度(1度未満は小数)で返しますが、ReturnType を 1 にすると、秒単位(度は1万、分は千と百の位に表示)で返します。

計算方法は、国土地理院ウェブサイトの計算式を参照してください。

<エクセルVBA>

Public Function SurveyCalc_xy2bl(ByVal x#, ByVal y#, ByVal k#, Optional ByVal ReturnType% = 0) As Double()
    Dim ret#(1)
    If k < 0 Or k > 19 Then GoTo Err '存在しない座標系の指定

    '定数の設定
    Const small_a& = 6378137, F# = 298.257222101 '楕円体の長半径(メートル)及び逆扁平率(測量法施行令3条)
    Const m0# = 0.9999 '平面直角座標系のX軸上における縮尺係数(定義)
    Dim r#: r = 180 / WorksheetFunction.Pi 'ρ''。ここではすべて度単位とする。
    '平面直角座標系原点:https://www.gsi.go.jp/LAW/heimencho.html
    Dim Lats As Variant, Lons As Variant, bLat#, bLon#
    Lats = Array(0, 33, 33, 36, 33, 36, 36, 36, 36, 36, 40, 44, 44, 44, 26, 26, 26, 26, 20, 26)
    Lons = Array(0, 129.5, 131, 132 + 1 / 6, 133.5, 134 + 2 / 6, 136, 137 + 1 / 6, 138.5, 139 + 5 / 6, 140 + 5 / 6, 140.25, 142.25, 144.25, 142, 127.5, 124, 131, 136, 154)
    bLat = Lats(k) / r: bLon = Lons(k) / r 'bLat(baseLatitude=緯度)はφ0、bLon(baseLongtitude=経度)はλ0。三角関数はラジアンで処理するため、先に変換している。
    '最初にnの計算をする。n2~n6は累乗表記の簡便のため
    Dim n#, n2#, n3#, n4#, n5#, n6#, a#(0 To 5), b#(1 To 5), d#(1 To 6)
    n = 1 / (2 * F - 1): n2 = n ^ 2: n3 = n ^ 3: n4 = n ^ 4: n5 = n ^ 5: n6# = n ^ 6
    'A0~5、β1~5、δ1~5の計算
    a(0) = 1 + n2 / 4 + n4 / 64: a(1) = -3 / 2 * (n - n3 / 8 - n5 / 64): a(2) = 15 / 16 * (n2 - n4 / 4): a(3) = -35 / 48 * (n3 - n5 * 5 / 16): a(4) = 315 / 512 * n4: a(5) = -693 / 1280 * n5
    b(1) = n / 2 - n2 * 2 / 3 + n3 * 37 / 96 - n4 / 360 - n5 * 81 / 512: b(2) = n2 / 48 + n3 / 15 - n4 * 437 / 1440 + n5 * 46 / 105: b(3) = n3 * 17 / 480 - n4 * 37 / 840 - n5 * 209 / 4480: b(4) = n4 * 4397 / 161280 - n5 * 11 / 504: b(5) = n5 * 4583 / 161280
    d(1) = n * 2 - n2 * 2 / 3 - n3 * 2 + n4 * 116 / 45 + n5 * 26 / 45 - n6 * 2854 / 675: d(2) = n2 * 7 / 3 - n3 * 8 / 5 - n4 * 227 / 45 + n5 * 2704 / 315 + n6 * 2323 / 945
    d(3) = n3 * 56 / 15 - n4 * 136 / 35 - n5 * 1262 / 105 + n6 * 73814 / 2835: d(4) = n4 * 4279 / 630 - n5 * 332 / 35 - n6 * 399572 / 14175: d(5) = n5 * 4174 / 315 - n6 * 144838 / 6237: d(6) = n6 * 601676 / 22275

    '計算の展開
    With WorksheetFunction
    Dim bar_a#, bar_S#, eps#, eta#, eps2#, eta2#, khi#, tLat#, tLon#
    Dim s#, j% 'シグマ部分の計算に使う
    bar_a = (m0 * small_a) / (1 + n) * a(0) 'Aバー
    s = 0: For j = 1 To 5: s = s + a(j) * Math.Sin(2 * j * bLat): Next 'Sバーφ0のシグマ部分
    bar_S = (m0 * small_a) / (1 + n) * (a(0) * bLat + s) 'Sバーφ0
    eps = (x + bar_S) / bar_a: eta = y / bar_a 'εとη
    s = 0: For j = 1 To 5: s = s + b(j) * Math.Sin(2 * j * eps) * .Cosh(2 * j * eta): Next
    eps2 = eps - s 'ε'
    s = 0: For j = 1 To 5: s = s + b(j) * Math.Cos(2 * j * eps) * .Sinh(2 * j * eta): Next
    eta2 = eta - s 'η'
    khi = .Asin(Math.Sin(eps2) / .Cosh(eta2)) 'χ
    s = 0: For j = 1 To 6: s = s + d(j) * Math.Sin(2 * j * khi): Next
    tLat = (khi + s) * r 'φ
    tLon = (bLon + Math.Atn(.Sinh(eta2) / Math.Cos(eps2))) * r 'λ
    End With
    If ReturnType = 1 Then '度分秒形式への変換
      ret(0) = Int(tLat) * 10000 + Int(tLat * 60 - Int(tLat) * 60) * 100 + (tLat * 3600 - Int(tLat * 60) * 60)
      ret(1) = Int(tLon) * 10000 + Int(tLon * 60 - Int(tLon) * 60) * 100 + (tLon * 3600 - Int(tLon * 60) * 60)
    Else
      ret(0) = tLat
      ret(1) = tLon
    End If
Err:
    SurveyCalc_xy2bl = ret
End Function

 

<VB2019>

Public Function SurveyCalc_xy2bl(x#, y#, k#, Optional ReturnType% = 0) As Double()
    If k < 0 Or k > 19 Then GoTo Err '存在しない座標系の指定

    '定数の設定
    Dim small_a% = 6378137, F# = 298.257222101 '楕円体の長半径(メートル)及び逆扁平率(測量法施行令3条)
    Dim m0# = 0.9999 '平面直角座標系のX軸上における縮尺係数(定義)
    Dim r# = 180 / Math.PI 'ρ''。ここではすべて度単位とする。
    '平面直角座標系原点:https://www.gsi.go.jp/LAW/heimencho.html
    Dim Lats#() = {0, 33, 33, 36, 33, 36, 36, 36, 36, 36, 40, 44, 44, 44, 26, 26, 26, 26, 20, 26}
    Dim Lons#() = {0, 129.5, 131, 132 + 1 / 6, 133.5, 134 + 2 / 6, 136, 137 + 1 / 6, 138.5, 139 + 5 / 6, 140 + 5 / 6, 140.25, 142.25, 144.25, 142, 127.5, 124, 131, 136, 154}
    Dim bLat# = Lats(k) / r, bLon# = Lons(k) / r 'bLat(baseLatitude=緯度)はφ0、bLon(baseLongtitude=経度)はλ0。三角関数はラジアンで処理するため、先に変換している。
    '最初にnの計算をする。n2~n6は累乗表記の簡便のため
    Dim n# = 1 / (2 * F - 1), n2# = n ^ 2, n3# = n ^ 3, n4# = n ^ 4, n5# = n ^ 5, n6# = n ^ 6
    'A0~5、β1~5、δ1~5の計算=ここから原則下から上にたどる。
    Dim a#() = {1 + n2 / 4 + n4 / 64, -3 / 2 * (n - n3 / 8 - n5 / 64), 15 / 16 * (n2 - n4 / 4), -35 / 48 * (n3 - n5 * 5 / 16), 315 / 512 * n4, -693 / 1280 * n5}
    Dim b#() = {0, n / 2 - n2 * 2 / 3 + n3 * 37 / 96 - n4 / 360 - n5 * 81 / 512, n2 / 48 + n3 / 15 - n4 * 437 / 1440 + n5 * 46 / 105, n3 * 17 / 480 - n4 * 37 / 840 - n5 * 209 / 4480, n4 * 4397 / 161280 - n5 * 11 / 504, n5 * 4583 / 161280}
    Dim d#() = {0, n * 2 - n2 * 2 / 3 - n3 * 2 + n4 * 116 / 45 + n5 * 26 / 45 - n6 * 2854 / 675, n2 * 7 / 3 - n3 * 8 / 5 - n4 * 227 / 45 + n5 * 2704 / 315 + n6 * 2323 / 945, n3 * 56 / 15 - n4 * 136 / 35 - n5 * 1262 / 105 + n6 * 73814 / 2835, n4 * 4279 / 630 - n5 * 332 / 35 - n6 * 399572 / 14175, n5 * 4174 / 315 - n6 * 144838 / 6237, n6 * 601676 / 22275}

    '計算の展開
    Dim bar_a# = (m0 * small_a) / (1 + n) * a(0) 'Aバー
    Dim s# = 0, j% 'シグマ部分の計算に使う
    For j = 1 To 5 : s += a(j) * Math.Sin(2 * j * bLat) : Next 'Sバーφ0のシグマ部分
    Dim bar_S# = (m0 * small_a) / (1 + n) * (a(0) * bLat + s) 'Sバーφ0
    Dim eps# = (x + bar_S) / bar_a, eta# = y / bar_a 'εとη
    s = 0 : For j = 1 To 5 : s += b(j) * Math.Sin(2 * j * eps) * Math.Cosh(2 * j * eta) : Next
    Dim eps2# = eps - s 'ε'
    s = 0 : For j = 1 To 5 : s += b(j) * Math.Cos(2 * j * eps) * Math.Sinh(2 * j * eta) : Next
    Dim eta2# = eta - s 'η'
    Dim khi# = Math.Asin(Math.Sin(eps2) / Math.Cosh(eta2)) 'χ
    s = 0 : For j = 1 To 6 : s += d(j) * Math.Sin(2 * j * khi) : Next
    Dim tLat# = (khi + s) * r 'φ
    Dim tLon# = (bLon + Math.Atan(Math.Sinh(eta2) / Math.Cos(eps2))) * r 'λ
    If ReturnType = 1 Then
        Dim Lat# = Int(tLat) * 10000 + Int(tLat * 60 - Int(tLat) * 60) * 100 + (tLat * 3600 - Int(tLat * 60) * 60)
        Dim Lon# = Int(tLon) * 10000 + Int(tLon * 60 - Int(tLon) * 60) * 100 + (tLon * 3600 - Int(tLon * 60) * 60)
        SurveyCalc_xy2bl = {Lat, Lon}
    Else
        SurveyCalc_xy2bl = {tLat, tLon}
    End If
    Exit Function
Err:
    SurveyCalc_xy2bl = {0, 0}
End Function

例えば、次のように設定すると、自動的にChromeが立ち上がり、グーグルマップで該当する経緯度の地図を表示してくれます。
下のサンプルで表示されるのは当職の事務所(神奈川総合法律事務所)です。

<VB2019>

Private Sub Test()
    Dim i#() = SurveyCalc_xy2bl(-61160, -17675, 9)
    Process.Start(fileName:="""C:\Program Files\Google\Chrome\Application\chrome.exe""", "https://www.google.co.jp/maps/search/" & i(0).ToString & "," & i(1).ToString)

 

<エクセルVBA>

Private Sub Test()
    Dim i#()
    i = SurveyCalc_xy2bl(-61160, -17675, 9)
    Shell """C:\Program Files\Google\Chrome\Application\chrome.exe"" https://www.google.co.jp/maps/search/" & i(0) & "," & i(1)
End Sub

ちなみに、国土地理院のウェブサイトは地図や測量について丁寧に解説されており、経緯度など地図を扱うための数値の換算を計算サイトで簡単に行えるうえ、換算方法の解説までついています。
とても勉強になりますし、高校程度の知識は必要かもしれませんが、読めば(取り扱える程度には)理解できます。

2023年1月15日 (日)

大日本育英会創設の経緯について

今野晴貴氏の「『親への恩義』を植え付けろ! 奨学金が「借金」となったダークすぎる経緯とは」について、小島庸平氏の発言として記載されている大日本育英会創設過程について、誤りないし正確でない表現が含まれますので指摘しておきます。

https://news.yahoo.co.jp/byline/konnoharuki/20230114-00332830

日本の奨学金制度の源流をたどっていくと、1944年の戦時下に作られた大日本育英会にたどり着きます。

⇒△(正確でない)

1943(S18).10.18に財団法人大日本育英会として創設されています。
1944年(S19)に大日本育英会法が成立し、同法に基づき特殊法人としての大日本育英会が設立され、財団法人大日本育英会の権利義務はこちらに承継されました(大日本育英会法附則36条)。
大日本育英会の育英事業は、財団法人大日本育英会によりS18年度中に開始されており、あえて1944年の特殊法人である大日本育英会までで留めるということは正確ではありません。

OECDのEducation at a Glanceには、各国の公的学生ローン制度が設立された年がまとめてありますが、ここでも1943年設立とされています(例えば2015年版なら278p。ただし、年によって取り上げていないものがあります。) 。

なお、大日本育英会の創設は、帝国議会の有志議員の発案・働きかけにより実現したものです。
S17.2.13帝国議会衆議院本会議で永井柳太郎衆議院議員外が提案し、全会一致で可決された「大東亜教育体制確立に関する建議」の中で、「国民教育普遍化に対する方策の樹立(興亜育英金庫制度創設)」として中等教育・高等教育における学資貸費制度の創設が掲げられ、この内容を修正して創設されたのが大日本育英会の国家的育英資金制度でした。
この財団法人大日本育英会によるS18年度中の開始についても、
S18.2.8帝国議会衆議院予算委員会において、金光庸夫予算委員長から橋田邦彦文部大臣に対し、要旨「衆議院が興亜育英金庫制度創設を要望し、橋田文部大臣もその実施に努力すると約束したのに、本年度予算案に載っていないのは遺憾である。18年度から即時実施すべきである。政府の確固たる決意を承りたい」と尋ね、橋田文部大臣が「18年度中に実施できるようにしたいと全力を尽くしている」と答弁、翌日の予算委員第二分科会で橋田文部大臣が「18年度中、できるだけ早くやる、一応財団法人として組織を設立して育英の経営をしていく、法令は19年度からで仕方ないと思っている」と答弁したとおりです。

「教員の担い手を増やすため、広く高等教育の機会を提供する目的で設立されたのが、奨学金制度でした」。

⇒×(誤り)

(1)教員の担い手を増やすことを目的としたものではない。

上記「大東亜教育体制確立に関する建議」 の趣旨弁明でも「学資に乏しく教育の機会を与えないのいは国家の損失大である」「人材の養成に対する国家の要求に応えるものであるのみならず、国家の政治を正義の上に確立するゆえんである」といった教育の担い手に限らない趣旨は述べられていますが、教員の担い手を増やすことについては特に言及がありません。

当時(改正師範学校令・S18.3.8勅令第109号以降)の学校制度は、現在よりも複雑で、大雑把にまとめれば次のような感じです。

  • 初等教育=国民学校(初等科6年+高等科2年)
    • 戦後の小学校(高等科は新制中学校の1・2年)に相当。
  • 中等教育=中等学校(旧制中学校、高等女学校、実業学校。原則4年)
    • 入学資格は、国民学校初等科修了(高等科修了は不要)
    • 戦後は、基本的に新制高校に移行している。
  • 高等教育=高等学校、専門学校、大学、師範学校、高等師範学校、女子高等師範学校
    • 師範学校は、S18.3.8勅令第109号による改正まで中等教育段階(高等小学校卒で入学できる)とされていた。
    • 戦後は、基本的に大学に移行している。

※さらに本科入学前の予科や、修了後の高等科、専攻科、実務科などを設けるものもある。

当時の教員養成は、主に国民学校については師範学校、中等学校については高等師範学校・女子高等師範学校で行われており、こちらは授業料無償(例えばS18.3.8勅令109号改正師範教育令7条、16条)かつその他の学費に充てるため給費が設けられていました(ただし、給費は学校により対象者が全員のところと一部のところがありました。旺文社・138p以下)。

もっとも、教員の待遇が悪いということで師範学校の志願者が減っていたことは事実で、S16.2.6には衆議院本会議で、森田重次郎衆議院議員が教員の待遇改善等を求める質問を行っています。曰く、高等小学校を卒業したばかりでも日給2円50銭もらって3食も付くのに対し、師範学校卒の初任給が月50円にすぎない、師範学校の生徒の給費にしても申し訳程度で、「卒業してからの待遇が悪く、しかも修業年限が長く、学資が他のものと同じような状態に置いて、そうして優良なる人間を(師範学校に)吸収しようというのは、文部省としては余りに人の好過ぎる考え方ではないか」と。

学制百年史では、この質問を契機に「義務教育に従事する教員の待遇改善と師範学校生徒の給費増額」の実現に成功し、これを機会に国民教育振興議員連盟を結成され、S16.12の「大東亜教育体制確立に関する建議」に至るとしています。その後、S19にも師範学校生への給費は倍増されたものの、それでも不十分であったとも触れています。

大日本育英会のS18年度の奨学生決定数(旺文社・193p)には、師範学校等は見当たりません。後述の岡部長景文部大臣の答弁をみても、教員養成は官立の養成機関(陸海軍の養成機関と同じく授業料不要で、学資の支給もある。)で行っていることを前提に、大日本育英会では授業料などの負担がある中等学校、専門学校、高等学校、大学を対象としていたといえます。

(2)「高等教育」の機会を提供する目的に絞ったものではない。

高等教育の機会の提供も目的ではありますが、大日本育英会は基本的に中等学校進学段階で採用し、そのまま進学に伴って大学等まで貸費を続けるという制度設計でした(川村・162p)

学制百年史では、当時の「民間育英制度が高等教育に偏して中等教育に薄」い状況を背景に、建議案の制度設計では、貸費人員を中等教育(中等学校)20万人、高等教育2万人(専門学校・高等学校1万人、大学1万人)として、中等教育を重視していたとしています。大日本育英会の奨学生数(採用枠)は、中等教育(中等学校)6000名に対し、高等教育は当初計836名(S19)から増加させ、S25以降も4000名として、中等教育に多く割り振られています(旺文社・193p)。

中等教育に進まなければ高等教育にも進めませんし、高等教育段階の枠も確保しているので、高等教育の機会の提供も目的には含まれますが、それに絞ったものではありません。戦後も2003年度まで日本育英会が高校段階の奨学金制度を行っていたように(2004年度から都道府県に移管)、もともと義務教育後の育英奨学制度は国(=大日本育英会→日本育英会)の守備範囲とされていたのです。

貸与型にするか給付型にするかという論争は、育英会設立当時からあったようです。その時に決め手となったのは、日本の家族主義的な美風を維持するという点でした。親は子のためを思って学費を払い、子はその恩を返そうと親孝行をする。ところが、国家が直接子供たちに育英資金を与えてしまうと、親の援助が不要になるので、親に恩義を感じて老後の面倒を見るというようなことがなくなってしまうかもしれない。貸与型の奨学金制度は、親が子に恩恵を与える余地を残す、言い換えれば、家父長制を温存するために導入されたという源流を持っていました。

⇒△(「決め手」とする点など正確でない部分がある。)

制度創設時に貸与制にするか給付制にするかが問題となり、極端な国粋主義の信望者の一部から、「国家的育英制度を設けて英才に学資を援助することは、親が子を教育する責務を国自らが侵すことであり、子をして親の恩を忘れせしめ、ひいてはわが国古来の家族制度の美風を破壊し、さらには忠君の念をもうすくして国体観念をも危うくするものである」という天皇制国家における国粋主義者らしからぬ懸念が示され、文部省はあくまで親に対して資力の不足を補う貸費性であから「欧米における、個人主義的、あるいは、社会主義国家における育英制度とは根本趣旨を異にする」ということで理解を求めたとされていますので、これが重要な問題として考慮されたことは間違いないでしょう(独立行政法人日本学生支援機構・46p)。

もっとも「決め手」となったかというと、大日本育英会創設時に大蔵省の担当者であった大平正芳は、給費制でも貸費制の2分の1程度の人数を対象にできるからと(複利計算と事務費を考慮したといいますから利息が高ければありえます。)、給費で提案したが、大蔵省内で対象人数が少なすぎるとされ、植木主計局長の意向を受けて貸費に改めて人数を増やしたとしており、この記載を前提とすれば決め手はやはり費用対対象人数の問題といえます(柴田・57p。出典はリンク切れにより確認できず。)。

なお、この家族制度の云々が戦後に引き継がれたかどうかにつき、S28の「日本育英会十年誌」では否定(「本会が今日、依然貸与制を採っているのは、上述の創設当初の考え方を再確認したのでも、継承したのでもなく、まったく現下の財政事情による・・・給費ならば1回だけの資金を、貸費にして何回にも使って、一人でも多くの奨学生を採用することが、資金調達のためにも、奨学生間の道義上がからも当然必要だからである」・35p)していますが、H18の「日本育英会史」では肯定ともとれる表現(「このようなわが国の国家的育英制度とわが国の独特の家族制度との関連については・・・教育の機会均等の思想と表裏の関係をなすわが国独特の育英制度の基本的理念の1つである」46p)となっています。

ちなみに、S19.1.27の衆議院大日本育英会法案外2件委員会において、貸費ではなく、陸海軍の養成機関のごとく、官立の教育機関を設けて教育をなせばよいという質問(八角三郎・元海軍軍人の衆議院議員)に対し、岡部文部大臣は上記同旨の「この我が国の家族制度というものの根本は・・・」と述べて否定し、陸海軍人や教職員については「国家直接にこれを養成することが洵に適当と考えまするが、一般の育英事業におきましては、やはり親の責任を活かして、国家としてはそれの足らざる所を補い、経済上その他において不幸なる状況にある者に対して、できるだけ多数の者にそういう機会を与えて、国家有用の材を育成していくということが適当と考え」と説明しています。

この質疑を見ると、官立の養成機関、おそらくは陸海軍の養成機関や師範学校のような全員(又は原則)入寮も想定した質問に対し、岡部文部大臣は、単なる経済的な面にとどまらず、入寮を強制せず、生活の基盤を家庭に置きつつ一般の教育機関で教育を受ける点においても、「親の責任を活か」すことを想定しており、国家の補う「足らざる所」はもっぱら学資面とするという趣旨をも含むようにも思われます。


我が国の公的奨学金制度がもっぱら貸与制であった発端が、大日本育英会による育英資金制度創設時に貸与制であったことにある点は疑いありません。ただし、その後ももっぱら貸与制のまま推移し、給与制が最近まで導入されなかった背景としては、無縁ではないにせよ、あまり重視できないのではないかと思われます。

というのも、欧米でも1960年前後に給付制奨学金や授業料無償制の導入が進んでおり、第二次世界大戦終結後しばらくは、退役軍人向けの給付制奨学金制度などはあっても、対象を限定しない給付制奨学金がもともと存在したようには見えないからです(社会主義圏は別)。

欧米で給付制奨学金や授業料無償制が導入された時期に、日本ではそのような動きは進まず(1970年に私立大学等経常費補助金は導入されていますが)、高授業料・低奨学金という世界でも稀(唯一ではない)な方向に進んでしまったのは、まさに1960年前後に高等教育の無償化を導入せず、1970年代なかば以降授業料等の引き上げを進める一方、(貸与含む)奨学金制度をあまり拡大してこなかったからであり、こちらの点をきちんと検討すべきでしょう。

(参考文献)

2022年2月23日 (水)

【VB2019/VBA/関数】2地点の経緯度から距離を近似計算する

2地点の経緯度から、その距離を近似計算します。

地球は楕円形であり、南北(縦)よりも赤道面(横)が0.3%程度長くなっています(参考資料:国土地理院/スライド8p)。
楕円形であることを踏まえて距離を計算するのは相当複雑ですが(国土地理院の解説)、通常はそこまで正確な距離は不要と考えられるため、地球が楕円ではなく、真球であると仮定して計算するものです。真球の半径は、測量法施行令3条1号で定められた長半径(赤道面の半径)の長さを使用しています。

<VB2019>

''' <summary>
''' 2地点間の距離(メートル)を計算します。近似式です。経度の差が大きいと誤差が大きくなります。
''' </summary>
''' <param name="N1#">北緯1/南緯はマイナスとする。</param>
''' <param name="E1#">東経1/西経はマイナスとする。</param>
''' <param name="N2#">北緯2/南緯はマイナスとする。</param>
''' <param name="E2#">東経2/西経はマイナスとする。</param>
''' <returns>距離(メートル)</returns>
Public Function Meters#(N1#, E1#, N2#, E2#)
    Dim p# = Math.PI / 180
    Meters = 6378137 * Math.Acos(Math.Cos(N1 / p) * Math.Cos(N2 / p) * Math.Cos((E1 - E2) / p) + Math.Sin(N1 / p) * Math.Sin(N2 / p))
End Function

 

<エクセルVBA>

Public Function Meters#(N1#, E1#, N2#, E2#)
    Dim p#
    p = WorksheetFunction.Pi / 180
    Meters = 6378137 * WorksheetFunction.Acos(Cos(N1 * p) * Cos(N2 * p) * Cos((E1 - E2) * p) + Sin(N1 * p) * Sin(N2 * p))
End Function

 

<エクセル関数>

=6378137*ACOS(SIN(①/180*PI())*SIN(②/180*PI())+COS(①/180*PI())*COS(②/180*PI())*COS((③-④)/180*PI()))

①=地点1の北緯(を入力するセル)
②=地点2の北緯(を入力するセル)
③=地点1の東経(を入力するセル)
④=地点2の東経(を入力するセル)

いずれも経緯度は一般的な度(1周360度のもの)を代入します。
南緯・西経はマイナスをつけて代入しますが、いずれも360度から南緯・西経を引いた値を代入しても差し支えありません。

ラジアンを使用するときは、「*p」の部分(関数では「/180*PI()」の部分)がラジアンに換算している部分なので、これらを削除してください。

国土地理院のサイトで算定した地球を楕円形とした2点間の距離を比較すると、日本国内で使用する限り、誤差は最大でも0.2%程度であり、通常は問題ないと考えられます。

・新宿付近(N 35.7 E 139.7)と名古屋付近(N 35.2 E 136.9)
 260,172.061(m) に対して、近似値259,931.907(m)となり、誤差は約240(m)、0.09%です。

・新宿付近(N 35.7 E 139.7)と福岡付近(N 33.6 E 130.4)
 883,429.377(m)に対して、近似値882,753.511(m)となり、誤差は約676(m)、0.08%です。

・札幌付近(N 26.22 E 127.65)と沖縄付近(N 43.11 E 141.28)
 2,245,342.094(m)に対して、近似値2,249,999.334(m)となり、誤差は約4,657(m)、0.21%です。

・新宿付近(N 35.7 E 139.7)とパリ付近(N 48.8 E 2.3)
 9,742,318.414(m)に対して、近似値9,950,677.892(m)となり、誤差は約208,359(m)、2.1%です。

 

» 続きを読む

2022年2月 9日 (水)

【ワードマクロ】印紙額を自動で入力する

訴額を入力すると、カーソル位置に

Web2000

のように、自動的に訴額と印紙額を入力するワードマクロです。数字の位置は自動的に「円」が上下に揃うように入力されます。
なお、訴額が10億円を超えると印紙額は0円として入力されます。
これは、印紙額計算にあたって印紙の増加額が変わる区切りが100万円、500万円、1000万円、10億円、50億円なのですが、32ビットのLong形式は、21億4748万3647が上限であり、Select Caseの分岐で10億円から50億円までという区切りが設定できないためです。10億円から約21億円までなら計算できますが、訴額が10億円を超える事件は滅多にないでしょうから、一律0円としました。

Public Sub 印紙計算()
    Dim s$, t$, i&, j&
   
    '訴額を入力します。
    s = InputBox("訴訟物の価額はいくらですか。0にすると算定不能(160万円)とします。コンマは入力してOK、全半角は区別しません。")
    If s = "" Then Exit Sub
    s = Replace(StrConv(s, vbNarrow), ",", "")
    If s Like String(Len(s), "#") Then
      i = CLng(s)
    Else
      MsgBox "数字とは判断できませんでした。"
      Exit Sub
    End If
   
    If i = 0 Then i = 1600000 '訴額算定不能
   
    '手続を選び、印紙額を計算する。
    s = InputBox(Replace("印紙計算方法を選択してください。/1 訴状/2 控訴状/3 上告状/6 調停・労審申立/7 調停・労審差額", "/", vbCrLf), , 1)
    Select Case s
      Case "1", "2", "3"
        Select Case i
          Case 1 To 1000000
            j = (((i - 1) \ 100000) + 1) * 1000
          Case 1000001 To 5000000
            j = (((i - 1) \ 200000) + 1) * 1000 + 5000
          Case 5000001 To 10000000
            j = (((i - 1) \ 500000) + 1) * 2000 + 10000
          Case 10000001 To 1000000000
            j = (((i - 1) \ 1000000) + 1) * 3000 + 20000
          Case Else
            j = 0
        End Select
        If s = "2" Then j = j * 1.5
        If s = "3" Then j = j * 2
      Case "6"
        Select Case i
          Case 1 To 1000000
            j = (((i - 1) \ 100000) + 1) * 500
          Case 1000001 To 5000000
            j = (((i - 1) \ 200000) + 1) * 500 + 2500
          Case 5000001 To 10000000
            j = (((i - 1) \ 500000) + 1) * 1000 + 5000
          Case 10000001 To 1000000000
            j = (((i - 1) \ 1000000) + 1) * 1200 + 13000
          Case Else
            j = 0
        End Select
      Case "7"
        Select Case i
          Case 1 To 1000000
            j = (((i - 1) \ 100000) + 1) * 500
          Case 1000001 To 5000000
            j = (((i - 1) \ 200000) + 1) * 500 + 2500
          Case 5000001 To 10000000
            j = (((i - 1) \ 500000) + 1) * 1000 + 5000
          Case 10000001 To 1000000000
            j = (((i - 1) \ 1000000) + 1) * 1800 + 7000
          Case Else
            j = 0
        End Select
      Case Else
        MsgBox "選択肢以外が選択されたようです。"
        Exit Sub
    End Select
    s = 全角数字(i)
    t = 全角数字(j)
    i = Len(s)
    j = Len(t)
    If i > j Then
      t = String(i - j, " ") & t
    Else
      s = String(j - i, " ") & s
    End If
   
    Selection.TypeText "訴訟物の価額  " & s & "円" & Chr(13)
    Selection.TypeText "ちょう用印紙額 " & t & "円"
End Sub

Public Function 全角数字(Number As Long) As String
    Dim s$
    s = Format(Number, "0兆0000億0000万0000")
    Do Until (Left(s, 1) Like "#") And (Left(s, 1) <> "0")
      s = Mid(s, 2)
    Loop
    全角数字 = StrConv(s, vbWide)
End Function

VBAを開くと、Normalというプロジェクトがあるので、そこに標準モジュールを追加し、上記コードを貼り付ければOKです。

私は[リボンのユーザー設定]で[ホーム]タブにこのマクロを登録しています。

【ワードマクロ】ドキュメントをボタン1つでPDF化

いま開いているワードファイルを同じフォルダ・同じファイル名のPDFとして出力します。

ファイル名は、拡張子 doc 又は docx が pdf となります。

Public Sub AutoPDF()
    Dim fp$, fc$
    fp = ActiveDocument.Path & "\"
    fc = Replace(Replace(ActiveDocument.Name, ".docx", ".pdf"), ".doc", ".pdf")
    If Dir(fp & fc) <> "" Then
        If MsgBox("上書きしてええんか?", vbYesNo) = vbNo Then Exit Sub
    End If
    ActiveDocument.ExportAsFixedFormat fp & fc, wdExportFormatPDF
    MsgBox "保存しました:" & vbCrLf & fp & fc
End Sub

VBAを開くと、Normalというプロジェクトがあるので、そこに標準モジュールを追加し、上記コードを貼り付ければOKです。

私は[リボンのユーザー設定]で[ホーム]タブにこのマクロを登録しています。

2022年1月26日 (水)

地方裁判所名を引数として高等裁判所名を返す関数

地方裁判所名を引数とし、控訴審を担当する高等裁判所名を返す関数

SecCourt:関数名
Court:地方裁判所

Function SecCourt(ByVal Court$) As String
    Dim t$, f%, i%
    If Court Like "*高等裁判所*" Then
        SecCourt = Court
    Else
        f = FreeFile
        Open 【ファイル名】 For Input As #f
            Do Until EOF(f)
                Line Input #f, t
                i = InStr(1, t, ",")
                If Court Like Left(t, i - 1) & "*" Then
                    SecCourt = Mid(t, i + 1)
                    Exit Do
                End If
            Loop
        Close #f
    End If
End Function

【ファイル名】とある部分は次の内容のテキストファイル(ANSI)のパスを指定してください。

東京地方裁判所,東京高等裁判所
横浜地方裁判所,東京高等裁判所
さいたま地方裁判所,東京高等裁判所
千葉地方裁判所,東京高等裁判所
水戸地方裁判所,東京高等裁判所
宇都宮地方裁判所,東京高等裁判所
前橋地方裁判所,東京高等裁判所
静岡地方裁判所,東京高等裁判所
甲府地方裁判所,東京高等裁判所
長野地方裁判所,東京高等裁判所
新潟地方裁判所,東京高等裁判所
大阪地方裁判所,大阪高等裁判所
京都地方裁判所,大阪高等裁判所
神戸地方裁判所,大阪高等裁判所
奈良地方裁判所,大阪高等裁判所
大津地方裁判所,大阪高等裁判所
和歌山地方裁判所,大阪高等裁判所
名古屋地方裁判所,名古屋高等裁判所
津地方裁判所,名古屋高等裁判所
岐阜地方裁判所,名古屋高等裁判所
福井地方裁判所,名古屋高等裁判所金沢支部
金沢地方裁判所,名古屋高等裁判所金沢支部
富山地方裁判所,名古屋高等裁判所金沢支部
広島地方裁判所,広島高等裁判所
山口地方裁判所,広島高等裁判所
岡山地方裁判所,広島高等裁判所岡山支部
鳥取地方裁判所,広島高等裁判所松江支部
松江地方裁判所,広島高等裁判所松江支部
福岡地方裁判所,福岡高等裁判所
佐賀地方裁判所,福岡高等裁判所
長崎地方裁判所,福岡高等裁判所
大分地方裁判所佐伯支部,福岡高等裁判所宮崎支部
大分地方裁判所,福岡高等裁判所
熊本地方裁判所,福岡高等裁判所
鹿児島地方裁判所,福岡高等裁判所宮崎支部
宮崎地方裁判所,福岡高等裁判所宮崎支部
那覇地方裁判所,福岡高等裁判所那覇支部
仙台地方裁判所,仙台高等裁判所
福島地方裁判所,仙台高等裁判所
山形地方裁判所鶴岡支部,仙台高等裁判所秋田支部
山形地方裁判所酒田支部,仙台高等裁判所秋田支部
山形地方裁判所,仙台高等裁判所
秋田地方裁判所,仙台高等裁判所秋田支部
盛岡地方裁判所,仙台高等裁判所
青森地方裁判所弘前支部,仙台高等裁判所秋田支部
青森地方裁判所五所川原支部,仙台高等裁判所秋田支部
青森地方裁判所,仙台高等裁判所
札幌地方裁判所,札幌高等裁判所
函館地方裁判所,札幌高等裁判所
旭川地方裁判所,札幌高等裁判所
釧路地方裁判所,札幌高等裁判所
高松地方裁判所,高松高等裁判所
徳島地方裁判所,高松高等裁判所
高知地方裁判所,高松高等裁判所
松山地方裁判所,高松高等裁判所

各行は【地方裁判所,高等裁判所】の組み合わせとなっています。

「If Court Like Left(t, i - 1) & "*" Then」の部分でパターンマッチをしているため、例えば「横浜地方裁判所第7民事部イ係」や「横浜地方裁判所相模原支部」といった値を投入しても「東京高等裁判所」と返します。

2021年8月 6日 (金)

遅延損害金計算用に経過年数を計算する関数

東京地裁民事第21部(民事執行センター)の計算方法で,一般的な年利で定めた遅延損害金・利息を計算するため,経過年数を計算する関数。
閏年の判定に対応するほか,始期・終期は時刻が入っていても無視します。

次の関数をセルに貼り付け,<A>に始期(遅延損害金が発生する初日。一般に弁済期の翌日),<B>に終期(支払日。債権執行の申立日)のシリアル値を入力するか,又は日付の入力されたセルへの参照を指定します。

=LET(【始期】,INT(<A>),【終期】,INT(<B>),【応当日】,DATE(YEAR(【終期】),MONTH(【始期】),DAY(【始期】)),【閏終年】,IF(OR(AND(MOD(YEAR(【終期】),100)=0,MOD(YEAR(【終期】),400)>0),MOD(YEAR(【終期】),4)>0),365,366),【閏前年】,IF(OR(AND(MOD(YEAR(【終期】)-1,100)=0,MOD(YEAR(【終期】)-1,400)>0),MOD(YEAR(【終期】)-1,4)>0),365,366),IF(【始期】>【終期】,0,IF(【応当日】-1=【終期】,YEAR(【終期】)-YEAR(【始期】),IF(【応当日】<=【終期】,YEAR(【終期】)-YEAR(【始期】)+(【終期】-【応当日】+1)/【閏終年】,YEAR(【終期】)-YEAR(【始期】)-1+(DATE(YEAR(【終期】),1,1)-DATE(YEAR(【終期】)-1,MONTH(【始期】),DAY(【始期】)))/【閏前年】+(【終期】-DATE(YEAR(【終期】),1,1)+1)/【閏終年】))))

例:A1が始期,B1が終期を入力したセルの場合,<A>に"A1",<B>に"B1"と入力する。

Web006

» 続きを読む

2021年6月 5日 (土)

LINEトーク履歴を読みやすくする方法(ワード)

LINEトーク履歴はテキストで出力できます

これを書証として裁判所に提出しようとワードに貼り付けると,次のように1つの投稿の2行目以降が左端まで来てしまいます。

21:23 にしかわおさむ ねこさんはかわいいのですが、なぜ私はねこアレルギーなのでしょうか。
21:24 にしかわおさむ "ねこアレルギーがなければ…
ねこをナデナデすると、くしゃみが止まらないのです.,
花粉症の薬を飲めば大丈夫なのかも。

うー"
21:28 東山 "それは大変ですね。
猫カフェとか天国かつ地獄ですねw"

これがこんな風になったら,読みやすいですよね。

Web000

そこで,こんなワードマクロを書いてみました。

Public Sub LINE改行()
    Dim t$, s$, m As Boolean
    t = Selection.Text
    Do Until t = ""
        If Asc(t) = 34 Then m = Not m
        If m Then
            If Asc(t) = 13 Then
                s = s & Chr(11)
            Else
                s = s & Left(t, 1)
            End If
        Else
            s = s & Left(t, 1)
        End If
        t = Mid(t, 2)
    Loop
    Selection.Text = s
End Sub

ワードマクロに追加する方法は次の通り。

(1)「開発」タブ⇒「Visual Basic」をクリックしてVBA画面を開く。

  • 「開発」タブは「ファイル」⇒「オプション」⇒「リボンのユーザー設定」で右側のメインタブ中「開発」にチェックを入れないと表示されません。

(2)「Normal」の中にある標準モジュールを開き,上のコードをコピペする。

  • 標準モジュールがなければ追加してください。
  • 下の画像の右側「Public Sub 印紙計算()」の部分です。

Web001

(3)①LINE履歴の加工したい部分を選択し,「開発」タブ⇒②「マクロ」⇒③「LINE改行」を選択⇒④「実行」⇒⑤改行マークが段落内改行に変化する。

(4)⑥「ホーム」タブの「段落」右下角の矢印をクリック⇒⑦「最初の行」を「ぶら下げ」,「幅」を「12」(12字)とする⇒⑧「タブ設定」をクリック

  • 投稿者名が長すぎるときは,「12」を適宜大きめの数字に変えてください。

Web002

(5)⑨「タブとリーダー」画面で「タブ位置」に「4」(4字)と入力⇒⑩「設定」をクリック⇒⑪「OK」をクリック

Web004

(6)完成!

Web005

ダブルクオーテーション( " )が邪魔でしたら,置換機能で消してしまって差し支えありません。


このマクロは,複数行にまたがる投稿(途中に改行の入った投稿)がダブルクォーテーション( " )で囲まれている場合に有効です。
先に置換でダブルクォーテーションを消したら意味がありませんし,LINEアプリの設定?仕様?でダブルクォーテーションが入らない場合は使えません。ダブルクォーテーションが最初からないときは,コードを次のように改変すると対応可能です。

Public Sub LINE改行DQTなし()
    Dim t$, s$
    t = Selection.Text
    Do Until t = ""
        If Asc(t) = 13 Then
            If Mid(t, 2, 10) Like "####/##/##" Then
                s = s & Left(t, 1)
            ElseIf Mid(t, 2, 6) Like "##:##" & vbTab Then
                s = s & Left(t, 1)
            ElseIf Mid(t, 2, 5) Like "#:##" & vbTab Then
                s = s & Left(t, 1)
            Else
                s = s & Chr(11)
            End If
        Else
            s = s & Left(t, 1)
        End If
        t = Mid(t, 2)
    Loop
    Selection.Text = s
End Sub


ぶら下げインデントは,End Subのすぐ上に「Selection.ParagraphFormat.CharacterUnitFirstLineIndent = -12」を追加すると自動化できます。

タブ位置もマクロで設定できますが,ご利用の環境の設定(フォントサイズや文字送りなど)によって微妙に変わってきます。自動化するときは,「Selection.Paragraphs.TabStops.Add #」(#が数字)をEnd Subのすぐ上に追加すれば設定できます。



» 続きを読む

«休業手当が4割程度になる,は仕方がないのか