なんでもノート

なんでも書くノートみたいなブログ

2023年振り返り

2023年を振り返る。

目次

仕事

2023年4月までの過ごし方 - なんでもノートにも書いたが、リーダーからメンバーに戻った。

今年はJava・Spring BootでMQコンシューマーやバッチを書いたり、Apache Solrをちょっとだけ触ったり、Kubernetesをちょっとだけ触ったりした。

ゲーム

今年は沢山ゲームをした年だった。どのゲームも夜更かしするぐらい面白かった。

映画

今年は38本の映画を観た。三鷹の森ジブリ美術館に行くために観たジブリ作品13本とハリー・ポッターシリーズが半分以上を占めている。

THE FIRST SLAM DUNKとRRRが面白かった。

買ったもの

ジブリ作品をレンタルDVDで観るためにDVDプレイヤーを買った。MaciPhoneを新調した。

行った場所

ゴールデンウィーク 2023 - なんでもノートにも書いたが、ゴールデンウィークに伊勢を旅行した。

ジブリ作品を観てから三鷹の森ジブリ美術館に行った。絵コンテすごかった。

8月に小樽を旅行した。

11月に6年半ぶりにディズニーランドに行った。アプリのQRコードで入場したり、ファストパスがなくなっていたり、新しいアトラクションができていたりしていろいろ変わっていたが、夢の国は楽しかった。

2024年に向けて

来年も充実した1年を送りたい。

ゴールデンウィーク 2023

今年の自分のゴールデンウィークは4/28〜5/7の10連休だった。会社の祝日振替休日 + 有給休暇を2日取得した。散歩、伊勢旅行、このすば、ジブリ映画という感じだった(他にもしたけれど)。

散歩

船橋西船橋本八幡、市川の駅周辺を散歩した。船橋西船橋間、西船橋本八幡間は電車で移動し、本八幡・市川間は歩いた。ここ数年、行ける距離なのに行ったことがない街があるのは勿体無いと思い散歩をしている。船橋も行ったことないと思っていたが、駅から出てみたら中学生の頃に来たことがあるのを思い出し感慨深くなった。どこも住みやすそうな街だった。

伊勢旅行

伊勢に1泊2日で旅行した。1日目は伊勢神宮の外宮と内宮にお参りし、おかげ横丁に行った。神宮の公式サイトの神宮についてはじめての神宮を読んでから行った。勉強になったしサイトで見た宮だ!となって面白かった。次、他の神社にお参りするときも知識をつけてからお参りしようと思った。2日目は夫婦岩にお参りし、松阪牛のステーキを食べ、鳥羽水族館に行った。ラッコやアザラシなど可愛い動物が沢山いて、スナドリネコがとてもカッコよかった。

神宮内宮

おかげ横丁のふくすけの月見伊勢うどん

夫婦岩

鳥羽水族館のスナドリネコ

このすば

今、この素晴らしい世界に爆焔を!のアニメが放送されている。自分はdアニメストアで観ている。アニメを観て、このすばをもっと見たくなったのでラノベKindle版を買って読んだ。8巻から17巻(本編最終巻)まで読んだ。面白かったの一言に尽きる。

ジブリ映画

ラピュタもののけ姫を見た。どちらも今まで観たことがなかった。金曜ロードショーがお風呂の時間に被っていたのと流体が苦手でジブリ映画は観てこなかった。重い腰を上げてGEOの会員登録をしてゴールデンウィーク最終日に滑り込みで観た。どちらも面白かった。ラピュタTwitterでしか見たことなかったバルスを聴けてよかった。アシタカかっこいい。やはりタタリ神の流体が苦手だった。次はナウシカ千と千尋の神隠しを見る予定。

2023年4月までの過ごし方

Romeを使ってみたからしばらくブログを書いていなかった。もう少し頻度高く書けるようにしたい。

比較的大きな変化や出来事はなかったので過ごし方というタイトルにした。

  • 色々な技術のドキュメントを読んだり、触ったりした
  • 技術書を読んでいた
  • 仕事でリーダーからメンバーに戻った
  • 会社の同期の結婚式と会社の同期の結婚式の二次会に出席した

名前は聞いたことあるけど何なのか知らないフロントエンドのツールが多かったのでドキュメントを読んだり、触ったりしていた。具体的には以下。

  • Vite
  • Vitest
  • esbuild
  • SWC
  • Parcel
  • pnpm
  • MSW
  • Puppeteer
  • Playwright

また、GoとRustでLeetCodeを解いたり、簡単なコードを書いたりもしていた。

技術書は以下を読んだ。

読み終えたが、読み終えることを意識しすぎて内容が頭に定着していない感が否めないので、最近反省している。

仕事ではリーダーからメンバーに戻った。1年間と短い期間だったがとても勉強になり、貴重な経験をさせてもらえたことに感謝しかない。一方でまだまだ手を動かして開発したい、技術力を高めたいという気持ちが強くあることに気づき、メンバーに戻ることにした。

2人の会社の同期の結婚式と結婚式の二次会に招待していただき、出席した。友人の結婚式に出席するのは初めてだったので持ち物や服装などソワソワした。どちらも楽しく素敵な結婚式、二次会だった。

その他、友人とご飯を食べたり、散歩したりもした。こんな感じに過ごしていた。

Romeを使ってみた

Rome という開発ツールを使ってみた。RomeはRome1つでフォーマットやlintなどができる統合開発ツールを目指していて、2023年1月現在はフォーマッターとLinterがリリースされている。そのフォーマッターとLinterを使ってみた。最近開発しているChrome拡張にPrettierとESLintを入れてなかったので代わりにRomeを導入してみた

やったこと

  • Romeのインストール
  • Romeの設定
    • pnpm rome init + インデントスタイルの変更
  • VSCode拡張機能の設定
  • npm scriptの設定

感想

  • コードベースが小さいので参考にならないかもしれないが確かに速い(Rustで作られている)
  • 1つのパッケージをインストールするだけでいいのは簡単だった
  • Lintのルールはプラグインで拡張できるESLintの方がまだまだ豊富
  • プラグイン機能がないので拡張したい人にとっては物足りないかもしれない
    • ツールの設定に時間をとられないようにあえてないのかもしれない

2022年振り返り

2021年振り返り

2022年も振り返る。2022年7月末までのトピックの内容を含んだ振り返りになる。

去年の今頃と比べて部屋の環境が大きく変わった。暮らしやすく仕事しやすくなった(はず)。

今年は旅行に行けたのも良かった。

技術書を紙書籍で買うようにしてからインプットが増えた。その代わりアウトプットが少なくなってしまったので来年はバランスに気をつけたい。

来年も充実した1年を送りたい。

GitHub ActionsからGitHubへpushできないエラー

GitHub Actionsで以下のエラーが出た。

Push the commit or tag
  /usr/bin/git push origin master
  remote: Permission to azujuuuuuun/azujuuuuuun.github.io.git denied to github-actions[bot].
  fatal: unable to access 'https://github.com/azujuuuuuun/azujuuuuuun.github.io.git/': The requested URL returned error: 403
  Error: Action failed with "The process '/usr/bin/git' failed with exit code 128"

権限がなくGitHub Actionsからpushが拒否されたよう。直前のPRで権限を変更したので心当たりがあった。

https://github.com/azujuuuuuun/azujuuuuuun.github.io/blob/d38acc9466d01ec004d861427e285597055db0a4/.github/workflows/continuous-delivery-workflow.yml#L13-L15

    permissions:
      contents: "read"
      id-token: "write"

このpermissionsはgoogle-github-actions/authを元に設定した。Assigning permissions to jobs - GitHub Docsによると

これらのスコープのいずれかのアクセスを指定した場合、指定されたなかったものはすべてnoneに設定されます。

だそうだ。つまり、このpermissionsの設定によってどれかのスコープにnoneが設定されて書き込み権限がなくなったか、contents: "read" によって書き込み権限がなくなったかのどちらかが原因だとわかった。

スコープと対応するアクセス権限はPermissions required for GitHub Apps - GitHub Docsにあった。Git操作のアクセス権はcontentsスコープだったので contents: "write" に変更したら解決した。

GitHub ActionsからGoogle Cloudに認証する

GitHub Pagesにはてなブログの最新記事を表示する - なんでもノートGitHub ActionsからGCSへの認証に困ったと書いた。詳細をこの記事に書く。

前回の記事ではGCSにアップロードしたJSONを取得し、そのJSONに入っているブログの最新記事を表示した。JSON取得にCloud StorageのNode.js Clientライブラリを利用した。

サービスアカウントを利用した認証

Cloud Storage client libraries  |  Google Cloudの順に沿ってセットアップを進めた。

  1. サービスアカウントを作成
  2. サービスアカウントにGCSの読み取りロールを付与
  3. サービスアカウントキーを作成し、JSONファイルをダウンロード
  4. 環境変数 GOOGLE_APPLICATION_CREDENTIALS に3でダウンロードしたクレデンシャルファイルのパスを設定

これでライブラリが環境変数に設定したパスからクレデンシャルファイルを読み込み、よしなにGoogle Cloudと認証を行ってくれるようになった。ローカルで認証できるようになったが、GitHub Actions上で認証するにはどうしたらよいか。Next.jsのgetStaticPropsでStatic Site Generationをしているので、GitHub Actionsでのビルド時にJSON取得、認証が行われる。GitHubGOOGLE_APPLICATION_CREDENTIALS で検索したら、以下のコードがあった(一部省略)。

https://github.com/Gradder-Official/gradder_main/blob/a00b4030e20119ab91dc73df33361f030e21708f/.github/workflows/deploy.yml#L23-L30

      env: 
        GOOGLE_APPLICATION_CREDENTIALS: key.json
      run: |
        echo -n '${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }}' > key.json

GitHub Actionsのシークレットにクレデンシャルファイルを保存しておいて、ジョブの実行時にファイルに書き出すというものだった。自分も考えはしたが、間違えてファイルの中身がログに出力されないか不安があったのでもう少し調べた。

Workload Identity 連携

調べたところ以下のブログを見つけた。

cloud.google.com

  • サービスアカウントキーより認証情報の有効期限を短くでき、不正利用時間が短くなる
  • サービスアカウントキーより管理コストが小さい
  • サービスアカウントより詳細な権限管理ができる

というものだった。また、authというGitHub Actionで簡単に認証ができそうだった。Workload Identity連携の方がサービスアカウントより総合的に良さそうだったので利用することにした。

Configure workload identity federation with AWS or Azure  |  IAM Documentation  |  Google CloudConfigure workload identity federation with AWS or Azure  |  IAM Documentation  |  Google Cloudに沿って、以下の設定をした。

また、GitHub Actionsのワークフローにauth GitHub Actionのstepを追加した。必須パラメーターの workload_identity_providerservice_account を設定した。create_credentials_file パラメーターがデフォルト true で設定されていて、Clientライブラリで利用するクレデンシャルファイルを生成してくれる。また、cleanup_credentials パラメーターがデフォルト true で設定されていて、ジョブ終了時にクレデンシャルファイルを削除してくれる。

これでGitHub ActionsからGoogle Cloudに認証することができるようになった。

感想

どうするのが良いかわからなかったので困ったが、無事に解決できてよかった。Workload Identity連携はまだ理解がふわふわしているので醸成したい。