読んだ: 数学ガールの秘密ノート/行列が描くもの

2週間ぐらい前からちょろちょろ布団の中で読んでたのを一気に読み終えた。 大半は布団の中で読んでたので演習問題はほとんどやれていないのでそれはここから。

ここのところは仕事以外だと 3D に関する勉強なりをすることが多いが、ベクトルや行列がどうやっても出てくる。(なんだったら他の数学要素もめっちゃ出てくるんだけど。。)
その辺をかなり曖昧なままやってきてたのだけど、そろそろ理解を深めたいなと思い手にとったのだった。なのでベクトルの話も一緒に買った。

読んでいると、回転行列の話が出てきたり、後半は PC で図形描画もしてくれるキャラクターが出てきて、行列が図の移動や変形をする様を見せてくれてめちゃくちゃ良かった。
まさに 3D で transform、rotation をしているのはこういうことなんだよなと。

ベクトルの積の話とかもすっかり忘れていたので、次はベクトルの話も読もう。

ちょっと休憩することにした

ここ 2 年間ずっと契約させてもらっていた会社さんと昨日で契約終了し、今日からは次まで一旦休み。
病気で休職していた期間を除けば、前前職から前職、前職から今の契約とほとんど休みを挟まずに仕事を継続していたので、社会人というのものになってから初めて夏休みよりだいぶ長い休みを取ることになりそう。

せっかくなのでやりたいことを考えておきたい。

1. 体調・体力面の強化 💪

直近の健康診断で引っかかった部分の再検査等はもちろんだけど、正直 40 に近づくにずれて1日8時間週5日働くのがギリギリになってきた。
コロナ禍で体力低下みたいな話も耳にするが、自分は 8 年ぐらいリモートワークな上にそんなに運動もしないので、いよいよ体力がだめなんじゃないかと。。 しかも、病気の関係で食事もなんでも食べていいってわけでもないので、余計に食事で体力を補強ということもできない。

なので、まずは体力をつけたい。
リングフィットも継続してやっているけど、1 日 10 分ぐらいを週 3, 4 回やったぐらいでは自分には効果が薄い。もちろん多少効果は実感しているけど。 ジムでもなんでもいいので、まずは仕事を再開しても継続できる運動の習慣を作りつつ、体力アップをはかりたい🆙

2. 仕事環境 🏚️

ディスプレイや PC という面ではほぼ問題は無いのだけれど、この年齡になってきていよいよ古民家が辛い🥶
空調がきちんと効かない家というのは、それだけで夏の暑さや冬の寒さが体力や集中力を削っていくし、フラストレーションが貯まる。この夏はいよいよキツくて、隣町のコワーキングスペースまで車で片道40分かけて行くというのをやっていたが、それはそれで外付けキーボードやらをもろもろ持っていったり、ディスプレイ環境がどうしても下がってしまうので、空調とのトレードオフになった。加えて、往復の運転がさらになけなしの体力を奪う。(でも、車の中でいろいろpodcast とか英語の CD とか聴けるのはいい)

ここに関しては正直引っ越ししかないと思っている。娘も来年小学一年生なので、タイミングとしては最も適切な気もしている。
敷地面積の広い古民家に甘えていろいろと物を増やしてしまったので、その辺の整理も含めて進めていきたい。(事前準備として、もう読まない技術書を契約先だった会社の人に送らせてもらったら、ちょっと喜んでもらえてありがたかった 🤩)

3. 積ん読の解消

自信ないが、、、、ここでできないようならもうずっと本読めない気もするので。。

😅

他にもあるかなと思ったけど、あんまり思いつかなかった。
英語力を上げたいとか、ソフトウェアプログラマ以外のスキルが欲しいとか、いろいろあるが、まずは足場固めかなという気もする。

というわけで、ちょっと休憩!

「こども工務店」に参加してきた🏠

ホマレノイエ 夏休み子ども工務店【プチ上棟式体験会】 https://homarenoie.com/events/event/kids_koumuten210725/

娘の友達のお父さんが勤務されている会社のイベントにお誘いをもらって参加してきました。コロナ前にも一度違うイベントに誘ってもらった気がするのですが、その時は多分出張か何かで参加できず初参加。

母親もLIXIL で営業をしていたときは週末にイベントに駆り出されて余ったノベルティを持って帰ったりしていたなぁと思い出しました。(なんかトイレのミニチュアとか)

会場

この工務店さんの工場の中で行われました。結構暑い日だったので中も扇風機が何台も回る中で行われました。ただ天井も高いですし工場内も開け放たれていたので汗だらだらのような状況ではなく、割と快適だったと思います。

何より実際に利用される機械や材木が整然と並んでいるのが当然初めての光景だったのでなかなかに素敵でした。いいですよね、工場って。

最初は見学

職人さん達の自己紹介の後はまずは見学でした。窓枠の一部を実際に作成する過程を見せてくれるというものです。

それ程大きくは無い板の加工なのですが、最初はザラザラの板がツルツルになり整形されていき薄くなり直角になっていくのを見るのは多分、大人の方が楽しんでいたと思います。

何より削られた後の木の屑がすごく薄くて丈夫で、あー紙って木からできてるんだなみたいなあまり関係ない感想を持つほどでした。すごーーくいい香りがするんですよね。 f:id:dany1468:20210725192030p:plain

f:id:dany1468:20210725192116p:plain

続いて、現在は機械でやることがほとんどらしいのですが、この工務店さんでは技術継承系のプロジェクトも進めているらしく、実際にカンナで削るというのも見せてくれて、かつ全員に体験もさせてくれました。

f:id:dany1468:20210725192550j:plain f:id:dany1468:20210725193016j:plain

自分もやらせてもらったのですが、多分職人さんが力を入れてくれていてスルーっと引けたのですが、実際はめちゃパワーがいるんだろうなと。ただ、本当にツルッツルになるので気持ちがいいです。

休憩中に

休憩中には NC ルーターを使ってのちょっとしたデモを見せてくれました。

f:id:dany1468:20210725193501p:plain

詳細はわからないが営業担当さんの話を聞く限りでは、まだ現場で活用というよりは、今後活用するために導入しているらしい。サイズによっては棚や実際の建材の加工にも使われているらしいです。 3D プリンターで家を作るみたいな記事はたまに見かけるが、木材での建築も進歩しているんだなぁと。

最後は家を作るよ!

自分たちの後の第二部が鶏小屋を作るみたいになってたので、そっちと勘違いして、まさか小規模ながら目の前で家が立ち上がっていくのが観れるとは思いませんでした 😳

結構大きい建材を大工さん達と一緒に子供達が運んで行きます。大人は参加できないので重さは分からないですが絶対めっちゃ重いですよ。 f:id:dany1468:20210725200420p:plain そして、継ぎ目にはめ込んでいき、ゴム製の金槌を持って子供達が叩きまくっていきました。

この建材の加工は今回担当してくれた棟梁さんが1人で手作業で作ってくれたらしく、、、とんでもない準備です。。(後から聞きましたが、一応次回に使い回したりするみたいです。) f:id:dany1468:20210725200519p:plain あっという間に土台ができて、 f:id:dany1468:20210725200411p:plain 続いて柱?を立てていきます。これも事前に差し込むだけにはしてくれてるんですが、、うーーん、レゴとはわけが違うので見ててもこの巨大な工作に圧倒されてました。 f:id:dany1468:20210725200458p:plain 柱もサクサクと立て終わったら、周りに脚立が置かれていき、 f:id:dany1468:20210725200435p:plain 今度は大工さん達があっという間に上部を組んでいきます。 f:id:dany1468:20210725200353p:plain この時はわからなかったんですが、これ屋根まで作るんですよ。 f:id:dany1468:20210725200338p:plain そこまでいったら、また子供が呼ばれて、今後は柱の間に斜めにかけていきます。   一つ一つ名称も教えてくれてたんですが、帰ってきたら忘れてしまってました😅 f:id:dany1468:20210725200529p:plain 初めてのガチの電動工具を目にする娘。 f:id:dany1468:20210725200512p:plain この後はもう屋根回りなので子供は休憩。

すごいスピードで家が立ち上がっていきましたが、実際の現場でも立ち上げる部分は一日ぐらいでやってしまうそうです。一回一日中それを眺めてみたいですね。 f:id:dany1468:20210725200450p:plain 屋根の上でも安定した作業。なんの心配もなく見ていられます。 f:id:dany1468:20210725200404j:plain

あっという間に f:id:dany1468:20210725200525j:plain 屋根が組み上がっていきます。今回はビス留めでやったらしいですが、めちゃくちゃ早い。

予めポイントも目印がされてるにしろ、ほぼ迷いなく打ち込んでいくのが信じられない。 f:id:dany1468:20210725200346p:plain

家だ!!!!これ家にあったらめっちゃ遊べそうーーーーーー! f:id:dany1468:20210725200442p:plain

そしてミニ上棟式として、大工さんが屋根の上からお菓子をガンガン投げてくれました🍬🍭🍫 f:id:dany1468:20210725200427p:plain

最後はお土産に木製のコースター(しかも子供の名前が NC ルーターで刻印してくれている)までいただきました😆

家作りってすごい

ソフトウェア開発は、文脈によっては建築に例えられることがありますが、デザインパターンはさておき、現場はまるで違うなと感じました。

ソフトウェア開発がすごく無いとかそういう意味ではないのですが、扱っているものも違うし、正直出来上がるものが購入者にとってあまりにも大きいもので、それをこれだけの少人数で作り上げていくというのが、日頃誰の役に立っているのか分からないソフトウェアを書いているものとしては何か感慨深いものがありました。

職人さんたちは簡単そうに作り上げていくけれど、それこそソフトウェアと違って未熟なままだと大怪我や事故につながるし、日々の研鑽があってこそだろうなと感心します。

娘も楽しんでいたようでしたが、大人も興味をそそられる内容で、とても楽しいイベントでした。

イベントを主催してくださった誉建設さん、ありがとうございました!

あやうく一生懸命生きるところだった を読んだ

いつからだろうか、自分は自分にいくつか勝手にロールを設定してしまっている気がする。ただ、それはほとんどの場合ただの自分の勝手な理想像だと思う。

自分の中のソフトウェアプログラマ像であったり、夫像であったり、父親像であったり。最近だと、そこに 40代像が加わり、漠然とした大人みたいな像も加わっている気がする。

自分の人生はどのあたりだろうか?

あくまで仮定の話でしか無いが、自分は数年前の大病の影響もあり臓器を実質一つ失っている。その影響があるのかないのかはわからないが、もしかしたら自分の寿命は(なんの事故もなかったとして)ある種の平均には達しないかもしれない。そうなると、40代を目前に控えた自分の人生は半分どころか 2/3 を終えた状態かもしれない。もちろんそんなことは終わってみないと分からない。でも、そういう不安を感じることはあっていいと思っている。

ちょうど、この本の著者は執筆時点で今の自分と同じ年齢ではないかと思う。家族構成の違いや国籍の違いはあるが、共感できる部分が多い内容だった。

以降の内容は必ずしも書籍に一致するところではなく、あくまで自分が考えたこと。

自分は何を諦めることを認めるべきだろうか

書籍にもあるが、僕は自分が熱中することを探すタイプの人間だと思う。そして、それが見つけられずに悩むタイプでもある。そういうケースもあるということを教えてくれたことは一つ救いだなと思う。

一方で熱中できるかはわからないがやりたいことはたくさんある。たくさんあることを仕事前や週末に少しでもやりたいと思うが、家族もいるし本業もある中でそこに割ける時間や熱量はどうしても限られる。結局昼間の仕事の拘束時間が最大のネックだと気づくが、それはどうしようもない。
どれだけ計算しても、今の生活費を自分の所得なしで賄うことは不可能だ。そして自分の都合で生活レベルを下げることは、それはそれで難しい。(なんとなく世の世帯収入を担っている人には分かってもらえるのではないかと思う)

「休んでもいい」と家族に進言されたとしても、それは休みが終わったら今と同じだけの所得が戻ってくることが前提になっているし、この年齢になってブランクを作って所得を維持できると安易に考えられるほど僕は自分に期待できない。
家計を背負うロールを持つということは、まあそういうことだと思う。

「諦めること」と書いたが、自分がありたい姿を再設定することはいくらでもできる。そこを現実と擦り合わせていくことが大事なんだと思う。

どこまでいっても一人であることを認める

自分の大病が影響しているかどうかは分からないが(病気自体は手術で切除しており、今は転移がないかの観察期間だ)、年々健康診断の指摘項目や、体感する身体の不調も少なくなくなっている。このあたりは、一生付き合っていくしか無いと覚悟はしつつも、発覚するたびに心に重くのしかかってくる。

もちろん、致命的なものでなければ自分の状況であっても食生活や運動など改善点はいくらでもあるが、結局のところこれらは全て自分一人で受け止めなければいけない。具体的に「どうしたらいいい」かを考えるのは自分であり、そこも不安な中で手探りで進めなければいけない。

不安が大きくなると心配して欲しいみたいな期待がでてしまうが、そうではなく現状を受け入れることに注力した方がいいのだと思う。

過程を楽しめることを再確認したい

過程を楽しむ、いつからか忘れていた気がする。どちらかというと作りたいものは週末だけで作ってしまって完成形をすぐに見たい。それが、アイデアの形をすぐに形にできるというソフトウェアのいいところを利用した考えなのか、過程をどうでもいいと思っているからなのかは分からない。

ただ、「過程を楽しめる」というのは自分の一つの理想とする形だなと感じた。僕は、なんにせよ上から下まで自分で作りたいと思っている。一面としては、どれも深い理解がなく浅いままに作っているのだが、一面としてはどこもある程度理解できているということ。なので今は本当にいい時代で、だからやりたいことはたくさんでてくるのだと思う。

この辺は、うまく今後の自分の人生を考える上で理想形の修正に反映していきたいところ。

だめな自分を認めてからの自尊感

天井に気づいたのがいつだったか忘れたけれど、それでも技術領域を変えるたびに天井に気づくまでに時間がかかるので、そこまでは他人と比較するという癖は割とあるのだと思う。
今勉強している分野も、上はいくらでもいるのだけど、まだそこにどれぐらいで手が届くのか分からないので、軸が定まらないままいろいろ手を出してしまう感じはある。

最後に

正直、かなり心が沈んで胃がキリキリする状態でこの本を読んだ。ちょうど身体にまた一つ不調が検知され(一応だが初診の段階ではそこまでクリティカルではない)、それがどういう状態かも分からない状況を一人で抱え、どうしてこんな状態でも仕事に向かわなければいけないのか、どうやってこの状態で良い夫、良い父親でいればいいのかわからなかった。

本書を読んで何か解が得られたという訳ではない。自分がやるしかないことに変わりはない。でも以下一文は気が利いているなと思った。

深刻になりすぎる必要はない。 毎度毎度、真摯に向き合わなくてもいい。 答えを探す必要はもっとない。 ジョークを受け入れられず深刻に答えるような、ダサい生き方はしたくない。 いまだに将来に不安を抱える庶民暮らしだが、昔みたいに悲観的な反応はしなくなった。 人生は「答え」じゃなくて「リアクション」が重要な試験なのだから。 僕のリアクション、いい感じかな?

少々強引な引用なので、前後も読んで欲しいが人生はコントロール不能で思ったようにいかないことをもっと楽しまなくてはいけないと思ったのです。

自分の誕生日でした

せっかく週末に家族での誕生会まで計画していてくれたのに、ひさしぶりに体調を崩してしまい飾り付けとプレゼント贈呈だけしてもらうかたちになってしまった 😫

でも嬉しかったので記録だけ。

飾り付け

f:id:dany1468:20210525060900j:plain この辺の飾り付けは娘の誕生日のサプライズで妻が仕込んでくれてから定番化かつ巨大化してきていて、今回も壁を大きく使ったものになってました 😆😆😆 すぐにプレゼントを開けてしまったので、この写真には写ってないですが下のソファーにプレゼントが配置されていました。

ちなみにこの部屋は玄関前の部屋で日常的には次出す大物のゴミとか雑多なものが置かれているんですが、今回はその一つに娘が隠れていて、背後から驚かされるというサプライズもありました 😵 ちょっと前までは隠れてるのがバレバレなかわいい驚かしだったのが、最近はだいぶ高度化してきてるんですよね。

プレゼント

f:id:dany1468:20210525061524j:plain

去年からかな、妻が服をくれてからなんとなくイベント時にお互い普段着れるような服を贈り合うようになりました。以前はそういうのはしてなかったですし、たぶん妻からは、僕が服をほぼ買わずに昔のをずっと着回してるのを見かねてだったのかもですが、たぶん一緒にいる期間も長くなり、サイズもほぼ把握し、趣味も把握できてきたので、そういうことができるってのもあるのかなと。
といいつつ、自分からの場合はキレイに趣味にハマるのを探すのは無理だとわかってるんで、ちょっとだけ日頃とは趣向の異なるものを選ぶ傾向にあります。(ちょっと逃げですな。。)

去年プレゼントしてもらってからは、自分でも少し買い足したりしてるんですが、なんかセールにでもならないと買う気にならないので鈍足で、「中途ハンバな時期に着るシャツがねぇなぁ、、でもすぐ夏だしなぁ」と思っていたのを読んでいたようなチョイスで嬉しかった 😁

(そういえば、この前のセールで「服を着るならこんなふうに」をいくつか買ったんだった、、読まないと)

レゴ

レゴ!思い出してみれば、まだ東京に住んでいたころも一度レゴの F1 カーを誕生日に貰っていたのでした。
去年の緊急事態宣言あたりから、子供と家で遊べるもの、かつ自分でも楽しめるものを増やしたいなと思って、ちょこちょことレゴを買っていたんですが、基本は娘と遊ぶもので、そしてそれらは作っても破壊されて再生不可能になってしまうんですよね 😅 説明書見ればもう一度と思うかもしれませんが、、、、無理です、、もう混ざりまくっていてパーツ探すだけで心折れます。。

レゴもいつからか ADULT みたいなカテゴリができていて、まあ、そこにあるのがカッコいいんですよね 🤩🤩🤩
去年も、自分用に買ったものもあるんですが、「エルフのクラブハウス」みたいな、大人が組み立てるんだけど、子供との遊びに使えそうな感じをついチョイスしてしまってたんですが、今回もらった FIAT は以前もらった F1 カーと同じく、もうディスプレイするだけなので、これは作るのが楽しみです ⭐

カード

子供あるあるかもしれませんが、絵を描いて渡してくれるのですが、どこで覚えてくるのか、だいぶ字も書けるようになってきたので徐々にカードらしくなってきました。
というか、今回は絵がだいぶ進化していて、それにも驚かされました ✨

子供の字は面白いですよね、普通に罫線のあるノートに書くときは、ちゃんと左から右に書くんですが、こうやってフリーフォーマットになると、とんでもなく意外なところから書き始めてきて、今回なんて下から読むようになってるんですよね。
そして、こういう書き方をすると鏡文字が多発するのもまた可愛いです 😇

今年も一年

子供には本当にいい刺激をもらっていて、最近はリップスティックというスケボーみたいなんですが、少し違って子供でもできるようなやつに我々夫婦も加わって練習したりしてます。
子育て本もたまに読んだりするんですが、「娘のどういうところを伸ばせるのかな」とか考えるんですが、今はとにかくなんでも一緒に楽しんでやってあげたいという感じです。子供と遊ぶのが上手いとたまに言っていただくことがありますが、たぶん身体はガタが来てても、一緒に走り回りたいし、一緒にゲームしたいし、大人ではわからないくだらないことで笑っていたい、子供でいたい人間なんだと思います。(大抵それやると、翌日筋肉痛で動けなくなるんですけど。。)

Backlog で PlantUML をプレビューする環境

今携わっているプロジェクトは、プロジェクト管理もコード管理も Backlog を利用しています。

Online Project Management Software for Developers | Backlog

当然ドキュメントも Backlog の Wiki に書くんですが、微妙にかゆいところに手が届かない。日常的には ScrapboxKibela を使ってるんですが、いい感じのリンク機能もなければ、素敵な描画機能も無いので、苦心しながら使っている状態です。

未だに backlog 記法の wiki が大半を占めていて、backlog 記法は近年アップデートも感じられないし、syntax highlight も微妙だし、、、辛い。

PlantUML をプレビューしたい

Backlog の公式から Backlog Power Ups が出ていて、そこに PlanUML のプレビュー機能もあります。

ただ、コードを見てもらうとわかりますが、PlanUML の画像生成は公式のサーバーに投げることで実現しています。

backlog-power-ups/plantuml.js at master · nulab/backlog-power-ups · GitHub

    const convertToImage = (elem) => {
        const $elem = $(elem);
        const text = $elem.text();
        const data = compress(text);
        const url = `https://www.plantuml.com/plantuml/png/${data}`;
        $elem.replaceWith($("<img>").attr("src", url));
    }

当然といえば当然ですが、内部の Wiki に書く情報なので、外部のサーバーにぶん投げるとなると、、、いろいろあります。

PlantUML Server を立てた

GitHub - plantuml/plantuml-server: PlantUML Online Server

公式でサーバーを公開してくれているので、これを立ててみました。

落ちる

原因までわかっていないのですが、ローカルの VS Code Plugin で書いていた UML を Backlog Wiki に貼り付けると、サーバーが落ちるという減少が起こりました。

当然、ローカルも同じ docker image を参照しているので、差は無いはずです。なので、おそらくサーバーに送りつける方法が違っているのだと思います。

JQuery Integration

上記の jQuery Integration あたりも見てみたんですが、まあ backlog-power-ups もほぼ同じことをやっているんですよね。

plantuml-service にした

GitHub - bitjourney/plantuml-service: High-performance HTTP service for PlantUML, used in Kibela

自分が Kibela を使っていることもあり、以前にビットジャーニー社が PlantUML のサーバーを公開していたなと思い出し、試しにこっちに変えてみました。

問題が解消し、いい感じに利用できるようになっています。

VS Code Plugin の方も見てみようかな

と思いつつ、当面は plantuml-service で運用しようと思っている次第です。

使ってる Dockerfile

GitHub - dany1468/plantuml-service-docker

.NET Framework のプロジェクトで EF Core の Scaffold を使いテストデータを投入する

昨年は .NET Core のプロジェクトだったので、特に苦労なく EF Core の Scaffold で既存の DB から Entity を生成し、それでテストデータを作成するというのができていました。(.NET Core で作成してはいるものの、既存の .NET Framework 主軸のプロダクトの、サブ的位置づけだったので、メインの DB 操作に EF Core をがっつり組ませることはできないので、テストで利用していた)

最近になり、.NET Framework のプロジェクトを見ており、「なにはなくともテストをバリバリ書ける環境を作るぞ!」ということで同じことを .NET Framework でもやってみました。

EF Core と .NET Framework

Supported .NET implementations - EF Core | Microsoft Docs

上記サイトの通り、.NET Framework であっても 3.1 までなら EF Core を利用できます。

サンプル

GitHub - dany1468/NetFrameworkEfCoreTest

SDK スタイルでプロジェクトを作っておくと、dotnet cli との親和性もいいのでオススメです。(私が Rider 使いなので、VS でこの辺どういう感じかわかりませんが)

SDK スタイル プロジェクトでのターゲット フレームワーク - .NET | Microsoft Docs

PS > dotnet new classlib --target-framework-override net48 -o TestData

後は、EntityFramework と Scaffold 用のライブラリを入れます。上述の通り、3.1 系までなので、3.1.14 が現時点では利用できる一番新しいバージョンです。

PS > dotnet add package Microsoft.EntityFrameworkCore.Design -v 3.1.14
PS > dotnet add package Microsoft.EntityFrameworkCore.SqlServer -v 3.1.14

続いて、いろいろコマンドラインで済ませたいので dotnet tools で dotnet-ef を入れます。もちろん local install で。

PS > dotnet new tool-manifest
PS > dotnet tool install dotnet-ef
PS > dotnet ef --version
Entity Framework Core .NET Command-line Tools
5.0.5

dotnet tools に関しては、私は特に気にせず新しいのを入れてます。あくまでビルドは生成に利用するプロジェクトの Framework version を見るのでツールの方は関係ないようです。

後は対象の DB に対して以下を実行するだけです。(以下は docker で動いている DB に向けている例です。{{}} の中は実際には埋めてください。)

PS > dotnet ef dbcontext scaffold \
  --context MainDbContext \
  --context-dir Data/Entities \
  --output-dir Data/Entities \
  -f "Server=host.docker.internal,14331;Database={{.DATABASE}};User Id={{.USER}};Password={{.PASS}};" \
  Microsoft.EntityFrameworkCore.SqlServer

サンプルプロジェクトではテーブルを個別に指定するようにしていますが、上記のコマンドであれば、全テーブルを一気に作成できます。

EF Core の 5 からは --no-onconfiguring があるので、生成される DbContextOnConfiguring に余計な warning が埋め込まれなくていいんですが、まあこれは仕方ない。