『2030―2040年 日本の土地と住宅 』(野澤千絵)を読んだ

https://amzn.asia/d/iWts72f

 

読んだのでざっくりまとめ。

 

地価高騰

ライフスタイルの変化で、交通の便のいい駅の徒歩圏内の需要が増え、地価が上昇。

結果として、土地が細分化したり、災害リスクの高い地域の人口が増えたりしている

将来的にそれらの土地が不良在庫化しかねない。

 

家が手に入りにくい

新築マンションの供給が減っている。都市化しきったことによる開発余地の減少による。

引きずられて中古マンション相場も上昇。

戸建ては空き家は多いものの、流通に回ってこない

加えて実需層の数は2025年がピーク。(とはいえ、これからどんどん減少する)

 

とはいえ、住宅の数はあるのだが、高すぎる住宅と、買いたくない住宅が積み上がっている状態で、在庫の質が、実需層とミスマッチになっており、欲しい住居が手にはいらない

 

再開発は高コスト化

再開発は地権者の利害関係の整理などで、土地の仕入れが高くなる

回収するために再開発の建物は高く大きくなっていく

利益を出すためにタワマンになる

 

結果的に値段も上がり、実需と乖離している。

 

感想

都市計画なき開発をした結果、未来への負債を積み上げている気がする。

結構、やばいんじゃないかなー。2050年とかになったら一部を除いて、東京でも地価はどんどん下がりそう。

Rubyで康煕部首・CJK部首補助を検出、置換する

Rubyで康煕部首・CJK部首補助を検出、置換するものをとりあえず作ってみた。

文字の変換表は、PythonでCJK部首/康熙部首を置換 - メモ が公開してくれているものを参考にした。

--

使い方はこんな感じ

require "./lib/string_ja.rb"
using StringJa::Radical

"埼玉埼⽟問題".codepoints # => [22524, 29577, 22524, 12127, 21839, 38988]
"埼玉埼⽟問題".include_kangxi_radicals? # => true
"埼玉埼⽟問題".tr_kangxi_radicals.codepoints # => [22524, 29577, 22524, 29577, 21839, 38988]

コード全体は以下*1

# Stringクラスを日本語用に拡張するモジュール
module StringJa
    # 部首を扱うモジュール
    module Radical
  
       # 康煕部首のCODEPOINT
       KANGXI_RADICALS_REGEX_PATTERN=/[\u2F00-\u2FDF]/

       # CJK部首補助のCODEPOINT
       CJK_RADICALS_SUPPLEMENT_REGEX_PATTERN=/[\u2E80-\u2EFF]/
       
       # 康煕部首のうち置換する文字の一覧
       # via https://imabari.hateblo.jp/entry/2020/08/03/220407
       # 
       # CODE Pointsを確認したいときは、StringJa::Radical::KANGXI_RADICALS_PATTERN.each_char {|c| puts "#{c} : #{c.codepoints[0].to_s(16)}" }
       KANGXI_RADICALS_PATTERN="⼀⼁⼂⼃⼄⼅⼆⼇⼈⼉⼊⼋⼌⼍⼎⼏⼐⼑⼒⼓⼔⼕⼖⼗⼘⼙⼚⼛⼜⼝⼞⼟⼠⼡⼢⼣⼤⼥⼦⼧⼨⼩⼪⼫⼬⼭⼮⼯⼰⼱⼲⼳⼴⼵⼶⼷⼸⼹⼺⼻⼼⼽⼾⼿⽀⽁⽂⽃⽄⽅⽆⽇⽈⽉⽊⽋⽌⽍⽎⽏⽐⽑⽒⽓⽔⽕⽖⽗⽘⽙⽚⽛⽜⽝⽞⽟⽠⽡⽢⽣⽤⽥⽦⽧⽨⽩⽪⽫⽬⽭⽮⽯⽰⽱⽲⽳⽴⽵⽶⽷⽸⽹⽺⽻⽼⽽⽾⽿⾀⾁⾂⾃⾄⾅⾆⾇⾈⾉⾊⾋⾌⾍⾎⾏⾐⾑⾒⾓⾔⾕⾖⾗⾘⾙⾚⾛⾜⾝⾞⾟⾠⾡⾢⾣⾤⾥⾦⾧⾨⾩⾪⾫⾬⾭⾮⾯⾰⾱⾲⾳⾴⾵⾶⾷⾸⾹⾺⾻⾼⾽⾾⾿⿀⿁⿂⿃⿄⿅⿆⿇⿈⿉⿊⿋⿌⿍⿎⿏⿐⿑⿒⿓⿔⿕"
       
       # 康煕部首から置換可能な文字の一覧
       # via https://imabari.hateblo.jp/entry/2020/08/03/220407
       KANGXI_RADICALS_REPLACEMENT="一丨丶丿乙亅二亠人儿入八冂冖冫几凵刀力勹匕匚匸十卜卩厂厶又口囗土士夂夊夕大女子宀寸小尢尸屮山巛工己巾干幺广廴廾弋弓彐彡彳心戈戸手支攴文斗斤方无日曰月木欠止歹殳毋比毛氏气水火爪父爻爿片牙牛犬玄玉瓜瓦甘生用田疋疒癶白皮皿目矛矢石示禸禾穴立竹米糸缶网羊羽老而耒耳聿肉臣自至臼舌舛舟艮色艸虍虫血行衣襾見角言谷豆豕豸貝赤走足身車辛辰辵邑酉釆里金長門阜隶隹雨靑非面革韋韭音頁風飛食首香馬骨高髟鬥鬯鬲鬼魚鳥鹵鹿麥麻黃黍黒黹黽鼎鼓鼠鼻齊齒龍龜龠"
  
      # CJK部首補助のうち置換する文字の一覧
      # via https://imabari.hateblo.jp/entry/2020/08/03/220407
      CJK_RADICALS_SUPPLEMENT_PATTERN='⺃⺅⺉⺋⺎⺏⺐⺒⺓⺔⺖⺘⺙⺛⺟⺠⺡⺢⺣⺦⺨⺫⺬⺭⺱⺲⺹⺾⻁⻂⻃⻄⻍⻏⻑⻒⻖⻘⻟⻤⻨⻩⻫⻭⻯⻲'
      
      # CJK部首補助から置換可能な文字の一覧
      # via https://imabari.hateblo.jp/entry/2020/08/03/220407
      CJK_RADICALS_SUPPLEMENT_REPLACEMENT='乚亻刂㔾兀尣尢巳幺彑忄扌攵旡母民氵氺灬丬犭罒示礻罓罒耂艹虎衤覀西辶阝長镸阝青飠鬼麦黄斉歯竜亀'

      refine String do
        #文字列に康煕部首が含まれているか
        def include_kangxi_radicals?
          self.match?(KANGXI_RADICALS_REGEX_PATTERN) 
        end
  
        #文字列に含まれる康煕部首を可能な限り漢字に置き換える
        def tr_kangxi_radicals
          self.tr(KANGXI_RADICALS_PATTERN, KANGXI_RADICALS_REPLACEMENT)
        end

       #文字列に含まれる康煕部首を可能な限り漢字に破壊的に置き換える
        def tr_kangxi_radicals!
          self.tr!(KANGXI_RADICALS_PATTERN, KANGXI_RADICALS_REPLACEMENT)
        end
  
        #文字列にCJK部首補助が含まれているか
        def include_cjk_radicals_supplement?
          self.match?(CJK_RADICALS_SUPPLEMENT_REGEX_PATTERN)
        end
  
        #文字列に含まれるCJK部首補助を可能な限り漢字に置き換える
        def tr_cjk_radicals_supplement
          self.tr(CJK_RADICALS_SUPPLEMENT_PATTERN, CJK_RADICALS_SUPPLEMENT_REPLACEMENT)
        end

        #文字列に含まれるCJK部首補助を可能な限り漢字に破壊的に置き換える
        def tr_cjk_radicals_supplement
          self.tr(CJK_RADICALS_SUPPLEMENT_PATTERN, CJK_RADICALS_SUPPLEMENT_REPLACEMENT)
        end
      end
    end  
end

ちょっと時間がないのでいったんここまでだが、時間ができたらテストを足してGemにしたい。

参考

メモ

グリフとかcmapとか知らなかった。すごい雑にいうと

  • グリフ: フォントにおける1文字の字形
  • cmap: 文字コードとグリフの対応表

であって、 「康熙部首」と「CJK部首補助」が意図せず混入するのは、文字コードからグリフに変換した後、逆にグリフから文字コードに変換するときに別の文字コードに変換されることがあるからだそう。

プログラミングまとめ|みし|noteのフォントを読むシリーズも勉強になりそうだが、これはあとで。

またRubyのRefinementの仕組みも恥ずかしながら今回初めて知ったのでこれも勉強になった。

RubyのRefinement(翻訳: 公式ドキュメントより)|TechRacho by BPS株式会社

*1:シンタックスハイライトするとなぜか全部表示できないので、ハイライトなしで

Known unknown risk

特に結論はないメモ

  • いまさらながら、プロジェクト・シンエヴァンゲリオンを読んだ
    • いくつか面白い事が書いてあったのでメモ
    • 今回はknown unkown riskとunknown unkown risk (p)について
  • known unkown riskとunknown unkown risk
    • もともとよく知られた考え方だが、ラムズフェルドさんの発言で有名に重なった書かれた考え方
      • https://data.wingarc.com/unknown-unknown-23097
      • unknown unknown risk
        • 「それが起きるまで起きると想像もできなかった問題」
        • いわゆる完全な想定外のこと
      • known unkown risk
        • 本の中では、「具体的に「何」とはわからないが、このタイミングやこの局面では何かしらの問題が起き得ると予見できる」こととしている。
        • そして、「事前に照準をあわせて具体的な準備をすることはできないが、何かが起こるだろうという警戒感をもつことができる」
          • つまり具体的にはわからないが、備えることはできる類のリスクのこと
  • ソフトウェア/システム開発でもknown unkown riskをもう少し真面目に考えないといけないかも
    • 理由
      • 結局、リスクが顕在化したら何かしらの悪影響があるわけで、適切に備えが必要 *1
    • たとえば以下のような時期・イベント
      • メンバー変更、だったり、要件変更のような当初計画から変更が生じそうな箇所
      • 顧客の体制変更が想定される時期
    • 今思えば、教科書的なウォーターフォールのプロジェクトでは暗黙的にやっていた気がする *2
      • 工程単位でバッファーを積んだり
      • 要件変更の工数見積もりにバッファー積んだり

*1:とはいえ、こういうのは真っ先に上から削られて、かつリスクが顕在化したら現場でなんとかしろとか言われがちな気はするのだが。

*2:現場でできていたかは別 & だからこそ高くて遅くなるのだが

WSL2(Ubuntu22.04)にDockerをインストールする

久々に開発環境を再構築している。昔よりだいぶ簡単になっている

Dockerのインストール

Install Docker Engine on Ubuntu | Docker Docsを参考に、以下のコマンドでDockerをインストールする

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

rootlessモードにする

uidmapを入れて

sudo apt-get install -y uidmap

rootlessモード用のスクリプトを実行する

dockerd-rootless-setuptool.sh install

あとは環境変数DOCKER_HOSTを追加しておく

echo "#for rootless mode on docker"
echo "export DOCKER_HOST=unix:///run/user/1000//docker.sock" >>  ~/.bash_profile

以上

`WSL (2526) ERROR: UtilTranslatePathList:2866: Failed to translate XXXX` というエラーがでてWSL2が起動できないときは、` wsl --set-default `

事象

WSL2にUbuntu22.04をインストールしたあと、再起動したところ、以下のようなエラーがでて起動できなかった。

<3>WSL (2552) ERROR: UtilTranslatePathList:2866: Failed to translate C:\WINDOWS\system32
<3>WSL (2552) ERROR: UtilTranslatePathList:2866: Failed to translate C:\WINDOWS
(Userのパスなど含まれるので略)

原因

よくわからない。

対策

以下を実行してWSL再起動

wsl --set-default {distro_name}

調査

とりあえずググると以下のような記事が見つかる

一応、wsl --listを実行してみるが、ただしく既定のdistroは存在しているように見える

> wsl --list
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu-22.04 (既定)
Ubuntu

念のため再設定してみる

>  wsl --set-default Ubuntu-22.04
この操作を正しく終了しました。
> wsl --list
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu-22.04 (既定)
Ubuntu

なぜか、上記を実行すると、正常に起動するようになった。

この辺のGithubでも議論はされている模様 <3>WSL (8) ERROR: CreateProcessParseCommon:782: Failed to translate \\wsl.localhost\westie\home\mwoodpatrick · Issue #9252 · microsoft/WSL

システムで使うコードについて

雑なメモ

コード設計

コード設計の指針としては以下のようなものがあるみたい

https://cio.go.jp/guides の 「コード(分類体系)導入実践ガイドブック」とか

https://brevis.exblog.jp/27630954/ のブログとも面白い   「品目コードNo.」の考え方・採り方もいいかもね。

コードのまとめ

  • 政府CIOポータルに政府が持ってるコードの一覧があります https://cio.go.jp/codes
    • 性別だけでも11個コードがあったりするけど...

個人的にまとめたコード

統一金融機関コード

全国銀行協会内の金融機関共同コード管理委員会が制定する、金融機関に付与された4桁のコードである。金融機関コード銀行コード全銀協コードとも呼ばれる via wikipedia https://ja.wikipedia.org/wiki/%E7%B5%B1%E4%B8%80%E9%87%91%E8%9E%8D%E6%A9%9F%E9%96%A2%E3%82%B3%E3%83%BC%E3%83%89

マスタは全銀協のサイトで購入できる https://www.jba-shuppancenter.jp/

サードバーティならBankCodeJP APIなどもあるhttps://bankcode-jp.com/

支店コード

金融機関の支店を表すコード。数字3ケタ。取得方法は統一金融機関コードに同じ。

郵便番号

郵便を送るためのおまかな地域と紐づいたコード。数字7桁。

郵便局がKEN_ALL.csvhttps://www.post.japanpost.jp/zipcode/download.htmlを公開しているが、複数の地番https://qiita.com/nanasess/items/0f0aeaa1f72f599b9142がまとまっているので、パースするのは大変そう。

サードパーティのケンオールとか使うのがいいのではhttps://kenall.jp/

法人番号

都道府県

いろいろありますが、JIS X 0401都道府県コード とか、 https://ja.wikipedia.org/wiki/ISO_3166-2:JP あたりを使うのがよいでしょう。

地方公共団体

全国地方公共団体コードをつかえる。各種役所向けのコードもある

https://ja.wikipedia.org/wiki/%E5%85%A8%E5%9B%BD%E5%9C%B0%E6%96%B9%E5%85%AC%E5%85%B1%E5%9B%A3%E4%BD%93%E3%82%B3%E3%83%BC%E3%83%89#%E9%83%BD%E9%81%93%E5%BA%9C%E7%9C%8C

性別

https://ja.wikipedia.org/wiki/ISO_5218 に従っておくのがよいでしょう。このコードをシステムでどう扱うかは、 https://qiita.com/aoshirobo/items/32deb45cb8c8b87d65a4とか見ると良い。

EANコード

EANコード(イアンコード、European Article Number)は、商品識別コードおよびバーコード規格のひとつ。日本の規格は「JANコード」(Japanese Article Number)と呼ばれる。

https://ja.wikipedia.org/wiki/EAN%E3%82%B3%E3%83%BC%E3%83%89

golangにおける...(Triple dots)

`golangではtriple dotsがちょっと特殊な意味を持つ場合がある

(すごい雑な記事だが、何かしら書かないと忘れそうだったので記録として)