Diary of a Perpetual Student

Perpetual Student: A person who remains at university far beyond the normal period

Recap 2025

prev:

blog.arthur1.dev

今年は結構色々出会いもありイベントもありで楽しかったんだけど、その分大分メンタル削ってしまった。来年は引きこもりたい。

技術

仕事であんまりエンジニアリングしてないので、あんまり何かを新たに身につけたという感じがしない。

仕事

サブディレクターとして、プロダクトに軸足を置きつつ他部署に片足を突っ込む感じ。テックリードも引き続きやっている。

決断バジェットを消費しすぎて最近は燃え尽きたように仕事をしている。

技術イベント

エンジニア成分が半分になったので登壇も半分になった。異なる業界の方と一緒に登壇する機会を頂けたのはかなり良かった。

  • 【コアスタッフ】PHPカンファレンス小田原2025
  • 【オフライン登壇】Mackerel APMリリースパーティ「アプリケーションの中身が見える!Mackerel APMの全貌と展望」資料
  • 【オンライン登壇】Hatena Engineer Seminar #34 オブザーバビリティの実現と運用編「オブザーバビリティプラットフォーム開発におけるオブザーバビリティとの向き合い」資料
  • 【オフライン登壇】SRE NEXT 2025「OpenTelemetryセマンティック規約の恩恵とMackerel APMにおける活用例」資料
  • 【オンライン登壇】ユーザー体験”の起点となるUXとアプリ開発──トヨタ・Nissan・はてなのプロダクトと開発現場から見える、設計の多様なアプローチ【TECH DRIVERS Day1】「オブザーバビリティプラットフォームの企画からリリースまで──PO・TLから見るMackerelの裏側」資料
  • 【オフライン登壇】大吉祥寺.pm 2025「【実演版】カンファレンス登壇者・スタッフにこそ知ってほしいマイクの使い方」資料
  • 【オフライン登壇】Observability Conference Tokyo 2025「OTEPsで知るOpenTelemetryの未来」資料
  • 【当日スタッフ】PHPカンファレンス福岡2025

旅行

大阪、京都、名古屋、福岡、沖縄あたり。福岡は2回行ったのもあって向こうで顔見知りな人もできていい感じ。また行きます。

沖縄も人生初ダイビングできて相当良かった。

ファッション

買い物としては可愛い靴を買ったぐらい。

髪色は金→赤→ピンク→青。

買い物

一番でかい買い物はDJ機材を一通り揃えたこと。

Switch 2も出遅れつつちゃんと買えました。

住居

変化なし

テーブルゲーム

ポケモンカード。PJCSは4-3。自主大会はいくつかトナメ上がってるけど公式大会は結構微妙、、、来年頑張ろう。

音楽制作

近所のミュージックバーに入り浸るようになって昨年比の30倍ぐらい楽器を弾いた。

DJも始めた。

恋愛

売れ残りを自覚してまた一つ上のステージへ。

音楽鑑賞

blog.arthur1.dev

以下思い出アルバムコーナー

go.modのgo directiveは1つ前のメジャーリリースより最新にしないでほしい

Go言語でOSSを開発しているみなさん、go.modのgo directiveにはどのような値を指定していますか?もしGo 1.25が最新のメジャーリリースである2025年12月現在で

go 1.25.0

と書いているならば、この機会にぜひ

go 1.24.0

に改めてくれないか、という話をします。同じような話はいろんなエントリや登壇で触れているのですが、この話題に主題を絞って解説します。

前提知識

Goのリリースポリシー

Go言語では半年に1回メジャーリリースがやってきます。今年(2025年)は2月11日にGo 1.24.0、8月12日にGo 1.25.0がリリースされています。

そして、security fixなどのサポート対象となるメジャーリリースは新しいもの2つ分となっています。2025年12月現在、サポートされているGoのメジャーリリースは1.24・1.25の2つです。来年2026年の2月にGo 1.26.0がリリースされたら、Go 1.24はサポートが終了するという流れです。

Each major Go release is supported until there are two newer major releases. For example, Go 1.5 was supported until the Go 1.7 release, and Go 1.6 was supported until the Go 1.8 release.

https://go.dev/doc/devel/release#policy

go.modのgo directiveの意味

go.modのgo directiveにはGoのバージョンが指定されます。これは単に使用するGoのバージョンを表すのではなく、そのモジュールが要求するGoの最小バージョンを意味します。

The go directive sets the minimum version of Go required to use this module. Before Go 1.21, the directive was advisory only; now it is a mandatory requirement: Go toolchains refuse to use modules declaring newer Go versions.

https://go.dev/ref/mod#go-mod-file-go

go directiveが新しすぎると起こる問題

さて、冒頭の問題提起である、2025年12月現在において

go 1.25.0

という宣言でどう困るかという話をします。

公式でサポートされているGoのバージョンなのにビルドできない

go directiveはビルド下限を表すので、そこに最新のメジャーリリース系統のバージョンを指定していると、それ未満のバージョンではそのmoduleをビルドできなくなります。そして「それ未満のバージョン」には、Goとしてサポート対象となっている1つ前のメジャーリリースが含まれます。すなわち、まだGo公式によってサポートされているGoのツールチェーンなのにもかかわらず、そのmoduleのビルドには利用できなくなってしまいます。

Go側でサポートされているGoのメジャーリリース2つをそのままサポート対象とするOSSはそれなりに多く見られます*1。例として、opentelemetry-goの互換性に関する記述を挙げましょう:

OpenTelemetry-Go ensures compatibility with the current supported versions of the Go language

https://github.com/open-telemetry/opentelemetry-go?tab=readme-ov-file#compatibility

ここだけ見ると、「いや、このModuleは最新のバージョンしかサポートしないので」というポリシーならば許容できそうですが、実は思ったよりその選択の影響は大きいのです。

依存するGo Modulesの影響を受けてビルドできるGoの範囲が狭まる

先ほどの問題は、goディレクティブが新しすぎるModuleそのもののビルドに留まらず、そのModuleに依存するModuleにも波及します。

外部のGo Modulesに依存したライブラリModuleを作るとします。また、Go言語としてサポートされている2つのメジャーリリースはこのライブラリでもサポート対象とすることにします。

このとき、依存先のmoduleでgo 1.25.5と宣言されているならば、依存元のmoduleでもgo 1.25.5以上にしなければなりません。自分の作ったライブラリでGo 1.24をサポートしたくなっても、依存先の事情に引きずられてしまうわけです。この場合、依存先のmoduleを古いバージョンにしたり、あるいは依存先のModuleの利用を諦めたりしなくてはなりません。

この問題に関しても、module内のpackageが外部から参照されないようにinternal/配下に押し込むなどすれば許容できそうですが、さらにもう一つ落とし穴があります。

利用するGo Toolsの影響を受けてビルドできるGoの範囲が狭まる

Go 1.24からgo.modにtool directiveが追加され、開発に必要なツールの依存を管理できるようになりました。tools.goを用いたワークアラウンド*2を利用せずとも、Go製のツールとそのバージョンを管理し、実行することができます。

なんと、依存先のgo directiveの影響を依存元が受けてしまう問題がtoolにおいても発生します。

たとえば、GoReleaserのgo directiveはv2.13.1現在でgo 1.25.5と宣言されています*3。最新のGoReleaserを以下のようにtoolに含めてしまうと、そのmoduleのgo directiveは1.25.5未満に設定することができなくなります。

go 1.25.5 // 1.24.0にはできない

tool https://github.com/goreleaser/goreleaser/v2

require (
  github.com/goreleaser/goreleaser/v2 v2.13.1 // indirect
  ...
)

このように、ライブラリではなくツールの提供だけを目的としたModuleでも、go directiveが新しすぎることにより依存が困難になってしまうケースがあります。

どうなっていて欲しいか

go directiveはビルド下限を表すので、基本的には現在公式でサポートされているGoのバージョンはカバーするように宣言して欲しいです。

Go 1.25が最新のリリースである現在では、以下のように(あるいは以下よりもっと古くなるように)宣言して欲しいです:

go 1.24.0

なぜpatch versionを0にするのか

なぜ1つ前のメジャーリリースの中で最新のパッチであるgo 1.24.9ではなくgo 1.24.0を指定した方が良いのでしょうか。

この理由は、同様の内容がgolang.org/x配下のmoduleのgo directiveを自動更新するproposalの中に書かれていて共感したので引用します:

Another option would be to always use the latest 1.(N-1).X, updating all the x repos each time a new minor Go release comes out. That forces everyone to update to that new minor release in order to incorporate any new x repo changes, which seems too aggressive. As much as we try to avoid it, minor Go releases do sometimes contain bugs, and it should be possible to choose to use older ones if needed.

https://go.googlesource.com/proposal/+/HEAD/design/69095-x-repo-continuous-go.md#why-not-bump-on-each-minor-release

要約すると、新しいパッチバージョンへのアップデートを強制するのは強引なので選択の余地を設けたということです。ある時点で最新のパッチバージョンにバグが含まれていないとも限りませんから。

go directiveを古くすることによるデメリットと対応

ここからは、go.modのgo directiveに古いメジャーリリースを指定しておくことにより発生するデメリットと、それに対してどうハンドリングしたらいいのかについて説明します。

すぐに最新の言語機能が使えない

Go言語のメジャーリリースには毎回嬉しいアップデート入っているように私は思います。しかし、go directiveを1つ前のメジャーリリースに保つということは、最新の言語機能を利用することはまだできないということになります。

この問題に対して、私は残念ながら諦めています。Goのメジャーリリースが出ても、この機能はあと半年後に使えるようになるな〜ぐらいのつもりで向き合っています。

もちろん、メジャーリリースが出たタイミングで2つ前のメジャーリリースがサポート対象から落ちるため、このタイミングで1つ前のメジャーリリースの言語機能が新たに利用可能になります。リリースにワイワイするタイミングは同じで、その対象が1つ遅れているだけです。

GitHub ActionsでのGoバージョン指定に困る(困らない)

actions/setup-gogo-version-file inputにgo.modファイルを指定することでCI環境のGoのバージョンを決めているケースがあるでしょう。

- uses: actions/setup-go@v6
  with:
    go-version-file: go.mod

setup-goはgo.modのgo directiveを読んで、その値と一致するGoのバージョンを利用する*4ため、go directiveが最新でないと古いツールチェーンがビルドやテストで利用されてしまいます。

これに対する対応としては、go.modのtoolchain directiveを利用するのが良いと思います。toolchain directiveは「そのモジュールで推奨されるツールチェーンとそのバージョン」を宣言するものです。

A toolchain directive declares a suggested Go toolchain to use with a module.

https://go.dev/ref/mod#go-mod-file-toolchain

setup-goのv6から、go.modのtoolchain directiveも読んでバージョンを決定するように、かつこの挙動がgo directiveの参照よりも優先されるようになりました。

github.com

よって、以下のようなgo.modを用意することで、go directiveを1つ前のメジャーリリースバージョンに保ちつつ、GitHub Actionsで使われるGoのバージョンを別に指定することが可能です:

go 1.24.0

toolchain go1.25.5

toolchain directiveはRenovateの標準設定で継続的に更新することができるため、最新に保つ労力が少ないのも魅力です。

In go.mod, the toolchain directive essentially means "Use this exact version of go". Unlike the go directive, it's valid to keep bumping this, and you should see updates to it proposed by default.

https://docs.renovatebot.com/modules/manager/gomod/#updating-of-go-mod-and-toolchain-directives *5

Go 1.26からgo mod initで作られるgo.modのgo directiveの値が変わりそう

さて、いよいよ2026年2月にGo 1.26のリリースが控えています。現時点でもすでにドラフトのリリースノートを閲覧することができます。

このリリース予定の内容のひとつに、go mod initコマンドで作られるgo.modファイルのgo directiveの値が1つ古いメジャーリリースのバージョンになるというものがあります。

go mod init now defaults to a lower go version in new go.mod files. go mod init using a toolchain of version 1.N.X will create a go.mod file specifying the Go version go 1.(N-1).0.

https://go.dev/doc/go1.26#go-command

これまでgo mod initを実行した時には、使用しているツールチェーンのバージョンがそのままgo directiveにセットされていました。

$ go version
go version go1.25.5 darwin/arm64
$ go mod init hoge
go: creating new go.mod: module hoge
$ cat go.mod
module hoge

go 1.25.5

これが、以下の挙動になるイメージです(実際にGo 1.25.5でこのようになるわけではなく、あくまでイメージです):

 module hoge
 
-go 1.25.5
+go 1.24.0

この変更理由について、リリースノートには「現在サポートされているGoのバージョンと互換性のあるモジュールの作成を奨励するため」と書かれています。

This is intended to encourage the creation of modules that are compatible with currently supported versions of Go.

https://go.dev/doc/go1.26#go-command

Goチームによるこの変更意図を読んでも、やはりgo directiveを最新ではなく1つ前のメジャーリリースに保つことに相当の妥当性があると考えられるでしょう。

まとめ

go.modはgo directiveはGo Moduleのビルド下限を表すものです。また、go directiveにより宣言された下限バージョンは依存元に伝播していきます。go directiveを最新のバージョンで指定してしまうと、Goがサポートしているバージョンを利用しているにも関わらずビルドできないModuleになってしまいます。そしてそれが伝播してどんどん世の中に増えてしまいます。

外部から依存され得るGoのOSSプロジェクトでは、go directiveを最大でも1つ前のメジャーリリースにしてみませんか?バイナリが成果物の場合にはtoolchain directiveを利用して推奨ツールチェーンを宣言し、ビルド下限バージョンと利用するバージョンを分離して宣言してみませんか?というお話でした。

*1:[要出典]と言われても仕方がないですね。n=1ですがGo本体にもcontributeするようなOSSメンテナーの意見を置いておきましょう。https://github.com/golang/go/issues/74748#issuecomment-3115320682

*2:https://github.com/go-modules-by-example/index/blob/master/010_tools/README.md

*3:https://github.com/goreleaser/goreleaser/blob/706905505d944237c24baff543def8800f295c2c/go.mod#L3

*4:setup-goがgo directiveの宣言と一致するバージョンを選択する挙動はgo directiveのセマンティクスを考えると微妙な気がしますが、かなりの破壊的変更となるためなかなか変えられないのでしょう。

*5:この引用において、"Use this exact version of go"という表現がされていることには若干の引っ掛かりを覚えています。仮にtoolchain go 1.25.0と書かれていて手元のツールチェーンのバージョンが1.25.5だとしても、ダウングレードせず1.25.5で動くのが標準(GOTOOLCHAIN=auto)の挙動ですから。

Mackerelカスタムダッシュボードおまかせ生成機能の裏側

このエントリはMackerel Advent Calendar 2025 3日目の記事です。まだ空き枠がありますので、ご利用のみなさまぜひご参加ください。

qiita.com


こんにちは、Mackerel開発チームサブディレクター・テックリードのid:arthur-1です。

Mackerelにはカスタムダッシュボードおまかせ生成機能というものがあります。従来カスタムダッシュボードを作成するには、ユーザーが1つ1つウィジェットを設定して並べていく必要がありました。おまかせ生成機能では、パラメータとして指定したロールのホストで使われているプラグインやインテグレーションを検出して、いい感じのダッシュボードを生成することができます。

mackerel.io

arthur-1のVPSでカスタムダッシュボードおまかせ生成機能を利用した様子。nginx pluginの利用が検出されnginxに関するメトリックグラフが並べられている

id:arthur-1は当時この機能の企画やPoC開発を担当していました。このエントリでは、Mackerelカスタムダッシュボードおまかせ生成機能が生まれるに至った裏側をご紹介します。

Mackerelは、ちょっとしたスクリプトでmackerel-agentを入れるだけですぐにホストページやサービスページでいい感じの表示ができるところに良さを感じていただいている方が多い監視サービスです。その体験と比較して、カスタムダッシュボード機能は自力でグラフやマークダウンといったウィジェットを1つ1つ配置して作成する必要があり、構築やメンテナンスが大変というユーザーの声を聞いていました。

カスタムダッシュボードを自分で構築するのが面倒というユーザーの課題を解決するために、まずはカスタムダッシュボードのテンプレートという概念があると捗ると考えました。参照したいホストやロールをパラメータとして指定し、テンプレートを元にカスタムダッシュボードの定義を出力するようなツールがあれば良いと思ったのです。

そこで、MackerelのWebコンソールからアクセスできるものとして作るより前に、テンプレートからカスタムダッシュボードを作るようなCLIツールを開発しました。テンプレートにパラメータを注入してカスタムダッシュボードの定義を得るメインの機能とは別に、以下の2つの要件が求められると考えました:

  • 条件を評価し、ウィジェットをダッシュボードに載せるか載せないかを分岐できること
  • ウィジェットの配置を絶対指定することなくHTMLのように半自動で配置できること

1つ目の「条件を評価し、ウィジェットをダッシュボードに載せるか載せないかを分岐できること」は、ユーザーの利用環境の違いをテンプレートである程度吸収できるようにすることが目的です。システムメトリックを表示するだけでも、mackerel-agentを利用している場合とクラウドインテグレーションを利用している場合では表示するグラフが変わってきます。こうしたバリアントが増えるたびにテンプレートを増やしていては組合せ爆発を起こしてしまいますから、テンプレートとしてちょっとした違いを吸収できる表現力が必要と考えました。

これを言い換えれば、ダッシュボードに載せたいグラフの数やレイアウトはユーザーが指定したパラメータや利用状況によって変化するということです。しかし、ここでMackerelのAPIにおけるダッシュボード定義において絶対的な座標指定を求められることが障害になります。そこで2つ目の「ウィジェットの配置を絶対指定することなくHTMLのように半自動で配置できること」が機能要件として上がってくるわけです。

これを実現するようなCLIツールをGo言語でサクッと作って動作イメージを確認し、有用そうであることを確認しました。その後、MackerelのWebコンソールでアクセスできる機能として再度設計し直し開発を進めました。また、メインのユースケースとしてWebサービスをシンプルに提供する3層構造のシステムを想定し、テンプレートも作り込みました。その結果完成したのがこの「カスタムダッシュボードおまかせ生成機能」です。

現在は私たちが用意した3層構造のWebサービスに特化したテンプレートからのおまかせ生成しかできませんが、その他のシステム向けのテンプレートが欲しいとか、ユーザーが独自にテンプレートを定義したい、といったケースもあるでしょう。ぜひお近くのMackerelの中の人に要望を伝えてみてください。

あなたのOpenTelemetry CollectorのBatch Processorはもう不要かもしれない

これはOpenTelemetry Advent Calendar 2025 2日目のエントリです。2週間に1回欠かさずOpenTelemetery Collectorのアップデートを追っている身として、「意外と知られていないのでは?」と個人的に思っているネタを取り上げます。


Batch Processorの利用推奨について

OpenTelemetry Collectorをお使いのみなさん。Batch Processorを利用していますか?

Batch Processorは複数のテレメトリーデータを1つのbatchにまとめる役割を果たします。受け取った・生成されたテレメトリーを即時にexportする手法と比較して、オブザーバビリティバックエンドにデータを送信するときの接続数が減らせたり、データの圧縮がより効くようになったりして、結果データ転送が最適化されます。

さて、OpenTelemetry Collectorをある程度の期間使っている人は、configファイルに以下のようにBatch Processorを仕込んでいることでしょう:

receivers:
  otlp:
    protocols:
      grpc:
      http:

processors:
  batch:

exporters:
  otlp:
    endpoint: your-observability-backend.example:4317

service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlp]

なぜなら、Batch Processorを使用することが以下のように推奨されてきており、ドキュメントでもBatch Processorをパイプラインに含めた設定例が掲載されてきたからです。

It is highly recommended to configure the batch processor on every collector.

しかしこれはかつての話であり、現在ではBatch Processorの使用の推奨が取り止められていることをご存知でしょうか?

github.com

exporterのsending_queue設定

Batch Processorの利用が推奨されなくなったからといって、exportの最適化のためにテレメトリーデータをまとめるニーズがなくなったわけでもありません。この目的を満たす代わりに利用できるExporterの設定があります。

OTLP ExporterOTLP HTTP Exporterにはsending_queueという設定があり、この中でbatchを有効化することができます。

簡単には、以下のようにsending_queue: batch: {}という設定を加えるだけです。デフォルトでbatchが有効化されているわけではないことに注意してください。

 processors:
-  batch: 

 exporters:
   otlp:
     endpoint: your-observability-backend.example:4317
+    sending_queue:
+      batch:

元々Batch Processorでバッチサイズやタイムアウト時間を調整して使っていた場合には、例えば以下のように詳細に記述すると良いでしょう。

 processors:
-  batch:
-    timeout: 1s
-    send_batch_size: 4096
-    send_batch_max_size: 4096

 exporters:
   otlp:
     endpoint: your-observability-backend.example:4317
+    sending_queue:
+      batch:
+        flush_timeout: 1s
+        min_size: 4096
+        max_size: 4096

あとはserviceのpipelines設定から不要になったbatch processorを外してあげれば移行完了です!

最新のドキュメントのOpenTelemetry Collector設定例を見ても、otlp exporterのconfig部分にsending_queue: batch:と書かれており、パイプラインにbatch processorが含まれていないことがわかります。

exporters:
  otlp:
    endpoint: otelcol:4317
    sending_queue:
      batch:

service:
  pipelines:
    traces:
      receivers: [otlp]
      exporters: [otlp]

🔗 https://opentelemetry.io/docs/collector/configuration/#basics

また、推奨されるProcessorやその適用順序が書かれているドキュメントでも、「Batch Processorの代わりにExporterに付随するバッチ設定を利用するのがおすすめです」という内容の記述が書かれています。

batch, although prefer using the exporter's batching capabilities

🔗 https://github.com/open-telemetry/opentelemetry-collector/tree/main/processor#recommended-processors

Mackerel OTLP Exporterのデフォルト設定

公式のOTLP Exporterに限らず、go.opentelemetry.io/collector/exporter/exporterhelperが提供するQueueBatchのヘルパーを利用して実装されているExporterでは同様の設定が利用できるはずです。

github.com

先日、Mackerel向けのOpenTelemetry CollectorのディストリビューションならびにMackerel OTLP Exporterを公開しました。

github.com

Mackerel OTLP Exporterもexporterhelperの設定定義や関数を利用しており、sending_queueによりexporterのbatchを設定できます。

Mackerelへのトレース投稿時にはリクエストサイズを6MB以下に抑えなければならないという制約があります。Mackerel OTLP Exporterが提供するデフォルト設定をそのまま使うと、何も書かずにbatchが有効になるだけでなく、この制約に合わせてbatchサイズを調整してくれるようになっています。

queueConfig := exporterhelper.NewDefaultQueueConfig()

// overrides default exporter queue batch config
// because Vaxila endpoint does not accept requests larger than 6MB.
queueBatchConfig := queueConfig.Batch.GetOrInsertDefault()
queueBatchConfig.Sizer = exporterhelper.RequestSizerTypeBytes
queueBatchConfig.MaxSize = defaultBatchMaxSizeBytes

queueConfig.Batch = configoptional.Some(*queueBatchConfig)

🔗 https://github.com/mackerelio/opentelemetry-collector-mackerel/blob/fb244aa0771e9b919a9e8a8f26c79d08564f5f53/exporter/mackerelotlpexporter/factory.go#L32-L40

29歳

になった。1週間前に。

前回:

blog.arthur1.dev

今年の誕生日も普通に仕事をしていた。なんならオフィスに物理出勤していた。

昼休みに友人からDIORのコンシーラーと花束をもらって表参道を散歩した。嬉しすぎる。

近所のミュージックバーに飲みに行ったら、サックスでHappy Birthday to Youの曲を吹いてもらった。あとは、他のお客さんにこの曲演奏して〜と言われまくったのでリクエストに応えてピアノを弾いていたらチップをもらった。

その後は朝までガールズバーで飲み歌歌って牛丼食って帰宅。

翌日も午前中から大学の友人がうちに遊びにきて、FF14TRPGをやったり鍋を作ったりケーキを食べたりした。

ここまでちゃんと祝ってもらったの17歳の誕生日ぶりな気がして嬉しかった。11月はハードワークだったのも相まってより嬉しく感じたのかもしれない。

ここに書{か,け}ないようなものもいろいろもらった。誕生日プレゼントはいつでも待ってます。

ラスト20代なわけだけど、だからと言って何か大きな決断を早まるのは良くないと勝間和代が言っていたような気がする。じゃあ、どうする?志村正彦と津野米咲が死んだ29歳をどう生きるか。

それはともかく、最近はエアライダーを楽しんでやってます。

最近聴いてる曲: Nov. 2025

prev:

blog.arthur1.dev

1年ぶりですね。

曲紹介

RUN / Doona

曲名通りの疾走感。サビのポルタメントがいい味出してる。

www.youtube.com

Farewell / Azami

良いシャウトだからこそサビのクリーンが映える。

www.youtube.com

キケンナアソビ / WurtS

クリープハイプトリビュートアルバムから。気怠げな色気。

www.youtube.com

Missing / Vaundy

こちらはELLEGARDENのトリビュートアルバムから。30代で学生の頃バンドやってた人全員この曲好きだから。そうかな?

www.youtube.com

丸の内ミゼラブル / Royz

「死んでほしい」からのラスサビの悲壮感。秒速5センチメートルのラストの展開を良いと思える人は好きだと思う。

www.youtube.com

Kid / シンガーズハイ

ゆるおもぐらいのロックが自分の耳に馴染む。

www.youtube.com

暴露 / ポップしなないで

キャッチーなメロディーライン。\モンスター!/

www.youtube.com

こっから / SixTONES

ミクスチャーロックっていうのかな。ワウギターが良すぎる。

ジャニーズ、、、じゃなくてSTARTO全然わかんないのでもっと布教してください。

www.youtube.com

鏡面に映す哀の容 / RETEMPEST

メタルサウンドへのピアノとストリングスの合わせ方が勉強になった。

www.youtube.com

花一匁 / スキュラ

↑のライブ観に行ったら対バンでたまたま聞いた。某高収入広告の音楽をMIXしたくなるイントロ。

毒蛇ニゲロの表情が良すぎるのでまた行きたいグループ。

www.youtube.com

芒に月 / 椎名林檎

2025年も一番良かったのは椎名林檎になりそう。3:50あたりから終盤にかけての盛り上がりの作り方がすごい。

www.youtube.com

DESPERADO feat. J-REXXX / ALI

呪術廻戦でお馴染み(?)なLost in Paradiseのカップリング。レゲエ好きなのでラテンな感じが好み。

www.youtube.com

モエチャッカファイア / 弌誠

カラオケで歌ったらtiktokの曲!って言われた。

www.youtube.com

哀悼、そして日常は続く / 宮下遊

卯花ロク ft.裏命による曲の歌ってみたver.。聴きすぎてメンヘラ悪化した。

www.youtube.com

地球の裏 / いよわ feat.裏命

これも裏命。変拍子・テンポ変化大好き。

www.youtube.com

この前DJで流した:

blog.arthur1.dev

最後の歌 / ドラッグオンドラグーン3

こういう曲好き(語彙力)

フローターランド / MARIO KART WORLD

マリオギャラクシーの時は壮大な楽曲だったけど、激カッコいいロックに変身。アレンジが良すぎる。

聴きたい人はゲーム買って聴いてください。

まとめ

これだけ紹介して2025年出た曲を5つしか載せられてないの、digり不足を感じる。

泥酔夜会 Vol. 1/Vol. 2 @ RIME セットリスト(おまけあり)

恵比寿RIMEというシーシャバーで最近「泥酔夜会」という名のDJイベントを開催していて、機材提供と演者をやっています。今回はその振り返りエントリです。

Vol. 1 2025-09-28

初開催なので自己紹介も兼ねて、自分の生き方の指針であるPop×Cool×Little Bit Sexyをイメージしてエレクトロサウンドの曲から選びました。

BPM128っていいですよね。ITエンジニア的にはそこそこキリの良い数字だし。

シャクシャイン→WORLD OF FANTASYの繋ぎが個人的には一番綺麗に決まったかなあと思ってます。

お店のエントリも出てるのでよかったらどうぞ:

note.com

Vol. 2 2025-11-09

PHPカンファレンス福岡2025の当日スタッフやった翌日に福岡から直行したのでだいぶ疲れていました。

今回はXでやって欲しいテーマをアンケートで募集した結果Vocaloidになったので、以下のようなセットリストで持って行きました。

音声はこんな分布でした。色々拾おうと思ったけど結局初音ミク多いがち:

  • 初音ミク 6
  • 鏡音リン 1
  • KAITO 1
  • GUMI 1
  • 重音テト 2
  • flower 2(Ci flower / v flower)
  • 足立レイ 1
  • 可不 1
  • 裏命 1

まず、お店の名前であるRIMEに掛けて音楽的同位体 裏命(RIME)の曲を選びました。これを最後に流すぞと決めて、そこに合うような、具体的には人間の声でないからこそ表現できるような世界観の曲を多く選んで構成しました。もちろん、みんなが知ってそうな曲も序盤はほどほどに混ぜました。

たまたま次のDJ妹子が流したのがr-906とかLeaFとかで似た雰囲気だったので、いい感じに繋がりました。

普段はBPM128固定することが多いので、BPMが違う曲の繋ぎ方を色々研究できたのがかなりいい勉強になりました。

Next…?

私は企画者じゃないのでなんとも言えないけど、次開催したらぜひ来てください。

おまけ

先週月曜日から禁酒を始めました。

始めて1週間の成績はこんな感じです:

  • 3(月) 🍺
  • 4(火) 🍺
  • 5(水) 🍺
  • 6(木) ❌
  • 7(金) 🍺🥃
  • 8(土) 🍺
  • 9(日) 🥃

1勝6敗