Posts for: #Drinking

久しぶりの異文化懇親会

22時頃には戻ってきたそれから準備したらよいところを、だらだらしてうたた寝して気付いたら2時になっていた。もうこのまま寝て朝起きてから準備しようと3時50分にアラーム設定して起きた。それからお風呂入ってストレッチして荷造りして5時18分に三ノ宮を出発した。

実家

6時21分に実家へ着いた。休憩せずに一気に帰ると約1時間ぐらい。先月ジモティーで譲ってもらっていた机とバランスチェアを実家へ持って帰った。朝ご飯を食べてからバランスチェアを組み立てる。ちょうど机と椅子がよい感じにリモートワーク可能な環境になった。

9時半頃まで実家でのんびり過ごして、言うても暇なので少し早めに香川県へ向けて出発した。

オープンセミナー

オープンセミナーとは、中四国地域で開催されている勉強会らしい。コロナ禍前はもっとたくさん開催されていたそうだが、いまは香川、広島、岡山といった地域で復活しているらしい。オープンセミナー2023@香川 に参加した。高松市の高松港の真横にある eーとぴあ・かがわ という行政っぽいコミュニティ施設のイベントスペースを借りて開催された。実家から10分休憩を1度取った上で約1時間30分で着いた。実家から高松市まで1時間半とみておくとよさそう。

てらださん:Pythonの現状からデータ分析やLLM活用への発展

てらださんの応援も兼ねて参加してみた。基調講演のような位置づけ。参加者の python 習熟度のレベルをみながら話す内容をあわせていた。

  1. あまり知らない
  2. ちょっと知っている
  3. がっつり使っている

最初は python の用途や得意・不得意といった、入門的な話しから始めつつ、徐々に最近の話題へと展開していた。

python の用途

  • システム系
  • web 系
  • データ分析や科学技術計算系
  • iot 系
  • 3d グラフィックス

苦手なこと

  • web フロントエンド
  • デスクトップ gui アプリ開発
  • 速度重視の低レイヤーの処理
  • 趙大規模なミッションクリティカルな分野の処理

python は年1リリース & 5年サポートになっている。

いまホットな話題として llm (large language model) がある。 私は chatgpt 以外のものはまったくわからないが、 oss で無料使えるツールや学習モデルがどんどん公開されているらしい。日本語に特化したものも出てきているみたい。

llm のツールチェーンを使って、任意のドキュメントに chatgpt のような質問で検索できるシステムの構築方法を紹介していた。 私が知らなかった技術として、インデクシングすると全文検索インデックスを作成する代わりにベクトル化をしてベクトル DB に保存する。 もっとも煩雑なところがドキュメントのベクトル化してベクトル DB に格納し、検索するときもクエリをベクトル化して、ベクトルの近似計算を行って検索結果を取得できる。 検索結果から回答の文章を生成するところを openai の api を使っているとのこと。有償なのでここだけお金がかかる。自前でやるには強力な gpu をもつマシンがないと処理が追いつかないといった話しだった気がする。 ai の学習モデルをホスティングするサービスとして Hugging Face というものが有名らしい。 github ではなく、なにかしらモデルを管理するときに都合のよいことがあるみたい。 web ui には streamlit を使っていた。私はまったく使ったことはないが、fin-py で紹介しているのを何度かみた感じでよいイメージをもっている。

NPO法人NEMTUS 松岡さん、後藤さん 「ブロックチェーン概要説明 & Symbolブロックチェーンの特徴・活用事例紹介」

NEM を広めるための NPO 法人らしい。ブロックチェーンの技術説明のスライドがめちゃくちゃわかりやすく作られていた。2人で発表していて、前半は技術的な解説、後半は事例紹介となっていた。事例紹介であちこちで使われているのはわかるけれど、その大半はブロックチェーンを使わなくてもできるものばかりだった。ブロックチェーンの特性が活きるアプリケーションはグローバルな仮想通貨のような用途以外にみつかっていないという気がする。既存の web 技術でもできるものをブロックチェーンに置き換えても、効率の悪さ (コスト高) をどうやってカバーするのかを説明しないのは不誠実なようにも感じられた。せめてスマートコントラクトを絡めて話さないと伝わらないんじゃないかと思う。

製造業 dx を意識したときの、iot 用 db 設計の注意点

会社名は公けに書かれていないから伏せておく。名前だけ聞くと、創業400年という、財閥系の JTC の会社の情シス部門のようなお仕事をされていた。工場の運用改善のために iot と社内システムをすべて内製/自前で構築しているという。工場から生データを収集し、それをデータベースに正規化して、分析して日々の業務の運用改善にあてるという、ストーリーは当たり前のもの。工場の売上は数千億円といった規模になるという。例えば4-5人のチームをアサインすると2000万円ほどの経費がかかるが、1000億円の0.1%を改善すれば1億円になるのでペイするという。そういった考え方で工場の運用改善をしているうちに、いまのチームは30人といった規模になったという。

事業会社で自分たちで技術を勉強してがんばっているようにみえる。発表のところどころの細かいところの認識が誤っていて、web のシニアエンジニアかアーキテクトがいれば、もっと効率のよいシステムを運用できるのになぁと思いながら聞いていた。あとで懇親会で詳しく聞いてみると、このチームは凄くてハードウェアまでカスタマイズできるという。基盤や回路まで自分たちで設計して作ったりもする。またメーカー品が自分たちの用途の機能を提供していなかったら、サポートを無視して勝手にメーカー品のハードウェアをカスタマイズして自分たちの用途にあったデータを取得できるようにカスタマイズしてしまうといったことも話していた。

ハードウェアの基盤開発から組み込みのプログラミング、データベース、web と1つのチームですべてやっているという。なかなかこれだけの技術スタックを1チームですべて一気通貫でやっているところはないと思う。web 技術のところではいくつかツッコミ所はあったんだけど、これだけの広い分野をみていると、それは些事だなとちょっと反省した。私が自分の得意な分野だけをみていい気になっていたような気持ちになって反省した。

懇親会で話していて、iot のシステムは基本的に安くて儲からないと話していて、しかし、ここに web システムを付けるだけで付加価値として売上の金額が上がるという。それは多くの iot メーカーは web に疎いため web システムを作れないらしい。ハードウェアと web の両方の技術に精通している会社/組織というのは意外に少ないらしく、iot + web が儲かるモデルとして話されていた。たしかに私は web に精通しているが iot はまったく分からないので納得感があった。

LT

これが私のお仕事の部分だけど、会社としてイベントに登壇してきた。マーケティング活動の1つやね。

懇親会

17時から懇親会で21時過ぎまで飲んでいた。私は車で参加していたのでソフトドリンク。知らないイベントの懇親会で、あまりよく知らない人たちと技術の話題でわいわい盛り上がるのは久しぶりで楽しかった。昔の it 勉強会はこんな感じだったなとコロナ禍の終わりも実感した。

懇親会の参加者には組み込みやハードウェアに詳しい方が何人もいて、私のような web 系の方が少数派でちょっといつもとは違ったメンバーで聞く話しもとても新鮮味があった。iot やハードウェアの話しにさっぱり付いていけなかった。web 系の勉強会やイベントにしか行かないというのも、一種のエコーチェンバーだなと実感した。

あと飲み

21時過ぎから23時まで、てらださんと飲んでいた。てらださんは酔っ払ってどんどん呑むんだけど、酔い潰れるみたいな状態にはならなくて、余裕があるのかないのかよく分からないけど、呑むペースが速いなと感心していた。コミュニティの話し、教育の話し、経営の話し、政治の話し、わりといろんな話しをして時間でお開きにした。

車中泊

その後、車を移動して、24時間空いているサウナで泊まろうと近くまで行ったものの、あまり外観の雰囲気がよくなくて、そのまま駐車場に車を泊めて車中泊にした。1時頃だったと思う。駐車場料金がホテル代のようなものになった。あとで調べたらアイドリングしたまま車中泊するのは、付近に家があると騒音がうるさいらしくマナー違反だという。歓楽街だったので周りは若者が遊んでいて、もともとうるさい場所だったと思うのでそれほど迷惑にはならなかったと思いたい。

全身疲労と気分転換

23時に寝て何度か起きて6時に起きた。疲労でバテバテ。

ストレッチ

先週もあまりよい状態ではなかったけれど、今日はことさら悪かった。疲労は着実に蓄積するんやと実感する。左足は筋肉痛やなって感じだけど、右足はそのうち足が動かなくなるんじゃないかとすら思えた。ふくらはぎは左右ともにパンパンだし、右の股関節の部位はピキッて感じで痛みが出たりするから根本的に悪そう。足全体が硬かったように思える。腰もいくつか張りがあって、特定のツボはかなり痛くてなにかが悪いのだと思えた。臀部のツボも一部だけすごく効いて痛かった。肩周りも凝りや張りはいつもより大きかったように思う。今日の開脚幅は開始前154cmで、ストレッチ後156cmだった。久しぶりにこんな調子の悪いのも珍しいなと思えた。あと2週間ぐらいがお仕事のピークだと思うのでもう少しだけもてばよい。

請求書のテンプレート作り

10月から施行されるインボイス対応の請求書として 10%, 8% の消費税の税率を明記して別々に小計を記載しなければならない。そろそろ個々の企業でも運用が始まるところ。うちの会社が扱う商品は10%のみだが、請求書のフォーマットそのものを変更しないといけない。ちょうど freee 側でもその対応で6-7月に新しい帳票管理の機能をリリースしていた。8月から順次切り替えとなっていた。私は開発にいっぱいいっぱいだったからベータ版は見送って正式リリース後に対応することにしていた。それが今日だ。今月分の請求書はインボイス対応の新しいフォーマットで作る。

その移行をしていて、この機会に会社のロゴや角印も請求書に載せることにした。はらさんに角印をどうやってデータ化したらよいかを尋ねたら、普通に白い紙に押印してスキャナで取り込んで、白色を透過処理して使っているとのこと。

オフィスの複合機で白い紙で押印した角印をスキャンする。pdf でダウンロードできる。pdftoppm で pdf を png に変換する。

$ pdftoppm -png corporate-seal-square.pdf corporate-seal-square
$ ls corporate-seal-square-*
corporate-seal-square-1.png  corporate-seal-square-2.png

あとは白い背景を透過処理するだけ。pinta, incscape とやってみたけど、どうもうまくできない。最終的に次の記事を参考にしながら gimp を使って「ファジー選択」で透過処理したいところをちょこちょこ選択しながら変換していくのがもっとも私にとって簡単だった。

請求書のテンプレートに対して角印を読み込んで、社名に重なるように配置するのが慣習らしい。なぜ社名に角印を重ねるかというと偽造や改ざんを防止するという意図になる。電子データの請求書に角印を載せる意味はないけれど、紙の慣習にあわせるという意図なら重ねた方がよいだろうと考えて社名に角印を重なるようにして作成した。請求書に角印とロゴが入って見栄えもよくなった。

立ち呑み屋 本番

先週行った立ち呑み屋 さんにコミュニティのメンバーと一緒に行ってきた。ずっと休日も開発してきて疲労困憊ないので気分転換しようという思いつき。

19時開始でたまたまオフィスを出たときに雷が鳴り始めて、私がお店に付いたすぐ後に豪雨になった。今日はついている。豪雨は1-2時間で止んでいたと思う。その後、さなださんとすみよしさんと合流して飲んでた。わいわい雑談できて楽しかった。いくつか始めて注文してみた料理もおいしかった。このお店の料理は何を頼んでもおいしい気がする。お酒も料理もマスターが1人で運営しているせいか、非常に良心的な価格設定になっている。もう1.5倍ぐらい値上げしたらいいんじゃないかと思う。それでも安い方だけど。立ち呑みだとしんどいので22時前にはお開きになった。長居せずに帰りやすいのも立ち呑みのよいところだと思う。

開発もしながら雑多な土曜日

1時に寝て何度か起きて7時に起きた。晩ご飯食べてオフィスに戻ったものの、知人と0時過ぎまでチャットしていて開発できなかった。たまにはそういうこともあるか。

ストレッチ

左右両方のふくらはぎの筋の張りがやばくてめっちゃ効いた。トレーナーさん曰く、この筋が効くのはふくらはぎを酷使しているか、まったく使っていないかのどちらかだと言う。私の場合は後者だろう。椅子に座っている時間が長いとふくらはぎの筋が張る。今日の開脚幅は開始前156cmで、ストレッチ後160cmだった。数値の良さは維持できている。腰もひどくはないけど、やや張りを感じるようにはなってきた。トレーナーさんも全体的に硬い傾向があるとコメントしていたので疲労が溜まっているのはそうだと思う。

散髪

ストレッチを終えてから散髪へ行ってきた。短くきると頭が軽いし、お風呂で頭を洗うのも楽になっていい。もう今後はずっと短髪でいこうと思う。散髪していたらなぜかすごく眠気があって、終えてからお昼ご飯を食べて一旦帰って2時間ほど寝てた。なんか睡魔にとりつかれた。

cli コマンドの開発

金曜日の夜にやるつもりのお仕事ができなかったので夕方から着手した。夕方の方がオフィスも涼しくて捗る。3時間ほどかけて cli コマンドを一通りつくって README に使い方を書いて issue をクローズした。難しい開発ではないけれど、やり切って満足。

立ち呑み屋

たまたま食べログをみていて見つけた立ち呑み屋さんがよさそうだった。コミュニティのメンバーを誘って来週末に行くことにしているが、誘った手前、下見をしておこうと思って21時過ぎから1人で行ってみた。カウンターしかない小さいバーで詰めても10人入れないようなスペース。5人先客がいてマスターが1人でやりくりしている。その後も3グループぐらい入れ替わりにお客さんがやってきて常連さんの多いお店みたい。私はぼっちで行ったんだけど、徐々に話しかけてもらって、お酒を飲んでいるから2時間したら周りの人たちと話していた。そういう雰囲気のお店。立ち呑みなのに24時ぐらいまでいた。楽しかった。ふらっと1人で行って適当に雑談できるお店をみつけた。また行こうと思う。

お盆の最終日

1時に寝て何度か起きて8時半に起きた。数ヶ月に1回ぐらいの頻度でしかないことだけど寝坊した。起きたら8時半であれ?と思った。起きてから家でそのぐらいの時間までだらだらするのはちょくちょくあることだけど、気付かず寝てたのは久しぶりだった。

台風が過ぎた後の焼き鳥屋さん

今朝に寝坊した理由はこれだと思うけれど、昨日の22時から晩ご飯を求めて仲のよい焼き鳥屋さんへ行ってきた。台風で9割以上のお店が閉めている中、唯一と言っていいぐらいの珍しさで開いてた。そのお店 (グループ) のオーナーは雨が降ろうが槍が降ろうが営業日は開けるという方針らしい。マスターも夕方から台風は過ぎて雨も弱まっていたので普通に営業していたらしい。しかし、お客さんは数グループと少なかったと仰っていた。私が22時に行って誰もいなくて24時までいたけれど、誰も来なかった。通常なら22時だと他に2-3グループはいて、その後も最低でも1グループは飲みにやってくるぐらいの人気のある焼き鳥屋さんだ。そもそも駅から人が出てこないし、道にも人が歩いていない。物流も止まっていたのでいくつか仕入れが出来なくて提供できないメニューもあった。

いつもなら2杯飲んで帰るところを、こんな日だから売上に貢献しようと思って3杯飲んで寝坊した気がする。

mongodb 7.0.0 リリース

ちょうど qa テスト前で mongodb のメジャーバージョンがリリースされそうなので毎週のようにチェックしていた。rc10 までいって ga されたみたい。

まだ docker hub には正式なリリースバージョンのコンテナイメージは公開されていない。しかし、rc10 が ga になったはずなのでひとまずはそれを使って開発環境とテスト環境を 7.0.0 に移行した。うちの用途だと ttl インデックスを作り直す以外には移行作業は必要なかった。自動テストはそのまま成功したし、テスト環境のデータもそのまま移行してパッとみた感じでは正常に動いている。来週から qa テストも始まるのでぎりぎり間に合ったというところ。MongoDB Software Lifecycle Schedules によると、だいたい mongodb は3年サポートされる。メジャーバージョンが年に1回リリースされているようにみえるので、いまメジャーバージョンを上げておくと1年余裕をもって運用できる。

テックブログの執筆開始

お昼からテックブログの執筆に着手した。あまり大きな意味はないのだけど、お手伝い先のテックブログの記事を早く3つ書きたかった。別に三部作というわけでもない。けれど、テックブログ書いてますよと他者へ伝えるときに最低3つぐらい記事を書いていないと、全然書いてないやんと私なら思ってしまう。3つぐらいあれば、この人はこういう技術に関心があるんだ、こんな業務をやっているんだ、内容もしっかり書けているねとか、そういう判断を下すことができる最低限のコンテンツ量と言えるのではないだろうか。私にとってはそれが3つの記事と言える。ちょっと前に公開した podcast でテックブログの記事を読んでくださいと話したのでリスナーが聞く前に増やしておきたい。ちょうどプロダクトのプレスリリースも出たのでその宣伝も兼ねられるし、勉強会のネタにもなるし、私の義務感を軽減してストレス解消にもなるし、ここは踏ん張って今日・明日で下書きを書き終えたい。

次開発と打ち上げ

次開発と打ち上げ

能のサイトを眺めつつ 世界を変えた“愚か者”フラーとジョブズ をみているうちに寝落ちした。0時過ぎに寝て何度か起きて8時過ぎに起きた。休日以外に8時まわるまで寝ていたという記憶が直近数ヶ月にはないので久しぶりに寝坊した。起きたら8時10数分でそんなことあるはずないとか思ってしまって脳が現実を受け入れられなくて起きた時間を認識できなかった。明らかに8時10数分なんだけど、時計が壊れているなとか思ってしまった。

開発課題の打ち合わせ

大きく時間を使って次開発の打ち合わせ。事前にいくつか開発課題を洗い出せているが、その優先順位付けをしていかないといけない。開発メンバー + 別チームのコンサルタントにも入ってもらって各々の意見を出し合うといった会議をした。私が議題の資料を予め作っておいた。その進行に応じて議論や意見が盛り上がったのでうまくいってよかったと思う。 大項目でまとまった機能をやるよりも、個々の機能単位に優先順位付けした方がよいだろうという話しになって小さい単位で担当者を割り当てて開発を進めていくことになる。いずれはすべてやるが、開発の順番を決めていくのは意外と難しい。

話し終えてからメモをまとめ直しているうちに私自身が要件を詳細に把握できていない要件があることもわかってきた。空中戦だとわからないままふわっと進んでしまうので、文字に落とし込んで整理した上で、本当に必要なものをさらに深堀りして議論しないといけないことに気付いた。

少ない人数で会議をやる利点の1つとして、みんなの意見を順番に聞いていく余裕をもてることがあげられる。「誰一人取り残されない」とどこかの省庁がミッションにあげているように、うちのチームも課題管理を駆使して、それぞれのメンバーができることややりたいことでチームに貢献するような開発にしていきたい。もう半年やって課題管理に慣れてきているので、次開発は前回のようなやり方を教えるところからスタートにはならないはずだと思う。

打ち上げ

4月末にリリースを終えたので区切りとして打ち上げしてきた。うちのチームメンバーと偉い人の5人で行くのだと思っていたら直前に社内のメンバーにたくさん声を掛けたそうで10数人での飲み会になって送別会や部署のキックオフみたいな飲み会になった。賑やかでよかった。個人だとあまり行かないようなちょっとお値段のするコースでよいものを食べられておいしかった。日本酒もいろいろ飲んだ。神戸の酒どころに住んでいるので日本酒に関心をもつようになってきた。

18-20時と打ち上げやって、21時に新幹線を予約していたのでそのまま帰ってきた。このスケジュールの段取りもちょうどよかった。お酒を飲んで新幹線に乗ると思いの外眠れなくてそこだけ疲れた。

oss な開発は chatgpt が猛威を振るう予感

2時に寝て6時半に起きた。開発の追い込みが佳境に入ってきて集中力が増してきた。

chatgpt と一緒にデバッグ

openldap サーバーの拡張の仕組みに Overlays がある。c 言語でカスタム overlay を実装することで openldap サーバーに任意のフック処理を実装できる。いまやっていることはパスワードの追加や更新をフックしてそのパスワードを id 連携するためのモジュールを開発している。というか、開発済みだと聞いていたモジュールが意図したように動かないのでデバッグしている。例えば ppolicy という overlay を使って次のように設定すると、平文で送ったパスワードをディレクトリサービスの db へ格納する前に平文からパスワードをハッシュ化してくれる。この変換はパスワード変更を overlay でフックして実装されている。

overlay ppolicy
ppolicy_hash_cleartext on

overlay は slapd.conf に設定した順番に実行されるようで、それぞれの overlay に依存関係がある場合は実際の処理にも影響がある。そんな openldap サーバーの拡張モジュールの開発を引き継ぐことになったが、私がまったく openldap サーバーのことをわかっていないので chatgpt を使って理解しながらデバッグしている。これがそれなりにうまくいっていて調査が捗った。但し、chatgpt が教えてくれたことなので完全に正しいかどうかの保証がない。振る舞いで検証できるものはともかく、そうじゃないものは最後に有識者に正しいかどうかを確認する必要がある。

例えば、次のような ldif エントリーをサンプルとして、パスワードは userPassword という属性で扱う。ここで userPassword だけコロンが2重 (::) になっていることがわかる。これは属性の値が base64 でエンコーディングされていることを意味している。こういった2重コロンのような短いキーワードを検索で調べるのは難しい。chatgpt ならピンポイントに答えてくれる。

dn: uid=jdoe,ou=users,dc=example,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: jdoe
cn: John Doe
givenName: John
sn: Doe
mail: jdoe@example.com
userPassword:: e1NTSEF9bm9ZMU5kdzN3WUdSbFhpdDJUaTY5UW9SeXpXaklEeXc=

openldap は oss だし、ドキュメントもインターネット上にあるので構造体の定義や c 言語のサンプルコードも書いてくれる。それらが完全に正しいか、私には判断できないが、openldap のソースコードで調査するところの当たりをつけるには十分な情報を返してくれる。カスタム overlay を開発するときの主要なエントリーポイントと ldap 操作のタグ名は次になる。

  • bi_op_bind: バインド(認証)操作に対応するエントリーポイント、LDAP_REQ_BIND
  • bi_op_search: 検索操作に対応するエントリーポイント、LDAP_REQ_SEARCH
  • bi_op_compare: 比較操作に対応するエントリーポイント、LDAP_REQ_COMPARE
  • bi_op_modify: 修正(属性の追加、削除、変更)操作に対応するエントリーポイント、LDAP_REQ_MODIFY
  • bi_op_modrdn: エントリ名の変更 (MODIFY RDN) 操作に対応するエントリーポイント、LDAP_REQ_MODRDN
  • bi_op_add: エントリの追加操作に対応するエントリーポイント、LDAP_REQ_ADD
  • bi_op_delete: エントリの削除操作に対応するエントリーポイント、LDAP_REQ_DELETE
  • bi_op_abandon: 中止操作に対応するエントリーポイント、LDAP_REQ_ABANDON
  • bi_op_extended: 拡張操作に対応するエントリーポイント、LDAP_REQ_EXTENDED

例えば、LDAP_REQ_ADD は ldap.h で次のように定義されている。

#define LDAP_REQ_ADD        ((ber_tag_t) 0x68U) /* application + constructed */

これを gdb でデバッグしてタグを確認するときは次のように Operation 構造体内の o_tag をチェックすればよい。gdb で16進数表示するときは /x を指定する。

(gdb) print /x op->o_tag
$8 = 0x68

ppolicy よりも前にカスタム overlay を設定すれば平文のパスワードにアクセスできそうにみえるのだけど、gdb でデバッグしているとハッシュ化済みのパスワードになっていた。

あと稼働している openldap サーバーに gdb で attach してデバッグする方法も chatgpt に聞きながら行った。やりたい操作に対して gdb のコマンドを教えてもらってすぐに検証してフィードバックからさらに質問できるのでインタラクティブな repl のような環境と chatgpt は相性がよいように思えた。gdb のコマンドを覚えておく必要も、ググる必要もないことに気付いた。

近況報告

元同僚と 約1年ぶりの近況報告 の雑談会をしてきた。これで3回目かな。毎年の恒例行事のようになってきた。兵庫県の住みたい街ランキングでいつも上位にある 西宮市 でカレーを食べて、バーで飲んできた。三ノ宮から西宮は快速で15分程度の距離。すぐ行ける場所なんだが、とくに行く機会がなかったので神戸に引っ越してきて5年以上経つのに電車で行ったのは今回が初めてになる。いつも通り近況を聞きながら、みんな私と同じぐらいの世代なので今後のキャリアの方向性などを話していた。

私は起業して税金やその仕組みに関心をもつようになり、起業する前より少し詳しくなった。知人から節税相談を受けることもある。税金の基本的な考え方として、1つの大きな収入に対して節税することはできない。自由に使えるお金がほしかったら基本的に節税できない。税金をたくさん払って貯金するしかない。一方で個人と会社に資産を分割したり、共済や基金を活用することで手取りの収入は減るが、支払う税金は少なくなって中長期でみると資産が増える。例えば、共済や基金に積み立てたお金は原則としては退職所得で戻ってくるので、ずっと優遇された 退職所得の所得税 により、最終的に支払う税金が少なくなるからである。これが税金を支払う基本的な考え方。自分の手元にお金を残した上で税金を払いたくないが、どうすればよいか?とよく聞かれるが、そんなことはできないというのが模範回答になる。元同僚も私もそうなのだが、もはや自分の生活にお金をあまり必要としていない。私が節税の仕組みを調べたり実践したりするのは、税金の仕組みを学ぶために過ぎない。ただ知識として学ぶよりも、実際に実践して運用してみる方が学びになる。

以前の 出張もくもく会 の後で懇親会のときにそのうち資本主義は新しい制度にとって変わられるのではないかという話題があった。それは行き過ぎた資本主義の弊害と、資本主義である限り40時間/週の労働時間から抜け出すには資本家になるしかなくて、人類はすでにこれだけ技術があるのだからもっと多くの人が今よりも働かずに食べていけるのではないかと多くの人が考えている。私の場合も、実質は自分のやりたいことしかやってなくて、自分のために働きながらも、老後のために一応はお金をもらっておくみたいな働き方になっている。この考え方は資本主義の次の制度へ移行するときに活きてくればいいなと思う。

zeromq の多言語対応がすごい

1時に寝て7時に起きた。昨晩は食べ過ぎて気分が悪かった。

エレベーター点検の間違い

朝オフィスの入っているビルへ着くと、エレベーターに張り紙があって使えないことが書いてある。問題があれば、エレベーターの保守会社へ連絡してくださいとある。その張り紙をみて、エレベーターが故障したのかな?と勘違いした。その横でオフィスの利用者が10人ほど復旧を待っていた。仕方ないから一旦、家に戻って午前中は家からお仕事することにした。これはこれで docker で開発環境を作っていると、普段使っていないマシンでもすぐに開発環境を構築できることのメリットを実感する機会となった。11時頃に再訪したら普通にエレベーターが動いていて、あれ!?と思って、そのときに初めてビルの掲示板を見に行ったら、7:30 - 8:30 の時間帯でエレベーター点検だと書いてあった。私は8時前後に出社するのでこの時間帯は厳しい。エレベーターが動いていなかったらまず点検を疑うことにするのを学んだ。

zeromq の調査

昨日から zeromq の調査をしていた。ネットワークの通信におけるプラクティスとも言える、ØMQ - The Guide というごっついガイドもあって学びが多い。少し古いバージョンなら翻訳版も ØMQガイドブック(日本語版) にある。英語が苦手な方はまずこれを読んで概要を掴むのもよいかもしれない。ちなみにこの翻訳者の方といま一緒に働いていて設計のレビューをお願いして教えていただいている。感謝。

zeromq を使うときの注意点の1つとして、バックグラウンドで i/o スレッドが動いていて zmq_send() は実際に通信しているのではなく、バックグラウンドの i/o スレッドにメッセージを渡すだけになる。そのため、i/o スレッドが実際にノード間の通信を非同期で行う。これは接続先の相手がダウンしていても送信バッファにメッセージを溜めておいて再送してくれるので都合がよい。ちなみに送信バッファのサイズは zmq_setsockopt()ZMQ_SNDHWM を指定して調整できる。ソケットが常時接続されていれば、メッセージの順序は維持されるらしいが、ソケットを接続/切断するような使い方をすると zmq_send() が呼ばれたメッセージの順序は保証されない。一般の queue をイメージしてメッセージの順序が保証されることを前提に開発すると落とし穴があるので注意しておく必要がある。そういう so や issue も登録されているのを確認した。

近況報告の雑談

約1年ぶりにやすだ先生と大阪でオフライン飲み会をした。毎年2-3月頃に近況報告して経営のアドバイスなどをいただいたりしている。今回で3回目。今年は私がいま実家のいろいろとリファクタリングなどでいっぱいっぱいなのでとくに近況報告の資料を作る余裕がなくて、普通に飲み会しながらその場での近況報告となった。昨今の web 開発の当たり前として ci/cd や k8s のことを共有しながら、大学のシステムはどうこうみたいな話しもした。やすだ先生も副業が好調らしく、東京に出張する機会も多いとご活躍されているそうだ。

今回 クラフトビアハウスモルト 梅田店 というお店に初めて行った。私のような普段着の人間でも気軽に入ってよいようなお店であることもわかった。また接待で使おうと思う。食べものはちょっと上等なおつまみがある程度なのでビールを飲むのをメインとする相手がよいだろう。飲み放題コースにしたので、食べものの選択やビールの値段を気にせず注文できたのも接待としては考えることが減ってよかったと思う。阪急グランドビルの31Fという最上階にあって、あまり広いお店ではないが、気軽に夜景をみながらクラフトビールを飲める。早めに予約したおかげだと推測するが、カウンター席の一番端だったので座席もよかった。その横におそらく VIP ルームがあって、個室かどうかよりも店内が広くないので広いスペースを使う意図で VIP ルームもよさそうにみえた。追加料金なく借りれるのかな?2人で借りるのは難しいかもしれないが、4人ほどいれば借りてみたいと思う。

元同僚の来訪

0時に寝て4時に起きてドラクエタクトしてだらだらして7時に起きた。

echo を採用

昨日の続き。echo か chi でそれぞれサンプルコードを書いたものを定例でメンバーに説明して echo に決まった。echo は知っているメンバーもいたけど、chi は知らなかったみたい。アプリケーションに近いせいか echo の方が認知度が高いみたい。既存コードの移行は私がちゃちゃとやろうと着手したものの、わりとコードが込み入っていて2-3時間でできるものでもなかった。環境変数周りの処理も dry の原則に違反していたので caarlos0/env を使うことにした。エントリーポイント周りのコードをリファクタリングして merge request を作成した。明日中には既存の http ハンドラー周りの移行をしてレビューができるようにしておきたい。

遠方より来る

たまたまタイムラインで元同僚が近くに来るというのをみかけてせっかくの機会なので晩ご飯を食べに行ってきた。大阪に泊まっているのにわざわざ神戸まで足を運んでくれた。感謝。ゲームのコミュニティに属していると私は思っていたのだけど、最近はゲームよりも vr の世界の住人らしくて、vr の世界のコミュニティに入り浸っているらしい。そんな生活を何年もしているうちに仲間うちで仲良くなって、たまにオフ会で会ったりもするとのこと。全国に vr の世界の仲間がいるから出張したときにオフ会したりするそうな。oculus quest 2 をもっているけど workrooms ぐらいしか使ってなくて、若い人はもっと進んでいるなと関心をもって聞いていた。

内製のデータベースのプロダクトが完成して社内でも使ってもらう運用段階まできたとのこと。データベースをフルスクラッチから3年かけて開発できるだけの余裕のある会社は少ないだろう。本人もいくつか社内・社外の事情が重なってプロジェクトが中止にならず運がよかったと話されていた。開発の区切りもついたので今後のキャリアや転職も含めていろいろ考える時期になっているみたい。まだ30歳前後だと思うのでいろいろ挑戦したらよいと思う。

帰りに三ノ宮の街並みも少し紹介した。三宮という地名は他にも一宮から八宮まであって 神戸八社 と言う。間違えて九まであると言ってしまった。八までだった。2021年に 神戸三宮阪急ビル が完成して阪急三宮駅の周辺が再整備された。夜歩きしても楽しめる雰囲気にはなっている。

簡単な現象の組み合わせ障害

0時に寝て6時に起きた。

eks クラスター障害の原因判明

過去に2回発生していた eks クラスター障害 の原因がようやくわかった。テスト環境も本番環境は5日ごとに再現していて、datadog で k8s のダッシュボードでそれぞれの pod 単位のメモリ使用量をみると datadog-agent の pod がメモリリークしていることに気付いた。そこから当たりをつけて datadog-agent の issue を調べると次のバグに遭遇していた。

ゾンビプロセスが生成されて、それが os のプロセス数上限に達してしまい、それによってプロセス (スレッド) が生成できなくなって、その結果として aws/amazon-vpc-cni-k8saws-node という eks クラスターの管理アプリケーションが動かなくなって、それが動かないと k8s ノードのステータスが NotReady になってしまって、通常の pod のアプリケーションも動かなくなってしまうという現象が発生していた。datadog-agent のアップグレードは私が行ったものだし、その後の k8s ノードの監視や調査で気付きが足りなかったと反省した。

  • datadog-agent の新しいバージョンをテスト環境でもうしばらく検証してもよかった
  • datadog-agent をリソースリークの可能性を私の中の調査対象から外していた
    • 世の中で使われているものに致命的なバグが起きないだろうという先入観があった
  • プロセスを生成できない原因として考えられる背景を調査すべきだった
    • ulimit を確認してリソース制限はないようにみえた
    • プロセス数やゾンビプロセスを調べていなかった
    • kernel に /proc/sys/kernel/pid_max という上限設定があることを知らなかった
  • テスト環境と本番環境で5日程度で落ちるという周期性から気付くべきだった
    • たしかにテスト環境から1日遅れて本番環境で障害が発生していた
    • 周期性があることでリソースリークの可能性は高いとすぐに調査すべきだった
  • datadog で k8s のダッシュボードを調べるべきだった
    • すでに用意されているものがあったのでみようと思えばみえた
  • aws のインフラ要因ではないかと疑っていた
    • ごめんなさい

これは悔しい。自分の無能さや気付きの低さを実感した事件だった。私が注意深く観察していればもう1週間早く気付けた。そのせいで余分な障害と調査に時間を費やした。1つ1つは全く難しくない現象が巧妙に絡みあって隠蔽された結果としての状況に気付けなかった。注意して1つずつ観察して追跡していけばすぐに気付けた。本当に悔しい。

1つだけ言い訳をさせてもらうと、私は本番環境にアクセスできない。だからテスト環境と本番環境で発生している現象が同じかどうかを判断できず、調査を進める確証をもてなかった。

呑み

あまりに悔しかったのと調査してたら遅くなって晩ご飯食べる気力もなかったので気分転換に仲のよい焼き鳥屋さんに寄ってみた。あとから常連客のセブンイレブンの店長さんも来られて、私は初対面かなと思ってたんだけど先方は知っていると言ってたから以前にもカウンターでご一緒していたみたい。何気はなしに3人で2時前ぐらいまで雑談していた。

その店長さんがロレックスを購入しようと考えているという話しになって、資産または投資商品としてのロレックスの話しになった。たまたまヒカキンが1億円で買ったロレックスがいま2億円になっているといった話しがあったそうで、いまがバブルな状態らしいが、ロレックスをはじめとした高級時計の資産価値が上がっているらしい。私は腕時計を身につけないし高級時計もまったく興味はないが、投資商品の1つなんだというところに関心がもてた。

中小企業の社長の一般的な節税方法の1つに外車を買ったり売ったりするという話しがある。儲かったときに経費で外車を買って、赤字のときに外車を売って雑所得に変える。車は社用車として経費で落とせるから可能なことだが、高級時計はどうなのだろうか? 結論から言うと、普通の会社では高級時計は経費にできない。経費の原則は売上を上げるために必要な支出を経費とできる。普通の会社は高級時計で売上を上げることはできない。一方で経費として認められる職業もある。芸能人がそうだという。それは番組のために必要だという理屈で経費で落とせる。おそらくヒカキンも経費で高級時計を購入して、そのことを動画にしているのも仕事で必要だという言い訳作りの目的もあるのだと推測する。

七夕と日本酒

1時に寝て7時に起きた。

障害対応の手伝い

昨日の続きで定期処理を k8s の cronjob へすべて移行した。その後、チケット整理したり、他メンバーの手がまわっていない作業を手伝ったりしてた。バッチ処理の在庫チェックの数字があわなくて「俺たちは雰囲気で在庫チェックをやっている」みたいな状況に陥っていた。とはいえ、サービスイン3日目でも致命的な運用の問題は発生していないということでこのリリースはもう完了したと断言してしまってもよいだろう。今後、数ヶ月かけてさらに他施設へのサービスインが続いていくわけだけど、見通しはみえてきた感じはする。まぁ大丈夫そう。

灘五郷酒所イベント

なにかのきっかけで クラウドファンディングの灘五郷酒所 をみつけた。地元の応援をしとくかと思って5,000円を支援した。いまみたら271人の支援者から1,472,900円の支援金が集まったみたい。その支援金のお礼イベントがあって、せっかくの機会なので行ってきた。5,000円ってちょっとよい居酒屋さんで使うぐらいの金額だけど、その場で飲める2,000円分の金券とお腹いっぱい食べられたビッフェ形式で十分に飲み食いできた。写真にある料理をもう1皿もらってきてお腹いっぱいになった。料理はなくなっても補充されていたので十分に用意されていた。支払った支援金を考慮すると十分に良心的なイベントだった。小耳に聞いた話だと80人ほど参加者がいたらしい。

飲んだお酒はこれら。あと竹酒と呼ばれる竹の筒に入れて主催者がついでまわっていたのを2杯ほど飲んだ。

  • 福寿 純米酒「御影郷」 (神戸酒心館)
  • 琥泉 純米吟醸おりがらみ無濾過生酒原酒 (泉酒造)
  • 黒松剣菱 (剣菱酒造)
  • 浜福鶴 生酛純米辛口 (小山本家酒造 灘浜福鶴蔵)

1人で行ったのでぼっちだったらどうしよう?みたいな不安もあったんだけど、たまたま隣り合わせた人が プライズ日本酒会 というコミュニティのメンバーで4人組で参加していた。その人たちと雑談してた。ご近所さんでとてもよい人たちだった。三ノ宮でお酒イベントをやっているそうで、また機会があればそちらにも参加してみようと思う。私は地元の人たちとのコネがほとんどない。今後会社のマーケティングをやっていく上でも地元の人たちともなにかしら繋がりをもてるとよいなとは考えている。お仕事がバタバタしてたから朝の時点では行くのをやめようかと考えていたけど、午後から落ち着いていたのもあって行ってよかった。

まん延防止等重点措置解除後の飲み会

0時に寝て2時に起きて5時に起きた。日中は昨日から着手したカスタム github action の開発をしていた。

ストレッチ

今日の開脚幅は開始前161cmで、ストレッチ後165cmだった。今日は右股関節の違和感と左の腰の張りが強かった。今週は少しだけストレッチをやった。お仕事が落ち着いてきて次の課題への谷間で気力が削がれていてメリハリがなくなっている。また生活を見直しつつ運動やストレッチに時間を割くようにしていきたい。

会員制バーで雑談

1月に行って からの再訪。前回はまん延防止等重点措置が実施される前だったのでお客さんはうちら2人だけだった。今回は解除された直後だったせいか、うちらの他に4人お客さんがいた。バーのマスターと友だちというわけではないけど、同じ経営者として経営がうまくいくといいなと思ってしまうのでお客さんが入っていると嬉しく思う。地域コミュニティを主催しているすみよしさんと一緒に行ってきた。今回はコースではなく、適当に料理も頼みながら普通に飲んでた。電話で予約をとったときに食べものについて確認したせいか、マスターも気をきかせて前菜を用意してくれていたみたい。前菜とパスタとおつまみでわりとお腹がふくれて、あとはお酒を飲んでた。

すみよしさんとは2020年から勉強会に参加したりしていたのでもう2年ぐらいの付き合いになる。わりと仲良くなってコミュニティの在り方とか、神戸界隈のベンチャー情報とか、新しい技術のあれこれとかを話したりしている。飲みながらざっくばらんにそういった雑談をしていた。