2025年5月30日
Linux で VS Code の Remote tunnels を最初に使うときにサービスとしてインストールするかを聞かれたので、てっきり常時アクセスできるかと思いましたが、ログアウト時は使えない仕様だったのでシステムサービス化したら便利でした。 ## 環境 * Ubuntu 24.04 Desktop * VS Code 1.100.1 ## やったこと > Remote tunnels を最初に使うときにサービスとしてインストールするかを聞かれた ときに、裏で実行されたコマンドは `cod
2025年5月28日
TipTap のデフォルトの挙動では、Enter キーで改行(新しい段落に移動)したときにその時点のマーク(太字や斜体などのスタイル)が次の段落にも引き継がれるようになっています。 しかしながら、Notion をはじめ世の中の多くのエディタでは段落が切り替わったらマークはリセットされるという仕様になっていることが多く、そちらに慣れていると TipTap の仕様に違和感を感じたりします。今回は段落やリストアイテムが切り替わったら、スタイルをリセットするという仕様を実現する拡張機能を作ってみました。 ちょ
2025年5月15日
Python の非同期プログラミングで複数のタスクを並列に走らせると、タスクごとに独立した状態を持たせたくなる場面がしばしばあります。イメージしやすい例を挙げれば、Web サーバーでリクエストごとに独立した状態を持たせたい場合がそうだと思います。 そこで登場するのがコンテキストローカルな変数を提供する `contextvars` モジュールです。 本記事では `contextvars` の基本から、asyncio タスク内でシャローコピーが行われる際の落とし穴、そして安全に扱うためのパターンまでを解
2025年5月9日
RAG システムの精度を評価するためのフレームワークとして2023年に RAGAS が提案されてから、RAGAS は進化を続けていて2025年5月時点では RAG において8つの指標が定義されています。[^1] ^1]: 論文に登場する3つの指標のうち Context Relevancy は既に廃止されています。Nvidia metrics の中にある [Context Relevance は計算方法が異なるため、別物です。 RAGAS を利用するメリットとして、一番大きな点は人間が作った正解のデータ
2025年5月8日
Azure Container Apps を触ってみて、他サービスと比べて選びたくなるポイントがあったので書いてみたいと思います。 ## 要約 * Azure Container Apps は Kubernetes ベースのマネージドなコンテナプラットフォーム * Kubernetes に慣れている人ならとても扱いやすいけど、面倒なクラスタ管理はしなくていい * Azure Container Apps では KEDA (Kubernetes-based Event Driven Autoscal
2025年3月10日
Next.js の App Router で API を作る時にはレスポンスを `NextResponse.json()` などで返すと思いますが、これを共通化したりする時にシングルトンにしてはいけない、という話です。 ## 何がダメなのか 同時にリクエストすると、レスポンスのボディを取得できなくなります。 ## 検証環境 * next 15.2.1 * react 19.0.0 * next-test-api-route-handler 4.0.15 ## コード ``` app/api ├
2025年3月9日
Azure OpenAI Assistants API と Azure AI Agent Service を比較してみました。2025年3月時点での情報であり、両サービスともプレビュー版のため仕様が変更になることがあります。 ## 機能の比較 ### 共通していること * ステートフルな API を提供するので API 利用者はメッセージ履歴の保存をする必要がない * Code interpreter が使える * AI がコードを生成して API 側のサンドボックス環境で実行してくれる機能 *
2025年2月3日
ちょっとした思いつきで、ブラウザだけでファイルを暗号化して保管できるアプリを作れるのではないかと思い作ってみました。使い道はよくわからないですが、何かの役に立つこともあるかもしれません。 アプリ: https://sogo.dev/local-file-locker/ ソースコード: https://github.com/SogoKato/local-file-locker ファイルを選んで encrypt ボタンを押すと…… !local_file_locker_1 ファイルが暗号化されて保
2025年1月22日
表題の通り、配列の JSON から指定した数だけの要素をランダムで取り出すシェルスクリプトを jq のラッパーとして作ってみました。プルリクエストやマージリクエストのレビュワーをランダムで指名するときに、API で権限のあるメンバーリストを取得してその JSON から抽選できたらいいなーと妄想してます。 ## 前提条件 * Bash * jq ## 成果物 ```bash:jrand.sh #!/bin/bash input=$(jq . ${@:2}) length=$(echo $input
2024年12月21日
システムの仕様上、稀によくめちゃめちゃ長いログが発生することがありますね(?)。そういう時、そのまま出してしまうとログを収集したり集約したりするどこかの上限に引っかかってしまうことが考えられます。もしくは、閾値を超えたときに分割される場合もありますが、JSON のような構造化ログを送るようなケースでは分割されるとデータが破損してしまいます。そのような背景から、長いログの場合にはアプリ側で分割して構造化ログを吐き出せるようにした方がいいと考えて、作ってみました。 ## 成果物 ```python:pys