Category: 開発

開発者の時間はどこに消えるのか?40年間の研究がその答えを明らかにする

2025-05-22

長年にわたり、開発者の大部分の時間はシステムの理解に費やされてきました。研究によると、1979年から2018年にかけて、この割合は一貫して高く、ナビゲーション時間を考慮しても約58%に達しています。この記事では、システムの理解は本質的に意思決定のプロセスであり、コードを読むことは単なる非効率的で拡張性のない情報収集手段に過ぎないと主張しています。著者は「モールド可能な開発」という概念を紹介し、特定の問題に合わせたカスタムツールの作成を提唱することで、コードを読むことに頼らず、開発効率を高めることを目指しています。そして、コードを読まずに済ませる方法についての議論を促進するために設計された、モールド可能な開発環境であるGlamorous Toolkitを推奨して記事を締めくくっています。

開発

悪意のあるnpmパッケージがReact、Vue、Vite開発者を標的に

2025-05-22
悪意のあるnpmパッケージがReact、Vue、Vite開発者を標的に

セキュリティ研究者は、React、Vue、Viteを使用するJavaScript開発者のエコシステムを標的にした悪意のあるnpmパッケージを発見しました。これらのパッケージには、2023年の特定の日に爆発するように設計されたペイロードが含まれており、終了日が設定されていないものもあり、持続的な脅威となっています。攻撃者は、正当性を装うために正規のパッケージもアップロードしていました。影響を受けた開発者は、システムをすぐに検査して、悪意のあるパッケージが削除されていることを確認する必要があります。

Defuddle:強力なWebページコンテンツクリーナー

2025-05-22
Defuddle:強力なWebページコンテンツクリーナー

Defuddleは、Webページのコンテンツをクリーンアップするための堅牢なツールです。コメント、サイドバー、ヘッダー、フッターなどの不要な要素を削除し、主要なコンテンツのみを残して、クリーンで読みやすいHTMLドキュメントを生成します。脚注、数式、コードブロックなど、さまざまなフォーマットを処理し、schema.orgデータなどのメタデータを抽出します。DefuddleはObsidian Web Clipperと連携し、Mozilla Readabilityの代替として機能します。ブラウザ版とNode.js版があり、後者はMarkdown変換をサポートしています。

Windows 11アプリ更新:ペイント、切り抜きツール、メモ帳がAI強化

2025-05-22
Windows 11アプリ更新:ペイント、切り抜きツール、メモ帳がAI強化

マイクロソフトは、Windows 11のCanaryとDevチャネルのWindows Insider向けに、ペイント、切り抜きツール、メモ帳のアップデートをリリースしました。ペイントには、AI搭載のステッカージェネレーター、スマートオブジェクト選択ツール、新しいウェルカムエクスペリエンスが追加されました。切り抜きツールには、完璧なスクリーンショットとカラーピッカー機能が追加されました。メモ帳には、AIによるライティング機能が追加され、テキストの素早い作成が容易になります。これらの新機能のほとんどは、Copilot+ PCとMicrosoftアカウントへのサインインが必要です。一部の機能はMicrosoft 365サブスクリプションが必要です。

浮動小数点地獄:Rでの多変量正規分布サンプリングが再現不可能な理由

2025-05-22
浮動小数点地獄:Rでの多変量正規分布サンプリングが再現不可能な理由

この記事では、著者が同僚が抱えていた、多変量正規分布サンプリングに関するRコードの再現性問題を解決する過程について説明しています。問題は、RやMASSパッケージのバグではなく、浮動小数点演算の固有の特性に起因していました。`set.seed()`を使用して乱数生成器(RNG)を制御していたにもかかわらず、`MASS::mvrnorm()`における浮動小数点の丸め誤差により、同じコードが異なるマシンで異なる結果を生成しました。詳細な分析の結果、固有値分解を使用する`MASS::mvrnorm()`は、小さな入力摂動に対して非常に敏感であり、固有ベクトルの符号が反転して再現性が損なわれる可能性があることが分かりました。一方、Cholesky分解を使用する`mvtnorm::rmvnorm()`はより堅牢であることが判明しました。著者は、再現性を向上させるために`mvtnorm::rmvnorm()`を`method = "chol"`と共に使用することを推奨しています。

開発

Rust非同期プログラミング:PinとPin-Projectの使いこなし

2025-05-22

この記事では、Rustの非同期プログラミングにおけるPinとpin-project crateの使い方を詳しく解説します。Futureの関連型と型推論から始まり、Pinの必要性、可変参照と値の移動によるメモリ安全性の問題、そしてPinによる解決策を説明します。Pinの機能、使用方法、pin-project crateによるコードの簡素化、安全で堅牢な非同期ステートマシンの構築方法、pin-projectを使う上での注意点などを詳細に解説します。

開発

Glitch、2025年7月にアプリホスティングを終了

2025-05-22
Glitch、2025年7月にアプリホスティングを終了

人気のアプリケーション開発プラットフォームであるGlitchは、2025年7月8日にアプリホスティングサービスを終了すると発表しました。この決定は、高いメンテナンスコストと、近年登場したより優れた代替プラットフォームの存在が理由です。Glitchチームは、ユーザーのプロジェクト移行を全面的に支援し、コードダウンロード、サブドメインのリダイレクトなどのサービスを提供して、データの安全性とプロジェクトの継続性を確保すると述べています。これは辛い決定ではありますが、進化する開発環境への適応において重要な一歩となります。

軽量RedisTimeSeriesネイティブ監視エージェントrtcollector

2025-05-22
軽量RedisTimeSeriesネイティブ監視エージェントrtcollector

rtcollectorは、システムとアプリケーションのメトリクスを収集し、RedisTimeSeriesにプッシュするための、軽量でプラグインベースのエージェントです。Redis Stackエコシステム向けに設計されており、モジュール式でYAMLで構成可能なアプローチを提供し、開発者は膨大なソリューションなしにメトリクスを容易に収集および管理できます。現在、LinuxとmacOSシステムをサポートしており、Dockerとの統合と、ClickHouse、MQTT、HTTP POST出力の計画されたサポートにより、rtcollectorはシステムを柔軟かつ効率的に監視する方法を提供します。

Poireau: 軽量なサンプリングメモリ割り当てデバッガ

2025-05-22
Poireau: 軽量なサンプリングメモリ割り当てデバッガ

Poireauは、メモリ割り当ての問題をデバッグするための軽量なライブラリです。malloc/callocなどの呼び出しのごく一部をインターセプトすることで、アプリケーションのヒープフットプリントの統計的に代表的な概要を生成し、パフォーマンスへの影響を最小限に抑えます。Poireauは、トレースにLinux perfを使用し、外部スクリプトで分析を行い、メモリリークなどの問題を特定します。その利点としては、侵入性が低い、監査が容易、本番環境での使用に適していることなどが挙げられ、クラッシュ後でも情報を提供できます。

ヒルベルト曲線のグラフィカルデバッグ:視覚的なプログラミングの旅

2025-05-22

著者はミニマリストなプログラミングスタイルを提唱し、LuaとLÖVEを用いてヒルベルト曲線を計算する再帰関数のグラフィカルデバッグを行っています。テキストログ、リプレイログ、サーフェスの描画、「爆発図」描画など、反復的な視覚化の改善を通じて、アルゴリズムの複雑さを明確化します。このプロセスは、洗練されたデバッグUIへと結実し、将来のデバッグタスクに役立つ貴重な洞察と再利用可能なパターンを提供します。

Pydanticで巨大なJSONファイルをパースする際のメモリ消費問題への対処

2025-05-22
Pydanticで巨大なJSONファイルをパースする際のメモリ消費問題への対処

Pydanticで大きなJSONファイルを処理する際、メモリ消費が大きくなるのはよくある問題です。この記事では、PydanticのデフォルトのJSON読み込みにおける高メモリ使用量の原因を分析し、2つの解決策を提案します。1つは、ijsonライブラリを使用して増分JSON解析を行い、解析時のメモリ使用量を削減すること、もう1つは、Pydanticモデルを`slots`付きのdataclassに変換して、オブジェクトのメモリ消費量を削減することです。実験結果から、これらの2つの方法を組み合わせることで、メモリ使用量を元の4分の1に削減できることが示され、巨大なJSONファイル処理におけるメモリボトルネックを効果的に解決できます。

開発 JSONパース

ソートを超えて:深層学習による順序非依存透過性

2025-05-22
ソートを超えて:深層学習による順序非依存透過性

従来の透過レンダリングは深度ソートに依存しており、複雑なシーンではアーティファクトが発生する可能性があります。Eurographics 2025のこの論文は、深度ソートなしで透明オブジェクトを正確にレンダリングする手法である順序非依存透過性(OIT)を探求しています。従来のOITアプローチ(正確、近似、ハイブリッド)と深層学習手法を網羅し、ゲーム、シミュレーション、映画の視覚効果におけるより現実的な透過表現のための範囲、性能、精度を分析しています。

あなたの承認システムは爆発寸前?5つの警告サイン

2025-05-22
あなたの承認システムは爆発寸前?5つの警告サイン

この記事では、アプリケーションの承認システムに潜在的な問題があることを示す5つの兆候について説明しています。権限が単純な辞書であること、ロール権限の更新には多くの場所で変更が必要なこと、「管理者は何ができるのか?」という質問に明確に答えられないこと、将来、カスタムロールと権限が必要になること、モノリスをマイクロサービスに分割する計画があることです。この記事では、宣言的な承認モデルを使用し、承認ロジックを単一のサービスに集中させ、Osoなどのスケーラビリティと分散システム向けに設計された承認プラットフォームを選択することを推奨しています。

形式手法における誤解を招くベンチマークの批判

2025-05-22
形式手法における誤解を招くベンチマークの批判

ある論文が、形式手法を適用してオペレーティングシステムのコードを検証する際に、誤解を招く統計データを使用している。著者は、単に「証明コード比」を比較するという欠陥のある方法を批判しており、それは仕様の完全性と複雑性を無視しているためである。本稿は、証明のサイズは仕様のサイズとほぼ2乗の関係にあり、仕様の複雑さはコードのサイズよりもはるかに重要であることを指摘している。検証済みの複数のシステムを分析することで、著者はコードサイズ、仕様サイズ、証明サイズを含むより包括的なデータを示し、検証コスト削減におけるモジュール化の役割を強調しているが、seL4のような複雑なシステムはモジュール化が困難であることにも言及している。最終的に、著者は研究コミュニティに対し、「証明コード比」という無意味な指標の使用をやめるよう求めている。

開発

DockFlow:macOSのDockレイアウトをワンクリックで切り替え

2025-05-22
DockFlow:macOSのDockレイアウトをワンクリックで切り替え

複数のワークフローでmacOSのDockを常に再配置することに不満を持っていた開発者が、DockFlowを作成しました。この生産性アプリを使用すると、事前に設定されたDockレイアウト(デザイン、コーディング、ライティング、会議など)をワンクリックで切り替えることができます。アプリを探したり、アイコンをドラッグしたりする必要はもうありません。DockFlowはワークフローを合理化し、集中力と生産性を向上させます。

開発

Godotで再実装されたWinamp 2.9:クロスプラットフォーム対応のノスタルジックな音楽プレーヤー

2025-05-22
Godotで再実装されたWinamp 2.9:クロスプラットフォーム対応のノスタルジックな音楽プレーヤー

開発者がGodotエンジンを使って、クラシックな音楽プレーヤーWinamp 2.9を再実装し、完全なクロスプラットフォーム対応を実現しました。Tool Jam 5への応募作品として始まったこのプロジェクトは、古き良きインターネットの雰囲気を保ちながら、現代のツールを使って構築された、カスタマイズ可能な音楽プレーヤーへと進化しています。基本的な再生操作、プレイリスト機能、動作する10バンドEQ、ビジュアライザーなどを備えています。開発者は、これが無料の非営利プロジェクトであり、すべての権利はそれぞれの所有者に帰属すると強調しています。

Pythonパッケージのインストール失敗:aiohttp、cryptography、grpcio、s3fs

2025-05-22
Pythonパッケージのインストール失敗:aiohttp、cryptography、grpcio、s3fs

Pythonパッケージのインストール中に、aiohttp、cryptography、grpcio、s3fsの4つのパッケージのインストールが失敗しました。aiohttpは、コンパイラエラーで不明な型名"__pyx_vectorcallfunc"が発生したため失敗しました。これは、コンパイラまたはCythonのバージョンの非互換性と関連している可能性があります。cryptographyは、依存関係であるasn1パッケージがrustc 1.65.0以降を必要とするのに対し、現在のバージョンが1.63.0であるため失敗しました。grpcioは、C++コンパイラエラーにより拡張機能のコンパイルが妨げられたため失敗しました。s3fsはaiohttpと同じエラーが発生し、コンパイラまたはCythonのバージョンの非互換性問題を示唆しています。boto3やrequestsなどの他のパッケージは正常にインストールされました。

Whenish:iMessageでイベントを簡単に計画

2025-05-22
Whenish:iMessageでイベントを簡単に計画

WhenishはiMessageに直接統合され、イベントの計画を合理化します。ユーザーはチャット内で日付の投票を作成し、自分の予定を選択し、リアルタイムで回答を受け取ることができます。もう終わりのないテキストチェーンやアプリの切り替えは必要ありません。Whenishアイコンをタップして日付を選択し、送信するだけです。グループディナー、週末旅行、家族イベント、または仕事の会議の調整に最適です。

開発

自作iOSミュージックプレイヤー:Appleの囲い込みへの開発者の反乱

2025-05-22

Apple Musicの制限とサブスクリプションモデルに不満を持った開発者が、ゼロから独自のiOSミュージックプレイヤーを構築しました。このプレイヤーはローカルファイル再生、iCloud同期、全文検索を備え、SQLiteのFTS5を巧みに利用して効率的なあいまい検索を実現しています。開発過程ではReact NativeからSwiftUIへの移行を行い、データフローと並行処理を効率化するためにバックエンドに似たアーキテクチャを採用しました。最終的な製品は開発者のニーズを満たしていますが、この経験はAppleの開発者ツールとアプリ配布ポリシーの制限を浮き彫りにし、AI時代の簡素なソフトウェア開発とは対照的に、個人向けアプリ開発の妨げとなっていることを示しています。

開発

Ruby 3.5: Class#new のインライン化による6倍高速なオブジェクトアロケーション

2025-05-22
Ruby 3.5: Class#new のインライン化による6倍高速なオブジェクトアロケーション

Ruby 3.5では、Class#newメソッドのインライン化によって、オブジェクトアロケーションの速度が最大6倍に向上しました。この記事では、この最適化の詳細について解説し、ベンチマーク結果、パフォーマンスボトルネックの分析、インライン化技術の実装原理を説明します。メソッド呼び出しのオーバーヘッドの排除、パラメータコピーの削減、インラインキャッシュのヒット率向上により、Rubyのオブジェクトアロケーションのパフォーマンス問題が効果的に解決されましたが、わずかな後方互換性の問題も発生しています。

開発

バグ評議会を見直す:GitHub Issuesの欠点を修正する

2025-05-22

著者は、シリコンバレー初期のバグ管理システムBugSplatの使用経験を振り返り、4つの主要原則に従っていたことを述べています。それは、すべてのタスクをバグとして記録する、バグに統一された詳細なスキーマを持つ、各バグは1人の担当者のみを割り当てる、柔軟なクエリ機能を持つ、というものです。著者は、GitHub Issuesなどの現在のシステムはBugSplatほど効率的ではないことを発見しました。なぜなら、包括的なスキーマがなく、責任が曖昧で、クエリ機能が限定的だからです。この記事では、著者のチームがオープンソースプロジェクトGiteaを改良してこれらの欠点を解消し、最終的に優先順位でバグリストをソートする機能を実現した方法を説明しています。

開発

AnthropicのMCPプロトコルを用いた記号代数の冒険

2025-05-22

この記事では、AnthropicのModel Context Protocol (MCP)を使用して、大規模言語モデル(LLM)の記号数学における限界を克服する実験について説明しています。MCPは、LLMが外部ツールを呼び出すことを可能にします。著者は、減衰調和振動子の式を解くために、LLMとコンピュータ代数システムであるSymPyを統合しました。MCPエコシステムはまだ発展途上であり、セキュリティリスク(ローカル実行!)も存在しますが、この統合の成功は、このアプローチの可能性を示しています。SymPyのような専門ツールとLLMを組み合わせることで、複雑な数学計算とのインタラクションに革命を起こす可能性があります。

開発

SQLite-JS:JavaScriptでSQLiteを強化

2025-05-22
SQLite-JS:JavaScriptでSQLiteを強化

SQLite-JSは、JavaScriptを使用してカスタムSQLite関数、集約関数、ウィンドウ関数、照合順序を作成できる強力な拡張機能です。これにより、SQLiteデータベース内で柔軟で強力なデータ操作が可能になります。単一行を処理するスカラー関数、複数行を処理する集約関数、完全なデータセットにアクセスするウィンドウ関数、カスタム照合順序(ソート順序の定義)をサポートしています。単純なSQL文で、計算、テキスト操作、データ変換を実行する関数を生成できます。年齢、中央値、移動平均などの計算を行う関数の例があります。複雑なタスクには、JavaScriptコードの直接評価もサポートされています。sqlite-syncと併用すると、カスタム関数はSQLiteクラウドクラスタ全体に自動的に複製されます。

Forge:AWS 上で動作するスケーラブルで安全な GitHub Actions ランナー プラットフォーム

2025-05-22
Forge:AWS 上で動作するスケーラブルで安全な GitHub Actions ランナー プラットフォーム

Forge は、AWS 上でエフェメラルな GitHub Actions ランナーを実行するための、スケーラブルで安全、そして完全に自動化されたマルチテナント プラットフォームです。プラットフォーム エンジニアによってプラットフォーム チーム向けに設計されており、GitHub Actions のデプロイと管理を簡素化します。EC2 と EKS にまたがるエフェメラルな GitHub Actions ランナーのプロビジョニングとライフサイクル管理を自動化し、マルチテナントの分離、ドリフトの修復、組み込みの可観測性などを提供します。さまざまな OS、GitHub Cloud、GHES をサポートし、コストを意識したスケジューリング、柔軟なインフラストラクチャ、マルチランナー デプロイメントなどを特長としています。包括的なクイックスタート ガイドにより、ユーザーは Forge を迅速に展開し、ニーズに合わせて構成できます。

開発

three.jsを使った4D回転曲面空間シェーダー

2025-05-22
three.jsを使った4D回転曲面空間シェーダー

three.jsを用いて作成されたGLSLシェーダーで、4D回転と立体投影を用いて3Dモデルを4D単位球面に投影することで、曲面空間をシミュレートします。元々はUnityゲームSferaのためにHLSLで書かれていましたが、このシェーダーを使用することで、ユーザーはズーム、回転、カメラの視点制御を行い、曲面空間を移動するアニメーションモデルを体験できます。オンラインデモとビデオチュートリアルがあります。モデルはthree.jsリポジトリからランタイムでロードされます。

Rust製AV1デコーダーの性能最適化:不要なゼロクリアと構造体比較の最適化

2025-05-22
Rust製AV1デコーダーの性能最適化:不要なゼロクリアと構造体比較の最適化

Rustで記述されたAV1デコーダーrav1dとCで記述されたdav1dの性能を比較することで、サンプリングプロファイラーを用いて2つの性能ボトルネックを特定しました。1つ目は、ARMアーキテクチャにおけるrav1dでの不要なバッファのゼロクリアで、パフォーマンスの低下につながっていました。2つ目は、rav1dにおける構造体比較の実装の非効率性です。`MaybeUninit`を使用して不要なゼロクリアを回避し、構造体比較を最適化することで、rav1dのパフォーマンスを約2%向上させました。

開発

OpenAIのo3モデルがLinuxカーネルのゼロデイ脆弱性を発見

2025-05-22
OpenAIのo3モデルがLinuxカーネルのゼロデイ脆弱性を発見

この記事では、著者がOpenAIのo3モデルを使ってLinuxカーネルのゼロデイ脆弱性(CVE-2025-37899)を発見した方法を説明しています。ksmbdを監査する際に、著者はo3モデルを使用してコードを分析し、SMBの'logoff'コマンドハンドラーにuse-after-freeの脆弱性を発見しました。o3モデルは、同時接続とオブジェクト共有の複雑なロジックを理解し、脆弱性を特定しました。さらに、o3モデルは別の脆弱性であるCVE-2025-37778も再発見しました。著者は、o3モデルはコード推論能力において著しい進歩を示しており、脆弱性研究者にとって効率を大幅に向上させる強力な新しいツールになると主張しています。

開発 ゼロデイ

コード用OCR:スクリーンショットをコードに変換

2025-05-22
コード用OCR:スクリーンショットをコードに変換

Pieces社は、スクリーンショットからコードを正確に認識するOCR技術を改良しました。Tesseractエンジンをベースに、様々なプログラミング環境(ライト/ダークモード)、ノイズの多い背景、低解像度の画像に対応するため、前処理と後処理のステップを追加しました。暗いモードの反転、ノイズ除去、解像度向上などの画像前処理と、コードのインデント復元を行う後処理により、精度が大幅に向上します。彼らはLevenshtein距離を使用してモデルの性能を評価し、実験的に効率的な画像アップサンプリング方法を選択しました。この技術により、開発者はコードのスクリーンショットを簡単に編集可能なコードに変換でき、開発効率が向上します。

14名エンジニアから超効率的なチームへ:専門化対汎用化の物語

2025-05-22
14名エンジニアから超効率的なチームへ:専門化対汎用化の物語

14人のエンジニアリングチームは、コミュニケーション不足と低い効率性に苦しんでいました。非同期スタンドアップやチーム分割など様々な解決策を試みましたが、根本的な原因に対処できませんでした。最終的に、彼らは専門化を放棄し、ジェネラリストモデルを採用しました。チームメンバーは複数のスキルを習得し、製品のあらゆる側面の責任を共有するようになりました。この変化は、予想外のプラスの効果をもたらしました。より円滑な協力、大幅に改善された効率、より迅速なデリバリー、より高い品質、最適化されたリソース活用です。しかし、ジェネラリストモデルは、一部のメンバーの退職や増加したワークロードなど、いくつかの課題も提示しました。著者は、普遍的に最適なプラクティスはないと主張しています。あなたのチームに適したものが最適であり、継続的な改善と実験が重要です。

Javaのコンパクトオブジェクトヘッダーが製品機能に昇格

2025-05-22

JEP 519により、実験的な機能である「コンパクトオブジェクトヘッダー」がJavaの正式な製品機能に昇格しました。オブジェクトヘッダーレイアウトの最適化とパフォーマンス向上を目的としてJDK 24で導入され、OracleとAmazonで広範なテストを経て、その安定性とパフォーマンス向上が実証されました。有効化のための`-XX:+UnlockExperimentalVMOptions`オプションは不要になります。将来的には、より多くのオブジェクトヘッダービットが必要になった場合、Project ValhallaとLilliputがソリューションを提供します。

開発
1 2 79 80 81 83 85 86 87 214 215