Category: 開発

uvビルドバックエンド:高速でスムーズなPythonビルド

2025-07-03

uvのネイティブビルドバックエンドであるuv_buildは、Pythonプロジェクトのビルド速度とユーザーエクスペリエンスを大幅に向上させます。ほとんどのユーザーにとってゼロコンフィグレーションを目指した適切なデフォルト設定を備えながら、さまざまなプロジェクト構造に対応する柔軟な設定も提供します。uv_buildは現在、純粋なPythonコードをサポートしています。拡張モジュールを含むライブラリには、代替バックエンドが必要です。このバックエンドを使用するには、`pyproject.toml`に`uv_build`を追加するか、`uv init --build-backend uv`を使用して新しいプロジェクトを作成します。uv_buildは、パッケージ名の正規化、モジュールの検出、ファイルのインクルード/エクスクルード戦略も最適化し、より予測可能で再現性の高いビルドを実現します。

開発

コードこそ全て:マルチコンポーネントパイプライン(MCP)の限界

2025-07-03
コードこそ全て:マルチコンポーネントパイプライン(MCP)の限界

この記事では、多くのタスクにおけるマルチコンポーネントパイプライン(MCP)の実用性を疑問視し、推論への過剰な依存が非効率的でスケーリングが困難であると主張しています。著者は、reStructuredTextをMarkdownに変換するという自身の経験を例に、より優れたアプローチを示しています。それは、大規模言語モデル(LLM)を使用してタスクを実行するコードを生成し、その後LLMベースの検証を行うという方法です。この方法は、推論への依存を減らし、信頼性とスケーラビリティを高め、特に繰り返し実行するタスクに適しています。ニッチなシナリオにおけるMCPの長所を認めつつも、著者は、その本質的な限界が、大規模な自動化を妨げていると結論づけています。そして、より効果的なコード生成技術とLLMによる検証・説明を組み合わせることで、使いやすさと適用性を向上させるべきだと提案しています。

開発

MaxのImagebin:シンプルさの証

2025-07-03
MaxのImagebin:シンプルさの証

この記事は、プログラマーのMaxと、彼が15年前に書いたPHPの画像アップロードスクリプトImagebinの物語です。Imagebinのコードは驚くほどシンプルで、わずか233行、その大部分は変更ログです。著者はGoで書き直そうとしましたが、コードの行数が逆に増え、可読性も低下しました。これはソフトウェア設計の複雑さについて考えさせられ、簡潔なコードの容易な保守性を浮き彫りにしました。MaxのImagebinの長寿命は、このシンプルさによるものです。最終的に著者はMaxのコードを維持し、PHPを使い続けることにしました。

macOS上でネイティブにLinuxカーネルをビルドする:コンパイル地獄への旅

2025-07-03
macOS上でネイティブにLinuxカーネルをビルドする:コンパイル地獄への旅

この記事では、macOS上でネイティブにLinuxカーネル(RISC-Vアーキテクチャ)をビルドした際の著者の経験について詳しく説明しています。この旅は多くの課題に満ちていました。古いmakeのバージョン、macOSのldがLinuxの期待と互換性がないこと、elf.hとbyteswap.hヘッダーファイルの欠如、uuid_tとsedのバージョン競合などです。著者はHomebrewを使用して最新のツールチェーン(make、llvm、lld、libelf、gnu-sed)をインストールし、ヘッダーファイルの不一致と型定義の競合に対処するためにパッチを作成することで、これらの問題を克服しました。カーネルは正常にビルドされ、クリーンビルドではmacOSの方がDockerよりも高速でしたが、インクリメンタルビルドでは遅くなりました。著者は、ビルドの問題の解決は継続的な統合と同様の、継続的で反復的なプロセスであると結論付けています。

開発

AI評価に関するよくある質問と回答:700名以上のエンジニアとPMからの学び

2025-07-03
AI評価に関するよくある質問と回答:700名以上のエンジニアとPMからの学び

この記事では、700名以上のエンジニアとプロダクトマネージャーにAI評価コースを教える中で遭遇したよくある質問をまとめます。RAGが死んだかどうか、モデルの選択、アノテーションツール、評価方法、合成データの生成、既存の評価ツールのギャップなどを取り上げます。著者はエラー分析の重要性を強調し、リッカート尺度よりも2値評価を推奨し、カスタムアノテーションツールの構築、適切なチャンクサイズの選択、RAGシステムの評価に関するベストプラクティスを共有します。また、ガードレールと評価ツールの違い、最小限の実行可能な評価設定、エージェントワークフローの評価、CI/CDと本番監視における評価の異なる用途についても議論します。

JavaScriptにおける関数宣言:関数を定義する3つの方法

2025-07-03
JavaScriptにおける関数宣言:関数を定義する3つの方法

この記事では、JavaScriptにおける関数の宣言方法3つ、関数宣言、関数式、アロー関数の違いと使い分けについて詳しく解説します。関数宣言はホイスティングされます。関数式には名前を付けることができますが、その名前はスコープにバインドされません。アロー関数は簡潔ですが、`this`バインディング、コンストラクタ機能、ジェネレータ機能がありません。どの宣言方法を選択するかは、`this`キーワードを使用するかどうか、ジェネレータ関数が必要かどうか、コードの可読性を重視するかどうかによって異なります。開発者が状況に応じて適切な関数宣言方法を選択できるよう、フローチャートも掲載されています。

開発 関数

コーディングの未来:不安と希望、そしてAI強化型開発者の台頭

2025-07-03
コーディングの未来:不安と希望、そしてAI強化型開発者の台頭

若いプログラマーの不安が、AI時代のプログラミングキャリアの未来への考察を促します。著者は28年間のテクノロジー業界での経験に基づき、AIによる雇用不安に対処します。AIはプログラマーを置き換えるのではなく、能力を高め、創造的な問題解決に集中できるようにするという主張です。将来のプログラマーは、コンテキストをマスターし、AIツールを効果的に導き、停滞を避けるために生涯学習を続ける必要があります。プログラマーの根本的な価値、つまり問題解決、批判的思考、そして人間特有の創意工夫は、AIでは代替できません。

開発

LLM:コード生成は高速化されたが、理解こそがボトルネック

2025-07-03
LLM:コード生成は高速化されたが、理解こそがボトルネック

大規模言語モデル(LLM)の登場により、コード生成速度は劇的に向上しました。しかし、ソフトウェアエンジニアリングにおける真のボトルネック、つまりコードレビュー、知識共有、テスト、デバッグ、チーム連携といった問題は解決されていません。この記事では、LLMによってコード作成コストは下がったものの、コードの理解、テスト、信頼性確保のコストはかつてないほど高まっていると主張しています。LLMで生成されたコードは理解しにくく、既存の規約に反したり、意図しない副作用を引き起こしたりする可能性があり、レビューやメンテナンスの難易度を高めます。結局のところ、ソフトウェアエンジニアリングはチームの信頼、共通の理解、綿密なコードレビューに依存しており、これらが効率向上への鍵となります。

開発

LLMをコンパイラとして:コード生成の未来は?

2025-07-03

著者は、大規模言語モデル(LLM)をコンパイラとして使用する、新しいソフトウェア開発パラダイムを提唱しています。コードを直接記述する代わりに、エンジニアはLLMにコンテキスト(要件、テストケースなど)を提供し、LLMはコードを反復的に生成、統合します。エンジニアはコンテキストとテストに集中し、LLMはコード生成と統合を担当します。これにより、参入障壁が下がり、開発速度が向上し、ソフトウェアエンジニアリングに革命を起こす可能性があります。LLMの出力が完全に予測可能ではないものの、テストと反復によって信頼性を確保できます。重要なのは、コードを中間層と見なし、最終目標は完璧なコードではなく機能であるということです。

開発

Goキャッシュライブラリの進化:RistrettoからOtter v2へ

2025-07-03

この記事では、Goキャッシュライブラリの進化について探求します。初期のGoキャッシュライブラリは、並行処理とパフォーマンスのボトルネックに悩まされていました。Ristrettoが登場し、高いスループットと良好なヒット率を提供することでリーダーとなりましたが、その設計上の欠陥は最終的にヒット率の低下と特定の負荷下での最適ではないパフォーマンスにつながりました。その後、TheineとOtter v1が登場し、Ristrettoの欠点を改善しようとしましたが、それぞれ長所と短所がありました。最終的に、著者はOtter v2を開発しました。これは、先行事例から得られた教訓を取り入れ、JavaのCaffeineライブラリからヒントを得て、高いスループット、高いヒット率、豊富な機能を実現しており、Goキャッシュライブラリの中でもトップレベルの候補となっています。

ヒッグス・バグソン狩り:NFS/Kerberosカーネルレベルの問題のデバッグ

2025-07-03
ヒッグス・バグソン狩り:NFS/Kerberosカーネルレベルの問題のデバッグ

エンジニアは、重要な取引データシステムであるGordで、ファイルコピーの失敗(-EACCES)を引き起こす、再現が困難なバグに遭遇しました。Kerberosを無効にすると問題が解決し、認証の問題が示唆されました。調査の結果、カーネルはrpc_gssdデーモンを介してKerberos資格情報を取得しますが、ログには異常は見つかりませんでした。長時間のテスト、メモリ内擬似ファイルシステムの作成、bpftraceによるカーネルトレースなどを行い、最終的に問題を特定しました。NFSサーバーの負荷が高いため、リクエストの再送が発生し、カーネルは同じXIDだが異なるGSSシーケンス番号を持つリクエスト/レスポンスを誤って処理し、チェックサムの不一致とエラーが発生していました。エンジニアは、シーケンス番号の不一致による即時再送を防ぐために、カーネルを修正しました。

D言語の10個の魅力的な機能

2025-07-03

初心者にも分かりやすいこの記事では、Dプログラミング言語の10個の魅力的な機能を探ります。小さな品質向上のための改善から、自動コンストラクタ、契約による設計、コンパイル時関数実行(CTFE)、組み込みのユニットテストといった主要機能まで、記事では明確な説明が提供されています。D言語の強力なメタプログラミング機能も強調されており、柔軟性とモデリング能力において、静的コンパイル言語の中でも数少ないライバルと言えるでしょう。この記事では、ドル演算子、括弧の省略、統一関数呼び出し構文(UFCS)など、D言語特有の構文機能についても説明し、コードの可読性と効率性が大幅に向上しています。さらに、D言語はスコープ付きと選択的なインポート、そして組み込みのドキュメントジェネレータをサポートしており、コードの保守性と可読性をさらに向上させています。要約すると、D言語は効率的で便利なプログラミングのための魅力的な機能を組み合わせたものです。

開発 機能

AIエージェントの構築をやめよう!

2025-07-03
AIエージェントの構築をやめよう!

Netflix、Meta、米国空軍などのチームにLLM駆動システムの構築に関する助言を行う専門家であるHugoは、多くのチームがAIエージェントの構築に早すぎる段階で取り組んでおり、その結果、複雑でデバッグが難しいシステムになっていると主張しています。彼は、チェイニング、並列処理、ルーティング、オーケストレーターワーカーパターンなどのよりシンプルなワークフローの方が、複雑なエージェントよりも多くの場合効果的であると主張しています。エージェントは、メモリ、委任、計画を必要とする動的なワークフローを扱う場合にのみ適切なツールです。著者は5つのLLMワークフローパターンを共有し、観測可能で制御可能なシステムを構築することの重要性を強調しています。安定したエンタープライズシステムにはエージェントを使用しないでください。それらは、人間の介入を含むシナリオに適しています。

Gmailtail:コマンドラインGmail監視ツール

2025-07-03
Gmailtail:コマンドラインGmail監視ツール

Gmailtailは、Gmailのメッセージをリアルタイムで監視し、JSON形式で出力するコマンドラインツールです。柔軟なフィルタリング(送信者、件名、ラベル、添付ファイルなど)、複数の出力形式(JSON、JSON Lines、コンパクト形式)、OAuth2とサービスアカウント認証、チェックポイント機能などを備えています。シンプルなコマンドライン引数またはYAML設定ファイルを使用して監視ルールをカスタマイズでき、自動化、監視、他のツールとの統合に最適です。

開発

賢いXORのトリック:難しい面接問題を解く

2025-07-03

この記事では、XORビット演算子を使っていくつかの一般的な面接問題を解決する賢いトリックを紹介します。XORには、同じ数字をXORすると0になり、異なる数字をXORすると0以外の値になり、演算の順序は結果に影響しないという独自の性質があります。これらの性質を利用することで、複雑なアルゴリズムやデータ構造に頼ることなく、配列から欠損している数字や重複している数字、さらには2つの欠損/重複している数字をスマートに見つけることができます。この記事では、コード例を交えながらXORトリックの応用を段階的に説明し、効率的で簡潔な問題解決アプローチを提供します。

開発

Rails:オープンソースの奇跡とその影響

2025-07-02
Rails:オープンソースの奇跡とその影響

2004年、MITライセンスの下でリリースされたRuby on Railsは、その自由度、柔軟性、そして強力なコミュニティによって、Webフレームワークのあり方を一変させました。「規約優先設定」という理念、ActiveRecord ORM、そして強力なスキャフォールディングツールにより、開発者の生産性が劇的に向上し、Laravel、Django、Phoenixなど後続のフレームワークに大きな影響を与えました。Railsの成功は、オープンソースソフトウェアが商用ソフトウェアと競争し、場合によっては凌駕できることを証明し、他のフレームワークの模範となり、Web開発を今もなお進化させています。

開発

IntyBASIC:Intellivisionゲーム開発を復活させたBASICコンパイラ

2025-07-02
IntyBASIC:Intellivisionゲーム開発を復活させたBASICコンパイラ

Intellivisionゲーム開発の課題に刺激を受け、著者はIntellivision向けのBASICコンパイラであるIntyBASICを作成しました。2014年にリリースされたIntyBASICは、BASICソースコードをCP1610アセンブリコードに変換し、Intellivisionのビデオとサウンド機能をサポートしています。その成功により、多くの新しいIntellivisionゲームや自作ゲームが生まれ、プログラミングコンテストも開催されました。著者自身も、基本的なものから高度なものまで、ゲーム開発に関する知見を共有する2冊の本を執筆しており、完全なゲームソースコードも含まれています。

開発

ビジュアルチャットボット会話フローエディター

2025-07-02
ビジュアルチャットボット会話フローエディター

ブラウザベースのビジュアルツールで、チャットボットの会話フローをJSONとして設計、テスト、エクスポートします。ノードの追加、コンテンツの編集、フローのテスト、JSONのインポート/エクスポートが可能です。エクスポートされたJSONは、あらゆるチャットボットアプリケーションと互換性があります。インストール方法は、開発依存関係としてインストール、プロジェクトスクリプトへの追加、グローバルインストールの3種類があります。

.NET 8 CanaryビルドでMath.Pow(-1, 2)が-1を返す

2025-07-02
.NET 8 CanaryビルドでMath.Pow(-1, 2)が-1を返す

osu!ゲームの開発者が、Windows 11 Canaryビルド(27881.1000)の.NET 8において、`Math.Pow(-1, 2)`が予想外に-1を返し、1を返さないという奇妙な問題を報告しました。この問題はC++の`std::pow()`でも発生しますが、Pythonでは正しく動作します。開発者はGitHubにIssueを投稿しており、詳細についてはosu!のDiscordサーバーに参加することを提案しています。

「ここをクリック」はもうやめよう!より効果的なリンクテキスト作成

2025-07-02

W3Cは、より効果的なリンクテキストの作成に関するガイドを公開しました。「ここをクリック」といった機械的なフレーズの使用を避け、リンク先のコンテンツを明確に示す簡潔で意味のあるテキストを使用することを推奨しています。この記事では、Web開発者やデザイナー向けの便利なヒントを提供するW3C QA Tipsについても紹介しており、独自のヒントの提出方法や既存のヒントの索引についても説明しています。

Portabl E:クロスプラットフォーム対応AmigaEコンパイラ

2025-07-02

Portabl EはAmigaEプログラミング言語を再構築したもので、改良が加えられ、クロスプラットフォーム互換性を備えています。バージョンr6bがリリースされ、AmigaOS4、AROS、MorphOSを完全にサポートし、AmigaOS3を良好にサポートし、Linux/Windowsの基本機能も備えています。ダウンロードにはユーザー名"user"とパスワード"password"が必要です。このプロジェクトには、サンプルコード、スクリーンショット、プリコンパイル済みプログラム、ドキュメント、フォーラム、メーリングリストが含まれており、コミュニティサポートを提供しています。

開発

arXivLabs:コミュニティとの協働による実験プロジェクト

2025-07-02
arXivLabs:コミュニティとの協働による実験プロジェクト

arXivLabsは、共同研究者がarXivの新しい機能を直接arXivウェブサイト上で開発・共有することを可能にするフレームワークです。arXivLabsと協力する個人や組織は、オープン性、コミュニティ、卓越性、ユーザーデータのプライバシーという私たちの価値観を受け入れています。arXivはこれらの価値観に尽力しており、これらの価値観を遵守するパートナーとのみ協力しています。arXivコミュニティに価値をもたらすプロジェクトのアイデアをお持ちですか?arXivLabsの詳細をご覧ください。

開発

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

2025-07-02
arXivLabs:コミュニティとの共同実験プロジェクト

arXivLabsは、arXivの新しい機能をサイト上で直接開発・共有するためのフレームワークです。参加する個人や組織は、arXivのオープン、コミュニティ、卓越性、ユーザーデータプライバシーという価値観を共有しています。arXivはこれらの価値観を重視しており、これらの価値観を遵守するパートナーのみと協力します。arXivコミュニティを改善するアイデアをお持ちですか?arXivLabsについてさらに詳しく知りたいですか?

開発

自己改善型AIコードファクトリー構築

2025-07-02
自己改善型AIコードファクトリー構築

この記事では、著者によるClaude、o3、SonnetといったAIモデルを用いたパーソナルAIコードファクトリーの構築経験が詳細に記述されています。中心となる考え方は「出力を修正するのではなく、入力を修正する」ことで、生成されたコードを直接修正するのではなく、プラン、プロンプト、またはエージェントの組み合わせを調整します。ファクトリーは、計画(o3)、実行(Sonnet)、検証(o3とSonnet)という3つのステップで反復的に改善され、Git worktreeを使用して並列開発を行います。著者からは、専門のエージェントの作成や一貫したコードスタイルの適用など、スケーリング戦略も共有されています。最終的な目標は、独自のコードを自律的に生成、検証、改善するAIシステムの構築です。

開発

Spegel:LLMを用いてウェブページを書き換えるターミナルブラウザ

2025-07-02
Spegel:LLMを用いてウェブページを書き換えるターミナルブラウザ

Spegelは、LLMを使用してHTMLをMarkdownに変換し、ターミナルに直接レンダリングする、概念実証型のターミナルウェブブラウザです。週末プロジェクトとして開発され、Googleの高速なGemini 2.5 Pro Liteのリリースにより実用性が大幅に向上しました。Spegelは、カスタムプロンプトを通じてパーソナライズされたビューを可能にし、レシピから重要な情報だけを抽出するなど、ユーザーニーズに合わせた表示を実現します。POSTリクエストはサポートしていませんが、ユーザー定義のニーズに焦点を当てることで、従来のターミナルブラウザよりもクリーンで、整理されたブラウジング体験を提供します。

arXivLabs:コミュニティコラボレーターとの実験プロジェクト

2025-07-02
arXivLabs:コミュニティコラボレーターとの実験プロジェクト

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

開発

LSPサーバーによるコードエディタとGUI間のリアルタイム双方向編集

2025-07-02
LSPサーバーによるコードエディタとGUI間のリアルタイム双方向編集

プログラマーは、LSPサーバーを使用して、最新のコードエディタとGUI間のリアルタイムな双方向編集を可能にする概念実証システムを構築しました。コードエディタでの変更はGUIを即座に更新し、その逆も同様です。これは、既存のコードベースのCADシステムの主要な制限を解決します。ユーザーは、お気に入りのエディタを活用しながら、リアルタイムの視覚的なフィードバックを得ることができます。現時点では小さなデモですが、より強力なコードベースのCADツールの構築におけるLSPサーバーの可能性を示しています。

Claudeがx86アセンブリでマンデルブロ集合を描画

2025-07-02
Claudeがx86アセンブリでマンデルブロ集合を描画

ツイートをヒントに、著者はClaude AIにマンデルブロ集合を描画するx86アセンブリコードの生成に挑戦しました。最初のコードはコンパイルできませんでした。しかし、Claude Codeの反復的なデバッグと修正機能を活用することで、Dockerコンテナ内でコードをコンパイルおよび実行し、満足のいくASCIIアートのフラクタルを生成することに成功しました。これは、Claude Codeの優れたコード理解力とデバッグ能力を示しています。

開発

私たちの友情を救ったDiscordボット

2025-07-01

2022年、世界中に散らばった友人たちは、パンデミックの間、連絡を取り合うのに苦労しました。Signalのグループチャットは混沌とした状態になり、ゲームの予定を調整するのが困難になりました。そこで一人の友人が、誰かがボイスチャネルに参加するたびにテキストチャネルに通知を送信するシンプルなDiscordボットを作成しました。この一見小さな解決策は、コミュニケーションの問題を解決しただけでなく、予想外に日常的なカジュアルな交流を促進し、自発的な集まりのためのデジタルな「バットシグナル」となりました。今では、ほぼ毎晩Discordを使用しており、デジタルなつながりを祝うために毎年「Discord Wrapped」イベントを開催しています。

開発

抽象化の境界は最適化の境界:データベースクエリ最適化のための抽象化レベルの引き上げ

2025-07-01
抽象化の境界は最適化の境界:データベースクエリ最適化のための抽象化レベルの引き上げ

アプリケーションがコレクションの各要素に対して1つのSQLクエリを送信するN+1クエリ問題は、リーキーな抽象化に起因します。この記事では、抽象化の境界を下げる(例えば、ORMにバルクフェッチを明示的に指示する)のではなく、上げることを提案しています。ORMを言語に統合することで、N個のクエリを1つのクエリにマージする書き換えルールを作成できます。これは、Haskellがリスト操作の最適化に書き換えルールを使用することと似ており、その宣言的な性質を利用して低レベルの動作セマンティクスを抽象化し、最適化を向上させています。重要なのは、抽象化の境界を引き上げることで、最適化の境界も引き上げられるということです。

1 2 48 49 50 52 54 55 56 214 215