ふれっしゅのーと

ふれっしゅのーと

趣味に生きる30代エンジニアが心に移りゆくよしなし事をそこはかとなく書きつくるブログ

草津市小字地図が完成しました

草津市小字地図とは

地図の閲覧は こちら からどうぞ!

草津市小字地図は、滋賀県草津市の小字(こあざ)を網羅したWeb地図です。普通の地図には載っていない小字をいつでも誰でも気軽に見られるようにしたいという思いのもと、地道な調査を重ねて、十年余り掛けて作成しました。

「そもそも "小字" って何?」という方は、まず以下の記事をお読みください。 fffw2.hateblo.jp

基礎資料は滋賀県立図書館蔵『草津市地籍図』(1969) [1] です。市域全体の地番や小字が網羅されている貴重な大判地図集ですが、惜しいことに作図の精度が著しく低いという欠点があります。その欠点を補うべく、古絵図、航空写真、登記情報など複数の資料にあたり、正確な小字界(小字の境界線)を同定して、草津市小字地図としてまとめあげました。

注意事項

  • 小字界の同定や小字名の表記には細心の注意をはらいましたが、決して完全なものではありません。あらかじめご了承ください。
  • 権利関係に関心のある方は大津地方法務局へどうぞ。本サイトの草津市小字地図は権利関係に使用できません。
  • 転載する場合は出典を必ず明記ください。作者は風霊守(@fffw2)です。
  • 矢橋帰帆島の小字は字帰帆(きはん)です。1969年時点で存在しなかった人工島なので、草津市小字地図には載せていません。

操作方法

  • パソコンでもスマホでも閲覧できます。
  • ズーム、背景地図切り替え、詳細ポップアップ表示については、触ればわかると思うので、具体的な操作方法は割愛します。
  • パソコンでは Shift + Alt を押しながらドラッグで地図を回転できます。スマホでは2本指でタッチしてひねると回転できます。右上に表示される矢印アイコンを押すと、元の向きに戻ります。

凡例

詳細ポップアップの各項目について説明します。

  • 小字
    小字の名称です。複数の表記が認められる場合、原則として 登記情報 [3] >字取調書 [2] >地籍図 [1] の優先度で代表的な表記を1つ選んでいます。

  • 読み
    字取調書 [2] に記載されている小字の読みです。明らかにおかしい読みでも原文ママで載せています。

  • 大字
    小字が属する大字の名称です。掲載しているのは1969年時点(=住居表示実施前)の大字であり、おおむね江戸時代の藩政村に一致します。

  • 旧村
    明治時代の行政村(1889年の町村制施行時の旧村)の名称です。基礎資料とした地籍図 [1] は旧村単位(正確には1969年時点の学区単位)で編纂されています。

  • 備考
    小字名の表記揺れなど、補足情報を載せています。

参考資料

[1] 滋賀県立図書館蔵『草津市地籍図』(1969)
[2] 滋賀県公文書館蔵『近江国栗太郡111ケ村字取調書』(1881)
[3] 法務省, 不動産登記情報(「登記・供託オンライン申請システム」より照会)
[4] 草津市立街道文化情報センター『古地図に描かれた草津』(1994)(各村の地券取調総絵図など)
[5] 公共新報『滋賀県草津市航空写真地図』(1983)
[6] 角川日本地名大辞典編纂委員会『角川日本地名大辞典 (25) 滋賀県』(1979)(小字一覧)
[7] 草津市史編さん室『近江国栗太郡村誌(上)』(1990)
[8] 草津市史編さん室『近江国栗太郡村誌(下)』(1991)
[9] 草津市史編さん委員会『草津市史 第1巻』(1981)(小字界線による地割復原図など)
[10] 草津市『広報くさつ』2020年7月1日号(字泉坪)
[11] 山本利貞『馬場町まほろば』(1999)(馬場町字限略図)
[12] 中村史彦『湖国の文化 科戸之風』(1986)(草津市常盤学区史跡地図)
[13] 川端善二『ふるさとあつまり』(1996)(集町小字地図)
[14] 志那町誌編纂委員会『志那町誌』(2015)(志那町小字地図)
[15] 小寺實『南笠の歴史 平成25年度増補版』(2014)(南笠小字地図・野路町小字地図)
[16] 野路町『野路町史』(1978)(野路町小字名略図)
[17] 滋賀県教育委員会草津市草津市吉田の条里景観遺存地区の歴史地理学的調査報告』(1974)
[18] 大津地方法務局蔵 旧土地台帳
[19] 谷謙二「今昔マップ on the web」(旧版地形図・航空写真など)
[20] 国土地理院地図・空中写真閲覧サービス」(国土基本図・米軍航空写真など)
[21] 草津市くさつマップ(地番参考図)
[22] 農林水産省eMAFF農地ナビ
[23] 草津市草津市例規集」(草津市区域内の字の名称変更について、児童遊園設置に関する公告、など)
[24] 草津市追分町地番新旧対照表・住居表示新旧対照表」(削除済みのためアーカイブへのリンク)
[25] 小西佐枝, 青柳憲昌「滋賀県草津市常盤地区(旧栗太郡北部)の近世における条里地割の変化」, 日本建築学会計画系論文集82巻(2017)734号

謝辞

調査にご協力いただいた、滋賀県立図書館、草津市立図書館、滋賀県公文書館、大津地方法務局、草津市役所税務課、草津宿街道交流館の担当者の方々、そして地図作成のアドバイスや励ましのいいねをくださった X (Twitter) のフォロワーの皆様に深く感謝いたします。

平和堂のサンクスキャンペーン・オータムキャンペーンでどの賞に応募するのが最適か

どの賞が当たりやすいのだろう

滋賀県民の心の拠り所、ハトのマークの平和堂

年に何回か「サンクスキャンペーン」や「オータムキャンペーン」と銘打って豪華賞品が当たるキャンペーンを開催してくれます。

1000円の購入ごとにシール1枚をもらえ、5枚集めたら1口応募できるというシステム。選べるコースは全部で4つ。家電やグルメのような高級賞品は当選人数が少なく、商品券のような安価な賞品は当選人数が多い というよくある懸賞方式になっています。

この手の懸賞では一体どの賞に応募するのが最適なのでしょうか。

当選人数が一番多い安価な賞に応募するのが良さそうに思えるのですが、みんながみんな同じことを考えたら結局倍率が上がってしまい、高級な賞のほうが穴場だったということになりかねません。

こういう最適戦略って、各賞品の価値を  x_i 、当選人数を  n_i として数学的に求められるものなんですかね(先行研究をご存知の方は教えてください)

過去の当選実績から考える

数式による最適戦略の導出はちょっとわからないので、データで攻めます。

ありがたいことに平和堂は過去のキャンペーンの当選実績を公式サイトで公開しています。このデータを分析して、どの賞が狙い目か考えてみましょう。

先に結論を言うと……

圧倒的にHOPマネーや商品券の当選確率が高い です!

高級賞品の数十倍当たりやすいです。

2022年3月 サンクスキャンペーン

http://www.hatosen.jp/news/23

  • 新生活コース(生活家電)
    当選確率:300/198738 = 0.15 %
  • バイヤーいち押しコース(近江牛
    当選確率:700/200209 = 0.35 %
  • HOPマネーコース(電子マネー3000円分)
    当選確率:5000/338863 = 1.48 %
  • はと専コース(商品券5000円分)
    当選確率:9000/183922 = 4.89 %

2022年9月 オータムキャンペーン

http://www.hatosen.jp/news/24

  • 秋の家電コース(生活家電)
    当選確率:200/305760 = 0.07 %
  • 選べるギフトコース(カタログギフト)
    当選確率:800/163800 = 0.48 %
  • HOPマネーコース(電子マネー3000円分)
    当選確率:5000/393120 = 1.27 %
  • はと専コース(商品券5000円分)
    当選確率:2000/229320 = 0.87 %

2023年3月 サンクスキャンペーン

http://www.hatosen.jp/news/29

  • 新生活コース(生活家電)
    当選確率:300/254200 = 0.12 %
  • グルメコース(特選グルメ)
    当選確率:800/172800 = 0.46 %
  • HOPマネーコース(電子マネー3000円分)
    当選確率:5000/366100 = 1.37 %
  • はと専コース(商品券5000円分)
    当選確率:5500/223700 = 2.46 %

考察

  • HOPマネーか商品券を狙うのが良いのは明確
  • そのどちらを狙うべきかは不明だが、下記のように予想してみる。
    • 予想1:当選人数が多いほうが当選確率も高くなる
    • 予想2:金額 × 当選人数 が多いほうが当選確率も高くなる
    • 過去の当選実績(HOPマネー・商品券)ではいずれの予想も成り立つ
    • なんとなく過去の当選実績(HOPマネー・商品券)では当選確率が金額 × 当選人数に比例しているっぽい(?)

実践

ちょうど執筆時点で2023年のオータムキャンペーンが開催されています。

昨今の物価高の影響もあってか、今回、HOPマネーは1000円減、商品券は2000円減+当選者数2000人減、と結構状況が変わっている模様。はたして過去データの傾向は今回も当てはまるのでしょうか。

http://www.hatosen.jp/news/30

  • 旅行コース:100組
  • 家電コース:150人
  • HOPマネーコース(HOPマネー2000円分):5000人
  • はと専コース(商品券3000円分):3500人

予想1(人数が多いほうが当たりやすい)ではHOPマネーが最適となり、予想2(金額×人数が多いほうが当たりやすい)では商品券が僅差で最適となります。

正直、予想に根拠がなくて全然読めないんですが、予想2のほうに賭けて「はと専コース(商品券3000円分)」に全振りしてみました!

当たると良いな〜〜〜

過去時点のコミットをでっちあげて10年分のGoogleマイマップの編集履歴をGitHubに移行するまでの軌跡

やったこと

Before:手動履歴管理

Googleマイマップから出力したKMLファイルをひたすらフォルダに溜めていました。ファイル名に日付を書く伝統的な履歴管理スタイルです。


エンジニアの端くれですがプライベートではこのざま

After:GitHubでのバージョン管理

GitHubでのバージョン管理に移行して、作業記録(コミットメッセージ)も付けました。


ドヤァ

過去時点のコミットをでっちあげる特殊な操作を行っているので、本記事では特にそのあたりの時間偽装テクニックを紹介しようと思います。

GitHubに移行するまでの軌跡

混沌

Googleマイマップを使って趣味で小字地図を作っているのですが、あいにくGoogleマイマップにはバックアップ機能がありません。そこでとりあえずファイルをエクスポートしてフォルダに保存していました。

冒頭で「ファイル名に日付を書く伝統的な履歴管理スタイル」だったと書きましたが、実は本当の最初はこんな感じでした……


ごみ箱ですか?いいえ、バックアップです。

つらい。

ファイル形式がバラバラ。.csv.kmzとかいうのもあって最悪です。これをあれやこれやして全部.kmlに揃えました。

.kmzから.kmlへの変換

KMZファイルはKMLファイルのZIP圧縮なので、拡張子を.zipに変更すると普通に展開でき、KMLファイルを取り出せます。

.csvから.kmlへの変換

小字地図作成の黎明期に Google Fusion Tables(現在は廃止)経由でダウンロードしたファイルがCSV形式になってました。

構造化データから非構造化データへの変換は流石に人力では無理なので、Pythonで適当なスクリプトを組んでマッピングしました。

過去時点のコミットをでっちあげる

バックアップファイルの形式を揃え終わったので、いよいよgitでコミットしていきます。

git環境構築やGitHubリポジトリ作成については本記事では触れませんので、そのあたりの解説は「GitHub 最初」とかでググってください。Macでのgit環境構築については過去記事でも軽く触れてます。

(以下、リポジトリ作成済みの状態とします)

一番古いバックアップファイルをローカルリポジトリに配置して、ファイル名をkusatsu-city-koaza-map.kml にリネームします。

そして普通にgit addします。

git add kusatsu-city-koaza-map.kml

次が重要です。過去時点でコミットしたことにするために、git commit--dateオプションを付けて日時指定でコミットします。

git commit --date="Feb 25 01:08:00 2012 +0900"

これでgit logを確認すると

% git log
commit ee276ac... (HEAD -> master)
Author: fffw2
Date:   Sat Feb 25 01:08:00 2012 +0900
    野村・上笠・平井の一部の小字を追加

…と、コミット時に指定した日時が「Date」に表示されていて「うまくいった」と安心してしまうのですが、これは巧妙なトラップです!!

このままGitHubにプッシュしても残念ながら指定した日時では表示されません。

実はgitのコミットには2種類の日時が存在しています。

  • AuthorDate:
    • git commit --dateで指定できるのはこっち
    • git logで表示されるのはこっち
  • CommitDate:
    • GitHubで使われるのはこっち

git log --pretty=fullerで CommitDate を見てみましょう。

% git log --pretty=fuller
commit ee276ac... (HEAD -> master)
Author:     fffw2 
AuthorDate: Sat Feb 25 01:08:00 2012 +0900
Commit:     fffw2 
CommitDate: Mon Oct 10 18:30:20 2022 +0900
    野村・上笠・平井の一部の小字を追加

AuthorDateは10年前の日付(git commit --dateで指定した日付)ですが、CommitDateは現在の日付になってしまってます。GitHubで使われるのはCommitDateのほうなのでこちらも改変しなくてはいけません。

2種類の日付の齟齬を解消するには

git rebase HEAD~ --committer-date-is-author-date

を実行すればOKです。(ここのオプションはcommit-dateではなくcommitter-dateです)

% git log --pretty=fuller
commit ee276ac... (HEAD -> master)
Author:     fffw2 
AuthorDate: Sat Feb 25 01:08:00 2012 +0900
Commit:     fffw2 
CommitDate: Sat Feb 25 01:08:00 2012 +0900
    野村・上笠・平井の一部の小字を追加

CommitDate=AuthorDate に書き換わりました。

あとは通常通り git push origin master でリモートにプッシュすれば、GitHubに10年前のコミットが出現します。

他の日付のバックアップファイルについても同様の作業を繰り返しましょう。最終的にこんな感じになります。

ちゃんと過去に草も生えます。

(追記 / 2022-11-30)
GitHubのコミット履歴ではCommitDateが使われますが、プロフィールページに表示される草にはAuthorDateのほうが使われているようです。ややこしいですね。(参考) How GitHub uses the Git author date and commit date - GitHub Docs

On your profile page, the author date is used to calculate when a commit was made. Whereas, in a repository, the commit date is used to calculate when a commit was made in the repository.

歴史改変コマンドまとめ

% git add kusatsu-city-koaza-map.kml
% git commit --date="Feb 25 01:08:00 2012 +0900"
% git rebase HEAD~ --committer-date-is-author-date
% git log --pretty=fuller
% git push origin master

git log は確認用コマンドなので慣れたら省略しても大丈夫です。

KMLファイルの差分の可視化

過去時点のコミットメッセージを書くためには当時の作業内容を思い出さなくてはなりません。当時の進捗報告ツイートの発掘の他、KMLファイルの差分比較を実施しました。

  1. Visual Studio Code の標準機能でKMLを差分比較
  2. 各差分箇所の<styleUrl>を書き換えて色を変える
  3. VSCode Map Preview プラグインでプレビュー表示

という流れで、作業前後の変更箇所を可視化できます。


KMLファイルの差分は地図上で見るとわかりやすい

おわりに

Googleマイマップの編集履歴GitHubでバージョン管理しました。

プロジェクト開始当初からバージョン管理していなくても、今回の方法を使えば「そろそろバージョン管理しようかな」と思ったタイミングでGitHubに移行できます。

「あの日は何をしたっけな〜」と頭を捻っていたら、サボり続けた夏休みの宿題の日記をあとから全部書いたときの記憶が蘇りました。大人になっても変わらないものですね。

参考サイト

「登記情報提供サービス」と「登記・供託オンライン申請システム」がややこしすぎる

大臣も混乱するややこしさ

趣味の小字地名の調査によく「登記・供託オンライン申請システム」を使っているのですが、これとそっくりな「登記情報提供サービス」というWebサービスもあり、名称だけでなく内容までも中途半端に似ているので混乱が絶えません。

本業で使っている士業の方々は勿論、河野太郎大臣までも間違えていました。

※ 2022年10月に利用時間が拡大するのは法務省の「登記・供託オンライン申請システム」ではなく民事法務協会の「登記情報提供サービス」のほうです

2つのWebサービスの違い

一言で言うと……

です。

それぞれ運営元も利用時間も違いますが、内部的には同じデータベース(登記情報システム)にアクセスしています。


法務省作成資料『登記情報システムの業務アプリケーション保守業務及び支出先法人の概要』(2014-03-12) の「登記情報システムについて」より引用。「登記ゲートウェイシステム」(オンライン登記情報検索サービス)は2016年に「登記・供託オンライン申請システム」に統合されています*1

「登記情報提供サービス」の概要

登記簿謄本などの記載情報のPDFをダウンロードできます。証明能力はないですが、少し安いのがメリット。土日も使えます。

「登記・供託オンライン申請システム」の概要

登記や供託に関する様々な申請を行える汎用的なシステムです。登記情報の取得に関して言えば、「かんたん証明書請求」から正式な登記簿謄本の郵送(または窓口で交付)請求ができます。「登記情報提供サービス」のようなブラウザ上で即時表示する機能はありません。

登記情報検索画面の仕様差

両システムで特に似ているのが登記情報を検索する画面です。

  • 「登記情報提供サービス」の検索画面

  • 「登記・供託オンライン申請システム」の検索画面

似すぎ。

しかも、完全に同じならまだ良いのですが、困ったことにそれぞれ微妙に仕様が異なっているから厄介です。

小字の仕様差

上記スクショの「所在」欄を見比べてみてください。

同じ地番ですが前者の「登記情報提供サービス」と違って後者の「登記・供託オンライン申請システム」は小字まで選択できます!


小字愛好家にはたまらない一覧画面(登記・供託オンライン申請システム)

ちなみに「登記・供託オンライン申請システム」で小字まで入力しても、確定ボタンを押して申請画面に遷移すると、小字の情報は遷移先画面に渡っていません。実務上は小字がなくても地番だけで土地を特定できるからでしょう。*4


申請画面には小字が表示されない(登記・供託オンライン申請システム)

実務上は小字はあってもなくてもよいものなので、システムの仕様変更で、ある日突然小字一覧がなくなってしまわないか心配です。

地番の仕様差

「登記情報提供サービス」のほうにだけ地番検索サービスとの連携機能があり、ゼンリン地図をベースにした地番図を参照できます(一部地域に限る)


「登記情報提供サービス」のほうでだけ使える地番検索サービス

また、地番の複数入力件数も両システムで異なっていて、「登記情報提供サービス」は最大50件ですが、「登記・供託オンライン申請システム」は最大10件です。

何故こんなややこしいことになったのか

そもそもどうしてこんなによく似たWebサービスが共存しているのでしょうか。

電子政府黎明期の混乱

── 時は20世紀末まで遡ります

当時のサラリーマン川柳に「ドットコム どこが混むのと 聞く上司」と読まれたように、この頃、一般消費者にもインターネットが急速に普及しました。

政府も1999年に「電子政府」プロジェクトを立ち上げ、2000年には高度情報通信ネットワーク社会形成基本法(IT基本法)を制定し、"紙"から"インターネット"へと変革を推進しました。

法務省も登記のオンライン化に向けて動き出します。幸い膨大な登記情報自体は昭和63年以来の地道な移行作業により既におおかたシステム化が進んでいた *5 ので、あとは関連法を整備して、一般ユーザー向けのWebアプリケーションを構築すればよいというところまで来ていました。

まず手始めに登記情報の閲覧用システムの構築が進められます。2000年に「電気通信回線による登記情報の提供に関する法律」が成立し、サービス提供を行う指定法人に民事法務協会が選ばれ、「登記情報提供サービス」がリリースされました。


開設当初の「登記情報提供サービス」(WebArchiveより)

法務省ではなく民事法務協会が運営しているのは、なんというか、まあ…… 大人の事情によるものらしいです。

クレジットカード決済による簡便な手数料納付が当時の会計法規では認められていなかった *6 ので指定法人(民事法務協会)が仲介する仕組みにした、というのが「表向きの理由」のようです。

法律施行前に指定法人が実質決まっていたとか、予算が割高だとか、天下り先になっているとか、何やらいろいろ訳ありのようですので、そういった話に興味のある方は「民事法務協会とコンピューター化の歴史」(長大記事です!)や「新登記情報提供サービスの問題」を読んでみてください。

検索画面の流用

「登記情報提供サービス」開設の3年後、満を持して「法務省オンライン申請システム」(2003年〜2012年)が稼働しました。様々な申請をオンラインで行えるようにした汎用システムです。運営は民事法務協会ではなく法務省です。*7

登記関係のオンライン申請を行えるようにするために、不動産登記法の全面改正も行われました。*8


法務省オンライン申請システム(WebArchiveより)

法務省オンライン申請システムの申請用総合ソフトから「物件情報取得」を選ぶと、ブラウザが立ち上がり「登記情報提供サービス」と瓜二つなWebサイト(登記ゲートウェイサブシステム)に遷移します。


法務省登記・供託オンライン申請システムの概要と変更点」p.40 より引用。2011年のシステム改修までは ブラウザ上で物件検索→ファイルをダウンロード→申請用総合ソフトで読み込む という、まどろっこしい手順が取られていたようです。

当時の画面を見比べてみると、都道府県選択から丁目・小字選択に至るまで、どの画面を取ってみても「登記情報提供サービス」と「登記ゲートウェイサブシステム」で瓜二つです。

おそらく「法務省オンライン申請システム」を構築する際に、オンライン物件検索に関するコンポーネント(=登記ゲートウェイサブシステム)だけ既存の「登記情報提供サービス」のUIを流用したのでしょう。

その後、2011年のシステム改修で「法務省オンライン申請システム」から登記・供託に関する申請手続きが独立して、「登記・供託オンライン申請システム」というシステム名になり、現在に至ります。

システム名もあまり良くない

法務省の「登記・供託オンライン申請システム」には

  1. 専用ソフトを使う登記・供託申請
  2. Webブラウザ上での証明書請求(登記簿の郵送請求など)

の2つの機能があります。「登記・供託オンライン申請システム」というシステム名からイメージできるのは1.の機能だけで、2.の機能はイメージできません。

システム名だけに着目すると、むしろ2.の機能は「登記情報提供サービス」にあるほうが自然なのではないでしょうか。

まとめ

あらためて歴史的経緯を図にまとめておきます。

「登記・供託オンライン申請システム」にPDF出力機能を追加して「登記情報提供サービス」を廃止したり、「登記・供託オンライン申請システム」のうち登記簿請求に関する機能を「登記情報提供サービス」のほうに移管して名が体をあらわすようにしたりすれば、ややこしさが解消すると思います。

デジタル庁さん、よろしくお願いします。*9


*1:「現行のオンライン登記情報検索サービスを提供している登記ゲートウェイシステムは,登記・供託オンライン申請システムと統合し,平成28年12月19日(月)から統合後の登記・供託オンライン申請システムの機能の1つとしてサービスの提供を開始する予定です。」(「システム統合に伴うオンライン登記情報検索サービスの変更点について」より)

*2:「昨年9月25日から、東京法務局のほか管区法務局管内の26庁の登記所を対象にインターネットによる登記情報のサービスを開始」(『新風』2001年3月号特集「電子自治体構築への歩み ネットワーク時代の"サービス"を考える」(民事法務協会松尾武理事のインタビュー記事) より)

*3:「登記・供託オンライン申請システムは,平成23年2月14日から,法務省オンライン申請システムとは別のシステムとして運用を開始しました。」(「登記・供託オンライン申請システムとは」より)

*4:さらに細かいことを言うと、字別付番の地域では小字がないと地番だけで土地を特定できないので、「登記情報提供サービス」でも「登記・供託オンライン申請システム」でも小字まで選択できます。字別付番と一村通しについては下記の記事を参照。fffw2.hateblo.jp

*5:東京法務局板橋出張所で1988年(昭和63年)に登記のコンピュータ化が始まったのを皮切りに、各登記所で登記簿の移行作業が順次行われ、二十余年の時を経て、2008年(平成20年)に約2億7千万筆の不動産と約350万社の法人の登記簿の移行が完了しました。(参考:法務省民事局総務課登記情報センター室の人事院総裁賞(平成21年度)受賞記事(人事院)不動産登記コンピュータ化指定日一覧(個人作成)

*6:確かに2000年当時はクレジットカード決済による手数料納付は認められていなかった。「行政手続等における情報通信の技術の利用に関する法律の施行に伴う関係法律の整備等に関する法律」成立によって、「登録免許税法」が改正されて、クレジットカード決済による手数料納付が認められるようになったのは2002年のこと。現在は法務省が運営する「登記・供託オンライン申請システム」でもクレジットカード決済が使える。

*7:2002年の法改正で手数料のクレジットカード決済が認められたので、2003年時点では民事法務協会に委託する「表向きの理由」もなくなっていたのでしょう。

*8:「オンライン登記申請を導入するとともに,不動産登記制度をIT社会にふさわしい制度とするため,不動産登記法を全面的に改正する法案が,平成16年(2004年)6月11日に法律第123号として成立し,この法律は,平成17年3月施行予定である」(「登記情報システム 業務・システム見直し方針(案)」(2004) より

*9:形はいびつですが既にデジタル化が完了していて、慣れれば問題なく使えるので、デジタル庁が法務省のシステムにメスを入れるのは随分あとになるでしょうね。

GASでAPIを叩いてPocketの未読数をGoogleスプレッドシートに連携する

あとで読みたいWebサイトの管理に「Pocket」を愛用してます。かれこれ8年目。

ついつい「あとで読む」を溜めすぎてしまうので、どれぐらいのペースで「あとで読む」を消化できているか可視化するために、以前、下記の記事を書きました。

fffw2.hateblo.jp

1年半ぐらい問題なく動作していたのですが、突然2022年8月10日から未読数を取得できなくなってしまいました。自分でAPIを叩くのが面倒で第三者のサービスに依存していたのですが、こういうときに手も足も出なくなってしまうのが弱いところ。

やむを得ませんね。自分でAPIを叩いてみますか(重い腰を上げる)

Pocket APIを叩いて未読数を取得するまでの道のり

開発者用ページでアプリケーションを作成

https://getpocket.com/developer/ にログインして「Create a New App」からアプリケーションを作成します。作成後に「CONSUMER KEY」(コンシューマーキー)が表示されるのでメモしておきましょう。

<作成例>

curlでアクセストークンを取得

アクセストークンを取得するまでがちょっと大変でしたが、下記の記事を参考にしたらうまくいきました。

ikeyu0806.hatenablog.com

自分の環境で実行したコマンドを載せておきます。…といっても参考記事とほぼ同じ内容です。ローカルサーバーをpythonで起動してる点が違うぐらい。

# リクエストトークン取得
curl -X POST -H "Content-Type: application/json" -H "X-Accept: application/json" -d '{"consumer_key":"{コンシューマーキー}", "redirect_uri":"http://localhost:8080"}' https://getpocket.com/v3/oauth/request

# リダイレクト先のローカルサーバーを起動
python -m http.server 8080

# 認可
open -a '/Applications/Google Chrome.app' https://getpocket.com/auth/authorize?request_token={リクエストトークン}&redirect_uri=http://localhost:8080

# アクセストークン取得
curl -X POST -H "Content-Type: application/json" -H "X-Accept: application/json" -d '{"consumer_key":"{コンシューマーキー}", "code":"{リクエストトークン}"}' https://getpocket.com/v3/oauth/authorize

<認可時の画面>

APIテスト

正常にアクセストークンを発行できていれば、下記コマンドで未読記事リストをJSON形式で取得できます。(膨大なのでhead -n 100で先頭100行のみ表示してます)

curl -X POST -H "Content-Type: application/json" -H "X-Accept: application/json" -d '{"consumer_key":"{コンシューマーキー}", "access_token":"{アクセストークン}"}' https://getpocket.com/v3/get | jq | head -n 100

jq がないよ!って怒られたら brew install jq してください。

Google Apps Script(GAS) でAPIを叩く

Googleスプレッドシートを開き、A1セルに「date」、B1セルに「count」と入力します。そして 拡張機能>Apps Script から Google Apps Script(GAS) のエディターを起動して、下記のソースコードをコピペしてください。日時と未読数を取得して、Googleスプレッドシートの最終行の次の行に書き込むスクリプトです。

function countPocketUnreadArticles() {
  var date = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy-MM-dd HH:mm:ss');
  var count = countItems();

  Logger.log(date + ' ' + count);

  var spreadsheet = SpreadsheetApp.openById('{GoogleスプレッドシートのID}');
  var sheet = spreadsheet.getSheetByName('シート1');
  var lastrow = sheet.getLastRow();
  var recordrow = lastrow + 1;
  sheet.getRange("A" + recordrow).setValue(date);
  sheet.getRange("B" + recordrow).setValue(count);
}

function countItems() {
  const url = "https://getpocket.com/v3/get";
  const consumer_key = "{コンシューマーキー}";
  const access_token = "{アクセストークン}";
  const data = {
    "consumer_key":consumer_key,
    "access_token":access_token
  };
  const options = {
    "method" : "POST",
    "contentType" : "application/json",
    "payload" : JSON.stringify(data)
  };
  const response = UrlFetchApp.fetch(url, options);
  const pocketItems = JSON.parse(response).list;
  const itemIds = Object.keys(pocketItems);
  return itemIds.length;
}
  • {コンシューマーキー}{アクセストークン}には先述のAPIテストで使った値を入力してください。
  • {GoogleスプレッドシートのID}には、GoogleスプレッドシートのURLのhttps://docs.google.com/spreadsheets/d/の後ろの文字列を入力してください。

試しに「実行」ボタンを押してみて、うまくGoogleスプレッドシートに書き込まれたら成功です。

仕上げに、自動実行されるようにトリガーを設定しておきましょう。これで完成です!

<トリガーの設定例>

完成

最終的にはGoogleスプレッドシートにこんな感じで「あとで読む」の未読数が時系列順に蓄積されていきます。グラフは後付けでGoogleスプレッドシートの標準機能を使って描画しました。

これで再び「あとで読む」がどれだけ残っているか視覚的に把握できるようになりました。あとはひたすら「あとで読む」を消化するだけですね……(遠い目)

大津城縄張推定復元図片手に幻の大津城を歩く

塞王の楯』を読んだ勢いで、Googleマイマップで「大津城縄張推定復元図」を作りました。大津城跡の散策のお供にどうぞ。

大津城縄張推定復元図(Googleマイマップ)

『図説 大津の歴史(上)』(大津市歴史博物館市史編纂会, 1999)の大津城縄張推定復元図をベースに、後述の関連資料を参考にして橋や天守を補筆して作成。

  • 内側から順に「奥二の丸」「二の丸」「三の丸(浜町口側は香集丸)」
  • 琵琶湖に突き出しているのが左から順に「伊予丸」「本丸」
  • 入口は「尾花川口」「三井寺口」「浜町口」の3箇所
  • 外堀の南半分の空堀部分は茶色で図示。ここは琵琶湖より標高が高いので水が入らない。(たとえサイフォンの原理で導水しようとしても物理学的に無理)

大津城とは

現地の説明板より大津市観光振興課の文章を引用しておきます。

 戦国時代の終わり、豊臣秀吉坂本城を廃し、この付近一帯に大津城を築きました。築城年代は天正14(1586)年頃とされ、初代城主は坂本城主であった浅野長吉(長政)、その後、増田長盛、新庄直頼を経て、文禄4(1595)年に京極高次が就任しています。
 高次の妻は浅井三姉妹の次女「お初」でしたが、慶長5(1600)年の天下分け目の関ヶ原の合戦においては、東軍についたため、西軍の大軍が大津城に押し寄せ、奮闘の末、関ヶ原の合戦の当日、開城しています。高次は西軍の大軍を引き付け、結果として関ヶ原の勝敗を大きく左右したとしてその後、加増のうえ小浜藩主に転封しています。
 大津城は合戦の翌年に廃城。徳川家康は、新たに膳所の地に天下普請第1号として膳所城を築いています。なお、大津城の天守は、落城しなかったという縁起をかついで彦根城に移されています。

大津城跡散策

本丸跡

本丸の場所はびわ湖浜大津駅前でアクセスもよいので、目立つ場所に「大津城跡」と刻まれた石碑が立っています。


大津城跡


大津城縄張推定復元図(元ネタ)


本丸から二の丸を望む

外堀の石垣遺構(?)

大津祭曳山展示館(中央1丁目)の隣の駐車場に外堀の遺構だと言われる石垣が残っています。


駐車場の奥に一部だけ残るいかにもな石垣


穴太衆積み?……には見えないが……


縄張推定復元図と照らし合わせると外堀の端ではなく中央に位置している……

大津城の復元石垣

京都信用金庫大津支店(浜大津1丁目)の前に大津城の石垣が復元されています。

ちなみにこのあたりの旧地名は「坂本町」といい、豊臣秀吉坂本城を廃して大津城を築いた際に、坂本城の城下町の人々が移住したことに由来します。

おわりに

大津城は戦国時代の近江を代表する湖城でしたが、廃城時期が早く、現地に遺構がほとんど残っていないこともあり、知名度自体もそんなに高くありません。

しかし、現地調査ではわかりづらくても地図で見ると見えてくるものもあります。大津城の縄張図を現在の地図と重ねてじっくり観察してみると、堀の外郭が現在の道路・宅地・溝渠などの土地区画と一致している箇所がちらほら見つかり、わずかですが往時の大津城の威容が目に浮かんできます。

今昔比較から得られるこの感動をより多くの人々に味わっていただけるように、今回大津城縄張推定復元図をGoogleマイマップで公開しました。ぜひ地図を眺めて戦国の風を感じてみてください。

参考資料

湾曲した資料の写真を ScanTailor で真っ直ぐにする

概要

スマホやデジカメで分厚い資料の写真を撮ると、どうしてもページの見開きのノド部分が湾曲してしまいますよね。ScanTailor というソフトを使えば、湾曲した資料の写真を簡単に真っ直ぐに補正できます。

経緯

スマホの高画質化が進み、スキャナーアプリでいつでも手軽に資料をスキャンできる時代になりました。

ほとんどのスキャナーアプリには台形補正(射影変換)機能が備わっていて、斜めに撮影した画像を正面から撮影した画像に変換できます。しかし、紙が膨らんでぐねっと湾曲している画像を真っ直ぐに補正する機能はなかなかありません。

パソコンを使えばなんとかなるのではないかと、まずは画像編集ソフト GIMP の「ケージ変形」や「interactive warp filter」プラグインあたりを使って試行錯誤してみたのですが、たくさんのマーカーを手動で微調整しなくてはならず骨が折れました。しかも、手間が掛かる割には期待したクオリティーにならず、とても残念な感じ。

そこで何か良いソフトはないものかと海外サイトであれこれ調べていたら Best way to flatten a curled photographed book photograph? - Graphic Design Stack Exchange

「ScanTailor の湾曲補正が最高すぎる!」

といった記述を発見(訳は適当です)。試してみたところ確かに最高でした。

ScanTailor

インストール方法

Windows の場合

https://github.com/scantailor/scantailor/releases/tag/RELEASE_0_9_11_1 から exe ファイルをダウンロードするだけ。

Mac の場合

本家では Mac 用のバイナリファイルが配布されてないので、派生版の scantailor-advanced-osx を使います。事前に homebrew をインストールした上で、下記のコマンドを実行すれば OK です。

git clone "https://github.com/yb85/scantailor-advanced-osx.git"
cd ./scantailor-advanced-osx
brew install --formula ./scantailor.rb
scantailor

操作方法

YouTube に素晴らしい解説動画がありました。これを見れば大体わかります。

自炊スキャン画像の後処理に使うScanTailor(フリー)の使い方 - YouTube

解説動画が削除された場合に備えて、一応簡単に説明しておきます。

  1. Fix Orientation(向き修正)
    回転ボタンを押して向きを修正します。

  2. Split Pages(ページ分割)
    自動でページが分割されます。正しくない場合は手動で境界を修正してください。

  3. Deskew(傾き除去)
    自動で傾きが除去されます。正しくない場合は縦のラインが真っ直ぐになるように調整してください。

  4. Select Content(版面選択)
    文字や画像があるエリアを選択してください。

  5. Margins(余白)
    デフォルトのままで OK です。

  6. Output(出力)→ Dewarping(湾曲除去)
    Mode で「Color/Grayscale」を選び、Options のチェックをすべて外しておきます。 右側の下から 2 番目にある「Dewarping」タブを押すと、青い格子が表示されるので、この格子を湾曲に合わせてください。四隅のマーカーの他に、上辺と下辺の任意の場所にマーカーを追加できます。あまりマーカーを追加しすぎると調整が大変なので、必要最小限の数に留めておきましょう。

  7. 完成
    青い格子の位置が決まったら再び「Output」タブを押してください。 補正後の画像が表示されます。このとき裏で出力フォルダに補正後の画像が保存されています。(特に出力ボタンはありません)