くりにっき

フルスタックキュアエンジニアです

自分がメンテしてるgemをほぼ全部GitHub Actionsからリリースできるようにした

きっかけ 参考にしたドキュメント 参考にした設定 実際にやったこと .github/workflows/release_gem.yml を追加 リポジトリにEnvironmentを追加 rubygems.orgでTrusted publishersを追加 gemリリースの流れ Before After rubygems/release-gem を導入できな…

Bundler v4.0.0でGo gemを作れるようにした

前置き Before my PR(~bundler v3系) After my PR(bundler v4系~) go-gem-wrapperについて Go gemやgo-gem-wrapperのもっと詳しい技術的な話について 大変だった思い出 Windowsの時だけなぜか特定のテストがハングする Windowsでのビルドが1時間くらい…

#fukuokark05 で不採択だったプロポーザルを公開します

tl;dr; プロポーザルを書く前に考えたこと 実際に出したプロポーザルの内容 タイトル トーク概要 トーク詳細 アピールポイント 結果 tl;dr; 一句タイトルをどうしても見てほしかった プロポーザルを書く前に考えたこと 下記は今回のプロポーザルの応募フォー…

GitHub Actionsでsubmodule更新時のみjobを実行したい

背景 解決方法 背景 PRで特定のファイルが変更されたときだけjobを実行したいworkflowがあるとします。 name: "workflow for sub_dir" on: push: paths: - "sub_dir/**/*" 同じリポジトリでこういうsubmoduleがあるとします。 $ cat .gitmodules [submodule …

OSS開発の刺し身タンポポ作業を解消するためにsashimi_tanpopoを作った

gem

sashimi_tanpopoについて なぜ作ったか 作る時に考えたこと 採用言語について Itamaeを使うかどうか 1. オーバースペック 2. Itamaeは動的にパラメータを設定できない Itamaeとの差分 glob対応 実行時引数で渡せるようにした その他の工夫ポイント レシピフ…

Go Conference 2025に参加した #gocon

参加してきました。Proposal落ちたので一般参加です。 gocon.jp 気になったセッション サプライチェーン攻撃に学ぶmoduleの仕組みとセキュリティ対策 Go で WebAssembly を利用した実用的なプラグインシステムの構築方法 analysis パッケージの仕組みの上でM…

「ペパボ & GO 〜 夏のGo祭り2025、あの夏〜」でLT登壇した #gogopepabo

pepabo.connpass.com 自分の名前がGoなので登壇しなければ(使命感)という気持ちになってLTしました。 Go(言語)の勉強会でGO(株式会社)の人がいる前で「Go(自分の名前)歴43年です」って自己紹介したのが一番の面白ポイントです。 Go歴43年やばい!! …

gitlabci-bundle-update-mrでCI/CD componentを提供するようにした

前置き CI/CD componentというのはこれのこと。 docs.gitlab.com GitLab CIでは昔からリポジトリの外部のファイルをincludeしてjobとして利用できる機能があって、 https://gitlab.com/sue445/gitlabci-bundle-update-mr でも https://gitlab.com/sue445/git…

自分がメンテしてるDockerイメージをslimに移行した

タイトルが全て 経緯 やったこと 結果 経緯 勢い やったこと ruby:3.4 を使ってるリポジトリでベースイメージを ruby:3.4-slim に変えた。 github.com github.com 結果 push後のサイズが半分くらいになっていい感じ もっとDockerイメージダイエットを頑張る…

Twilogのデータをアーカイブから復旧した

背景&前置き tl;dr; 自己紹介 2025-08-13 20:17:Xでアーカイブ作成開始 2025-08-14 17:17:アーカイブ作成が完成したのでTwilogにアップロード開始 2025-08-14 18:22:04:Twilogで圧縮解凍処理完了 2025-08-15 15:33:09:Twilogでインポート完了 背景&前…

Terraformでエスケープさせずにダブルクオーテーションを含む文字列を書く

前提 方法1. ヒアドキュメント 方法2. ヒアドキュメント + chomp 前提 こういうやつ。 json = "{\"key\": \"value\"}" 余計な文字が入ってるとミスるのでもうちょっと見やすく書きたい。 Rubyであればこういう場合 ' (シングルクオーテーション)が使えるん…

関西Ruby会議08に参加した #kanrk08

regional.rubykaigi.org 今回はプロポーザルが不採択だったので一般参加です*1 参加しようと思ったきっかけ 関西Ruby会議08 トークの感想 「1ヶ月でWebサービスを作る会」で出会った rails new、そして今に至る rails new Rubyを使った10年の個人開発でやっ…

GitLab client-goにパッチが取り込まれた

GitLab client-go(GitLab APIのGoクライアント)に僕が投げたパッチがいくつかとりこまれたので紹介 gitlab.com 1つ目のパッチ:Add gitlab.WithRequestRetry to retry with any status code 2つ目のパッチ:Fixed HTTPClient in retryablehttp.Client not …

zatsu_monitor v2.0.0, tanuki_reminder v1.0.0をリリースした

それぞれ内部で使ってるYAMLのライブラリを差し替えたことによるメジャーバージョンアップ https://github.com/sue445/zatsu_monitor/releases/tag/v2.0.0 https://gitlab.com/sue445/tanuki_reminder/-/blob/master/CHANGELOG.md#100 元々 gopkg.in/yaml を…

関西Ruby会議08の不採択Proposalを公開

前置き Title Abstract Details 2019/08: なにもなかったサーバサイド 2020/02: AppEngine 2021/01: Heroku 2022/09: Cloud Run Functions 2022/09: Doorkeeper APIを直接呼ぶようにした 2024/05: Connpass API v1の仕様変更 2025/04: Connpass API v2への移…

x_post_sanitizerというgemを作った

x_post_sanitizerとは モチベーション x_post_sanitizerとは github.com Xのポストに含まれる t.co のような短縮URLを展開したりその他いい感じにするgemです。 だいぶ前に作った https://github.com/sue445/tweet_sanitizer の後継にあたります。 sue445.ha…

rspec-parameterized v2.0.0をリリースした

gem

github.com https://github.com/tomykaira/rspec-parameterized/blob/master/CHANGELOG.md#v200-2025-05-02 主な変更点 https://github.com/whitequark/parser がRuby 3.4以降では積極的にサポートしないようです。 *1 そのため、Ruby 3.4以降では https://g…

荷物ストラテジー

前置き 基本戦略 持ち物チェックリスト 説明 薬 ウエストポーチ マイバッグ 栗アイコンシール タオル 痛バ(痛バッグ) ぬい(ぬいぐるみ) 前置き 先人たちに影響されたので書きました。(RubyKaigiに限ったことじゃないのであえてタイトルにRubyKaigiはつ…

YARDで継承関係を明示的に伝えたい

こないだgemを作ってて調べたやつのメモ。 前置き 解決方法:@!parse で書く 前置き 例えば下記のように Hashie::Mash を継承した Pixela::Response があるとします module Pixela require "hashie/mash" # Pixela API response # # @see https://www.rubydo…

地域.rbカレンダーをconnpass API v2に移行した

先日作ったgemを使って移行しました sue445.hatenablog.com github.com モチベーション ハマったこと:Serverless VPC Connector削除後にVPCがなかなか消えなかった モチベーション 費用面が大きかったです。 下記でも書いたようにconnpass API v1では送信元…

connpass API v2に対応したAPIクライアントgemを作った

前置き 作ったもの:connpass_api_v2-ruby 使い方 前置き 先日connpass API v2が発表されました。 【お知らせ】connpass API をメジャーバージョンアップし、「connpass API v2」を公開しました。APIの詳細な仕様や利用方法につきましては、以下のAPIリファ…

自分がメンテしてるRuboCop gemをPluginに移行した

RubyKaigiの自分の発表*1の準備がだいたい終わったので、 id:koic さんの記事を読んでRubyKaigiの予習がてら自分がメンテしてるRuboCop gemをPluginに移行しました。 koic.hatenablog.com github.com github.com Migration Guideを見ながら作業するだけだっ…

RubyKaigi 2025 Mapを作った #rubykaigi

RubyKaigi 2025 関係のPartyが多すぎて把握しきれなくなったので自分用にGoogleマイマップにまとめました。(Day0〜4のイベントはだいたい網羅してるつもり) 記事執筆時点でまだ全部のPartyが公開されてないので気づいたら追加していきます。 ブラウザで3rd…

GitHub Actionsでmatrixを共通化する

前置き tl;dr; 解説 動的にmatrixを生成する JSON文字列からmatrixを生成する 前置き GitHub Actionsではworkflowのyamlファイルに下記のように jobs.<job-id>.strategy.matrix を書くことでmatrix buildを作ることができます。 *1 # .github/workflows/build.yml jo</job-id>…

go-gitlabが GitLab.com に移管していた

前置き 雑に置き換えるコマンド 前置き 個人OSSに入れてるdependabotでmoduleをアップデートしてたらgolangci-lintでこういうwarningが出ていたので気づいた。 *1 Running [/home/runner/golangci-lint-1.60.3-linux-amd64/golangci-lint run] in [/home/run…

自作gemでモンキーパッチrbsを利用する

コンテキスト 構成 手順 モンキーパッチrbsを使うメリット 最後に 2024/12/05 20:27追記 コンテキスト 僕が直近2〜3年以内に新しく作ったgemでは全てrbsとsteepを導入してガッツリ型を書いています。 しかし自分のgemのrbsは書けても、自分のgemが依存してい…

AWSのTerraformでDynamoDB state lockingからS3-native state lockingに移行する

前置き 手順 Terraformのbackendを書き換える Terraformで使ってるIAMユーザやIAMロールがterraform.tfstate.tflockにアクセスできるようにする この時点でTerraform実行時にDynamoDBが不要になっているはずなのでTerraformを実行する 問題なければTerraform…

Go 1.23でgo.modにtoolchainを書かなくてよくなった

tl;dr; ~Go 1.20 Go 1.21~1.22 Go 1.23~ tl;dr; タイトルが全て ~Go 1.20 go.modに go 1.20 のようにマイナーバージョンまで書いていてもDependabotでエラーが起きませんでした。 Go 1.21~1.22 go 1.21 のようにマイナーバージョンまで書いていた場合、…

create-merge-requestを作った

これ何? サンプル 頑張りポイント gitコマンドを使わずにgitリポジトリにアクセスした 可能な限りパラメータを省略できるようにした おまけ これ何? GitLab CI上で行った変更をMerge Requestとして投げるためのツールです。(開発期間は1週間くらい) gitl…

terraform-version-updaterを作った

これ何? 最初の構想 GitHub Actionsで動かす これ何? https://github.com/tfutils/tfenv で使われる .terraform-version を自動でバージョンアップするためのツールです。(制作期間2日) github.com 最初の構想 最初は https://github.com/minamijoyo/tfu…