Category: 開発

Go 1.25の実験的JSONパッケージ:パフォーマンス向上とより厳格な構文

2025-09-10

Go 1.25は、GoのJSONエンコードとデコード機能を向上させる実験的な`encoding/json/v2`と`encoding/json/jsontext`パッケージを導入します。これらは、既存の`encoding/json`パッケージにおける不正確なJSON構文処理、パフォーマンスボトルネック、APIの欠陥などの問題に対処します。改善点には、無効なUTF-8、重複キー、nilのスライス/マップのより厳格な処理が含まれます。ストリーミング処理により、特にアンマーシャリングのパフォーマンスが大幅に向上します。以前のバージョンとほぼ互換性がありますが、`GOEXPERIMENT=jsonv2`を使用してテストし、フィードバックを提供することをお勧めします。

(go.dev)
開発

arXivLabs:コミュニティとの協働によるarXivの新機能開発

2025-09-10
arXivLabs:コミュニティとの協働によるarXivの新機能開発

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

開発

Bottlefire:コンテナイメージをゼロ依存のLinux実行ファイルに変換

2025-09-10

Bottlefireは、コンテナイメージをFirecrackerをバンドルし、microVMを自動的に起動する、スタンドアロンのゼロ依存Linux実行ファイルに変換する画期的なツールです。ユーザーは、root権限や複雑なシステムレベルの設定を必要とせずに、KVMをサポートする最新のamd64/arm64 Linuxプラットフォームでこれらの実行ファイルを実行できます。Bottlefire microVMは、ゼロコンフィグユーザー空間ネットワーク、ポートマッピング、ホストからVMへのディレクトリ共有などの機能を備えており、コンテナのような使いやすさを提供します。curlコマンドで簡単にダウンロードして実行でき、驚くほど効率的なエクスペリエンスを実現します。

開発

printデバッグを超えて:デバッガの7つの超能力

2025-09-10
printデバッグを超えて:デバッガの7つの超能力

無限のprint文によるデバッグにうんざりしていませんか?この記事では、デバッガの7つの隠れた利点を明らかにします:完全なコールスタックの検査、式を動的に評価する(REPLのような)、例外の正確な捕捉、コードを変更せずに実行フローを変更する、プロジェクト設定の標準化、共同作業の簡素化、そして新しい貢献者にとってよりスムーズなオンボーディング体験。デバッガは単なるコード追跡ツールではなく、開発効率とコード品質を向上させる強力なツールであり、面倒なprintデバッグから効率的な開発へと導きます。

開発

1000行のRustコードによるRISC-Vハイパーバイザー

2025-09-10

このオンラインブックでは、Rustを使用して、Linuxベースのオペレーティングシステムをブートできる最小限のRISC-Vハイパーバイザーを構築する方法を学習します。「1000行のオペレーティングシステム」の続編として、ベアメタルプログラミングから始まり、Rustのエコシステムを活用して開発を簡素化し、1000行未満のコードでタイプ1のハイパーバイザーを目指します。実装例はGitHubで入手できます。

再利用性を促進するためのオブジェクト指向設計と関数型設計の統合

2025-09-09

1998年のECOOP論文では、オブジェクト指向プログラミングと関数型プログラミングの長所を組み合わせることで、進化するプログラムにおけるツールとデータ型の拡張という課題に取り組んでいます。従来のアプローチでは、両方をサポートすることが困難でした。関数型プログラミングはツールの追加に優れていますが、オブジェクト指向プログラミングは新しいツールの追加やデータセットの拡張に優れていますが、両方を同時に実現することはできません。本論文では、両方の利点を統合する複合的な設計パターンを提案し、既存のコードを変更せずに拡張性を達成するための、クラスベース言語のための新しい言語機能を提案しています。

開発

Xのデザインノート:OCamlモジュールの統合

2025-09-09

著者は、PolySubMLの型推論と構造的部分型付けをOCamlのほとんどの機能と組み合わせることを目指した新しいプログラミング言語Xを設計しています。特に、OCamlのモジュールシステムと通常の値の間の構文上の違いと概念上の違いに対処することを重視しています。この記事では、レコード内のエイリアスメンバー、structとsig構文、モジュールのオープンとインクルード、モジュールの拡張、存在型による抽象化など、XにおけるOCamlモジュールの統合方法を詳細に説明しています。ワイルドカードインポートの回避など、OCamlのモジュールシステムの改善も提案しています。最終的な目標は、よりシンプルで理解しやすく、強力なプログラミング言語を作成することです。

開発

手動コーディングの終焉?アマゾンからスタートアップへ移った開発者の視点

2025-09-09

アマゾンのAIコーディングアシスタントチームを離れた後、著者はIcon社に入社し、ソフトウェア開発におけるAI革命を目の当たりにしました。アマゾンでは、遅々としたプロセスとKPI重視の意思決定が効率を阻害していましたが、Icon社ではAIを活用したアプローチにより、開発者は設計とユーザーニーズに集中し、コーディングの大部分を自動化しています。著者は、純粋なコーディングスキルは重要性が低下し、ユーザー理解、製品戦略、マーケティングが最重要になると予測しています。開発者は変化に適応し、これらの分野におけるスキルを高めることで、AI時代においても競争力を維持する必要があるでしょう。

開発

DuckDBのnpmパッケージがマルウェアに侵害される

2025-09-09
DuckDBのnpmパッケージがマルウェアに侵害される

DuckDBのNode.js npmパッケージが巧妙なフィッシング攻撃によって侵害されました。4つのパッケージの悪意のあるバージョンが公開され、暗号通貨取引を妨害するように設計されたコードが含まれていました。幸い、これらの悪意のあるバージョンは、DuckDBチームによって特定され非推奨とされる前にダウンロードされなかったようです。チームは、悪意のあるバージョンを非推奨とし、更新された安全なバージョンをリリースすることで迅速に対応しました。この攻撃には、管理者をだまして2FAをリセットさせ、攻撃者に悪意のあるパッケージを公開する能力を与えた、説得力のある偽のnpmウェブサイトが含まれていました。このインシデントは、経験豊富な開発者であっても、堅牢なセキュリティプラクティスが重要であることを強調しています。

開発

NPMパッケージへのマルウェア攻撃とLavaMoatによる防御

2025-09-09
NPMパッケージへのマルウェア攻撃とLavaMoatによる防御

最近の攻撃で、`is-arrayish`というNPMパッケージに悪意のあるコードが注入され、ユーザーのトランザクションからETHを盗もうとする試みがありました。マルウェアは、`fetch`、`XMLHttpRequest`、`window.ethereum.request`などのブラウザ関数を上書きすることでこれを達成しました。この記事では、攻撃の詳細な分析ではなく、LavaMoatを使用してこのような攻撃を防ぐ方法を示しています。LavaMoatは、各依存関係のモジュールを個別の字句的グローバルコンテキスト(コンパートメント)に配置し、ポリシーで指定されたグローバル変数とインポートへのアクセスのみを許可することで、悪意のあるコードのアクセスを制限します。これにより、悪意のあるコードがトランザクションアドレスを変更することが防止されます。高度なマルウェアであっても、LavaMoatの防御を回避するのは困難です。

Rustの型システムビジュアルガイド

2025-09-09
Rustの型システムビジュアルガイド

RustCurious.comは、Rustの型システムのビジュアルガイドを提供しており、インタラクティブなチャートを使用してRustで可能なすべての型を分類しています。このガイドは、`lang_items`、つまり特定の構文をサポートする組み込みの型とトレイトに焦点を当てており、ライブラリコードだけで何が構築できるかを解明することを目的としています。`Vec`、`String`、`HashMap`などは、単なる構造体であるため含まれていません。Rustのプラットフォームに依存しないコアの明確な分離により、no_stdクレートが可能になり、動的ヒープを利用できない組み込みファームウェアやその他のシステムにとって非常に重要です。

開発

レガシーコードの攻略法:Michael Feathersの『Working Effectively with Legacy Code』要約

2025-09-09
レガシーコードの攻略法:Michael Feathersの『Working Effectively with Legacy Code』要約

この記事は、Michael Feathersの古典的名著『Working Effectively with Legacy Code』の中心的な考え方を要約しています。同書は、レガシーコードの根本的な問題はテストの不足であると主張しています。レガシーコードを安全に変更するには、まずテストを追加する必要があります。しかし、テストを追加するにはコードの変更が必要となるため、パラドックスが生じます。本書では、変更点(シーム)の特定、依存関係の解消、テストの記述、リファクタリングの手順に加え、増分的なテスト手法(SproutとWrap)、コードを迅速に理解するためのテクニック(Scratch Refactoring)が解説されています。著者は、単体テストの重要性を強調し、既存コードの挙動を捉えるための特性テスト(Characterization Tests)を紹介しています。最後に、保守コストを削減するために、ライブラリの直接的な実装への依存を避けるようアドバイスしています。

開発

データベーステーブル名:単数形か複数形か?

2025-09-09

データベース設計において、テーブル名を単数形にするか複数形にするかという議論がしばしばあります。複数形(usersなど)は直感的ですが、著者によると、単数形(userなど)の方がSQLのJOIN句などで可読性が向上し、ORMによる自動複数形化による不整合を防ぎ、スキーマの一貫性を保つ上で有利です。そのため、単数形を使用することを推奨しています。

開発

CRDTs:強い最終的な整合性への鍵

2025-09-09
CRDTs:強い最終的な整合性への鍵

CRDTs(Conflict-free Replicated Data Types)は、複数のノードに複製され、独立して編集され、シームレスにマージできるデータ構造です。この記事では、CRDTsが従来の最終的な整合性よりも堅牢なモデルである強い最終的な整合性(SEC)をどのように達成するかを詳しく説明しています。SECは、複数のノードで独立した更新が行われた場合でも、競合が自動的かつ決定的に解決されることを保証し、低レイテンシ、高いフォールトトレランス、オフライン機能を実現します。著者は、CRDTsは強い最終的な整合性システムの基本的な構成要素であり、共同編集やマルチプレイヤーTODOリストをはるかに超え、分散データベースなどにも適用できると主張しています。

C言語におけるコントラクト:概念実証

2025-09-09
C言語におけるコントラクト:概念実証

この記事では、C++のコントラクトの概念をC言語に取り入れる可能性を探っています。著者は、`contract_assert`と`contract_assume`マクロをそれぞれ事前条件と事後条件のチェックに使用する方法を提案しています。`defer`マクロとC23の`unreachable`マクロにより、事後条件をより簡潔に表現できます。また、インライン関数とヘルパー関数を利用して、関数の核心的な実装を変更せずにコントラクトチェックを追加し、コンパイラの最適化を活用する方法も示しています。インターフェース仕様のさらなる洗練が必要ですが、この記事はC言語におけるコントラクトの実現可能性を示す概念実証となっています。

広告ブロッカー検出への優雅なアプローチ:さりげないプロンプト

2025-09-09

ウェブを汚染するインターネット広告と、それが生み出すわずかな収入にうんざりした著者は、巧妙な解決策を実装しました。それは、uBlock Originなどの広告ブロッカーを使用することをユーザーに提案する、目立たないプロンプトです。このプロンプトは、広告ブロッカーが検出されず、十分なスペースがある場合にのみ表示され、簡単に閉じることができるボタンと、繰り返し表示を防ぐCookieメカニズムを提供します。コードはクリーンで、JavaScriptとCSSを使用しており、さまざまな広告ブロッキング方法とブラウザーの互換性を考慮しています。

開発

大規模なNPMパッケージ供給チェーン攻撃:数百万ダウンロードが侵害

2025-09-09
大規模なNPMパッケージ供給チェーン攻撃:数百万ダウンロードが侵害

大規模なサプライチェーン攻撃がnpmエコシステムを標的にし、毎週26億回以上ダウンロードされている複数のパッケージを侵害しました。攻撃者はフィッシングメールを使用して保守者のアカウントにアクセスし、その後、広く使用されている複数のパッケージにマルウェアを注入しました。このマルウェアはブラウザ内の暗号通貨取引を傍受し、資金を攻撃者が制御するウォレットに転送します。NPMチームはいくつかの悪意のあるバージョンを削除しましたが、この事件はソフトウェアサプライチェーンの脆弱性と、フィッシングやブラウザベースの攻撃の増加する脅威を浮き彫りにしています。影響は、限られた時間枠での新規インストールユーザーのみに限定されるため、ある程度軽減されました。

開発

Nova Launcherの不確かな未来:オープンソース化の約束は危うい?

2025-09-09
Nova Launcherの不確かな未来:オープンソース化の約束は危うい?

昨年、Nova Launcherチームのほぼ全員がレイオフされた後、創設者のKevin Barry氏は、開発とオープンソース化の取り組みを停止するように求められた後、会社を退社しました。Novaのウェブサイトはダウンしており、人気のAndroidランチャーの未来は不透明です。Novaを買収したBranch Metricsは、以前、Barry氏が退社した場合、オープンソース化は契約上の義務であると述べていました。しかし、Barry氏と前CEOが退社したため、この約束は果たされず、オープンソース化を求めるコミュニティの嘆願書が出ています。

Nova Launcher開発者が退社、オープンソース化計画は中断

2025-09-09

Nova Launcherの創設者であるKevin Barry氏がBranch社を退社し、Nova Launcherのオープンソース化の取り組みが中止されたことを発表しました。Branch社は以前、Kevin氏の退社後にコードをオープンソース化すると約束していましたが、この約束は最終的に果たされませんでした。Kevin氏は過去1年間、単独でNova Launcherを維持管理し、コードのクリーンアップやライセンスの確認など、オープンソース化に向けた準備を進めてきました。この動きはコミュニティに懸念と残念な思いを与え、この人気のランチャーの将来は不透明となっています。

開発 退社

LLVM IRにバイト型を追加:生データ操作のネイティブサポート

2025-09-09

LLVMコンパイラインフラストラクチャのGoogle Summer of Code 2025プロジェクトは、生メモリ値を表す新しいバイト型をLLVM IRに正常に追加しました。これにより、memcpy、memmove、memcmpなどのメモリ固有の組込み関数のネイティブ実装が可能になり、不正確な変換が修正され、新しい最適化が可能になり、すべて最小限のパフォーマンス影響で実現されます。このプロジェクトは、生メモリを表す型がないというLLVMの長年の問題に対処し、ポインタの来歴追跡と正確なポイズンビット表現により、コンパイラの正確さと最適化が向上しました。C/C++の生メモリアクセスタイプに対するClangの処理も改善され、いくつかの不正確な最適化も修正されました。

開発

CSS、SVG、物理演算を用いたApple WWDC 2025 Liquid Glass効果の再現

2025-09-09
CSS、SVG、物理演算を用いたApple WWDC 2025 Liquid Glass効果の再現

この記事では、AppleのWWDC 2025で発表された見事なLiquid Glass UI効果の再現方法を詳しく解説します。CSS、SVGディスプレイスメントマップ、物理ベースの屈折計算を用いて、説得力のある近似を実現します。著者は屈折の原理を説明し、光が異なる媒体を通過するときにどのように曲がるか、そして数学関数がどのようにガラス表面の形状を記述するかを詳しく説明します。次に、SVGディスプレイスメントマップを使用して屈折効果をシミュレートします。この記事は、拡大鏡、検索ボックス、スイッチ、スライダーなどのUIコンポーネントをLiquid Glass効果で作成することで締めくくられています。なお、最適なパフォーマンスは、現在、SVGフィルターをバックドロップフィルターとしてサポートしているChromeで確認されています。

開発

大規模なnpmパッケージサプライチェーン攻撃:毎週20億ダウンロードが侵害

2025-09-09
大規模なnpmパッケージサプライチェーン攻撃:毎週20億ダウンロードが侵害

9月8日、セキュリティ研究者らは、毎週20億回以上ダウンロードされている18の人気のあるnpmパッケージを標的とした大規模なサプライチェーン攻撃を発見しました。このマルウェアは、ブラウザで暗号資産とWeb3の活動を密かに傍受し、ウォレットの操作を操作し、資金を攻撃者が制御するアカウントにリダイレクトします。攻撃者はフィッシングメールで保守者のアカウントを侵害し、パッケージを密かに更新しました。一部の影響を受けたパッケージはクリーンアップされていますが、注意が必要です。安全なnpmパッケージ管理方法を使用してください。

開発

グリッド対応ウェブサイト:より環境に優しいウェブサイトを目指して

2025-09-08

この記事では、「グリッド対応ウェブサイト」という概念を探求しています。これは、ユーザーの電力網における再生可能エネルギーの割合に基づいてウェブサイトのパフォーマンスを調整し、炭素排出量を削減することを目的としています。著者は、eコマースの商品表示ページの例を用いて、11tyとAstroフレームワークにおけるグリッド対応の実装方法、技術的な実装、課題、将来の方向性を示しています。中心となる考え方は、電力網のエネルギーのクリーンさに応じてウェブサイトの機能を動的に調整することで、「汚れた」電力網ではページを簡素化し、リソース消費を削減することで、ウェブサイトのカーボンフットプリントを低減することです。APIコストやスタック間の連携といった課題がありますが、この技術は、ウェブサイトの持続可能性向上のための重要な手段となる可能性を秘めています。

macOSでLLMをローカル実行する:懐疑論者のガイド

2025-09-08

このブログ投稿では、著者がmacOSマシン上で大型言語モデル(LLM)をローカルに実行した経験について詳しく説明しています。LLMを取り巻く過剰な宣伝に懐疑的な見方を示しつつ、llama.cppやLM Studioといったツールをインストールして使用するための実践的なガイドを提供しています。このガイドでは、サイズ、ランタイム、量子化、推論機能などの要素に基づいて適切なモデルを選択する方法を網羅しています。著者は、LLMのローカル展開によるプライバシーの利点とAI企業への依存の軽減を強調し、機能を拡張するためのMCPの活用や、情報損失を防ぐためのコンテキストウィンドウの管理など、ヒントやテクニックを提供しています。また、AI業界の現状に関する倫理的な懸念についても触れています。

開発

パッケージマネージャー:プログラミングのパンドラの箱?

2025-09-08

この記事では、プログラミング言語のパッケージマネージャーの欠点を批判的に検討しています。著者は、パッケージマネージャーが「依存関係の地獄」を自動化し、プロジェクトの複雑さを隠蔽し、サードパーティコードへの過剰な信頼につながると主張しています。特に、堅牢な標準ライブラリを欠いた言語では、異なるマネージャーによるパッケージ定義の不整合が、「パッケージマネージャーマネージャー」さえも引き起こす可能性があります。著者は、手動による依存関係管理を提唱し、これにより開発者は依存関係について批判的に考えることを強いられ、コードの安定性と保守性が向上すると考えています。時間コストを認めつつも、著者は、セキュリティと制御が自動化による利便性を上回ると主張し、Goの包括的な標準ライブラリを例として挙げています。

開発

機能比較:2つの強力な写真・動画管理アプリ

2025-09-08
機能比較:2つの強力な写真・動画管理アプリ

この記事では、2つの写真・動画管理アプリの機能を比較分析します。どちらも、動画と写真のアップロードと閲覧、自動バックアップ、資産の重複防止、選択的アルバムバックアップ、ローカルデバイスへのダウンロード、マルチユーザーサポート、アルバムと共有アルバム、スクロール可能な/ドラッグ可能なスクロールバー、RAW形式のサポート、メタデータビュー(EXIF、マップ)、メタデータ、オブジェクト、顔、CLIPによる検索、仮想スクロール、OAuthサポート、LivePhoto/MotionPhotoのバックアップと再生、ユーザー定義のストレージ構造、パブリックシェアリング、アーカイブとのお気に入り、グローバルマップ、パートナーシェアリング、顔認識とクラスタリング、思い出(x年前)、スタック写真、フォルダビューをサポートしています。ただし、一方のアプリは管理機能、バックグラウンドバックアップ、360度画像表示、タグ、オフラインサポートがありません。

ビジュアルストーリーライティング:視覚的な操作によるインタラクティブなストーリーテリング

2025-09-08
ビジュアルストーリーライティング:視覚的な操作によるインタラクティブなストーリーテリング

Visual Story-Writingは、イベント、キャラクター、およびそれらの行動の視覚的な表現を操作することでユーザーがストーリーを編集できるシステムです。視覚化の変更(例:キャラクターの移動、キャラクターの接続)に基づいて、GPT-4を使用してテキストの編集を提案します。TypeScript、React、およびViteを使用して構築され、OpenAI APIキーが必要であり、ビデオチュートリアルとarXiv論文が含まれています。

開発

ICEBlockアプリ開発者が重大なセキュリティ脆弱性を無視

2025-09-08
ICEBlockアプリ開発者が重大なセキュリティ脆弱性を無視

100万回以上ダウンロードされたICEBlockアプリは、ICEの目撃情報を匿名で報告できます。しかし、開発者のJoshua Aaron氏は、Apacheサーバーの重大なセキュリティ脆弱性を無視していました。セキュリティ研究者のMicah Lee氏は、Aaron氏に繰り返し警告し、解決策を提供しましたが、Aaron氏はそれを無視し、Lee氏のアカウントをブロックさえしました。これは、ユーザーデータのセキュリティに関する深刻な懸念を引き起こし、アプリのセキュリティに対する無責任な姿勢を浮き彫りにしています。

コードリーディング:バグハンティングの超能力

2025-09-08

この記事では、著者のキャリアにおける大きな転換点、つまり反復的なコーディングからバグの積極的な発見への転換について説明しています。テスト駆動開発の反復だけに頼るのではなく、コードを注意深く読むことで事前に問題を特定することを提唱しています。著者は、コードを注意深く読み、プログラムの完全なメンタルモデルを構築し、そのモデルとGit内の実際のコードとの違いを特定することが重要だと主張しています。この記事では、制御フローとデータ構造に焦点を当て、コード内の潜在的なエラーが発生しやすいパターンを特定することを提案しています。このアプローチにより、バグを大幅に削減し、コードの品質を向上させることができます。

不満を貢献に変える:リーダーのためのガイド

2025-09-08
不満を貢献に変える:リーダーのためのガイド

チームにおける継続的な不満は、士気と生産性に悪影響を与えます。この記事では、強化、学習性無力感、統制の locus、認知バイアス、そして所属感を含む、不満の背後にある心理学を探ります。不満を抑制したり解決したりする代わりに、リーダーは質問を用いてチームメンバーを解決策に巻き込むよう促されます。不満の言い換え、少人数グループでの議論、不満の収集、会議の儀式など、ネガティブなエネルギーを建設的な行動に変えるための実践的なツールが提案されています。焦点は、非難から責任へと転換し、貢献の文化を育むことです。

開発
1 2 7 8 9 11 13 14 15 214 215