Diary of a Perpetual Student

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

テクノロジー

安価に手間なく readonly な GraphQL API を作る

私は個人開発で、読み込みのみが求められる(ユーザーの行動起因でのデータ更新が起こらない) GraphQL API を作っています。情報サイトや個人ブログのバックエンドとしての利用が挙げられます。 今回は趣味の個人開発向けにインフラ費用を抑え、そして手間…

PHP Conference Japan 2023 で学生時代の昔話をします

本日、2023/10/08 に開催される PHP Conference Japan 2023 のタイムテーブルが公開されました。 私 id:arthur-1 は 15:55~16:20 のレギュラートーク枠で、「学園祭Web開発の現場とPHPのこれまでとこれから──技術選定と教育から語る」というタイトルで登壇す…

仮説検証型アジャイル開発に携わり始めたエンジニアの思考(と Mackerel Drink Up の宣伝)

新卒入社から1年ちょっと経ったころ、開発チーム内での席替え*1があり、Mackerel の OpenTelemetry 対応という大きな開発プロジェクトからは離れることとなった。それまで自分が携わってきた OpenTelemetry 対応については Mackerel 公式ブログに記事を書い…

OpenTelemetry Metrics をコマンド一発で投稿できるツール、作りました

OpenTelemetry Protocol (OTLP) を受ける endpoint を開発する際、デバッグのために簡単にテレメトリデータを送りたいという需要があります。OpenTelemetry Collector をいちいち立てたり、何らかのアプリケーションを作ってそれを計装したりするのは、デバ…

GoReleaser を使って Homebrew でインストール可能な CLI ツールを公開する時にも GitHub Apps トークンが使える

3行 GoReleaser を使うと、作ったツールを Homebrew でインストールするための formula を書き出してくれて便利 GitHub Actions でこれを行う際、GitHub の PAT が必要とされているが、代わりに GitHub Apps トークンも使える PAT を利用する方法と比較して…

社会人アプリケーションエンジニア2年目の振る舞い方

本職はアイドルのつもりだが、一応アプリケーションエンジニアもやっている、ということで。 今半期の public な振り返りの代わりに、最近どういう風に仕事をしているのかをまとめていく。参考までに、前半期の振り返りエントリはこちら: blog.arthur1.dev …

Next.js の Static Site Generation (SSG) = Static Exports だと思い込んでいたが違った

blog.arthur1.dev 上記エントリ公開時の原題は「【令和最新版】Next.js の Static Generation で i18n すると疲弊する【App Router 対応】」であったが、現在は表現を訂正し上記のようになっている。その経緯についてのまとめ。 すれ違いと気づき 先ほどのエ…

【令和最新版】Next.js の Static Exports で i18n すると疲弊する【App Router 対応】

2023-06-04 18:00: 誤りのある表現を修正しました s/Static Generation/Static Exports/ *1 結論 Next.js の i18n 機能は Static Exports 未サポートなので自前で頑張れ! Next.js App Router の Static Exports で i18n したい! 今回、以下のような要件を…

Go のテーブル駆動テストは map を使って書きたい

Go 言語のプログラムのテストでは、テーブル駆動テストと呼ばれる書き方をすることが多いです。シンプルに例を挙げると以下のような形。 func TestAdd(t *testing.T) { cases := []struct{ title string inLhs int64 inRhs int64 want int64 }{ { name: "1 +…

docker build 時に private リポジトリから go get する

要件 Go 言語で作られた、GitHub の private repository の go module に依存しているアプリケーションについて考えましょう。例えばオープンソースではない社内ライブラリに依存している、という状態です。 手元の開発マシン上では GOPRIVATE 環境変数を利…

AWS Certified Solutions Architect - Associate になりました

気づいたら社会人2年目が始まっていた id:arthur-1 です。 この度、めでたく AWS SAA-C03 試験に合格しました。 得点は 796 / 1000 点(ボーダー 720点)で可もなく不可もなく。早く仕事がしたかったので制限時間を半分以上残して退出したのですが、もう少し…

『「気軽にアウトプット」する危うさ』をアウトプットする危うさはあるか

これはただ思考実験したというメモ。 note.com を読んだ。 とにかくだ、Bad Practiceを広めるな (中略) 結局行き着く先は、間違った情報の拡散による、その技術を扱う者へのダメージ源になるだけだ。 とある。 直接的ではないにせよこの記事も技術に関する…

2023 GW のゆるふわ日記

これはゆるふわアウトプット。 同僚の家にお邪魔してアイドルの動画を見ながら朝まで酒を飲んだところで GW が始まった。前々からなんとなく憧れのあったライダースジャケットを頂いた。ポップとクールの狭間で生きたいと思っていて、このオトナなアイテムを…

あなたの Twitter の ALT の使い方は間違っている

Twitter での alt 2020年ごろから Twitter に投稿した画像に対して alt を設定できる機能が追加された。 test pic.twitter.com/Sui87RABA7— Arthur (@Arthur1__) 2023年4月10日 埋め込みだと様子がよくわからないので、下にスクリーンショットを掲載する。 a…

メモ: PTCGL の通信だけを VPN 経由にした

Windows の標準機能で VPN に接続している、かつ Powershell スクリプトが書ける人向けです。とりあえず tunnelbear 入れようみたいな人には役に立たない情報が載っています。 インストール・アップデート時 msi ファイルが置いてある CloudFront の IP アド…

lambroll を GitHub Actions で動かすときには明にバージョンを指定しよう

3行 lambroll を GitHub Actions 上で実行するには fujiwara/lambroll@v0 が使える input に lambroll の version があるが必ず明に指定しよう そうしないと、default 値として古い lambroll で動いてしまう - uses: fujiwara/lambroll@v0 with: version: v0…

AgricolaDevJP という org を作りました

GitHub org: AgricolaDevJP GitHub 上で AgricolaDevJP という organization を立ち上げました。今さっき作ったみたいな書きぶりをしていますが、実際に org を作ったのは 2022 年 8 月ごろです。もう半年以上経っていますね。 github.com これまで、ボード…

YAPC::Kyoto 2023 は血の通った人間の匂いがした

なけなしの社交性を YAPC::Kyoto 2023 で全て使い果たしてしまって元気がない id:arthur-1 です。 前日祭で登壇した話はすでに書いたのですが、(こっちも読んでね) blog.arthur1.dev 先のエントリでは触れなかった、参加者目線での YAPC::Kyoto 2023 に関…

YAPC::Kyoto 2023 前日祭 ネコトーストラボ杯争奪東西対抗LTマッチ に登壇しました

YAPC::Kyoto 2023 前日祭の一コンテンツである、ネコトーストラボ杯争奪東西対抗 LT マッチに登壇してきました。 blog.yapcjapan.org 東西対抗とあるように所属企業の所在地で東西チームに分けられており、順番に自分は西チームのトリを飾らせていただきまし…

FY2023上半期を振り返る・広く浅く

こんな形で今後も public な振り返りを定期的に書いていきたいですね。 blog.arthur1.dev ということで、2022年8月〜2023年1月の振り返りを書いていきます。 幅広い技術とコンポーネントに触れた Mackerel は多くのコンポーネントから構成されています。Web …

パフォーマンスだけを考えると WMI を使わないほうが良いのかもしれない

OS 名は WMI から取得したほうが良いが…… 前にこんなエントリを書いた。 blog.arthur1.dev このエントリを要約すると、「Windows の OS 名を取得するとき、レジストリにアクセスするのではなく WMI を使って取得しよう。なぜなら、Win 11 が Win 10 として認…

GitHub Actions の ::set-output 脱出 上級編 便利ツールでカバーできないケース

::set-output 脱出 進んでますか? github.blog エンジニアで GitHub Actions を利用している人はだいたい知っているであろう、 ::set-output や ::save-state の非推奨化問題。このコマンドを利用していると2023年5月末にはエラーになってしまう予定となっ…

学園祭のWeb開発を語る: 抽象編 自分たちの責務をどう絞り、どう委嘱するか

遠い昔に学園祭の Web 開発をしていた話をするシリーズもの最終回 具象編1: 講習会と砂場遊びで支える組織 具象編2: 開発体験・保守性を投げ捨てる 抽象編: 学園祭の開発部署という組織や、学園祭Webサイトというプロダクトの性質から語る ←イマココ ここか…

僕は技術エントリを自分のために書いているわけではない

blog.arthur1.dev おかげさまでたくさんの方に反応していただきました、ありがとうございます。 まだ全然読みきれていないけど、少しずつ丁寧に咀嚼していこうと思います。 技術エントリは自分のために書いている、というコメントが多かったので一つだけ。 …

Windows の OS 名をレジストリから取得するのはやめよう

3行 Windows の OS 名をレジストリから取得すると、Win 11 が Win 10 として表示されてしまう 例えば、WMI を使って取得する方法が正攻法っぽい Go から WMI を触るサンプルコードもあるよ Win 10 が Win 11 として Mackerel に登録されている 自分は OSS の…

next-gen Slack App で AWS のサービスと接続するとき気をつけたいこと3選

年末から Slack App の次世代プラットフォームを試してみています。現在はオープンベータ版となっており、有料の Slack ワークスペースでしか利用できません。 api.slack.com 次世代プラットフォームはこれまでの Slack App を取り巻くエコシステムと大きく…

技術的なアウトプットに疲弊したので振り返る

2022年は技術的なエントリをそれなりの数書いてきた。特に12月は計10本のエントリを出し、まだ世に出せていないネタもたくさんあるという状況である。 ところが、当人の感覚としては暖簾に腕押しだなあと思っている。ということでちゃんと振り返ってみること…

ent + gqlgen で怠惰に GraphQL API を作る

この記事ははてなエンジニア Advent Calendar 2022 の 2023年1月4日の記事です。 Go 言語の ORM である ent をご存知でしょうか? ent はコード生成を用いて型安全に RDB のクエリを記述できる ORM です。エンティティ間の関係を Edge として定義するのが特…

GitHub Actions の workflow の lint を Github Actions で動かす

GitHub Actions で色々なコードの test や lint を動かしていると思います。 その際に workflow を yml で定義するのですが、この workflow ファイルはちゃんとチェックしてますか? 「見よう見まねで yml を書いて push したけど、キー名が間違っていて動か…

Mackerel Advent Calendar 2022 完走したので全部読む

Mackerel Advent Calendar 2022 の運営をしておりました、 id:arthur-1 です。この度は、Advent Calendar にご参加いただき、もしくは閲覧していただき、ありがとうございました。 qiita.com 25日分の記事が集まり、最後まで完走することができました。自分…