svelte のチュートリアルで学ぶ

22時頃から寝てたものの、また2時頃に吐き気で苦しんで何度か起きて7時過ぎに起きた。なかなか体調が悪い。

隔週の雑談

顧問のはらさんと隔週の打ち合わせ。今週はてんやわんやで議題を整理する余裕すらなかったので近況を軽く共有した。

課題管理を it 業界や開発プロジェクトだけでなく、もっと様々な分野や業界で応用できるようにしたい。最初は私がノウハウをもっている業界や業務のみに特化したものになるだろうけど、いずれはスコープを拡げていきたい。その先に 地域おこし協力隊 のようなところにいって社会貢献ができればおもしろいのではないかといった話しをした。地域おこし協力隊の内容はおもしろそうだけど、1人あたりの経費の上限が480万円に設定されていて、ググって調べると余裕のない自治体では満額支給されていないケースもあるみたい。行政がやらないといけない業務をアウトソーシングする予算が低過ぎて、適切な実績やスキルをもった人が経済的に参加しにくい状況にある。採用の目利きができないから単価を低くして失敗を許容しやすくなっているようにもみえる。行政の予算が低い問題は専門家が入って採用も含めて改善していく必要がある。

svelte 入門

昨日の続きで svelte のチュートリアル を始めた。このチュートリアルはファイル操作とオンラインエディタもついていて、ソースコードを変更するとすぐビルドされて結果も確認できる。フロントエンドのチュートリアル自体がフロントエンド技術のデモになっている。よく作られているよなと感心しながら取り組んでいる。svelte でスクリプトを書くときの、マジックコード的な変な構文がある。simple is not easy の文脈で言うところの easy であり、私のような simple 派からみるとやや気持ち悪い。わりと分量があるので途中にコードレビューや勉強会の講師をやっていたら1日では終わらなかった。

let count = 0;
$: doubled = count * 2;
<script>
  export let answer;
</script>

next.js のチュートリアルで学ぶ

2時に寝て5時に起きて7時半に起きた。疲れてからわりと眠れた方かも。いまの働き方だと木曜日がもっともストレスの低い日になっている。定例会議がない。今週やらないといけないお仕事も次の金曜日があることでまだ時間があるから安心みたいな話し。

next.js 入門

next.js のチュートリアル を一通りやってみた。2年ほど前にちょっとだけ next.js で開発していたプロジェクトのソースを読んだことがあったので雰囲気は少し覚えていた。チュートリアルは react のことを何もわからなくても next.js の機能や特徴を理解できるような構成になっていて感心した。チュートリアルから学んだことはこれら。関連ドキュメントを読みながらでも1日もあれば終わると思う。

  • コードは分割されてコンパイルや pre-fetch が行われる
  • Image コンポーネントを使えば画像の最適化を自動で行う
  • CSS Modules を使えばコンポーネントレベルのスタイルを定義できる
  • ページ単位に pre-rendering できる
    • 静的生成 (ssg)
    • サーバーサイドレンダリング (ssr)
  • pre-rendering が不要ならクライアントサイドレンダリングすればよい (csr)
  • 動的ルーティングや bff のための api エンドポイントは動的に振る舞う
  • デプロイは基本的に node.js を必要とする

課題管理の話題で発散

0時に寝て何度か起きて7時に起きた。だいぶ眠れるようになってきた。

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

月例のカフーツさんのオンラインイベントに参加した。先月の所感はここ 。来年やりたいことというテーマだった。来年の抱負というほど堅苦しいわけではないが、それぞれの参加者別にやりたいことをわーっと話すようなイベントだった。私は課題管理について軽く話し始めたらいとうさんが深堀りしてくれて、参加者からも共感を得られてそれなりに盛り上がった。自分が参加したイベントの録画を見返すことを私は滅多にしないのだけど、今回は話した内容を整理するために見返した。

課題管理という分野の体系化、ならびにプラクティスの整備をしたい

ざっくり話した内容はこんな感じ。

  • 課題管理を追求していくにはメンバーに強制・指示できるだけの権限が必要となる

    • ボトムアップで課題管理を実践するのは難しい
    • 課題管理の実践のために人の運用を変えないといけない場面が出てくる
  • 私は it 業界のプロダクト開発における課題管理のノウハウしかない

    • 複数の組織・チームで働く過程で課題管理ができていない、または課題管理システムを使いこなせていない開発者やチームがたくさんあることを知ったのが背景になる
  • 本質的には、課題管理自体は業界・業種を問わない分野だと思うので広く応用できるプラクティスとして体系化したい

  • 課題管理とは、ハウツー本を読んだり、ツールを導入すれば解決する類のものではない

    • それぞれの目的のためにメンバーが日々の業務において運用していく必要がある
    • メンバー全員が運用しなかったら効果もその度合いに応じて減っていく
      • 権限が必要というのは、やらない人に対してある程度はやってもらう必要があるから
  • 課題管理をうまくやろうとすると、組織論や組織の文化、マネジメントの分野とも密接に紐づく

  • 課題管理と密接な分野の1つに情報共有がある

    • 情報の一元管理は組織において重要なのに疎かになっている組織やチームは多い
      • 一元管理できると情報共有のためのコミュニケーションコストを削減できる
      • このためには組織レベルで使うツールや情報共有のやり方を統一しないといけない
        • 自分の好きなツールを使って自由に情報共有するといったものをいくらか制限する必要がある
  • 課題管理において重要なことの1つに文章を書けない人たちが一定数いることを受け入れないといけない

    • 情報共有の文脈で言えば、テキスト化は検索できるという大きなメリットをもたらす
    • 一定数の文章を書けない人たちをどう対応するかは難しい課題の1つ
      • 文章を書くための練習をすればよいのではないか
        • 新人やキャリアの浅いメンバーには有効となる
      • 文章を書かなくても情報共有できる手段と組み合わせるとよいのではないか
        • it 業界ではスクラム開発という開発方法論が流行っている
          • 大雑把に言えば、対話を重視して会議をたくさん設けることで情報共有を密にする開発方法論と言える
            • 文章を書けない人であっても話せない人はほぼいない
            • 対話を促されれば話すことで情報共有できる
          • デメリットとしてはコミュニケーションコストがとても高い
            • このコミュニケーションコストは開発における生産性とトレードオフになる
  • 課題管理において重要なことのもう1つに文章を読めない人たちも一定数いる

    • 日本人の1/3は日本語が読めない?PIAAC (国際成人力調査) の調査結果
    • 文章を書いてメンバーに読んでおいてと伝えても1/3は理解できていない可能性を示唆している
      • 情報共有において文章を書いても伝わっていない可能性を考慮して対策する必要がある
  • 仮に情報共有できていない状態でメンバー「わからない」と言えることはすごく重要になる

    • この文脈で心理的安全性が重要になる
    • 「わからない」と声をあげてくれることで文章や伝え方を改善していける可能性がある
  • 実は一昔前と比べて、いまの方がメンバー間の情報共有を疎遠にしている背景がある

    • いまは情報共有にクラウドサービスを使う組織が増えている
      • 基本的にクラウドサービスはユーザー単位/従量制で課金される
        • あまりサービスを使わないユーザーアカウントを減らすことでコストダウンできるインセンティブが働く
          • 情報共有という視点からコストダウンしてはいけないコストを削ってしまっている
            • 例) 課題管理システムのアカウントは開発者しかもっていないとか
      • 中小規模の会社ほどクラウドサービスを多用するのでこの傾向がある
    • 昔はオンプレで社内システムを管理していたため、システムのユーザーを減らすインセンティブはなかった
      • 要否に関わらず、社員は全員アカウントをもっていることが当たり前だった
    • 念のため、クラウドサービスのアカウントをメンバー全員がもつことは目的ではない
      • アカウントをもった上でそのメンバーがそのサービスを使うように運用を変えていく必要がある
      • システム投資とメンバーの運用を変える取り組みがセットでないとうまくいかない
  • コワーキングスペースは課題が持ち込まれるところではある

    • 課題管理のプラクティスが応用できるなら使いたい
    • 課題をどう整理して、優先順位を付け、情報共有していくかは難しい
    • 様々なメンバー、様々なツール、様々な課題を同じツールで一元管理することは非常に難しい
      • どうやって情報の一元管理をするかはコワーキングスペースの運営において難しい課題でもある
        • 複数のサービスを連携するサービスなどを使って一元管理する方法もある
      • 海外ではコワーキングスペース向けの sns も含めたプラットフォームサービスなども出始めている
        • 日本ではまだまだあまりシステム化されておらず、導入もされていないのではないか
  • コワーキングの分野では女性がとても活躍しているように、いとうさんから見えている

    • 今後もこの分野を盛り上げていくのは女性ではないか?
      • 男性は変なプライドが邪魔して行動力を抑制してしまうところがあるのではないか
      • 女性は損得勘定から行動力を発揮しているのではないか
        • 男性の方が感情的な動機でコワーキングをしているようにみえる?
  • コワーキングに課題管理の理論やシステム化はあってよいのではないかと、いとうさんはみている

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

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

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. メッセージ照会や受付状況照会で内容を確認

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