Posts for: #Event

厄介なインフラ問題をやっつけた

2時に寝て6時に起きて7時に起きた。夜に作業していたら遅くなった。

厄介なインフラの問題 解決編

運用のトラブルシューティング の続き。アプリケーションアカウントを作って compose 環境を構築したら nginx のコンテナが起動して即時終了する状態になったという。これまで起きていた現象とまた違う問題が発生してさらに混迷をもたらすかに思えたが、私の中では nginx のコンテナでなにかがおかしいと問題の発生箇所を局所化できたのでそこからの調査はそんなに時間を必要としなかった。

結論からいうと podman の aardvark-dns の不具合だった。なんらかのトリガーでコンテナネットワーク内の名前解決が不整合な状態に陥る。

vagrant@bookworm:$ podman-compose exec proxy /bin/bash
...
root@3742c45c7c60:/# dig app

; <<>> DiG 9.16.37-Debian <<>> app
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56696
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 8, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 37ff0fd63315d70e (echoed)
;; QUESTION SECTION:
;app.				IN	A

;; ANSWER SECTION:
app.			86400	IN	A	10.89.0.36
app.			86400	IN	A	10.89.0.36
app.			86400	IN	A	10.89.0.136
app.			86400	IN	A	10.89.0.136
app.			86400	IN	A	10.89.0.146
app.			86400	IN	A	10.89.0.146
app.			86400	IN	A	10.89.0.156
app.			86400	IN	A	10.89.0.156

;; Query time: 4 msec
;; SERVER: 10.89.0.1#53(10.89.0.1)
;; WHEN: Thu Jun 22 02:45:26 UTC 2023
;; MSG SIZE  rcvd: 172

podman 4.0 から aardvark-dns がコンテナネットワーク内での dns を提供する。nginx が app を名前解決したときに起動しているコンテナの ip アドレスではなく、削除された過去のコンテナの ip アドレスが返される状況が発生する。app という名前に対して複数の ip アドレスが返る。

このとき nginx は複数の ip アドレスのうちの1つに接続しようとするが、正しい ip アドレスでない場合、リクエストがタイムアウトする。タイムアウトした後に fallback で他の ip アドレスに接続しにいく。このときに正しい ip アドレスがみつかればクライアントにレスポンスが返る。この fallback のリトライの回数分だけリクエストのレイテンシの時間がかかっていた。

vagrant@bookworm:$ podman logs -f proxy
...
2023/06/22 02:46:26 [error] 15#15: *41 connect() failed (113: No route to host) while connecting to upstream, client: 10.89.0.38, server: ucidmsv1-app, request: "GET / HTTP/1.1", upstream: "http://10.89.0.136:3000/", host: "localhost:4430"
2023/06/22 02:46:29 [error] 15#15: *41 connect() failed (113: No route to host) while connecting to upstream, client: 10.89.0.38, server: ucidmsv1-app, request: "GET / HTTP/1.1", upstream: "http://10.89.0.156:3000/", host: "localhost:4430"
2023/06/22 02:46:32 [error] 15#15: *41 connect() failed (113: No route to host) while connecting to upstream, client: 10.89.0.38, server: ucidmsv1-app, request: "GET / HTTP/1.1", upstream: "http://10.89.0.136:3000/", host: "localhost:4430"
10.89.0.38 - - [22/Jun/2023:02:46:32 +0000] "GET / HTTP/1.1" 200 2864 "-" "curl/7.88.1"

ワークアラウンドとして、次のファイルに複数の app の ip アドレスが登録されていれば不整合な状態なのでネットワークを削除して、このファイルも手動で削除してしまえばよい。

$ cat /run/user/$(id -u)/containers/networks/aardvark-dns/mynetwork

ファイルを監視していると、どうやら mynetwork ファイルから名前と ip アドレスの情報が削除されるのは該当のコンテナが削除されるタイミングになる。なんらかのエラーにより、コンテナ削除時にマッピングの削除が実行されないと、古いコンテナのマッピング設定が残ったままとなり、compose サービスを起動したときに複数の ip アドレスの名前解決できる状態になってしまう。ちょっと調べても aardvark-dns に関する issue はたくさん登録されている。

コワーキングのオンラインイベント

月例のカフーツさんのオンラインイベントに参加した。先月の所感はここ 。今日はもともと予定していた話しをする参加者が急遽参加できなくなってしまったので他の参加者での雑談会になった。

いとうさん曰く、これまで外国人のデジタルノマドは自分で業務時間を選べるフリーランスの、さらにお金に余裕をもった人たちが多いと考えられていた。しかし、実際にコワーキングスペースに来られている外国人にキャリアを伺うと、大企業の普通の社員であることがわかってきた。グローバルな会社だと、働く場所に制限のない会社もあって、ただ日本へ行ってみたかった的な理由で日本へ来られて数ヶ月滞在して普通に会社のお仕事をするといったデジタルノマドもいるという。過去に私が働いていた職場の同僚も、コロナのときに会社がフルリモートワークの体制を設けて、airbnb で全国を旅しながら1年ほど働いていた。日本でもそういう社員はいるのだから外国人はなおさらという感じ。

そういった外国人のデジタルノマドが要求することが3つある。

  • 24時間利用できること (勤め先の会社と時差があるから)
  • セカンドモニターがあること
  • ・・・ (あともう1つあったが、忘れてしまった)

コワーキングスペースに外国人のデジタルノマドを呼び込むにはどうすればよいか。実際にコワーキングスペースへ来られた外国人に理由を伺うと英語のホームページをみて来ましたということらしい。至極、当たり前の話し。英語のホームページをちゃんと作ろうねみたいな話題で話していた。

初 interop と初幕張メッセ

23時頃から寝て何度か起きて7時に起きた。最近は家でもあまりうまく眠れないけれど、ホテルだともっとうまく眠れない感じで睡眠不足な感じ。

初めての interop

午前中は ci/cd の修正をしたり、ドキュメントを書いたりして、午後から Interop Tokyo 2023 に参加してきた。いつかうちの会社も出展したい。将来のために所感を残しておく。幕張メッセの会場に着いたのが14時過ぎで、あらかじめマーキングしておいた10社弱のブースをまわって、8社ぐらいのブースでスタッフさんに製品や技術の説明を聞いて情報収集してきた。そんなもんと言えばそれまでだが、interop は過去に参加したことのある it 系の展示会の雰囲気とよく似ていた。

幕張メッセまでの移動

初めて幕張メッセへ行ってきた。

  • 東京駅の在来線から京葉線のホームが遠い
    • 京葉線のホーム近くのコインロッカーが空いてた
    • 京葉線の車両は空いてて座れるから楽だった、寝てた
  • 海浜幕張駅から幕張メッセまでちょっと歩く、荷物多いとしんどそう
    • 電車の移動時間に加え、駅と会場間の歩く時間も考慮して予定を立てないといけない
  • 会場の雰囲気はビッグサイトとよく似ていた
    • 4-6 ホールの3つを使っていたけど、ビッグサイトの展示会イベントもそんな感じだった気がする
  • 混雑はしていないけど、そこそこ人がいて都心から遠いデメリットを考慮すると集客力はあるように思えた

会場/イベントの所感

4-6の3つのホールを使って展示されていた。

  • interop パビリオンというエリアに出展していた
    • 出入り口に近くて中心にあったのでパビリオンそのもののの立地はよいと思う
    • interop パビリオンには37社がひしめいていることのメリット・デメリットはありそう
      • メリット
        • 多くの会社の展示が狭いスペース内に集合しているので来場者からみて多種多様な展示をみれておもしろい
        • 意図的に (?) 立地がよいので会場のどこからでもアクセスしやすい (また後で寄ろうといったモチベーションになりやすい)
      • デメリット
        • 狭いので1社が応対できる相手は1人か2人程度
        • 通路兼応対スペースになるので個々の展示を立ち止まってみるよりも歩きながら眺める感じ、関心がないと立ち止まってみられない
        • 地図からどんな会社が出展しているかわからないので社名をみかけて行くといった導線にはならない?
          • そういう人は社名で検索してからエリアを調べてから行くかも?
  • 一通りぐるっとまわって、ブースのスタッフさんと話したのは8社ぐらいで1時間40分ほどかかった
    • あらかじめ展示をみにいく企業を決めておけば1-2時間もあれば十分にまわれる
  • 地図をあらじかめ印刷しておいて蛍光ペンなどで印を付けてまわればもっと効率よくできた
    • エリア番号から展示場所を探すのはわりと面倒くさかった

ユニークな技術の紹介

1つおもしろかったのを紹介すると、フォスター電機さんの ヒアラブルデバイス の展示。nec さんと一緒に 耳音響認証 という技術のデバイスを作っているらしい。耳穴に音を送って反射した音で個人を認証するというもので指紋認証と変わらない精度だという。さらに人間の内部の情報を用いるので静脈認証のように詐称が困難という特性がある。あと耳に装着しておけば常時認証状態をチェックできる。一般用途で使うデバイスではないかもしれないけど、特定の業務や業種向けの応用例がありそうだなとか思って聞いていた。サーバーサイドのアプリケーションはすべて nec さんがやっているという話しでフォスター電機さん自体はハードウェア屋さんでアプリケーションに関心がないようにもみえた。

stripe の決済プラットフォームを触ってみた

1時に寝て何度か起きて7時に起きた。帰る途中でライフに寄って淡路島牛乳を買って帰った。

ストレッチ

先週に引き続き、同じぐらいの負荷でおなぐらいの疲労度のストレッチだったような気がする。座っている時間が長いわけでもないが、右腰の張りがなかなか解消しないような気もする。今日の開脚幅は開始前156cmで、ストレッチ後158cmだった。ここ最近は下限が156cmになったような気がする。

stripe の webhook ハンドラーを試してみる

カフーツさんで雑談していたのをきっかけに電子決済とスマートプラグを組み合わせた poc のためのアプリケーションを作ろうと思い立った。

stripe はメジャーなだけあって、プラットフォームもドキュメントもよく出来ていると思う。アカウント作成もすぐできたし、ドキュメントも充実しているようにみえる。【オフライン】もくもく会 の参加前からコードを書いて、イベントに参加してからも継続してコードを書き終えた。stripe で作った支払いの qr コードを読み込んで決済すると任意の webhook のエンドポイントにイベントを通知してログ出力するサンプルコードを作った。stripe-go を使ってすぐに実装できた。

アカウント登録からサンプルコードを動かすのも丸1日ぐらいあれば出来てしまうぐらいの簡単さ。

能を観に行く

1時に寝て何度か置きて7時に起きた。

ストレッチ

今週も負荷の高い週ではなかったため、いつも通りのストレッチだった。今日の開脚幅は開始前156cmで、ストレッチ後158cmだった。やや右腰の張りが強かった気もした。

能をみにいく

ストレッチを終えてから 松華会定期能 を見に行った。事前に会場となる神能殿に電話したところ、そのタイミングで前売り券を予約できてチケットを取り置きしてもらえた。事前に神能殿の事務所へ立ち寄って料金を支払う。神能殿 はとても立派な舞台だった。

12時半から解説とあった。あらすじはパンフレットに書いてあるので、それらの背景や歴史などの予備知識を解説していた。だいたい13時から始まって16時頃に終わった。1つの能の上演時間はだいたい1時間から1時間半といったところか。能の特徴の1つとして、いきなり始まっていきなり終わる。演劇のような幕の開け締めがないし、演者が観客に挨拶したりもしない。おもしろい。

座席は1/3から半分ぐらい埋まっていた。観客は年配者の方が多かったが、若い人もいた。話し声を聞いているとおそらく能を稽古しているような人たちもいたのではないかと思う。自由席だったので私は正面の一番前の席に座ってみた。これも能の特徴の1つだと思うが、能の舞台は正方形なので横からもみれる。この横からみる座席をワキ正面と呼ぶ。いつか試してみたい。

事前に能の本を読んで入門して、著者の安田登氏の提案のようにあらすじを読んで妄想を働かせながら観るように努めてみた。初めてちゃんと能を鑑賞してみて、私は所々寝落ちしたりしているのだけど、思いの外、おもしろかった。菊慈童と野宮の2つの能を観たことで相対的にそれぞれの能の違いも実感することができた。私にとっては菊慈童の方がおもしろかった。その理由は野宮よりも状況や場面を容易に想像できたからではないかと思う。形式知としてはなんもわからないのだけど、暗黙知としては (野宮より) なんかわかった気がした。慈童が舞って喜んでいる様が伝わってきた気がした。囃子方と舞と謡の盛り上がりは素人でも楽しめた。野宮の方は動きが少なかったのと、私が源氏物語に詳しくなかったり、女性の怨霊の気持ちや背景など妄想できなかった。初心者は知っている物語やあらすじから妄想しやすそうな物語を安田登氏が推奨していた理由が理解できた。

能の bgm 的な音の影響も大きく受けた。おそらく今回は次の3つで演奏されていたと思う。これに太鼓を加えるとフルオーケストラらしい。

  • 小鼓 (こつづみ)
  • 大鼓 (おおつづみ)

奏者が「よぉー」と掛け声をしながら鼓を叩く。その掛け声にも種類があることに気付いた。囃子方のかけ声は何のため? によると次の4種類になる。

  • ヨーイ
  • イヤー

奏者の掛け声と謡と舞が協調して盛り上がりの強弱を表現していることも楽しめた。後で調べると囃子方はそれぞれの楽器ごとに専門職なようだ。奏者の掛け声の違いや強弱、音の高低などもおもしろいなと聞いていた。ポンと鼓を叩いた瞬間にカクっと寝落ちから我に返ったりして、そういう拍子も楽しんでいた。これは間違った観賞方法だろうが。見た目から年配の方が奏者をされていた。巧かったのでおそらく経験のある方だったんだろうと推測する。

能はそもそもがよくわからないのでわかるようになるとハマっていくのだろうという雰囲気は理解できた。納豆を食べるようなものだと思う。納豆のなにがおいしいかはあまり説明できないが、食べられるようになると当たり前のように日常的に食べてしまう。

林能楽会の菊慈童の公演が youtube にあったので貼っておく。雰囲気は味わえるが、生で観た印象とは異なる。舞台とはそういうものかもしれないが、能は映像だと伝わりにくい気がする。

狂言の水掛聟も楽しめた。狂言は演者が台詞を話すので能よりもずっとわかりやすい。日本版の演劇といったところか。水掛聟は隣の田んぼから水をお互いに取り合うといった物語になる。高低差があれば一方向に水を引くことはできるが、双方向に田んぼの水を引き合うって物理的にどんな田んぼの構造になっているんだ?というのが想像できなくて、頭の中が混乱しながらみていた。妄想力が足りない。あと婿と舅で水の取り合いをして、途中で婿の妻 (舅の娘) が乱入して、最後はどういう落ちだったのかよくわからず終わってしまった。「オチないんかい!」って心の中でツッコミいれてみた。

カフーツさん訪問

帰りに寄り道してカフーツさんに能をみた感想を伝えにいく。寄り道どころか、そのまま24時まで飲んだくれになってた。ここにふらっと立ち寄ると帰れなくなる。ヤバい。能をみた所感や読んだ本の話しをしていたら、いとうさんものってきて、次は 第4回 真花演能会 能のみちを伝えたい の敦盛を見に行こうという話しになった。敦盛なら物語も知っていて想像しやすそうなのでいいのではないかと意気投合した。

いとうさんが スパイシーカレーチキンレッグ をおいしいと食べてたのをみかけて今度探しに行ってみようと思った。

クラフトジン: YOHAKHU

クラフトジン: YOHAKHU

遅く帰ってきたわけではないが、うまく眠れなくて3時に寝て7時に起きた。

開発方法論/開発ガイドの更新

今週が開発の谷間の最後の週。毎週いろいろ資料を作ったり、あちこちのドキュメントを更新したりしていた。最後に残ったものの1つ (を2つに分割した) として、うちのプロダクト開発における開発方法論と開発ガイドを仕上げた。開発方法論は開発のマネジメント手法やプロセスの概念などを抽象的な表現で説明したもの。簡単に言えば、アジャイル開発とかスクラムとか、そういった概念の説明やなぜそれが大事なのかの意図や背景を説明したドキュメントになる。当初はこの1つしかなかったのだけど、実際に課題管理システムを使ってイテレーション開発をする具体的な話しと抽象的な話しを一緒に書くのはまとまりが悪いように思えてきた。抽象的な内容と実務に近い内容は分けて書くことにした。

  • 開発方法論: プロダクトで採用している開発方法論の概念をまとめる
  • 開発ガイド: 開発方法論を具体的に実践する方法についてまとめる

例えば、開発ガイドにはマージリクエストの運用について書いてある。どこの会社へ行っても私は次のような「マージリクエストを作成しなくてよいもの」という文章を書いている。

すべての修正にマージリクエストを要求すると開発がとても遅くなる。それは人間が介在するトコロがもっともコストを要求するからである。とくにコミュニケーションコストは開発の中でも最も大きいコストの1つである。レビューしなくてもコミット履歴は誰でも把握できる。修正内容が気になる開発者は自分でコミット履歴を確認すればよい。

従ってレビューの必要がないと想定される修正は直接 main ブランチに push してよい。例えば、軽微な修正は CI/CD の自動化により品質を担保できるように努める。テストを失敗させる修正を push してしまったとしてもデプロイできないために障害を発生させることはない。

この運用は軽微な修正だと思って push したものが不具合を発生させてしまうリスクを許容している。そのときは気付きの学びとして「ごめんなさい」で終わらせる。稀に不具合を発生させることよりも、開発の速度を上げる方を優先する。

カフーツさんイベント

カフーツ13周年Jelly〜カクサク(やりたいこと宣言)第1弾〜 に参加した。私がカフーツさんへ遊びに行ったときに人がたくさんいたことはない。記念イベントだったので参加者多いかな?と思って行ってみた。10人ぐらいいた。参加者の大半は私と同じぐらいか、それ以上の年配の方にみえた。やや年齢層が高め。13年やっているコミュニティなので同じぐらい歳をとったんだと思う。みんなでわいわい話しながら0時前まで飲んでた。ここ行くと基本飲み会w

YOHAKHU というクラフトジンがあってロックと炭酸割りで4-5杯ほど飲んでいた。これまでジンをあまり飲んだことがないので、普通のジンとの比較はできないが、強烈なインパクトのある風味で圧倒されてしまった。おいしいかどうかというよりもこれは強烈やなぁという所感が先にくる。さらに「余白」という名前がよい。いとうさんに影響を受けて私が「ゆとり」と呼んでいた概念にいくつか補強がされて、最近は私も余白という言葉を気に入って使っている。人生に必要な余白を忘れない飲みものがこれだと言えるかもしれない。なんだか酔っ払ったようなコメントになってしまった。

価値観のあう人たちとお酒を飲みながら語り合う

3時に寝て7時に起きた。昨日は深夜まで yubikey bio で 1password のロック解除の設定を調べていて遅くなった。また後日まとめる。

ストレッチ

今週は出張があったり、飲み会があったり、前日に深夜まで作業して疲弊していたりとあまり調子はよくなかった。いつも通りの右股関節の関節痛はあるし、腰の張りも少しあったし、右の太もも後ろの筋に違和感があるように感じた。太ももの後ろの筋を伸ばすストレッチが快適でお気に入りの1つなんだが、そこの部位でいつもとはやや違う別の張りを感じた。筋の張りの違和感をトレーナーさんにどう伝えてよいか、表現方法がわからなくて困ることが多い。今日の開脚幅は開始前156cmで、ストレッチ後158cmだった。疲労した体調を立て直すきっかけになってよかったと思う。

カフーツさん訪問

カフーツさんへ 昨年の6月以来 となる訪問をしてきた。毎月オンラインでいとうさんと話しているので身近ではあるけれど、リアルで会うのは約1年振りになる、本当に月日の流れる早さを実感する。ブログJelly Vol.132 に参加してきた。参加者は3人で18時から始まって1時半ぐらいまでお酒を飲みながらうだつの上がらない話しをしていたw ここにいる人たちと私は価値観があうのでだらだら話しているのが楽しい。

神戸と実家で2拠点生活しようと考えているという話しをしたら、実家のはなれを改修したスペースに宿泊できるなら airbnb で貸し出したらいいんじゃない?という話題が出て、たしかにそういう取り組みもできるなと感心した。そして、そのスペースにもう少し手を入れて小さいコワーキングスペースにしてもよいのかもしれない。すぐ側に田んぼもあるので農業体験なども簡単にできる。淡路島は気候もよくそこそこよい環境でコワーキングの拠点になるかはともかく、海が好きな人向けにはよいところかもしれない。実家のコワーキングスペース化という視点を今後も考えていきたい。

出張の中日

0時に寝て何度か起きて5時半に起きてテレビで朝のニュースを聞き流しながら7時に起きた。

資料作成

今日はメンバーの1人が休暇だったため、打ち合わせはなしで資料ばかり作っていた。今週のチーム勉強会の発表は私が担当するのでその資料を作ったり、リリースを終えて社内向けにプロダクトの説明のための資料を準備したりしていた。これまでたくさんの資料を作ってきてるので改めて作るというよりは、過去に作ったものを洗練させたり、集めてきて補足する程度の作業になりそうな雰囲気だけわかってきた。

aws app runner の情報収集

App Runner Night !! にオンラインで参加した。AWS Startup Community というコミュニティがあることも知らなかった。顧問のはらさんが LT 発表すると聞いていたのでそれをみようと思ってながらで聞いていたので他の発表はあまりちゃんとみていてない。特別に目新しいことはなかったし、発表の中でもいくつかちょっとそこ怪しいんじゃない?とか思いながら他の作業をしていた。

私も余裕があれば app runner でサービスを動かしてみてその勘所を把握しておきたい。ecs がやりたいことに比べて使いにくいという印象は私もずっと思っていた。実質 k8s 以外のコンテナプラットフォームは aws しかないので app runner がよいものかどうかに関心をもっている。

コワーキングのオンラインイベント

月例のカフーツさんのオンラインイベントに参加した。先月の所感はここ 。今日は「移動」というテーマでいつも通りいとうさんがわーっと話をしていた。この2ヶ月に新しい官民の取り組みが始まったらしい。なんか空気だけでダメそうにみえる。

このサイトでは次の2つの用語を定義している。ブレジャーを初めて知ったけど、発音しにくくて語呂が悪いだろとか思えた。

  • ワーケーション (Work + Vacation)
  • ブレジャー (Business + Leisure)

このサイトにあるワーケーションの実施形態には共感するところもあって次の4つに分類している。IT 業界で多いのは合宿型とサテライトオフィス型かな。

  • 福利厚生型
  • 地域課題解決型
  • 合宿型
  • サテライトオフィス型

あとどういう文脈だったか忘れてしまったが、身体感覚で「芭蕉」を読みなおす。 『おくのほそ道』謎解きの旅 という本を紹介された。能の探求者が書いた独特の視点から松尾芭蕉を取り上げた本らしくて、なんかおもしろそうにみえたのですぐに購入してみた。紙の文庫本しかなかった。読んでみる。

ゆとりのある休日

0時に寝て6時に起きた。午前中は掃除したり買いものへ出掛けたりムック本を買って読んだりして午後からもくもく会に参加してきた。昨日から休日って心地よくて素晴らしい時間だということに改めて気付いた。

いまがわかる地政学

やぎさんからおすすめされて オールカラー図解 いまがわかる地政学 を読んだ。ちょうど余裕もあったので読んでみることにした。私も過去に地政学の雑誌を気分で買って読んだことがあった。教えてもらってなければいまは買ってなかったと思うが、関心のある分野ではある。

見開きの2ページで左ページを地図で図解しながら右ページにその説明が書いてある。読み始めてすぐにドキュメントランドスケープを構築できるので読みやすい。地政学なので地図で説明するのがわかりやすいのと、特定の地域の限られた国で、且つ話題を限定して説明するから簡潔でわかりやすい。過去にはアメリカ/イギリス系統とドイツ系統の2つの地政学があり、地政学はナチスドイツの御用学問となり、ドイツが敗戦したことによりドイツ系統の地政学は封印指定された。日本で学ばれていた地政学もドイツ系統だったようで、戦後 GHQ により封印指定されていまに至るらしい。

地政学の解説を読んでいて、なにかを分類して、そこから得られる知見に方向性や解釈を与えて、さらに歴史が積み重なると立派な研究や学問になるという印象を受けた。観察して分類して仮説を立てて記録を取り続けるとそれはもう科学である。課題管理につながるヒントもありそうな気がしている。課題管理は事象が発生した記録を取り続けて、ある程度溜まったところで分類したり分析したりできる。

もくもく会

【三宮.dev オフライン】もくもく会 に参加した。昨日の続きでプロダクトのドキュメントを2時間ほど書いてた。集中してドキュメントと mermaid のフローチャートを書いた。初めて参加された方も何人かいたのでいろんな人の話しを聞くこともできてよい機会だった。参加者の1人から 芋屋HUG のスィートポテトをもらった。お店の存在は知っていたが、1度も買ったことがなくて初めて食べておいしかった。調べてたら神戸発祥のお店っぽいので東京出張するときのお土産に買って行ってもよさそう。よいお土産を知ることができてよかった。

1日中ドキュメントを書いていた

一昨日あまり寝てなかったので昨日は早く帰ってきて20時から22時ぐらいまで寝て、その後0時ぐらいから寝て何度か起きて7時に起きた。久しぶりによく寝た。

プロダクトのドキュメント

プロダクトのインストールや設定のドキュメントを mdBook で書いている。チームのメンバーが reStructuredText を知らないというので markdown で書ける方がいいかと思って採用した。4月上旬から環境作り して時間のあるときに少しずつ書き足したり、メンバーにも書いてもらうように促したりしていた。情報としてはだいたい半分ぐらい書けたかなぁといったところ。まだまだ内容は足りていない。

内容とは別に、ある程度まとまったドキュメントとしてのわかりやすさを、例えば Sphinx のようなツールと比較してどうかというのを書き終えたら比較してみようと思う。1つ懸念点としてわかったことに SUMMARY.md からリンクされていない md ファイルはレンダリングされないという仕様になっていて、この仕様の是非や目次の作り方の構成に制約が課せられることへの懸念がある。次の issue でも議論されている。

mdbook は私が想定したほど普通のドキュメントツールが備えているような機能を実装していなくて、それは markdown を独自拡張したくないという意志なのかもしれないけれど、本当に最低限の体裁だけでドキュメントのようにみえるようにするといったところしか関心がないのかもしれない。ちょっと触った雰囲気でも本格的なドキュメントを書くツールではないと感じている。私がまだわかっていないだけかもしれないのでもうちょっと触ってみてまた所感をまとめる。

チーム勉強会

2週間ぶりのチーム勉強会。メンバーが Stable Diffusion の話しをしてくれた。学生時代に関連する研究をしていたらしい。本人は研究していたから内容を理解しているのだろうけど、一般人の私には全然ついていけなくて説明そのものが難しいなと思いながら聞いていた。そして、最近の研究成果などを紹介しながら15分ぐらいで終わった。論文の内容を理解できているのなら、その内容を解説してもよかったのでは?と思ったりもした。1時間の枠があるのだからもっと話してもらってよかったのだけど、準備も大変だったのかもしれない。時間が余っていたので私がモデレーターとして質問したり、他の参加者に質問を促したりしながら残り時間の40分ほど雑談していた。そういう意味では雑談会としては多くの質問やコメントが出てよかったと思う。意図的に発表時間を短くして雑談会にもっていくというやり方もあるのかな?と勉強会の運営の学びにもなった。

リリース前テストを完了

0時に寝て6時に起きた。昨日は晩ご飯の買いものに行こうと早めに帰ろうとしたら雨降りでそのまま帰って家でだらだらしてた。

リリース前テスト

来週の火曜日がリリース日になる。4月から3週間ほどかけて行ってきたテストケースを完了した。致命的な不具合もなく、テストの過程でみつかった不具合も修正済みで予定していたテストが完了となった。ここ2週間ほど、テストして issue が登録されると、私が細心の注意を払って内容を精査して、即日で fix して検証したりしていた。それもあってテストでみつけた不具合はほとんど fix した。あとはリリースのためのパッケージングやドキュメント作成、インフラ作業などへ移っていく。アプリケーションの振る舞いに影響を与えるものではないので私の中では肩の荷がおりてプレッシャーも軽減されて少し安心できた。よかった。よかった。

docker hub のプライベートリポジトリ

先日 docker hub の rate limit に引っかかったこともあり、docker hub の有償アカウントを使うことになった。team プランは5人以上必要らしいので pro アカウントで契約してもらった。有償アカウントなら無制限のプライベートリポジトリを提供できる。docker hub でリポジトリを作成していて、いまさらながらにリポジトリ名にスラッシュを含められないことに気付いた。基本的にはハイフン区切りでスラッシュの代替する名前になっていた。これまで自分で docker image を扱ってこなかったので今更ながらに気付いた。

社内のコンテナレジストリから docker hub のプライベートリポジトリへの promotion のスクリプトを書いていた。bash の連想配列を使ってコンテナレジストリのマッピングを定義してあとは pull/push するコードを書くだけ。

declare -A repos
repos["internal-my-repo1"]="external/my-repo1"
repos["internal-my-repo2"]="external/my-repo2"
for internal in "${!repos[@]}"; do
  external="${repos[$key]}"
  echo "pull from: $internal"
  echo "push to  : $external"
done

コワーキングのオンラインイベント

月例のカフーツさんのオンラインイベントに参加した。先月の所感はここ 。promotion のスクリプトを書いていたら20分ほど遅れてから参加。今日の話題は chatgpt だった。少し前に 雑談会 したので歴史や原理的な仕組みなど、調べたことを参加者と共有しながら今後の社会の変化などを議論していた。私も関心のある内容なのでおもしろかった。いまや私は日々の開発業務にも chatgpt を使って調べものをしたりサンプルコードを書いてもらうのが普通になりつつある。そのうち ide と連携してテストコードの叩き台なども書かせるようにしてみたい。

いとうさんは chatgpt をみて、人間は働く意欲がなくなるのではないかといった懸念を表明されていた。いまのところ、ドメイン知識をもっている人がより効率よく働けるようになるツールでしかないという私の認識だが、あと3年ぐらいしたら人間を遥かに超えていって、chatgpt の出力をそのまま業務に応用する日も来るかもしれない。llm というのは次にくるもっともらしい単語を膨大な学習データから統計的に選択しているだけで、実際には内容を理解していないし、人間のように創造的な行為もできない。大雑把に言えば、インターネットの空気を読んで発言すれば人間っぽいというのはすごいことだし、便利で役に立つし、働き方も変わっていくだろうけれど、その延長上で変わる世の中が、私の人生における行動に影響を与えるほどではないと考えている。そういった話をする過程であんちぽさんの言う「価値観を育てる」という文脈が頭の中に残っていて、llm ぐらいでは揺らぎそうにはない気がしている。

ただ it 業界以外にもこんなに話題が拡散しているプロダクトはそうそうないので世の中をどんどん変革していくのだろうというのは、異業種の人たちと話していても実感できた。

気分転換のもくもく会

0時に寝て4時に起きて6時に起きてだらだらして7時半から広いお風呂入ってきた。

the b 水道橋

昨日は the b 水道橋 に宿泊した。the b というホテルブランドらしい。初めて宿泊した。あまり新しい施設ではないし、部屋も狭かったけれど、受付でアイスクリームが無料というサービスをしていたり、大浴場があったりと限られたリソースでがんばろうとしている雰囲気がみえておもしろいホテルだと思う。値段も他のビジネスホテルより少し割安だった。水道橋駅から10分ほどだとは思うが、微妙に歩く立地が割安にしているのではないかと思う。水道橋はどこに行くにもアクセスがよいのでよい場所だと思う。晩ご飯に近くの つどい酒場えすと。 という居酒屋にふらっと入ったらよいお店だった。お店もほぼ満席だった。部屋は普通もしくは手狭なのだけど、全体としてはよい宿泊体験だったと思う。また機会があったら泊まるかもしれない。

もくもく会

出張もくもく会 を開催した。3月は週末にお仕事していなければバテて家で寝ているといった、あまりよくない状態だったので気分転換も兼ねてのもくもく会だった。いつもと違う場所、違う人たちとやり取りすることそのものがマンネリを解消する上でもよかったように思う。12人が参加してくれた。20人ぐらいが入れる広い場所を借りてみたものの、思ったより集まらなかった。前回来てくれた方たちも何人かいた。レンタルスペースなので参加費いらないですか?と問い合わせしてくれた方もいた。もくもく会イベントはうちの会社の交際費を使う手段の1つでもある。

会場は VILLENT 秋葉原 というレンタルスペースを借りた。10時00分から17時30分まで7.5時間を借りて税込20,988円。前回の会場 は定員が10人なものの、窮屈で狭かったため、今度は広い場所を借りることにした。定員は24人なものの参加者は私を含めて13人だった。だいたい4人座れる机に2人ずつ、たすきに座ってスペース的には余裕があってちょうどよかった。次回またもくもく会をやるときは20人ぐらいのスペースに対して10人程度の募集にしようと思う。

会場はサイトの写真をみて想像したよりも汚い (古い) 施設だった。あとで参加者と話していて借りるときに google map でビルの外観をみればいいと教えてもらった。電源タップはないと書いてあったが棚を探すと3つほど見つけた。インターネット接続にちょっとしたトラブルがあった。wifi ルーターには接続できるけど、インターネットにアクセスできない。あれー?と思って問い合わせしたら自動音声でルーターの電源の on/off を試せと流れて、wifi ルーターを探してみたら、その後ろに置いてあった onu (光回線終端装置) の電源が入ってなかった。wifi ルーターだけ電源が入っていて onu だけ電源を切ることはないと思うので前に使った人たちのいたずらかもしれない。くそーって気分だった。wifi 速度は7人接続している状態で240Mbpsほどあったので十分に速かった。

あとで施設のレビューをみてみると「清潔感」が 4.0 と低くはないけれど、他の項目に比べて明らかに低い点数となっている。私ならこの項目に 3.0 をつけるかなと思う。価格が割安なのでそんなものと言えるが、特定の項目だけ統計の値が低いのならなにか理由があると考えてよいということを学んだ。ちなみにそれでも 4.0 と点数が高いのはすべての項目を 5.0 に付けているレビューアがいるためだと考えられる。ちゃんと点数を付けているレビューアは 2.0-4.0 を付けていたようにみえる。

午前中に10人ほど参加して、午後から2人参加して、参加者の大半は web 系の人たちにみえた。午後から来た2人組は期待したものと違ったのか1-2時間作業してすぐに帰られた。窓を開けておくと周りの工事の音が少し騒々しい。途中で少し寒いということで窓を閉めたら騒音はそれほど気にならなくなった。私は日記を書いたり、お仕事のドキュメントを書いたりしていた。図書館で勉強するような雰囲気になっていて作業に集中できてよかった。