Category: 開発

Crystalラッパーを用いたElixirとGoバックエンドの接続

2025-06-19
Crystalラッパーを用いたElixirとGoバックエンドの接続

Moziチームは、新しいElixir Phoenix LiveViewアプリケーションを既存のGoバックエンドに接続する必要がありました。NIFとPortsを検討しましたが、最終的にErlangのCノードアプローチを選択し、保守性の向上のためCrystalでCラッパーを作成しました。これにより、コンパイル時と実行時の両方のコードベースが分離され、Elixir側の`Node.list`を使用してCノードの接続を検出し、S6を使用してコンテナ内の再起動を行います。C/Go境界を越える際の性能低下はありますが、彼らのユースケースでは許容範囲内です。結果として、保守性を向上させるElixir、Crystal、Goの3言語による洗練された組み合わせが実現しました。

開発

モデルコンテキストプロトコル(MCP)アップデート:セキュリティと機能性の強化

2025-06-19

モデルコンテキストプロトコル(MCP)の新しいバージョンがリリースされました。主な更新内容は次のとおりです。JSON-RPCバッチ処理のサポート削除、構造化ツール出力のサポート追加、MCPサーバーをOAuthリソースサーバーとして分類し、対応する承認サーバーを検出するための保護されたリソースメタデータの追加、悪意のあるサーバーがアクセストークンを取得するのを防ぐために、RFC 8707で説明されているリソースインジケーターのMCPクライアントによる実装を要求、承認仕様と新しいセキュリティベストプラクティスページでのセキュリティに関する考慮事項とベストプラクティスの明確化、対話中にサーバーがユーザーから追加情報を要求できるようにする、イリシテーションのサポートの追加、ツールコール結果へのリソースリンクのサポートの追加、HTTPを使用する場合、後続の要求でMCP-Protocol-Versionヘッダーを介してネゴシエートされたプロトコルバージョンを指定することを要求、ライフサイクル操作におけるSHOULDからMUSTへの変更、その他のスキーマの変更(追加インターフェースタイプへの_metaフィールドの追加、CompletionRequestへのcontextフィールドの追加、ユーザーフレンドリーな表示名のためのtitleフィールドの追加など)。完全な変更ログはGitHubで確認できます。

Linuxにおけるアクセシビリティ:ボランティア開発者の苦悩

2025-06-19
Linuxにおけるアクセシビリティ:ボランティア開発者の苦悩

GNOMEの開発者が、Linuxデスクトップにおけるアクセシビリティ改善の困難さを訴える。GNOME財団の大規模な投資と多くのボランティア時間にもかかわらず、その成果はほとんど認知されておらず、否定的な批判や不当な非難に覆い隠されている。この記事は、GNOMEの成果を利用しながら貢献しない企業を暴露し、Linuxコミュニティに対し、アクセシビリティ開発者の献身を認め、進歩を妨げる組織的な問題に取り組むよう促している。

開発

BeeKEM:分散型セキュアグループメッセージングのための革新的なキーカプセル化メカニズム

2025-06-19
BeeKEM:分散型セキュアグループメッセージングのための革新的なキーカプセル化メカニズム

この記事では、分散型セキュアグループメッセージングのための革新的なキーカプセル化メカニズムであるBeeKEMについて詳しく説明します。従来のTreeKEMとは異なり、BeeKEMは、複数のグループ状態の「エポック」を同時に存在させることで、競合するオフラインアップデートやネットワーク分割からの復旧機能を強化します。メンバーが競合するアップデートを受信した場合、受信したすべてのキーを保持し、「競合」とマークすることで、競合するエポックからのメッセージの復号と読み取りを続行できます。アップデートは、競合するノードを空として扱うことで進みます。BeeKEMは、より強力なプライバシーと自律性を持つローカルファーストアプリケーションの構築に新たな可能性をもたらします。

Unregistry:軽量Dockerイメージレジストリで容易な転送を実現

2025-06-19
Unregistry:軽量Dockerイメージレジストリで容易な転送を実現

Unregistryは、Dockerデーモンのストレージから直接イメージを保存および提供する軽量コンテナイメージレジストリです。`docker pussh`コマンドを使用すると、SSH経由でリモートDockerサーバーにイメージをプッシュでき、欠落しているレイヤーのみを転送するため、高速で効率的です。Docker Hubや自己ホスト型レジストリの複雑さを回避し、`docker pussh myapp:latest user@server`という簡単なコマンドで直接、簡単に転送できます。SSHトンネルを確立し、一時的なUnregistryコンテナを実行し、欠落しているレイヤーのみをプッシュし、その後トンネルを閉じます。本番環境へのデプロイ、CI/CDパイプライン、そして隔離された環境に最適です。

fang:Cobra CLIアプリケーションの強化

2025-06-19
fang:Cobra CLIアプリケーションの強化

fangは、CobraベースのCLIアプリケーションにすぐに使える機能強化を提供する、小型で実験的なライブラリです。完全にスタイル化されたヘルプと使用方法のページ、スタイル化されたエラー、自動--version処理、manページの生成(mangoを使用)、シェル補完、テーマ、サイレントな使用出力などの機能を備えています。統合は簡単で、CLIのユーザーエクスペリエンスを大幅に向上させるために、最小限のコード変更が必要です。

開発

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

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

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

開発

VACモジュールのダンプ:Steamのアンチチートへの深い探求

2025-06-18

この記事は、Valveのアンチチートシステム(VAC)へのリバースエンジニアリングの旅の詳細を説明しています。著者は、Steamサービスプロセス(steamservice.dll)を綿密に分析し、VACモジュールのロードと実行の複雑さを明らかにしています。特定の命令を変更することで、著者はVACにLoadLibraryを使用してモジュールをロードさせ、VACモジュールのダンプを可能にしています。このプロセスは、LoadLibraryW呼び出しの特定、関数呼び出しチェーンの追跡、一時ファイルの識別など、段階的に説明されています。VACモジュールの成功したダンプと、その中の主要な関数の発見は、VACのアンチチートメカニズムのさらなる分析の基礎となります。

開発

LLMを用いたCからRustへの移植の自動化:驚くほど効果的な戦略

2025-06-18

この記事では、著者が大規模言語モデル(LLM)を使用してCコードをRustコードに自動移植した経験について詳述しています。いくつかのアプローチを試した結果、トポロジカルソートとファジングテストに基づく戦略が非常に効果的であることがわかりました。Cコードのシンボルはトポロジカルにソートされ、LLMは各シンボルのRustバージョンとファジングテストケースを生成しました。出力の比較により、移植の正しさが検証されました。この方法により、Zopfli圧縮ライブラリをCからRustに正常に移植し、結果はCバージョンと完全に一致しました。完全に自動化されたものではありませんが、移植のコストと労力を大幅に削減し、大規模コードベースのメンテナンスとアップグレードに対する新しいアプローチを提供します。

(rjp.io)

S-expr: 特異なS式パーサー

2025-06-18
S-expr: 特異なS式パーサー

S-exprは、S式の構文に独自の拡張機能を持つS式パーサーライブラリです。単一行および複数行の文字列とコメントをサポートし、「転置ブロック」という新しい概念を導入しています。転置ブロックは、行と列を入れ替えてコードを記述することを可能にし、複雑な入れ子になった式の見やすさを向上させます。この設計は、S式のシンプルさと、コードの可読性と表現力の向上とのバランスを目指しています。従来のLispよりも複雑ですが、シンプルさと使いやすさのバランスを優先しています。

開発 S式

Flink SQLを用いたエンタープライズAIエージェントの構築:LLMと内部データの接続

2025-06-18

この記事では、Flink SQLを使用してエンタープライズAIエージェントを構築し、大規模言語モデル(LLM)を内部データとリソースに接続する方法を探ります。構造化データの場合、Flink SQLのSQL結合セマンティクスにより、外部データベースのデータとLLM入力を容易に統合できます。非構造化データの場合、この記事では、Retrieval-Augmented Generation(RAG)を提案しており、データをベクトルにエンコードしてベクトルデータベースに保存し、Flink SQLのベクトル型サポートを使用してクエリと統合します。研究論文の要約と社内研究の統合という例を用いて、2つのFlink SQLジョブでAIエージェントシステムを構築する方法を示します。1つのジョブはベクトルストアを更新し、もう1つのジョブはクエリを実行してLLMを呼び出します。最後に、より柔軟なAIエージェント構築のために、AnthropicのMCP標準を統合するためのProcess Table Functions(PTFs)の使用について言及しています。

開発

RAGシステムのナレッジベースの品質向上:AIと人間のためのベストプラクティス

2025-06-18
RAGシステムのナレッジベースの品質向上:AIと人間のためのベストプラクティス

このガイドラインは、Retrieval-Augmented Generation(RAG)システムにおいて、人間とAI/LLMの両方に効果的に役立つドキュメントを作成するためのベストプラクティスを示しています。高品質なドキュメントは、AIのレスポンスとユーザーエクスペリエンスを向上させ、好循環を生み出します。この記事では、AIシステムがドキュメントを処理する方法(検索、ベクトルデータベース、生成)を詳細に説明し、明確で簡潔で、文脈的に完全なコンテンツの重要性を強調しています。推奨事項としては、セマンティックHTMLの使用、PDFの回避、クローラーフレンドリーなコンテンツの作成、セマンティックな明確性の確保、ビジュアル要素のテキスト同等の提供、シンプルなレイアウトの維持などがあります。また、コンテキスト依存、セマンティックな検出可能性のギャップ、暗黙的な知識の仮定、視覚情報の依存など、一般的なコンテンツデザインの課題にも対処しています。階層的な情報アーキテクチャ、独立したセクション、エラーコンテキストとソリューションの提供を推奨しています。最終的な目標は、人間にとって読みやすく、AIにとっても使いやすいドキュメントを作成することです。

ChatGPT:私の静的サイトジェネレーター

2025-06-18
ChatGPT:私の静的サイトジェネレーター

従来の静的サイトジェネレーターにうんざりした著者は、様々な選択肢を探求した後、思いがけない解決策にたどり着きました。それはChatGPTです!新しいブログ投稿と古いブログ投稿をChatGPTにコピー&ペーストするだけで、HTMLページが簡単に生成され、設定も必要ありません。ChatGPTが元の文章を微妙に変更するリスクはありますが、この方法の簡潔さとスピードは魅力的で、この記事もこの方法で作られました。著者は、ドキュメントジェネレーターやコマンドラインツールなど、他の分野でもAIが従来のツールに取って代わる可能性について考察しています。

開発

DSC:PyTorch互換テンソルライブラリと推論フレームワーク

2025-06-18
DSC:PyTorch互換テンソルライブラリと推論フレームワーク

DSCは、機械学習モデルのためのPyTorch互換のテンソルライブラリと推論フレームワークです。C互換の低レベルAPIを、NumPy/PyTorchに似た最新のPython APIでラップしており、使いやすさが向上しています。主な機能には、直感的なAPI、ビルトインニューラルネットワークサポート、複数バックエンドサポート(CPUとCUDA)、最小限の外部依存関係、ランタイムアロケーションなしなどがあります。インストールは簡単で、C++20コンパイラとGNU Makeのみが必要です。CUDAアクセラレーションをサポートしており、環境変数を設定するだけで有効にできます。pytestを使用して単体テストを実行し、正確性を確保しています。

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

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

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

開発

NATを理解する:IPv4枯渇問題に対するLinuxの巧妙な回避策

2025-06-18

自宅のWi-Fiネットワークを想像してみてください。すべてのデバイスが同じパブリックIPアドレスを共有しています。これはネットワークアドレス変換(NAT)のおかげです。IPv4アドレスの数が限られているため、NATはプライベートIPをルーター上の単一のパブリックIPに巧みにマッピングし、複数のデバイスが単一のパブリックIPを共有できるようにします。この記事では、NATの仕組み、さまざまなタイプ(Full Cone、Restricted Cone、Symmetric NAT)、そしてLinuxでの実装(nftablesの使用)をDockerの例を用いて解説します。NATはIPv4枯渇問題を一時的に解決しますが、エンドツーエンド接続の破損や暗号化の複雑化などの制限も導入します。最終的には、IPv6の普及が真の解決策となります。

開発

Workout.cool:オープンソースフィットネスプラットフォームの復活

2025-06-18
Workout.cool:オープンソースフィットネスプラットフォームの復活

Workout.coolは、前身であるworkout.lolの灰の中から復活した、現代的なオープンソースフィットネスコーチングプラットフォームです。ビデオライセンスの問題により元のプロジェクトが放棄された後、開発者Snouzyが引き継ぎ、プラットフォームをゼロから再構築しました。包括的なエクササイズデータベース、進捗状況の追跡、そしてパーソナライズされたトレーニングプランを提供しています。Next.js App RouterとFeature-Sliced Designアーキテクチャを使用して構築されており、コミュニティからの貢献を歓迎しています。これはコミュニティによる、コミュニティのためのプロジェクトであり、オープンソースフィットネスコミュニティに信頼性が高く、メンテナンスしやすいプラットフォームを提供することを目指しています。

開発

プログラマーがAIコーディングツールを拒否:効率性、倫理、環境への配慮

2025-06-18

ベテランプログラマーがAIコーディングツールを使用しない理由を説明しています。それは技術への抵抗ではなく、効率性、倫理、環境への深い懸念からです。著者は、現在のAIツールの生産性向上効果は疑問であり、より多くのバグを導入するリスクがあると主張しています。さらに、AIモデルのトレーニングは環境に大きな負担をかけ、データソースは知的財産権の侵害などの倫理的問題も引き起こします。「苦労と学習」の楽しさ、手書きコードの品質と保守性の利点を強調し、最終的に従来のプログラミング手法を維持し、AI技術のより厳格な規制を求めています。

開発

準同型暗号とローカルファーストソフトウェア:トレードオフ?

2025-06-18
準同型暗号とローカルファーストソフトウェア:トレードオフ?

この記事では、ローカルファーストソフトウェアにおいて、プライバシーデータを保護するために準同型暗号を使用することの課題を探ります。準同型暗号は復号化せずに計算を可能にする一方で、パフォーマンスとストレージのオーバーヘッドが大幅に増加します。著者は、準同型暗号化された「最後の書き込みが勝つ」レジスターCRDTを構築することで、準同型暗号がCRDTアルゴリズムの効率を実際どのように制限するかを示しています。この記事では、準同型暗号が最悪のケースの入力の下で動作する必要があることを強調しており、これにより空間と時間の複雑さが劇的に増加します。最終的に、著者は、ユーザビリティを著しく低下させることなくローカルファーストアプリケーションを保護する方法が依然として未解決の問題であると結論付けています。

A*経路探索アルゴリズム解説:幅優先探索から貪欲探索まで

2025-06-18
A*経路探索アルゴリズム解説:幅優先探索から貪欲探索まで

この記事では、A*経路探索アルゴリズムを分かりやすく解説します。単純な幅優先探索(BFS)から始めて、段階的にダイクストラアルゴリズム(移動コストの差異に対応)、貪欲最良優先探索、そして最終的にA*アルゴリズムを紹介していきます。図解とコード例を用いて、各アルゴリズムの動作や長所・短所を明確に示し、地図上の経路探索やゲームAIなど、様々なシナリオにおける適用性を考察します。A*アルゴリズムは、ヒューリスティック関数を取り入れることで、最短経路を保証しつつ探索効率を向上させるため、多くのゲームで利用されている経路探索アルゴリズムです。

開発

自分の所有物ではないものをモックしないでください:サードパーティ依存関係をテストするより良い方法

2025-06-18
自分の所有物ではないものをモックしないでください:サードパーティ依存関係をテストするより良い方法

この記事では、ユニットテストにおける一般的な問題であるサードパーティ依存関係の処理について説明します。Dockerリポジトリクライアントを例として、HTTPクライアントなどのサードパーティ依存関係を直接モックすることの欠点を示しています。テストが複雑になり、壊れやすく、理解しにくくなるという問題です。提案する解決策は、ビジネスロジックと外部依存関係を分離するための薄い抽象化レイヤーを導入することであり、これによりテストが簡素化され、コードの可読性と保守性が向上します。このアプローチは、よりクリーンで簡潔なテストにつながるだけでなく、ビジネスロジック自体の可読性と保守性も向上させます。例外を認めた上で、著者は、この原則がほとんどの場合、よりエレガントで保守しやすいテストを作成するのに役立つと結論付けています。

Windows NTネイティブAPI関数一覧

2025-06-18

このリストは、ファイルシステム、プロセス管理、スレッド管理、セキュリティ、レジストリなど、さまざまな側面を網羅した多数のWindows NTネイティブAPI関数で構成されています。これらの関数は、低レベルのWindows操作の中核であり、より高レベルのアプリケーションインターフェースの基盤を形成しています。システムプログラマやセキュリティ研究者にとって、これらの関数を理解することは不可欠です。

開発

Scrappy:友人や家族のための自家製アプリ作成ツール

2025-06-18
Scrappy:友人や家族のための自家製アプリ作成ツール

JohnとPontusは、自分自身と友人向けにシンプルでパーソナルなアプリを作成するための研究プロトタイプであるScrappyを作成しました。FigmaやGoogleスライドに似たビジュアルツールですが、インタラクティブなオブジェクトに動作を付加できます。ボタンやテキストフィールドなどのオブジェクトをドラッグアンドドロップし、JavaScriptコードを追加して、ボタンクリックでのテキスト入力の記録などのアクションを定義します。Scrappyアプリはマルチプレイヤーで、永続的で同期された状態であるため、友人や家族とのコラボレーションがスムーズになります。目標はソフトウェア作成の民主化であり、より多くの人が独自のニーズに合わせたアプリを作成できるようにすることです。

マイクロソフトのオープンソースCLIテキストエディタ:Edit – 軽量、高速、VS Code風

2025-06-18
マイクロソフトのオープンソースCLIテキストエディタ:Edit – 軽量、高速、VS Code風

マイクロソフトは、軽量で高速、そして使いやすいオープンソースのコマンドラインテキストエディタであるEditをリリースしました。VS Codeに似たユーザーエクスペリエンスを備え、Editは、最近のWindowsバージョンに組み込みのCLIテキストエディタがないというギャップを埋めることを目指しています。主にWindowsユーザーを対象としていますが、EditはLinuxとmacOSでも動作します。モードレス編集、超高速なファイルオープン、そしてミニマリストな機能セットにより、迅速なテキスト編集に最適です。構文ハイライトなどの高度な機能はありませんが、その速度とシンプルさが魅力的な代替手段となっています。

開発

Incant:コードに魔法の呪文を追加

2025-06-18
Incant:コードに魔法の呪文を追加

Incantは、開発者が言語モデルの呼び出しを安全に統合できるようにする新しいライブラリです。`createSelector`や`createFilter`などのプリミティブを提供し、最大値の選択や男性名のフィルタリングなどの配列操作が可能です。Incantは環境変数からAPIキーを読み取り、設定が容易で、型安全性を保証し、幻覚を防ぎます。ただし、すべての入力データはアップストリームの推論プロバイダーに送信されるため、個人情報や機密情報の送信は避けてください。

開発

AIコーディングアシスタント用ユニバーサルルールテンプレート:ワークフローを強化

2025-06-18
AIコーディングアシスタント用ユニバーサルルールテンプレート:ワークフローを強化

さまざまなコーディングアシスタント間でAIの動作が不整合で困っていませんか?このテンプレートは、AIペアプログラミングエクスペリエンスを向上させるための堅牢でクロスプラットフォームなフレームワークを提供します。Cursor、CLINE、RooCode、Windsurf、GitHub Copilotなどのツールで、確立されたソフトウェアエンジニアリングの原則と構造化されたドキュメントを活用して、AIの一貫した動作、プロジェクトの深い理解、最適なワークフローを保証します。単純なプロトタイプを超えて、プロジェクトを真に理解するAIパートナーによる高度なアプリケーションを構築しましょう。

開発

lstr:超高速Rust製ディレクトリツリービューア

2025-06-18
lstr:超高速Rust製ディレクトリツリービューア

lstrはRustで書かれた、非常に高速でミニマルなディレクトリツリービューアです。`tree`コマンドにインスパイアされ、強力なインタラクティブモードとクラシックビューを提供します。並列ディレクトリスキャンにより速度を最大化し、クリーンで分かりやすいインターフェースを備え、ファイルアイコン、パーミッション、サイズ、Gitステータスを表示するオプションを提供します。`.gitignore`との統合、深さ制御、ファジー検索(fzf経由)もサポートしています。シェルに視覚的な`cd`コマンドとして統合することも可能です。クラシックなツリービューとインタラクティブなTUIのどちらを選んでも、lstrの高効率性とすっきりとしたデザインはファイル管理ワークフローを向上させます。

雨の日のプロジェクト:TinyBASICからGoへのコンパイラ

2025-06-18

雨の週末に、作者はTinyBASICコードをGoコードに変換するコンパイラを作成しました。Goのnex(字句解析器)とgoyacc(構文解析器)を利用し、このプロジェクトは3つの段階、すなわち字句解析、構文解析、コード生成から構成されています。作者は文法とコード生成プロセスを詳細に説明し、サンプルプログラムと出力を示しています。この楽しくてやりがいのあるプロジェクトは、コンパイラ原理の実用的な応用を示しています。

開発

Plasma 6.4:よりスムーズで、より使いやすく、より強力なデスクトップ体験

2025-06-17
Plasma 6.4:よりスムーズで、より使いやすく、より強力なデスクトップ体験

KDE Plasma 6.4が登場し、よりスムーズで、より使いやすく、より強力なデスクトップ体験を提供します。アクセシビリティ、カラーレンダリング、タブレットサポート、ウィンドウマネージャなど、多くの点が改善されています。主な機能としては、仮想デスクトップごとにカスタマイズ可能なタイルレイアウト、改良されたSpectacleスクリーンショットツール、KRunnerでの色の視覚化、デジタルアーティストとHDRディスプレイの強化されたサポートなどがあります。このアップデートでは、通知、ウィジェット、システムモニタリングも改良されています。Plasma 6.4は、より便利で効率的なデスクトップ環境の構築に焦点を当てています。

開発

Rustによるbzip2:高速化とクロスコンパイルの容易化

2025-06-17
Rustによるbzip2:高速化とクロスコンパイルの容易化

新しくリリースされたbzip2 0.6.0は、デフォルトでRust実装のlibbz2-rs-sysを使用しており、圧縮と解凍の速度が大幅に向上し、クロスコンパイルが容易になっています。この作業は、多くのプロジェクトが依然としてbzip2に依存しているという問題に対処しており、Rust版はWebAssemblyへのコンパイルやWindows/Androidとの互換性など、長年のコンパイルの問題に対する解決策を提供しています。ベンチマークテストでは、Rust実装は一般的にC実装を上回り、Miriによるセキュリティ監査でコードの信頼性が確保されています。

開発
1 2 57 58 59 61 63 64 65 214 215