2024年を振り返る

今年の目標とその結果

社内でのグレードを上げることと、会社関係で何かに載ることを目標にしていた。どちらも達成した。後者は以下二つ。

仕事

今年から役割が変わり、自分が好きな系統の仕事を担当させていただいている。こういうのはタイミングだったり巡り合わせが大きいと思うのでやれるうちは集中してやろう。

登壇

2020年から目標としていた、iOSDC Japanへの登壇が出来た。仕事の話もできた。

運動

週単位で歩行距離の目標を立てて散歩をした。以下は直近四年の一日の平均歩数。歩数としては右肩上がり。

2021å¹´ 2022å¹´ 2023å¹´ 2024å¹´
1772æ­© 1978æ­© 2049æ­© 2711æ­©

人生

社会人生活で一番波が激しかった。なるようになるさ。

来年

目の前のことに全力を出し続ける。時々、休憩しながら。

CHANGELOG.mdの変更をRSSフィードに流すツールを書いた

この記事は はてなエンジニア Advent Calendar 2024 の19日目の記事です。昨日は id:ergofriend さんによる WebXRでWeb小説サイトのVR対応に夢をみた - kasu.log でした。

書いたもの

github.com

使い方

ルートのYAMLに変更を追いたいファイルのリンクを書くと、GitHub Actionsが定期的にRSSフィードを作ってくれる。

items:
  - link: https://github.com/swiftlang/swift/blob/main/CHANGELOG.md
  - link: https://github.com/swiftlang/swift-package-manager/blob/main/CHANGELOG.md

あとは、生成されたRSSフィードをRSSリーダーで購読するのみ。rawを登録するのはやや乱暴かも。

https://raw.githubusercontent.com/tokizuoh/changelgo/refs/heads/main/generated/swiftlang-swift-package-manager-rss.xml

モチベーション

swiftlang/swift のリリース情報を追うために書きました。このリポジトリでは定期的に自動リリースが行われており、GitHub Releases に詳細情報が記載されていません。

github.com

CHANGELOG.md に詳しめに書かれている。

github.com

実装

シンプルです。

  1. YAMLを読み込む
  2. リポジトリ名やファイル名などを抽出する
  3. GitHub GraphQL APIを使ってファイルのコミット履歴を取得する
  4. RSSフィードを作成する

3までをツールとして配布して、4の作成先は別リポジトリにすると綺麗かもしれません。

最初は第一言語であるSwiftで書いていましたが、ローカルファイル取り扱いのAPIを含むSDKを手元の環境とGitHub Actions上で合わせるのが面倒でゴール直前でやめました。

github.com

Goは前まで少し書いていて今回くらいの規模ならサッと書けるため使いました。エラーの扱いに迷い無く書けて好きな言語です。もっと書いて収入を得るところまで行きたい。(唐突)

おわりに

半分実用目的、半分アドベントカレンダー用に書きましたが、便利で日常的に使っています。日常生活に溶け込むツールを作るのが目標です。x-motemen/ghqやpokutuna/chrome-cocopyがお気に入りです。明日は id:KashEight さんです。

SwiftUI View 素振り

id:maiyama4 さんの SwiftUI の Text がなぜか省略されてしまう問題とそのレイアウトプロセスのデバッグ - maiyama4's blog で紹介されている Thinking in SwiftUI を読み終えたので、今まで使ってこなかったAPIを使ってSwiftUI View素振りをする。

前回

tokizuoh.hatenablog.com

開発環境

> xcodebuild -version
Xcode 16.1
Build version 16B40

題材

以下の中央の表示要素。

https://youtu.be/fDTkgTGyK9A?t=87

動画より、文字ごとに .bottom から拡大・縮小アニメーションをしているようだ。背景のオレンジグラデーションは部分的な角丸+内側の白枠線があって、少し手強そう。

作ったもの

スクリーンショット

å‹•ç”»

www.youtube.com

コード

gist.github.com

初めて使ったAPI

今まではアニメーションは withAnimation(::)) でしか適用したことが無かった。blendModeはこのブログでは初めて使った。透明度を下げて使わないと馴染まないのがやや罠。それはそうだが。

文字周りのアニメーションはもう少しシュッと書けそう。

部分的な角丸は clipshape(_:style:) で実装できるが、同じ形の白枠線をoverlayさせるのが難しいと感じたのでShapeを書いた。