Posts for: #2022/12

ケーブル配線トレー気に入った

ケーブル配線トレー気に入った

20時に寝て22時に起きて、24時ぐらいまでだらだらやって6時まで寝た。本当は晩ご飯食べてオフィスに戻るつもりが疲れて寝てた。

ケーブル配線トレー

たいちさんの記事 を参考に購入した ケーブルトレー (CB-CT4) が届いたのですぐ机に取り付けてみた。ちょうど机のサイズやオフィスの空間にもマッチしていてケーブルの配線をよい感じに収納できた。新しいオフィスには幅広な棚がついていてその棚もそうなんだけど、縦の空間を分割して使えると効率がよい。普段プログラミングや ci/cd で効率のことばかり考えているから日常生活でも効率のよいことがあると嬉しい気持ちになる。ケーブルトレーはオフィス空間の効率化に寄与する。物理的なメリット以上に、私にとっては精神的に作用した気がする。

rabbitmq の management api

rabbitmq には Management Plugin という拡張があって、これをインストールすると管理画面と HTTP API が付いてくる。docker image だと、たぶん management のタグが付いているものを選べばよいと思う。exchange や queue の初期設定を go のアプリケーションからできるようにしようと思って rabbit-hole というライブラリを使ってすぐに実装できた。最低限の必要な機能をもつサブコマンドな cli からも呼べるようにした。本番環境でもこの cli を使って rabbitmq の初期設定や確認をする運用ツールにしようと思う。管理画面でもできるけど、cli でできた方がマニュアルを作る上でも簡単だし作業ログも管理しやすい。

dind をやってみた

3時に寝て7時半に起きた。最後なのでワールドカップの決勝戦をみてた。接戦で試合もおもしろかったしよかったと思う。

gitlab ci/cd で docker in docker

ミドルウェアを伴う結合テストは dockertest というツールを使って docker でミドルウェアを起動して実行している。デフォルトで作成した gitlab runner で docker を使おうとすると失敗する。これは gitlab runner が ci/cd ジョブを docker で動かすため docker in docker (これを dind と呼ぶらしい) のための設定が必要になる。大雑把に言えば gitlab runner にそのための権限を設定する必要がある。gitlab の次のドキュメントに詳細が書いてある。

gitlab runner に権限を設定したら次のような job が動けば docker in docker は成功と言える。

hello-dind:
  stage: test
  image: docker:20.10.21
  variables:
    DOCKER_HOST: tcp://docker:2375
    DOCKER_TLS_CERTDIR: ""
  services:
    - docker:20.10.21-dind
  allow_failure: true
  before_script:
    - docker info
  script:
    - docker run hello-world

あとになって気付いたことだけど、dockertest の README にも Running dockertest in Gitlab CI としていくつか tips が紹介されている。dockertest で作成したリソースからホスト名とポート番号を取得するには次のようなユーティリティを使う必要がある。

func getHostPort(resource *dockertest.Resource, id string) string {
	dockerURL := os.Getenv("DOCKER_HOST")
	if dockerURL == "" {
		return resource.GetHostPort(id)
	}
	u, err := url.Parse(dockerURL)
	if err != nil {
		panic(err)
	}
	return u.Hostname() + ":" + resource.GetPort(id)
}

オフィスでのんびり過ごす

21時に寝て何度も夜起きながら頭痛の機嫌をとりつつ8時に起きた。頭痛はほとんどなくなったもののお腹が痛かったりして微妙な体調。お仕事は断念してブログの記事を読んだりみかん食べたり買いものしたりしてのんびりしていた。

リモートワークの道具

たいちさんが 二年以上のリモートワークを生き残っている道具を紹介する という記事を書いていて同じマウスを使っているなと親近感をもって読んでいた。引っ越したばかりのオフィスでケーブル周りがあまりしっくりこないと思っていたので ケーブルトレー (CB-CT4) を購入してみることにした。机の上にわさわさしているケーブルや電源タップの取り回しをすっきりできそう。

マイナポータルへの登録

親が マイナポイントのキャンペーン がどうこうと、マイナンバーカードを取得して申し込みなどをしていた話しを聞いた。うちの親が手続きしているぐらいなのでそれなりに一般の人たちがマイナンバーカードを取得して申し込みしているのではないかと思う。私もよくわかっていなかったけど、12月中に手続きをすれば20,000ポイントをもらえるとあるので paypay 経由で手続きをしてみた。次の2つに登録するとよいみたい。

  • 健康保険証としての利用申し込み
  • 公金受取口座の登録

どちらも行政手続きの簡略化が期待される。システムに関わっている私は受け入れて申し込みした。手続きがうまくいけば paypay でマイナポイントをチャージして使えるらしい。paypay はふるさと納税とも連携するし、こういった行政との連携も抜群で便利な決済アプリになったなぁという印象。また以前はボーナス運用と呼ばれていた paypay を使ったときに還元されるポイントを資産運用している。それがパワーアップして paypay証券 になったみたい。paypay はイケイケやね。積立もできるらしいので投資信託の代わりのようなものだと思う。いままでのポイント運用プラス積立を気軽にできる資産運用としてよさそうに思えたので申し込みしてみた。

コミュニティ忘年会

コミュニティ忘年会

22時に寝て0時に起きて、4時5時と起きて7時に起きた。昨日の夜ぐらいからずっと頭痛がする。体調悪い。

ストレッチ

今日の開脚幅は開始前153cmで、ストレッチ後157cmだった。先週とほぼ変わらず疲弊と疲労が抜けきっていない。右太もも周りの張りや違和感が依然として強い。腰も自覚症状はなかったもののストレッチを受けていると張りが強いことに気付いた。トレーナーさんからも調子悪そうみたいなコメントもあった。田んぼ・出張を経てのオフィス移転から引っ越しに伴う行政手続きと、この3週間のバタバタした負荷が残っているみたい。土日もずっと作業を継続しているのもよくないのかもしれない。とはいえ、お仕事も引っ越しの行政手続きも一段落はついたので徐々に復調していくはず。

もくもく会 & 忘年会

ストレッチを終えたら普段はオフィスで調べものをしているところ、頭痛でしんどいから家に帰って寝てた。そして14時から 【三宮.dev】今年を〆るもくもく会 に参加した。2022年7月頃に移転したばかりの中央区の区役所の上に 中央区文化センター がある。そこで開催されて初めて施設に入った。新設した施設なのできれいで設備も充実していてよさそうにみえた。うちのオフィスからも近い。うちの会社にお客さんが来ることはないのだけど、大人数の打ち合わせにも使えそう。

オフィスへ行かなかった日は day off というタグで記録している。オフィスへ行ったからといった必ずしもお仕事しているわけではないけれど、役員は考えること・為すことすべてが事業に関連するという考えからオフィスへ行く・行かないという基準で day off という概念を私の中で切り替えている。家で寝てても頭痛はおさまらなかったものの、気合を入れてもくもく会へ行って日記を書いたり調べものをしたりしていた。17時にもくもく会が終わって忘年会へ続く。頭痛はまだ残っていたものの、お昼よりは少しましになった。忘年会も休もうかどうか迷ったんだけど、普段来られない方々もいたのでせっかくの機会だと思って、本気出して忘年会へ行ってきた。体調悪いからお酒は控えた。忘年会でいろいろな話しを聞けたので行って楽しかった。

体調悪いから2次会は控えて家に帰ってきてそのまますぐ寝てた。

openapi 勉強会

1時に寝て7時に起きた。昨日はたまたま遅くなって0時頃に帰ってきたが、最近は22時前後に帰ってくることが多い。疲労困憊。

nginx でつくるリバースプロキシ

ちょっとググってみつかる記事を参考にして設定したらすぐにできた。私は tls 周りの設定に詳しくないのでこういうまとめ記事はとても助かる。インターネットって便利。

openapi 勉強会

昨日の続き。openapi についてチーム勉強会を開催した。wiki に次の目次で説明を書いてその内容を勉強会で話した。ちょうど1時間におさまって内容もわかりやすいものができたのではないかと自画自賛。毎週のチーム勉強会のネタとしてちょうどよい粒度だった。

  • code generator が fork した背景
  • スキーマ駆動開発
    • メリット
    • デメリット
  • OpenAPI スキーマからドキュメント生成
  • OpenAPI スキーマからコード生成
  • リファレンス

余談だけど、過去に働いていた会社の発表資料が slideshare から docswell というサービスに移管されてた。slideshare は広告が鬱陶しいサービスになってしまってひどいユーザー体験だからこれは適切な判断だと思う。

openapi 再び

1時に寝て何度か起きて7時に起きた。1-2時頃に吐き気がして苦しむ割に後半はなにもなかったかのように眠れることがある。

openapi-generator の調査

毎週の勉強会に向けて最新の openapi-generator を使って出力した go client のコードを読んだりしていた。openapi-generator を簡単に試すためのチュートリアルのようなものとして、過去にリポジトリに整理しておいた。このリポジトリを使うとコード生成とドキュメント生成の両方を試してスキーマがあることのメリットを体験できるようになっている。

chatgpt で遊ぶ

【おあそぶ会】GPT3と遊ぶ に参加した。gpt3 についてちょうさんが調べたメモにも目を通して参考になった。

ちょうさんの gpt3 の説明を聞きながら chatgpt で葬送のフリーレンについてチャットしてた。今日の成果はこれかな。

技術選定の調査開始

1時に寝て2時に起きて吐き気に苦しんで6時に起きた。後半はよく眠れた気がする。

フロントエンドの技術選定の調査

はらさんにお願いした フロントエンド勉強会 の内容を踏まえて技術選定を行う。次の3つを候補とした。

  • react
  • svelte
  • solid

客観的な指標で3つの技術を調査して比較した時点で solid はうちのチームにはあわないと候補から除外することにした。なので react vs svelte の一騎討ちとなる。なにか理由がない (デファクトスタンダード) なら react だし、うちのチームにとって有効だと判断できる項目があるなら svelte になる。ここで next.js と svelte kit でちょっとコードを書いてみて自分なりの感触も探ろうと考えている。

インフレ勉強会

エンジニアのためのインフレ研究会 #1 に参加した。お仕事の調べものをしながら聞いてた。私はもう常連で前々から同じような話を聞いているものの、発表者の資料も説明もわかりやすいものだったと思う。

eltax で異動届を申請してみた

0時に寝て5時に起きて7時に起きた。変哲のない普通の朝だった気がする。

三菱 UFJ 銀行の住所変更手続き

先週来店予約をとったので登記事項証明書をもって来店した。手続き自体はすんなりと進み10分で完了した。わざわざ対面で行うのは最早これセキュリティ。とりあえずセキュリティと言っておけば多少の不便さなんか吹っ飛ぶ。担当者が次の項目をチェックしていた。

  • 免許証の写真と同じ人物かどうか
  • 住所が書類とあっているかどうか
  • 通帳が正しいかどうか
  • 銀行の届け印が正しいかどうか

eltax の住所変更手続き

オフィスのプリンタを調べたらスキャナの機能もあることがわかった。夜に登記事項証明書をスキャナで取り込み pdf 変換できたのでそれを使って eltax で地方自治体 (県と市) の異動届も提出することにした。どうやら申請・届出は pc 版ではなく web 版を使うらしい。初めて行う申請だったので書類の在り処や段取りがわからなくて2時間ぐらいかかった。ざっくり次の手順でできる。

  1. 県向けに異動届を作成
    1. 登記事項証明書の pdf 添付
  2. 作成した異動届をマイナンバーカードを使った公的個人認証サービスで署名して送信
  3. eltax の利用者情報の変更届けを送信
    1. 住所が旧住所になっているので更新
    2. 県と市のどちらかを選択すると両方に通知される?
  4. 県向けに送付した異動届を複製
    1. 登記事項証明書の pdf 添付も複製される
  5. 同じ異動届を使って市向けに作成
  6. 作成した異動届をマイナンバーカードを使った公的個人認証サービスで署名して送信
  7. メッセージ照会や受付状況照会で内容を確認

翌日には受付状況照会で手続きを完了したというステータスになっていたので問題はなかったみたい。同じ異動届を複製できたのが便利だった。

docker compose に期待しない

0時に寝て5時に起きて7時に起きた。起きたら冷やしたのかお腹痛かったが、まぁまぁ眠れたと思う。

テスト環境の構築

GitLab CI/CD にだいぶ慣れてきてジョブを追加したり改善したりしながらようやくアプリケーションの docker image もコンテナレジストリに push されるようになった。それを pull してきて、テスト環境を docker compose で構築する。Use Compose in production とドキュメントでは威勢がよいが、これが全然イケてない。複数の compose.yml で項目によっては変更したいところを置き換えるといった振る舞いになっていない。例えば、ポート番号などを dev と prod で置き換えたいといった運用の要件を考える。

  • dev.yml
services:
  myapp:
    ports:
      - 18080:8080
  • prod.yml
services:
  myapp:
    ports:
      - 8080:8080

これを次のように指定すると、

$ docker compose -f dev.yml -f prod.yml up -d

実際のサービスは次のように振る舞う。全然あかん。

services:
  myapp:
    ports:
      - 18080:8080
      - 8080:8080

他にもそれぞれの yml ファイルで読み込む environment file のマージなどもよくわからない振る舞いをしていて複数の compose.yml で制御するのは断念した。dry の原則に反して設定は重複するけど、それぞれの環境を個別に compose.yml として管理した方が保守コストは小さくなると私は判断した。複数の compose.yml の使い分けのデバッグを1-2日やった後に諦めてテスト環境の構築は完了した。

年金事務所の住所変更手続き

先週 法務局で法人登記の変更申請 をしていて、そのときに問題がなければ今日から登記事項証明書を取得できると案内をもらっていた。決定書が漏れていて再提出というトラブルはあったものの、最小限の損失で留めたせいか、問題なく登記事項証明書を発行できた。住所の変更だけわかればよいので履歴事項証明書ではなく現在事項証明書を発行してみた。この書類もおもしろくて1つ前の住所といまの住所の2つを確認できる。法務局へ行った帰りに年金事務所へ立ち寄って社会保険の住所変更の手続きを行った。次の3つの書類をもって窓口へ。

  • 登記事項証明書: 番地まで記載されている
  • オフィスの一時使用契約書: ビル名はあるがこのビル名は来月に改名
  • ビル名変更の証明書類: ビル名の変更のみが記載されている

この3つの書類で完全に指定された住所 (Fully Qualified Address: 造語) を丁寧に説明したところ担当者に納得してもらえて事なきを得た。

休日のオンライン学習

0時に寝て夜中に吐き気がして2回ほど起きて3時と5時に起きて8時に起きた。なかなか苦しい寝方をした。

ヤフートラベルと一休.comのシステム統合

アーカイブ公開されたらみようと思いつつ忘れてたので見返した。

雑なめも。また機をみて見返すこともあるかも。

  • バックエンドは完全に一休側に寄せるという大きな意志決定を2016年に行った
    • この意志決定はフロントエンド統合にも大きな影響を与えた
    • ふじもんさんの意志決定がよかった?
  • 今日の話しはマルチブランドデザインシステム統合がメイン
    • 開発者が50-60人程度で半年ぐらいで launch できた
    • nuxt/vuejs で開発している
    • スタイルは tailwindcss を使っている
    • 実は launch した後にこのシステムが必要だとわかった
      • 開発者とデザイナー間の細かい意思疎通が困難
      • 外部からデザインシステムに詳しい人にも来てもらっていろんな議論をした
      • ガイドラインを言語化するところから始め、最終的にソースコードの共有ができるようになった
    • 終わってからデザインシステムそのものは重要ではないと気付いた
      • この過程で開発者とデザイナー間のどのように共通化するか、あるいはしないかと議論を繰り返し行ったことが重要だったと当事者がインタビューで語っていた
      • デザインシステムの開発を通じてデザインの共通認識をもてたことがよかった
  • 波及効果
    • 同じソースコードから少し異なる体験の開発のノウハウができた
    • ふるさと納税に特化した宿泊予約サイトを作った
  • 統合は終わりではない、lauch したところが始まり
    • 統合後にいろいろな施策をすることで課題がみえてくることがある
  • 全国旅行支援は1つの開発で2つの体験をつくることができた
  • Q. デザイナーと開発者はわりと仲が悪いのでは?価値観や考え方が異なるのですり合わせるのは難しいのでは?
    • 過去の一休でも起きていた
    • 一休のチームはデザイナーと PM と開発者で構成されている
      • このチームが一緒に働いていてチームでなるべく意志決定している
      • 普段から一緒に働いていると仲が悪いということはなかった
      • とはいえ、仕事のプロセスが異なるので課題はあった
        • 地道に丁寧にすり合わせを行った
        • 外部から講師を読んで中立的な立場でワークショップを何度も行った
    • デザイナーと開発者を別の組織にしているとコミュニケーションの壁ができてしまうかもしれない

go の学び直し

テストの学び直し に引き続き、Gopher塾 #2 - Goらしいコードの書き方 - DAY 1 に参加した。

テストの次のプログラミングの話しだったので内容そのものは難しくはなかったけど、改めて重要な項目を選抜しているのだと考えると学びはあったと思う。参考になったことをいくつか覚えている範囲でまとめる。名前の付け方について感覚的に理解していたし、実際に私はそうしているけど、コードレビューしていて自然になっていないコードを指摘する機会も多いので一定の習熟を要するのかもしれない。いま毎週勉強会をやっていて私が講師として話している。ネタがなくなってきたり大変になったきたら準備の少ないコードリーディング会もやってみたいと思った。

  • google Go Style
  • derrors.Wrap
  • 名前に文脈を与えるという概念
    • 相対的な名前をつける
  • 準備の少ないコードリーディング会
    • お題(読むパッケージ)を決める
    • 選んだお題に期待することを当日話す
    • 時間を決めてみんなでそれぞれ読む(20分とか)
    • 読みながらSlackのスレッドにメモをしていく
    • 残りの時間で気になったところを議論する
    • 自分が気づけなかった点を知ることができる

openapi-ext-tools をまた使う日がきた

0時に寝て4時に起きて7時に起きた。わりとよく眠れた。

ストレッチ

トレーナーさんと月曜日の日本対クロアチア戦の感想を話したりしていた。今日の開脚幅は開始前153cmで、ストレッチ後156cmだった。先週は疲弊と疲労で散々な数値になっていたものが復調してきつつある。今週も毎日8-22時はオフィスで缶詰め状態だった。たくさん座っている (同じ体勢でいる) 時間が増えると筋肉にはよくない。まだまだ右腰と右太もも周りの張りは強く復調にはもう少し時間がかかるようにみえる。一方で忙しさのピークを越したと思うので今週以降は少しペースダウンしながら体作りをしていく。いまお手伝いしている開発は12月にすべての集中力を費やしてもよいと考えている。残りは期間はメンバーに委譲するような体制になるとベストかもしれない。そのための体力づくりは重要。

openapi-ext-tools 再び

github pages ならぬ gitlab pages がある。ふと web api のドキュメントを作るために openapi のスキーマを定義したら gitlab の ci/cd と連携できていいんじゃないかと思い付いた。スキーマがあればフロントエンドのクライアント生成や e2e テストコードの自動生成などに使えるかもしれないし。過去に作った openapi-ext-tools を oss にしておいたからいまも使える。oss 万歳。先のことはわからない。redoc を使ってちゃっちゃと実装した。

pages:
  only:
    changes:
      - schema/*
  stage: deploy
  image: alpine:latest
  before_script:
    - apk --no-cache add python3 nodejs npm
    - python --version
    - python -m ensurepip
    - pip3 --version
    - node --version
    - npm --version
    - npm install --global redoc-cli
    - redoc-cli --version
    - pip3 install openapi-ext-tools
    - pip3 freeze openapi-ext-tools | grep openapi
  script:
    - openapi-spec-cli --spec-path schema/openapi.yml
    - |+
      redoc-cli bundle bundled_openapi.yaml \
        --output index.html \
        --options.expandResponses=all \
        --options.requiredPropsFirst=true \
        --options.jsonSampleExpandLevel=10 \
        --options.hideLoading=true \
        --options.pathInMiddlePanel=true      
    - mkdir -p public
    - mv index.html public/
  artifacts:
    paths:
      - public

久しぶりに触ったら openapi-ext-tools が依存ライブラリの変更で動かなくなっていたので直した。