Category: 開発

Mux:開発者向けビデオインフラ

2025-04-17
Mux:開発者向けビデオインフラ

Muxは、開発者向けのビデオインフラを構築しており、ビデオエンコーディング、ストリーミング(Mux Video)、モニタリング(Mux Data)といった難しい問題に取り組むことで、ビデオの民主化を目指しています。CoatueやAccelなどのトップ投資家から支援を受け、Google、YouTube、Twitchなどの経験を持つチームを擁するMuxは、スタートアップからRedditやVimeoといった大企業まで、幅広い顧客層にサービスを提供しています。また、ビデオエンジニアのための主要カンファレンスであるDemuxedも主催しています。

GPG暗号化ファイルを使用した環境変数の安全な管理

2025-04-17
GPG暗号化ファイルを使用した環境変数の安全な管理

このシェルツールは、GPGで暗号化されたファイルを使用して環境変数を安全に管理する方法を提供します。これは、機密情報を含む環境変数を、暗号化されていないシェルファイルに保存する必要があるコマンドラインツールの一般的な問題に対処します。このツールを使用すると、ユーザーは暗号化されたファイルから秘密を読み取り、異なるアカウント間を簡単に切り替えることができます。ネストされたログインをサポートし、`SECRET_LOGIN`環境変数を更新し、シェルプロンプトを変更して現在のログインを表示します。利用可能なファイル名のオートコンプリートも含まれています。

Val: 任意精度計算機言語

2025-04-17
Val: 任意精度計算機言語

Valは、chumskyとariadneを基盤としたシンプルな任意精度計算機言語です。Linux、MacOS、BSDs、Windowsで動作します。Cargoを使ったインストールが容易で、プリビルドバイナリも利用できます。Valは、構文ハイライト、永続的な履歴、Emacsスタイルの編集機能を備えたコマンドラインインターフェースとREPLを提供します。この言語は、関数、ループ、条件文、算術、論理、比較、コレクション操作を網羅した豊富な組み込み関数をサポートしています。データ型には、数値、ブール値、文字列、リストが含まれます。

開発 計算機

距離関数でiCalendarの繰り返しイベントを飼いならす

2025-04-17
距離関数でiCalendarの繰り返しイベントを飼いならす

著者は、iCalendarファイルを処理するためのライブラリを実装する際に、繰り返しイベントの処理という課題に遭遇しました。iCalendarは、繰り返しイベントを定義するために複雑なルールを使用しており、従来の実装では、通常、異なる頻度やパラメータに対して多くの特定のロジックを書く必要があります。著者は別の方法を採用し、繰り返しルールをSQLクエリと見なし、コンピュータグラフィックスにおける符号付き距離関数(SDF)のアイデアを借用して、距離関数を使用してイベントの発生を表しました。この方法は、複雑なルールを単純な距離関数に分解し、繰り返し計算によってイベントの発生時刻を求めることで、多くの条件判断を回避し、よりクリーンで保守しやすいコードを実現します。初期の実装はそれほど効率的ではありませんでしたが、著者はそれを最適化して、複雑な繰り返しルールをミリ秒単位で処理できるようにしました。

(pwy.io)

TypeScript: オブジェクトパラメータ vs. 個別パラメータ

2025-04-17

TypeScriptで関数を書く際に、引数は個別に渡すか、オブジェクトにまとめて渡すかの2つの方法があります。この記事では、オブジェクトパラメータの方が優れていると主張しています。個々のパラメータを使用すると、パラメータの数が増えるにつれて曖昧になり、保守性が悪くなります。一方、オブジェクトパラメータ(例: `{firstName: "John", lastName: "Doe", age: 28, isActive: true}`)は、明確で、自己文書化されており、TypeScriptの自動補完機能と型安全性を最大限に活用できます。

SQLite仮想テーブルにおける書き込みとトランザクションサポート

2025-04-17

この記事では、SQLite仮想テーブルにおける書き込みとトランザクションサポートの実装の詳細を掘り下げています。xUpdate、xBegin、xSync、xCommit、xRollbackなどのフックを実装することで、仮想テーブルは書き込み操作をサポートし、トランザクションの整合性を保証できます。この記事では、SQLiteのロールバックジャーナルとスーパージャーナルのメカニズムが、単一データベースと複数データベースの両方のシナリオでアトミックコミットをどのように調整するか、そして仮想テーブルがどのようにこの2フェーズコミットプロトコルに参加するかを説明しています。著者は、永続性はxSyncで処理する必要があり、xCommitとxRollbackはイデmpotentなクリーンアップ操作のみを実行し、失敗する可能性のある操作を避けるべきだと強調しています。

AgentAPI:コーディングエージェントを制御するための統合HTTP API

2025-04-17
AgentAPI:コーディングエージェントを制御するための統合HTTP API

AgentAPIは、Claude Code、Goose、Aider、CodexなどのコーディングAIエージェントを制御するために設計された強力なHTTP APIです。シンプルなAPI呼び出しを通じてインタラクションを可能にする統合チャットインターフェースを提供します。ユーザーは、1つのエージェントが別のエージェントを制御するMCPサーバーを構築することもできます。AgentAPIはターミナル出力を自動的に処理し、不要な情報を削除して個々のメッセージに解析することで、インタラクションを簡素化します。将来、大規模言語モデルが公式SDKをリリースする可能性がありますが、AgentAPIは、開発者がコーディングAIエージェントを簡単に切り替えることができる普遍的なアダプターを目指しています。

開発

Ubuntu 25.04 “Plucky Puffin”:パフォーマンスとセキュリティの強化

2025-04-17
Ubuntu 25.04 “Plucky Puffin”:パフォーマンスとセキュリティの強化

Canonicalは、Ubuntu 25.04「Plucky Puffin」をリリースしました。GNOME 48、改善されたインストールとブート体験、Springフレームワーク用の新しい「devpack」を搭載しています。このリリースは、Intel GPUでのAIワークロードのパフォーマンス向上と、AMD SEV-SNPを使用したコンフィデンシャルコンピューティングのサポートを提供します。Linux 6.14カーネルには、改善されたスケジューリングと、WineおよびProtonでのWindowsゲームのパフォーマンスを向上させる新しいNTSYNCドライバーが含まれています。Ubuntu 25.04には、最新のツールチェーン、強化された管理機能とネットワーク制御、Intel Core UltraプロセッサとARM64ハードウェアの拡張サポートも含まれています。

開発

サンドボックスでPythonコードを実行するMCPサーバー

2025-04-17
サンドボックスでPythonコードを実行するMCPサーバー

この記事では、Deno内でPyodideを使用してサンドボックスでPythonコードを実行するModel Context Protocol(MCP)サーバーを紹介します。このサーバーは、オペレーティングシステムから隔離された安全な環境をPythonコードに提供します。標準入出力(stdio)、サーバー送信イベント(SSE)、ウォームアップモードなど、複数の動作モードをサポートしており、開発者は簡単にテストやデプロイを行うことができます。PydanticAIを使用した例では、このMCPサーバーを使用してエージェントを介して大規模言語モデルとやり取りする方法を示しています。

開発

Erlang/OTP SSHサーバの重大な脆弱性により、認証なしのリモートコード実行が可能に

2025-04-17

Erlang/OTP SSHサーバに重大な脆弱性(CVE-2025-32433)が発見され、認証なしのリモートコード実行(RCE)が可能になることがわかりました。OTP-27.3.3、OTP-26.2.5.11、OTP-25.3.2.20より前のバージョンが影響を受けます。攻撃者はSSHプロトコルメッセージ処理の欠陥を利用して、資格情報なしで不正アクセスを取得し、任意のコマンドを実行できます。パッチが利用可能です。OTP-27.3.3、OTP-26.2.5.11、OTP-25.3.2.20以降のバージョンにアップデートしてください。

開発

DeepSeekのオープンソース分散ファイルシステム3FSを深く掘り下げる

2025-04-17

DeepSeekは、分散ファイルシステムである3FS(Fire-Flyer File System)をリリースしました。この記事では、分散ファイルシステムの概念と3FSの動作原理を説明します。3FSは、Meta(メタデータ管理)、Mgmtd(管理サーバー)、Storage(ストレージノード)、Client(クライアント)の4つのノードタイプで構成され、CRAQ(Chain Replication with Apportioned Queries)プロトコルを使用して強い整合性を達成します。この記事では、3FSのパフォーマンス特性を分析し、将来のパフォーマンステストと改善の方向性を示します。

開発

go-mcp: タイプセーフなGo SDKによるMCPサーバー開発

2025-04-17
go-mcp: タイプセーフなGo SDKによるMCPサーバー開発

go-mcpは、MCP(Model Context Protocol)サーバーの開発を簡素化するGo SDKです。タイプセーフで直感的なインターフェースにより、開発プロセスが効率化されます。コード生成によってツールとプロンプトパラメーターの静的型付けが保証され、コンパイル時にエラーが検出されます。クリーンなAPIと開発者フレンドリーな設計により、学習と使用が容易です。このプロジェクトには包括的な例とドキュメントが含まれており、ツール、プロンプト、リソース管理、ログ記録などの機能をサポートしています。動的なツールの追加は現在サポートされていませんが、将来のバッチ処理、ストリーム可能なHTTPトランスポート、進捗通知などが計画されています。MITライセンスで提供されています。

開発

Rustのコンパイル時間:25分から2分へ

2025-04-17
Rustのコンパイル時間:25分から2分へ

Felderaチームは、大規模なSQLから生成されたRustコードのコンパイル時間に非常に長い時間を要する問題に直面しました。8562行のSQLプログラムを約10万行のRustコードに変換するのに25分かかっていました。型消去やコード重複排除などの手法を試みましたが、効果は限定的でした。最終的に、生成されたRustコードを1106個の小さなクレートに分割することで、並列コンパイルが可能になり、コンパイル時間を2分未満に大幅に短縮し、マルチコアプロセッサをフル活用できるようになりました。

UTM を使用した Apple Silicon 上での Linux 開発環境構築

2025-04-17
UTM を使用した Apple Silicon 上での Linux 開発環境構築

この記事では、UTM 仮想マシンを使用して、Apple Silicon Mac 上に Linux 開発環境を構築する方法を示します。Homebrew を使用して UTM と cdrtools をインストールした後、cloud-init スクリプトを使用して、Git、Docker などの必須開発ツールのインストールと SSH アクセスの設定を自動化します。仮想マシンの作成、イメージのインポート、cloud-init スクリプトの設定、一時ドライブの削除など、手順を詳しく説明し、機能する Linux 開発環境を構築します。

開発

微分可能なプログラミング:第一原理からの深い探求

2025-04-17

この記事では、微分可能なプログラミングについて包括的な説明を行い、微積分における微分の定義から始め、勾配、方向微分、ヤコビ行列などの概念へと進みます。数値微分、記号微分、自動微分(順伝播と逆伝播モード)の3つの微分手法を詳細に説明し、それぞれの長所と短所を比較します。最後に、逆伝播モードの自動微分と勾配降下法を組み合わせて、画像のぼけ除去の例を用いて現実世界の最適化問題を解決する方法を示します。

arXivLabs:コミュニティとの共同作業による実験プロジェクト

2025-04-17
arXivLabs:コミュニティとの共同作業による実験プロジェクト

arXivLabsは、共同作業者がarXivの新しい機能を直接ウェブサイト上で開発・共有できるフレームワークです。arXivLabsに関わる個人や組織は、オープン性、コミュニティ、卓越性、ユーザーデータのプライバシーというarXivの価値観を受け入れています。arXivはこれらの価値観に尽力しており、それらを遵守するパートナーのみと連携します。arXivコミュニティに価値を加えるプロジェクトのアイデアをお持ちですか?arXivLabsについて詳しく学びましょう。

開発

NPを超えて:より直感的な複雑性問題

2025-04-17
NPを超えて:より直感的な複雑性問題

著者は、停止問題をNP困難よりも難しい問題の典型的な例として用いることに異議を唱え、それが混乱を招き、直感的でない点を主張しています。決定不能である一方、「はい」という答えの検証は、プログラムを有限ステップ実行することで行えます。より理解しやすい代替案として、無限グリッド上でトークンを移動させ、目標地点に到達できるかどうかを判断する問題が提示されています。この問題は、低次元ではPSPACE完全ですが、次元の増加に伴い複雑さが爆発的に増大し、最終的にアッカーマン完全になります。これは、NP問題をはるかに超える複雑性を視覚的に示しています。

Formance:開発者と金融のインタラクションを再定義

2025-04-17
Formance:開発者と金融のインタラクションを再定義

Formanceは、開発者がお金と第一級のプリミティブとしてやり取りし、金融と連携する方法を再定義することをミッションとしています。現在、許可されたベンダーロックインされたインフラストラクチャに隠されているお金は、製品重視の企業に革新的な金融アプリケーションを作成する能力を与えるために、再構築する必要があります。Formanceプラットフォームでは、エンジニアとそのチームに非依存的なプリミティブを提供しています。これらのプリミティブはオープンソースパッケージとして利用でき、選択した金融パートナーに接続できます。Formanceはグローバルネイティブであり、世界中の企業に24時間365日サービスを提供し、金融アプリケーションの構築とスケーリングを支援しています。

開発

フレームワークの悪:ライブラリを作るべき理由

2025-04-17
フレームワークの悪:ライブラリを作るべき理由

この記事では、関数型ライブラリの設計原則、特に合成可能性とコールバックの回避に焦点を当てて解説しています。著者は、フレームワークは合成、調査、テストが困難であり、コード構造を制限すると主張しています。対照的に、ライブラリは開発者に多くの制御を与え、インタラクティブな調査を促進し、複数の抽象化レイヤーをサポートします。ゲームエンジンを例に、非同期ワークフローとイベントベースのプログラミングがコールバックの欠点をどのように軽減できるかを示しています。FsLabなどの例は、ライブラリの合成可能性を示しています。最終的に、著者は、硬直したフレームワークではなく、合成可能で簡単に調査できるライブラリを作成することを提唱しています。

C言語のstdint.hに隠された宝石:limits.hを超えた整数型定義

2025-04-17
C言語のstdint.hに隠された宝石:limits.hを超えた整数型定義

このブログ記事は、C言語を学んでいる著者が整数型定義について予期せぬ発見をしたことを記しています。C言語初期において、整数のサイズは異なるアーキテクチャ間で大きく異なっていたため、Microwareのtypes.hのようなカスタム型定義を作成するコンパイラベンダが存在しました。その後、ANSI C標準でstdint.hが導入され、uint32_tのような標準的な型定義や、limits.hのINT_MAXのような最大値定義が提供されました。しかし、著者は最近、stdint.hにはINT8_MAXやUINT32_MAXのような定義も含まれており、特定のサイズの整数型の最大値と最小値を直接定義するために使用でき、これによりコードの移植性が向上し、プラットフォームの違いによって発生するエラーを防ぐことができることを発見しました。

開発 整数型

Haskellの並行処理:スレッド地獄からの脱出

2025-04-17

この記事では、著者がC/C++/Rustによる組込みシステム開発からHaskellへの転向を語り、Haskellの並行処理における利点を強調しています。Haskellはグリーン スレッドとイベント駆動型I/Oを使用することで、従来のスレッドモデルの複雑さを回避します。`async`パッケージとSTM(ソフトウェア・トランザクショナル・メモリ)によって、Haskellは並行タスクに対するよりクリーンで安全なアプローチを提供します。`concurrently`、`race`、`mapConcurrently`といった関数や、`TVar`、`TBQueue`といったデータ構造により、並行処理を簡素化し、デッドロックや競合状態といった一般的な並行処理の問題を回避します。

開発

ピュアNix三角関数ライブラリ:Pythonを捨ててパフォーマンス向上

2025-04-17
ピュアNix三角関数ライブラリ:Pythonを捨ててパフォーマンス向上

手動でのpingテストなしに17個のVPSノード間のネットワークレイテンシを計算するために、著者はNixを使用してノード座標間の物理距離を計算することでレイテンシを近似しようとしました。Nixにネイティブの三角関数がなかったため、彼はsin、cos、tan、arctan、sqrt関数をピュアNixで実装し、Haversineの公式を使用して距離とレイテンシを計算しました。このプロジェクトは、Pythonなどの外部依存関係を回避し、効率性と再現性を向上させます。

開発 三角関数

Kotlinにおける型クラスとデータ検証:Arrowライブラリを用いたアプローチ

2025-04-17
Kotlinにおける型クラスとデータ検証:Arrowライブラリを用いたアプローチ

この記事では、Kotlinにおける型クラスをデータ検証に用いる方法を探ります。Fintechスタートアップのユーザーポートフォリオ検証システムを例に、Arrow KtライブラリとKotlinのコンテキストレシーバーを用いて、汎用的で再利用可能な検証フレームワークを構築する方法を示します。オブジェクト指向アプローチと型クラスアプローチを比較し、保守性と拡張性の観点から型クラスの利点を強調します。また、Arrowの`EitherNel`型を用いた関数型エラー処理についても説明します。`zipOrAccumulate`関数の詳細も解説します。

Spotify卒業!私の音楽セルフホスティングの旅

2025-04-17
Spotify卒業!私の音楽セルフホスティングの旅

Spotifyに飽きてしまい、完璧な代替案を探す旅に出ました。Winamp、foobar2000を試したり、自作のウェブミュージックプレイヤーを作ったりした後、最終的にJellyfinを選びました。Jellyfinはセルフホスティングのメディアサーバーで、ストリーミングサービスに頼ることなく、いつでもどこでも自分の音楽ライブラリにアクセスできます。技術的な設定が必要ですが、驚くほど簡単で、古いパソコンでも十分です。モバイルアプリと組み合わせることで、オフラインでの音楽再生も快適です。これによりデジタルな自立を実現できただけでなく、Immichなどの他のアプリのセルフホスティングも始めました。

ZFS圧縮のパラドックス:論理ブロック vs. 物理ブロック

2025-04-17

圧縮を有効にしたZFSファイルシステム上で、`dd`コマンドを使って作成した256KBのゼロファイルが、奇妙な挙動を示します。`ls -l`では256KBと表示されるのに対し、`ls -s`と`ls -slh`でははるかに小さいサイズ、ほぼゼロと表示されます。これは、ZFSの高効率な圧縮によって物理ブロック数が最小限に抑えられているためです。この記事では、ファイルサイズの測定方法として、論理サイズ(バイト数)、物理ブロック数、論理ブロック数の3つの方法を検討し、POSIXの`st_blocks`フィールドがどのサイズを報告すべきかを明確に指定していないため、ファイルシステム間でファイルを移動すると`st_blocks`の値が変化し、場合によってはファイルサイズが膨張して新しいファイルシステムに収まらなくなる可能性があることを指摘しています。

開発

データベースクエリエンジン:プッシュ型対プル型

2025-04-16

この記事では、データベースのクエリエンジンにおけるプッシュ型とプル型の違いについて詳しく説明します。プル型システムは、イテレータモデルと同様に、コンシューマ主導型であり、データは必要に応じて取得されます。一方、プッシュ型システムはプロデューサ主導型であり、データをダウンストリームオペレータに積極的にプッシュします。プッシュ型システムは、DAG型のクエリプラン(例:SQLのWITH句)の処理に優れており、データを複数のダウンストリームオペレータに効率的にプッシュすることで、冗長な計算と不必要なバッファリングを回避します。しかし、プル型システムは、特定のアルゴリズム(マージ結合やLIMIT句など)の処理に利点があります。この記事では、キャッシュ効率、コードの簡潔さ、およびさまざまなシナリオにおける各モデルの適合性についても検討し、どちらのモデルも普遍的に優れているわけではなく、選択は具体的な要件によって決まるという結論に至ります。

Plandex:大規模プロジェクト向けAIコーディングエージェント

2025-04-16
Plandex:大規模プロジェクト向けAIコーディングエージェント

Plandexは、ターミナルベースのAI開発ツールであり、複数ステップと多数のファイルにまたがる大規模なコーディングタスクに対処するために設計されています。最大200万トークンのコンテキストを直接処理し(ファイルあたり約10万トークン)、tree-sitterプロジェクトマップを使用して2000万トークン以上のディレクトリをインデックスできます。累積的な差分レビューサンドボックスにより、AI生成の変更は準備が整うまでプロジェクトファイルから分離され、コマンドの実行は制御され、容易なロールバックとデバッグが可能になります。Plandexは、Anthropic、OpenAI、Google、オープンソースプロバイダーのモデルを組み合わせ、完全な自律性と細かい制御の両方を提供し、大規模プロジェクトの複雑さにも対応します。プロジェクトを認識するチャットモード、Git統合、開発者フレンドリーなCLIインターフェースを備えています。

プログラム最適化:書き直す前に試すべき4つのアプローチ

2025-04-16

プログラムの実行速度が遅いことは、プログラマーにとってよくある問題です。この記事では、長年の最適化経験に基づき、著者が4つのアプローチを提案しています。1. より良いアルゴリズムを使用する;2. より良いデータ構造を使用する;3. より低レベルのシステムを使用する;4. 精度の低いソリューションを受け入れる。冒泡ソートと選択ソートを例に、アルゴリズム選択の重要性を詳しく説明し、データ構造やプログラミング言語を選択する際には、実際的な状況を考慮する必要があることを強調しています。著者は、最適化を試みる前に、厳密なプロファイリングを行うことの重要性を警告しています。

Codex:ターミナルで動作する軽量コーディングエージェント

2025-04-16
Codex:ターミナルで動作する軽量コーディングエージェント

Codexはターミナルで動作する軽量なコーディングエージェントで、OpenAI APIを使用してChatGPTレベルのコード推論機能を提供します。インタラクティブモードと非インタラクティブモードの両方を備え、コード補完、実行、依存関係のインストール、さらには単体テストの生成を自動化します。堅牢なサンドボックスにより安全性が確保されます。ユーザーは指示と承認モードをカスタマイズでき、簡単なコードの説明から複雑なリファクタリングまで、さまざまなタスクに対応できます。複数のOSに対応し、オープンソースであるため、コミュニティからの貢献も歓迎されます。Codexは開発ワークフローを効率化します。

開発

Llama 3.3ライセンス:あなたは本当に遵守していますか?

2025-04-16
Llama 3.3ライセンス:あなたは本当に遵守していますか?

オープンソースとして販売されているMetaのLlama 3.3ですが、そのライセンスには多くの開発者が見過ごしている可能性のある制限が含まれています。この記事は、モデルまたは派生製品を配布する際に「Built with Llama」を目立つように表示し、派生モデル名に「Llama-」を接頭辞として付ける必要があることを強調しています。さらに、許容可能な使用ポリシーでは、バイアスや不正確さなど、AIシステムの既知のリスクをエンドユーザーに開示する必要があります。著者は、開発者にライセンスを注意深く確認し、遵守するかどうかを決定して、潜在的な法的問題を回避するよう促しています。

開発
1 2 3 4 5 6 8 10 11 12 108 109