技術系

いかがでしたか?

オレオレ iTerm2 設定備忘録

フルスクリーン Profiles > Window > Style: Full Screen にする Profiles > Window > Space: All Space にする Geneal > Window > Full Screen > Native full screen windows: チェックをはずす Profiles > Keys > Hotkey window > A hotkey opens a dedica…

iOSのXの新しいハーフモーダル形式WebViewで画面外にある sticky 要素が壊れる問題

TL;DR 再現環境 本編 再現環境 どういうケースで再現するか 対応方法 TL;DR Webページの画面外に position: sticky がある場合、その要素の位置が数px上に移動し sticky が動作しない問題がある。 iOSもしくはXのバグである可能性が高い IntersectionObserve…

YAPC::Fukuoka2025 参加報告

TL;DR YAPC::Fukuoka 2025 に参加した 結構メモを取っていたのでまとめたい 自分がインフルエンザA型になってしまったので低燃費振り返りです トーク iPhone のマイナンバーカードを使った本人確認の実装 fortee.jp メルカリの事例 iOSのマイナンバーカード…

Sesamiデバイスのバッテリー残量をAPIから取得してMackerelで表示する

Sesami というスマートロックのブランドがあります。CANDY HOUSE が開発・販売している商品ですが、なんと嬉しいことに外部向け API が提供されています。 https://document.candyhouse.co/demo/webapi-ja この記事では、 Sesami API を使用してバッテリー残…

ポートフォリオを更新しようと思っていた(過去形)

更新しようとして、実家に帰省しているタイミングでバイブコーディングさせていた。 とりあえず仮で作ってやろうということで見切り発車で実装していった。とりあえず見てみてほしい。 portfolio-2025-eight-lovat.vercel.app ターミナル風なUIにコマンドを…

はてなブログではAIが作ったゲームで遊べる

Gemini 2.5 Pro の Canvas モードで作ってもらいました。スマホだと操作は厳しいかもしれません。 スコア: 0 ゲームオーバー リスタート 生成したコードはこれ <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>3D障害物避けゲーム</title> </head> <body> <style> /* ゲームを格納す…</body></html>

Gemini 2.5 Pro は英語で考えるので質問者の意図しない回答を返すことがある

Note この記事は 2025年7月17日現在の様子です。 AI 技術は変化が激しいため、すぐ修正される可能性があります。 TL;DR 筆者は top よりも上の単語を教えて と聞いた 意図としては top という英単語より上の表現の英単語が知りたかった しかし、Gemini 2.5 P…

Docker で AWS SES API V2 に対応したローカルサーバーを立ち上げる

はじめに aws-ses-v2-local とは? 簡単な使い方 Dockerfile 参考文献 はじめに AWS SES を使用したアプリケーションを開発する場合、テストやローカル環境などでメールを送信できるようにするため、ローカルな SES サーバーを立ち上げて使用することがある…

astral を使用して deno からブラウザを操作する

astral とは スクリーンショットを撮る 指定した要素のスクリーンショットを撮る 1. スクロールする前の初期位置の状態で絶対座標を取得する方法 2. スクロール量を取得する方法 フォームを自動で入力する 1. 文字入力型 2. クリック型 3. value に値が入る…

Web Crypto API AES暗号のパフォーマンス比較

Note この記事は はてなエンジニア Advent Calendar 2024 - Hatena Developer Blog の 37日目(1/6)です。アドベントカレンダーってなんだっけと思ってきますが考えてはいけません。はてなのアドベントカレンダーは1月いっぱいまでやっているのです。 devel…

React 19 で unpkg.com が壊れる

Note 公式ドキュメントを参照したほうが早いかもしれません。 ja.react.dev TL;DR umd のビルドが React 19 から削除された unpkg.com などでバージョン未指定で React を使っている場合、動かなくなる可能性がある その場合は React 18 固定するか ESM 経由…

はてなブログで GitHub のアラート記法を再現した

GitHub にはアラート記法という非常に便利な記法が存在します。 > [!NOTE] > Highlights information that users should take into account, even when skimming. のように書くと、以下のように表示されます。 github.com このアラート記法をはてなブログで…

Dockerサブスクリプションに含まれる docker debug 機能

Docker Hub にはサブスクリプションが存在します。個人でプランに加入するケースは少ないと思いますが、会社で使うために組織で加入しているケースがあるかと思います。 この Docker Core のサブスクリプションに最近、 docker debug が含まれました。この機…

【v130で修正済み】Chrome で scrollIntoView を同時に実行すると動かないバグがある

TL;DR 2017年ごろから発生していた scrollIntoView を同時に複数実行すると 1つしか動作しないバグが存在する。*1 次バージョン v130 でやっと修正される予定*2 それ以前のバージョンでサポートしたい場合は scrollTo を使うことで回避できる scrollIntoView…

【ブラウザ拡張】manifest v2 と v3 で実行可能な eval を作る

ブラウザ拡張機能作っていますか?そこで eval を実行したいというケースは多くあると思います。 例えば、 options ページにてユーザーが任意のコードを入力できるようにしてそれを実行するケースなどです。任意の JavaScript コードを実行する際には eval …

書かないコメントより書く意味のないコメント

皆さんはソースコード上にコメントを書くだろうか?個人で開発していると // TODO などは書きがちだがチーム開発ではコメントはコードの意味を修飾する、もしくは経緯や歴史を示すものとして重要な要素となりえる。 コメントの良い書き方というのは CleanCod…

意思決定は文書化してログを残して欲しい

私のいる開発チームは自分が入社する前からある。そのため、異動してしまってすでにチームにいない人が実装したものがたくさんある。 最近、そういった実装に多く悩まされることがある。なぜ実装したかの経緯が残っていないのだ……どういう実装がされているか…

【備忘録】iPadからTailscale経由でssh接続する

iPadからsshで自宅のサーバーに接続したいと思ったことありませんか?え?自宅にサーバーがない?それだと話が終わってしまうので「あるある〜」という前提でこの記事は書いていきます。 Tailscale は WireGuard の技術を使用したVPNのSaaSです。 tailscale.…

Webサイトのキャッシュ戦略を整理する

現在、Web上にはたくさんのWebサイトが存在しています。見る側も昔と比べ格段に増え、現在はスマホをもつ世界中の人々がアクセスしてきます。 そのため、なにかしらWebサイトを立ち上げる際には現在はCDNなどを使用したキャッシュの仕組みが欠かせません。こ…

【備忘録】CloudRunは X-Forwarded-For を上書きする

3行まとめ CloudRunはX-Forwarded-Forを上書きしてクライアントのIPアドレスにしてしまう User - CDN - CloudRun としている場合、X-Forwarded-Forの値はCDNのIPアドレスになってしまう 解決策はCDN独自のヘッダーを付与してアプリケーション側で読むしか方…

docker composeでnginxを動かすときはオリジンのコンテナがHealthyになっているかチェックすると良い

バックエンドとフロントエンドが分かれていたり、細かいルーティングを行うWebアプリケーションではローカルの開発環境でnginxをプロキシサーバとしてかますことが多いと思います。 しかし、docker compose upで立ち上げた初期はバックエンドのアプリケーシ…

【備忘録】Chromium 121でVRTが落ちる事がある

追記 2024年6月4日 4757 - chromedriver - WebDriver for Google Chrome - Monorail のissueを見てみると status が fixed になっており、修正されていそうです。 とはいえ、まだ最新版はパッケージマネージャーに降ってきていないのでまだ待つ必要がありそ…

出社できて偉いボタンを作った

この記事は はてなエンジニアのカレンダー | Advent Calendar 2023 - Qiita の22日目の記事です。 qiita.com developer.hatenastaff.com 前日は id:utgwkk さんの 知見がどんどん集まってくるところが見た〜い - 私が歌川です でした。 突然ですが、 こんに…

Goで作るパスキー

注意 この記事ではgo-webauthnを使用したバックエンド側のWebAuthnの実装について解説しています。 1からWebAuthnを実装したい場合は RFC や W3C を参照してください。 この記事は、四工大アドベントカレンダーのカレンダー | Advent Calendar 2023 - Qiita …

Goのディレクトリ構成で無限に悩んでいる

これは、Go歴1年未満の初心者の戯言です。はてブなんかで指摘していただけると嬉しいです。 Goでアプリケーションを書くときに、クリーンアーキテクチャに則って実装するのは厳しいのではないかということをよく考えている。というのも、Goはディレクトリご…

Cloud BuildでFastlyのキャッシュをパージする

Cloud Runをバックエンドにし、前段にFastlyなどのCDNをかますといった構成をすることは多いと思います。しかし、CDNはデプロイ時にキャッシュをパージしないと古い内容が残ってしまうという問題があります。Next.jsなどは特にパージしてあげなければならず…

【備忘録】CloudRunにFastly CDNを噛ますときはセッション アフィニティをOFFにしないとキャッシュされない

Cloud Run には セッション アフィニティ という機能があります。説明には 同じクライアントからのリクエストを可能な限り同じコンテナ インスタンスにルーティング。 とあるように、Cloud Runで複数のインスタンスが立ち上がっている状態でも可能な限り同一…

Fastlyでオリジン間をBasic認証で保護する

Fastly はVarnish上に構築されているCDNです。 そのため、VCLを自由に書くことができます。これを使用することで CDN - Orign 間通信にBasic認証を追加することも可能です。 TL;DR FastlyのVCL snippets 設定で以下をvcl_missとvcl_passに追加します。値はus…

【備忘録】EQIS-1 でプログラムを書き込む

Caution この記事はドライバのダウンロードなどを説明していますが、行う際はすべて自己責任でお願いします。 Tip 震度表示などをしたい場合は 余談: seismometer ファームウェアを使用する セクションを参照してください。 リポジトリ 環境を作成する Ardui…

ローカル環境で初回コンテナ起動時にMySQLのマイグレーションをする

コンテナ化しているプロダクトをローカルで動作させる場合、MySQLのコンテナを用意しdocker composeで管理することが多いかと思います。 スキーマのマイグレーションは別スクリプトになっていて初回セットアップ時の手順で「docker compose upをした後、マイ…