サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
2025年ランキング
blog.arthur1.dev
Go言語でOSSを開発しているみなさん、go.modのgo directiveにはどのような値を指定していますか?もしGo 1.25が最新のメジャーリリースである2025年12月現在で go 1.25.0 と書いているならば、この機会にぜひ go 1.24.0 に改めてくれないか、という話をします。同じような話はいろんなエントリや登壇で触れているのですが、この話題に主題を絞って解説します。 前提知識 Goのリリースポリシー go.modのgo directiveの意味 go directiveが新しすぎると起こる問題 公式でサポートされているGoのバージョンなのにビルドできない 依存するGo Modulesの影響を受けてビルドできるGoの範囲が狭まる 利用するGo Toolsの影響を受けてビルドできるGoの範囲が狭まる どうなっていて欲しいか なぜpatch versionを0にするのか
これはOpenTelemetry Advent Calendar 2025 2日目のエントリです。2週間に1回欠かさずOpenTelemetery Collectorのアップデートを追っている身として、「意外と知られていないのでは?」と個人的に思っているネタを取り上げます。 Batch Processorの利用推奨について OpenTelemetry Collectorをお使いのみなさん。Batch Processorを利用していますか? Batch Processorは複数のテレメトリーデータを1つのbatchにまとめる役割を果たします。受け取った・生成されたテレメトリーを即時にexportする手法と比較して、オブザーバビリティバックエンドにデータを送信するときの接続数が減らせたり、データの圧縮がより効くようになったりして、結果データ転送が最適化されます。 さて、OpenTelemetr
PR & Introduction こんにちは。id:arthur-1です。GWいかがお過ごしでしょうか。まずはPRから。 hatenacorp.jp 株式会社はてなが2022年5月1日付でフレキシブルワークスタイル制度をアップデートしました。その1要素として、居住地に関する制限が全国に拡大します。 社員・契約社員の居住地条件を「日本全国」(※) 出社時に飛行機や新幹線を含む公共交通機関を利用した際の交通費は毎月5万円を上限に実費支給 ※ 居住地は「要請があった場合、所属オフィス(京都・東京)にAM11時に出社できることを目安とする」などの条件あり と言われて、では実際どこに住めるのか、気になりませんか?気になりますよね? 住みたい場所が決まっている人は良いのですが、この条件を満たす良い住処はないかなあと思っている人の選択肢を提示できるサービスがあったら素敵だなと思いました。今回のエントリ
まとめ Googleスライドやそのテンプレートを作る人は、ページ設定から解像度を上げよう そうすると、Speaker Deckにアップロードするときなどに画像や文字の品質が上がる 本編 Googleスライドを新しく作成するとき、自然とアスペクト比が16:9の設定になっているかと思いますが、これが実際にどのぐらいのサイズなのかを気にしたことはありますか? そもそも、Googleスライドの縦横サイズは、ファイルメニューの中にある「ページ設定」で確認・変更することができます。 デフォルトだと以下の通り「ワイドスクリーン(16:9)」になっているのですが、ここから「カスタム」に変えて単位も変えてみると、「ワイドスクリーン(16:9)」というのは960*540pxであることがわかります。現代でもデフォルトがFull HDになっているわけではないのです。 画面に映してスライドショーをする分にはこの設定
これは OpenTelemetry Advent Calendar 2024 15日目の記事です。 前置きが少しばかり長いので、目的の情報をすぐにでも知りたい方は以下の目次からスキップしてください。 前置き OpenTelemetry Collector Receiverを作るための事前知識 OpenTelemetry Collector Receiverの実装の大まかなステップ Config {signalType}Receiver Factory 便利グッズのmdatagen(Metadata Generator) 具体的な実装例 Step 0: 開発準備 Step 1: Disto Moduleを作る Step 2: Sample Receiver moduleを作る Step 3: metadata.yamlを書く Step 4: mdatagenでコード・ドキュメント生成 Ste
AWSにおいてリソースの識別子として使われるAmazonリソースネーム(ARN)というものがあります。私は、ARNには英数字と一部記号しか使えないものとばかり思っていました。 それでは以下の画像をご覧ください: なんと、ARNに日本語どころか絵文字まで入っているではありませんか! これはAWS Step Functionsのステートマシンです。ステートマシン名に利用できる文字種はドキュメントに以下の通り記載されており、日本語文字などの非ASCII文字を使えるのはバグではなく、意図して許可されているようです: Names of state machines, executions, and activity tasks must not exceed 80 characters in length. These names must be unique for your account an
2024-08-28 GOTOOLCHAIN=auto時にはtoolchainディレクティブに指定したものより新しいGoがインストールされていても戻るわけではないという話を追記しました。 Go言語では半年に1回メジャーリリース(マイナーバージョンの更新)がやってきます。ちょうどこの8月にGo 1.23がリリースされたばかりです。Go言語のメジャーリリースは最新2つ分までサポートされるポリシーであることがhttps://go.dev/doc/devel/releaseに書かれています。現在であればGo 1.23やGo 1.22はサポートされており、Go 1.21はサポートが切れているということです。 また、サポートされているバージョンでは、不定期でマイナーリリース(パッチバージョンの更新)がやってきます。バグ修正や脆弱性対応がメインですね。 Goがリリースされると、Goでアプリケーションを作
OpenTelemetryを使い始めるにあたって、既存の監視ツールからいきなり切り替えることは難しく、基本的には一時的に並行稼働させて様子を見ることになると思います。 これまでmackerel-agentをインストールし、Mackerelにホストとして登録してシステムメトリックを監視していたマシンに、新たにOpenTelemetry Collector+Host Metrics Receiverを導入するケースを考えてみましょう*1。 Resource Detection Processorなどを併用することで、メトリックにホスト名などをResource Attributesとして付与することができます。しかし、比較のためにMackerel上のホストと対応させて眺めるには今一歩情報が足りません。 そこで、ホストにインストールされたmackerel-agentの設定ファイルを読み、Macke
blog.arthur1.dev でご紹介した、OpenTelemetry Metricsを手軽に投稿できるCLIツール「otlc」のv0.2.0をリリースしたので再度ご紹介します。 github.com 使い方 インストール (macOS, Linux)×(x86_64, arm64)向けのバイナリをGitHubのReleaseで配布しています。 Homebrewをお使いの方は以下のコマンド1つでインストールが可能です。 $ brew install Arthur1/tap/otlc $ otlc --version otlc is a Command-line Tool to Export Telemetry by OTLP (OpenTelemetry Protocol). Version: unknown Go version: go1.22.4 Arch: arm64 go in
blog.arthur1.dev の続編です。今回はrunnによるシナリオテストの結果を投稿するツールをOpenTelemetry CollectorのReceiver (Scraper)として作ってみました。 リポジトリ 以下のリポジトリで id:arthur-1 によるOpenTelemetry Collectorの自作Component群を公開しています。 github.com 使い方 ビルド ocb (builder)によってOpenTelemetry Collectorをカスタムビルドする必要があります。カスタムビルドの方法は公式のドキュメントBuilding a custom collector | OpenTelemetryを参照してください。 runnreceivcerをビルドに含める場合には、ocbのconfig YAMLのreceivers部分に、以下のように行を追加し
先日、kamakura.go #6にて、「slog登場に伴うloggerの取り回し手法の見直し」という題で登壇しました。Go Conference 2024にこの内容でproposalを出していて落選してしまったのですが、kamakura.go #6のテーマ「昔のGo、今のGo」とピッタリだったので応募して発表の機会を頂いたという経緯です。 speakerdeck.com この発表は以下のエントリのrefinement版となる内容です。今度は机上論ではなく実践経験をもとに話を組み立てています。 blog.arthur1.dev loggerの引き回しと、なぜそれが必要だったのか slogの特徴 Logger/Handler Loggerのインタフェースとして、contextを引数に持つ関数が用意される デフォルトLogger contextの中身を見て自動でフィールドを追加するHandle
OpenTelemetryにおいて、OTel CollectorのReceiverを開発するときやアプリケーションに計装をする際、MetricsのUnit(単位)にどんな文字列を指定すべきかよく分からなかったので調べてみました。 semconv OpenTelemetryにはSemantic Conventions(semconv)と呼ばれる規約があります。あるデータに対して異なる実装間で共通の名前がついていると便利なので標準を取り決めましょうといった趣旨のものです。Metricsにおいてはメトリック名や属性、単位といったデータについて規約が定められています。 opentelemetry.io semconvには一般的な規約と具体的な規約があります。具体というと、例えばHTTPに関する規約、AWSなどのクラウドサービスに関する規約、といった形です。「HTTPサーバのリクエストの継続時間を計
オフラインの技術カンファレンス・イベントも徐々に復活し賑わいを見せつつある今日この頃、いかがお過ごしでしょうか。 多くの聴衆に等しく声を届けるための道具「マイク」はカンファレンスに欠かせないものとなっています。 普段はアプリケーションエンジニアとして働きつつ、休日にPAエンジニアやステージマネージャーをやっている身から、来場者が発表やコンテンツに集中できるようなマイクの扱い方を簡単にご紹介します。 叩かない 声の出る方向とマイクの位置・向きを合わせる グリル部分を掴まない ある程度の声量で喋る 叩かない マイクを叩くと低い「ブォンブォン」という不愉快な音が発生するのはもちろん、スピーカーなどの機材が壊れる原因につながります。もちろん意図的に叩いている人はいないと思うのですが、以下のようなケースでつい叩いてしまう人を見かけます: 拍手をする、拍手を煽る際にマイクを持ちながら手を叩く マイクが
Goのloggerを引き回す際に皆さんはどのような手法を取っていますか? グローバル変数にloggerのインスタンスを入れておく contextにloggerのインスタンスを入れておく トレースIDなどを入れたloggerを適宜作ってcontextに格納する 構造体のフィールドにloggerのインスタンスを入れておく(DI) などなど、ソフトウェアの規模や特性を鑑みて各自使い分けているかと思います。 ところで、私は 2. 3. の手法があまり好きではありませんでした。単純に面倒だし美しくありません。contextに入れる、取り出すだけでも数行のコードを毎度書く必要があってダルいな〜と思っていました。けれども、ログにトレースIDなどを入れたいだろうなあと思い、Webサーバの実装においては 2. を渋々選択していました。 さて、Go 1.21ではslogパッケージが登場しました。slogは単に
arm64では/proc/cpuinfoからCPUのモデル名を取得できない Linuxにはシステムの様子を知ることができる仮想ファイルがいくつかあります。そのうちの一つが/proc/cpuinfoで、その名の通りCPUの情報が以下のように閲覧できます。 $ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 63 model name : Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz stepping : 2 microcode : 0x1 cpu MHz : 2294.686 cache size : 4096 KB physical id : 0 siblings : 1 core id : 0 cpu cores : 1 apicid :
arthur-1 Mackerel Advent Calendar 2023 マラソン2日目の記事です。 シナリオ監視したい! Mackerelユーザーの皆様から、外形監視機能でシナリオ監視を行いたいと要望をいただくことがあります。ここで言うシナリオ監視とは、ユーザーが実際にサービスを利用するときと同様に、いくつかのURLへのアクセスや要素のクリックなどの一連の操作が成功するかどうかを定期的にチェックすることを指します。 例えば、 ログインページを表示する フォームにログイン情報を入力する ボタンを押すとログインされ、ホーム画面が表示される といったシーケンスを外部から実行する、といった具合です。よりユーザと同じ目線でサービスが利用可能であるかどうかを知ることができます。 今回は、この機能をMackerelに導入するとどう嬉しいのかを体感するために、プロトタイプを作ってみました。 mack
Mackerel は Terraform Provider を提供していて、監視ルールや通知チャンネル、ダッシュボードなどの設定が Terraform で記述・管理できるようになっています。 今回は Terraform Provider 提供者の目線から、サービスを IaC で管理できるように対応する難しさを紹介します。 公開 API で宣言的な管理を実現できるか? Mackerel の Terraform Provider は、内部的に公開 API を呼ぶことで設定の管理を実現しています。よって、公開 API を新たに増やしたり改修したりする場合には、IaC による宣言的な構成・設定管理を API を使って行えるかどうかを気にする必要があります。 具体例: ホワイトリストと、ホワイトリストに自動で追加するフラグの両方を IaC で管理する 例として、やや抽象的な表現にはなってしまいますが
新卒入社から1年ちょっと経ったころ、開発チーム内での席替え*1があり、Mackerel の OpenTelemetry 対応という大きな開発プロジェクトからは離れることとなった。それまで自分が携わってきた OpenTelemetry 対応については Mackerel 公式ブログに記事を書いたのでぜひ読んでほしい。 mackerel.io このプロジェクトを離れた代わりに、Mackerel チーム内で新たに発足した、大小様々な顧客要望に優先度をつけて仮説検証型アジャイル開発のサイクルを回し、インパクトの大きなものを高い頻度でユーザーに提供し続けることを目指したユニットに所属し、エンジニアをすることになった。このユニットでの取り組みによって、最近だと以下のような機能の提供が実現された: ホスト一括操作強化 ホスト一覧でのホスト名による絞り込み機能 外形監視レスポンスタイムグラフの単位をデフォル
要件 Go 言語で作られた、GitHub の private repository の go module に依存しているアプリケーションについて考えましょう。例えばオープンソースではない社内ライブラリに依存している、という状態です。 手元の開発マシン上では GOPRIVATE 環境変数を利用して、go mod download できている状態です。このアプリケーションはコンテナ上で動かすことを想定しており、Dockerfile 内で RUN go build することでバイナリを生成し container image に格納しようとしています。 しかし、public な module だけに依存しているときと同じように Dockerfile を書いても docker build に失敗してしまいます。go mod download 時に private repository から fet
なけなしの社交性を YAPC::Kyoto 2023 で全て使い果たしてしまって元気がない id:arthur-1 です。 前日祭で登壇した話はすでに書いたのですが、(こっちも読んでね) blog.arthur1.dev 先のエントリでは触れなかった、参加者目線での YAPC::Kyoto 2023 に関する話を雑多に色々します。 幸運なことに インターネット上で出会った人と物理で出会う はてなスタッフ多すぎ問題 Soudai さんへのお手紙 onishi さんのキーノートで泣きそうだった その他 (GKPT) まとめ 幸運なことに 前提として、僕は新卒1年目だし、仕事で Perl を書く機会もほぼほぼなかったです。既存のコネクションもはてなスタッフ以外にはほぼないという状態。リアルイベントもこれまで全然なかったですよね。 最初は心細かくて仕方なかったのですが、何だかんだたくさんの方とお話
YAPC::Kyoto 2023 前日祭の一コンテンツである、ネコトーストラボ杯争奪東西対抗 LT マッチに登壇してきました。 blog.yapcjapan.org 東西対抗とあるように所属企業の所在地で東西チームに分けられており、順番に自分は西チームのトリを飾らせていただきました。 成果目標と結果 開催前に Hatena Developer Blog に意気込みを載せてもらっていました。 developer.hatenastaff.com 新卒カードをかざせるギリギリ最後の機会に、このようなイベントに参加でき大変嬉しいです。LTマッチという勝敗が決まるものに参加するわけですから、絶対に勝つぞという気持ちで挑みます!!! 絶対に勝つぞということで、自分が定めた目標はもちろんこれです: 西チームが勝つ 西チーム内の MVP になる で、結果はどうだったのかというと、チームとしては勝ちましたが
3行 Windows の OS 名をレジストリから取得すると、Win 11 が Win 10 として表示されてしまう 例えば、WMI を使って取得する方法が正攻法っぽい Go から WMI を触るサンプルコードもあるよ Win 10 が Win 11 として Mackerel に登録されている 自分は OSS の動作確認のために Windows を使いたくなったときに、手元の Macbook から別のホストにリモートデスクトップで繋いで使っている*1。また、繋ぐ前に WOL マジックパケットを送ってスタンバイ状態から復帰させるようにしている。 ここで、手元にマシンがない状態だと WOL によりちゃんと起動したかどうかがわからない。そこで、mackerel-agent をインストールしていて、Mackerel 上でメトリックが取れているかどうかでマシンの生存確認をするようにしている。 そんな
2022年は技術的なエントリをそれなりの数書いてきた。特に12月は計10本のエントリを出し、まだ世に出せていないネタもたくさんあるという状況である。 ところが、当人の感覚としては暖簾に腕押しだなあと思っている。ということでちゃんと振り返ってみることにする。 stats 2022年で一番ブクマが多かった記事はblog.arthur1.devである。 他の記事はこの半数にも満たない、というか、片手で数えられるブクマ数でさえありがたい、という状況である。 書くという行為によって自分自身の理解が確かなものになることに意義は感じているものの、せっかく書いているのだから多くの人に読んでほしいし、それが読者のためになればなお良いと思っている。 もっとシビアに言ってしまうと、書いても読んでもらえない状況がずっと続くならいつか自分は筆を取るのをやめてしまうだろうという懸念がある。モチベーション維持のために今
この記事ははてなエンジニア Advent Calendar 2022 の 2023年1月4日の記事です。 Go 言語の ORM である ent をご存知でしょうか? ent はコード生成を用いて型安全に RDB のクエリを記述できる ORM です。エンティティ間の関係を Edge として定義するのが特色となっており、その結果、簡単にグラフ構造データのスキーマモデリングができます。 entgo.io そんな ent には GraphQL インテグレーションという機能があります。これを使うと、ent のスキーマ定義を用いて簡単に RDB をデータストアとした GraphQL API サーバを作れるのでご紹介します。 ent GraphQL インテグレーションの仕組み Go 言語で GraphQL API を開発するとき、最初に名前が上がるのが gqlgen というライブラリでしょう。Graph
Mackerel Advent Calendar 2022 の運営をしておりました、 id:arthur-1 です。この度は、Advent Calendar にご参加いただき、もしくは閲覧していただき、ありがとうございました。 qiita.com 25日分の記事が集まり、最後まで完走することができました。自分が設定したエントリ数の監視もちゃんと動いていました。 blog.arthur1.dev 総括というには素朴なのですが、書いていただいたエントリを読み、個人の感想としてコメントさせていただきます。 ※社内・外関係なく統一して敬称をつけさせていただいております 全部読む Day 1 blog.arthur1.dev 自分のエントリです。単位追加は細かい改修を除けば新卒初仕事だったのですが、自分が想像していた以上に社内外で反響があってよかったです。 Day 2 blog.stenyan.jp
この記事は Mackerel Advent Calendar 2022 16日目の記事です。 こんにちは、id:arthur-1 です。2022年にはてなに新卒入社して、Mackerel 開発チームのアプリケーションエンジニアをやっています。また、今年の Mackerel Advent Calendar の運営を担当しております。よろしくお願いします。 先日、Mackerel チームで「Mackerel アゲアゲ合宿」を開催しました。これは旧来「開発合宿」と称して行ってきたもので、「Mackerel の未来に繋がることを誰かと一緒にやること」をコンセプトとして、5つのチームに分かれて3日間集中して開発やワークに取り組みました。 こちらの運営も担当させていただいたのですが、詳しい運営話は別の機会にさせていただくかもしれません。運営として、「合宿の成果を Advent Calendar にアウ
この記事は Mackerel Advent Calendar 2022 1日目の記事です。 こんにちは、id:arthur-1 です。2022年にはてなに新卒入社して、Mackerel 開発チームのアプリケーションエンジニアをやっています。また、今年の Mackerel Advent Calendar の運営を担当しております。よろしくお願いします。 今日は、そんな私が Mackerel チームに join して一番最初に実装し提供できた機能に関する話をします。 グラフ定義で選択できる単位を追加しました mackerel.io 今年7月頭のリリースノートで紹介されていますが、グラフ定義で使える単位に、以下の3つを追加しました: seconds [s] milliseconds [ms] bits/sec [bps] 単位を追加するのはパッと見簡単そうなのですが、実際には既存実装の仕組みの修
この記事ははてなエンジニア Advent Calendar 2022 1日目の記事です。 こんにちは、id:arthur-1 です。2022年に新卒入社して、Mackerel 開発チームのアプリケーションエンジニアをやっています。 arthur-1 という id に掛けて、トップバッターをいただきました。よろしくお願いします。 今日は Advent Calendar を Mackerel で監視している話をします。 Advent Calendar で何を監視したいのか id:arthur-1 は、Mackerel Advent Calendar 2022 の運営をしています。こちらは、Mackerel ユーザーが TIPS やノウハウ、利用事例などを載せていく自由参加のカレンダーになっています。 Advent Calendar 企画の主催になると、どれだけの方が参加しているか、枠がパンパン
二日酔いだなと思ったら、その瞬間に酒を飲むことで一日酔いにリセットされる
次のページ
このページを最初にブックマークしてみませんか?
『Diary of a Perpetual Student』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く