Category: 開発

10年後:RustがC++とJavaの支配に挑戦

2025-06-02

この記事は、2011年のGoogleのレポートを再検討し、C++、Java、Go、Scalaにおけるループ認識アルゴリズムの慣用的な実装を比較しています。10年後、プログラミングの状況は変化し、Rustが強力な挑戦者として台頭しました。著者は実験を再現し、安全なRustと安全でないRustの実装を比較しています。安全なRustはより高速なコンパイルを示しますが、C++よりも実行速度はやや遅いです。安全でないRustは、C++と安全なRustの両方のパフォーマンスを上回ります。コードサイズ、コンパイル時間、メモリフットプリント、実行時間に関するベンチマークは、特にリリースビルドにおいて、C++を凌駕するRustの優れたパフォーマンスとメモリエフィシェンシーを示しています。

開発

Unixのinode 0:忘れられた隅

2025-06-02

この記事では、初期のUnixシステムにおけるinode番号の制限と、inode 0の特殊なケースについて探求しています。著者は、POSIX標準がinode 0の使用を明示的に禁止していないものの、実際には多くのシステムやプログラムがゼロ以外のinode番号に依存している可能性があることを発見しました。inode 0を使用すると、予期しない動作が発生する可能性があり、一部のプログラムでは「ファイルが存在しません」というシグナルとして解釈される可能性があります。ユーザー空間ファイルシステムを使用してinode 0を試すことは可能ですが、互換性の問題や予測できない結果があるため、推奨されません。

開発

軽量で広告非表示のJetpack Composeコンパスアプリ

2025-06-02
軽量で広告非表示のJetpack Composeコンパスアプリ

MBCompassは、Jetpack Composeで構築された軽量なコンパスアプリです。広告や不要な機能で重くなりがちな他のコンパスアプリとは異なり、MBCompassは精度と効率性を重視しています。デバイスの磁力計と加速度計を使用して、リアルタイムの地磁気場の更新を提供します。ユーザーの現在地の表示(OpenStreetMapを使用)、明暗テーマのサポート、磁力強度の表示、画面の常時点灯、横向き表示、スムーズなコンパスの回転、そして精度の向上のためのセンサーフュージョンなどの機能があります。重要なのは、完全に無料で、広告がなく、アプリ内購入もないことです。

開発 コンパス

Moonphase:多言語対応の満月早期警戒システム

2025-06-02
Moonphase:多言語対応の満月早期警戒システム

`moonphase`プロジェクトは、月の位相を計算するための様々なプログラミング言語のコードスニペットを提供しています。これらの実装は、80年代にジョン・ウォーカーによって作られたGUIプログラムmoontoolのアルゴリズムに基づいており、さらに*Practical Astronomy With Your Calculator*という書籍を参照しています。このプロジェクトは、システム言語、スクリプト言語、DSLをサポートしており、すべての実装にはテストケースが含まれており、月の表面の明るさの割合を計算します。このプロジェクトは、簡潔で自己完結型のコードを重視しており、プロジェクトにコピー&ペーストしてすぐに使用できます。

自作C++標準ライブラリ:シンプルさ vs 完全性

2025-06-02
自作C++標準ライブラリ:シンプルさ vs 完全性

著者は趣味で簡略化されたC++標準ライブラリを作成し、Hacker NewsとRedditで共有しました。この投稿は、ライブラリの完全性ではなく、命名と設計哲学に関する議論を引き起こしました。著者は意図的にライブラリの設計を簡素化し、すべての型が「良好に動作する」ことを要求することで、複雑な例外処理を回避しました。これにより、ライブラリの複雑さが大幅に軽減されますが、適用範囲も制限されます。投稿では、文字列の分割とイテレータの実装についても考察し、PythonとC++の差異を比較しています。最終的に、著者は文字列、正規表現、基本的なコンテナの機能を、驚くほど高速なコンパイル時間で完成させました。

開発

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

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

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

開発

INTERCAL-72コンパイラのオリジナルソースコードが再発見される

2025-06-02
INTERCAL-72コンパイラのオリジナルソースコードが再発見される

1972年にプリンストン大学でDon WoodsとJim Lyonによって作成されたINTERCAL-72コンパイラのオリジナルソースコードが再発見され、公開されました。INTERCALは、その奇妙な構文と直感に反する設計で知られる、悪名高い難解プログラミング言語(esolang)です。この再発見により、プログラマーは伝説的なこの言語を直接体験し、難解プログラミング言語の進化への大きな影響を理解することができます。

開発

HeidiSQL AURパッケージの更新:ネイティブビルドでSSHトンネリングの問題を修正

2025-06-02

HeidiSQLのAURパッケージを更新した結果、ネイティブビルドでlibmariadbd.soの問題が解決されました。SSHトンネリング機能が正常に動作するようになり、手動での設定が不要になりました。ランダムなクラッシュが1回発生しましたが、全体的なパフォーマンスは優れています。

形式手法プロジェクトのコストとベネフィットの現実

2025-06-02

この記事は、著者の経験に基づいて、現実世界のプロジェクトにおける形式手法(FM)適用上の課題を探っています。著者は、FMプロジェクトの成功はコストとベネフィットのバランスに左右されると主張しています。多くの潜在的なFMプロジェクトは、高コスト、ベネフィットの定量化の困難、短期的な価値の証明の困難さのために実現しません。この記事は、成功するFMプロジェクトには早期の価値提供、複雑な技術的結果をクライアントが理解できる言語への翻訳、テストやコードレビューなどの低コストの信頼性保証策の優先順位付けが必要であると強調しています。著者は、FMは万能ではなく、ソフトウェアの信頼性とセキュリティを向上させるために他の手法と組み合わせるべきであると強調しています。

Stack Overflow開発者調査2024:AIが開発者の満足度と給与に与える影響

2025-06-01
Stack Overflow開発者調査2024:AIが開発者の満足度と給与に与える影響

Stack Overflowの第15回開発者年次調査は、AI時代の開発者にとって好不両論の結果を示しています。AIツールの採用率は急上昇しており(76%が使用中または使用予定)、一方で開発者の全体的な幸福度は低いままでした(80%が不幸せまたは満足していない)。給与、リモートワークではなく、が満足度の重要な要因であり、役割や地域によって給与に大きなばらつきがあります。AIの精度と誤情報に関する懸念も表面化しています。この調査は、2024年に多くの役割で給与削減が見られた給与動向を詳しく調べ、AIがワークフローと開発者コミュニティのダイナミクスをどのように変えているかを検証しています。テクノロジー業界の労働力に関する現状に興味のある人にとって必読です。

ソフトウェア研究:100倍のバグコストという神話と経験的証拠の欠如

2025-06-01
ソフトウェア研究:100倍のバグコストという神話と経験的証拠の欠如

ソフトウェアのバグ修正コストに関する記事では、長年信じられてきた神話、つまりバグ修正コストは時間とともに指数関数的に増加するという神話が否定されています。この神話は存在しないIBMの調査に基づいています。実際には、既存の研究はこの主張を裏付ける強力な証拠を提供しておらず、解決にかかる時間に大きな違いがないことを示す研究もあります。この記事では、経験的なソフトウェアエンジニアリング研究の重要性を強調し、コードレビュー、短いイテレーションサイクル、フィードバックループの重要性を指摘し、学界が理論を重視しすぎる傾向を批判しています。

開発 経験主義

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

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

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

開発

ZenTransfer:写真家のための無料ファイル転送ユーティリティ

2025-06-01
ZenTransfer:写真家のための無料ファイル転送ユーティリティ

ZenTransferは、MacとWindows向けの無料ファイル転送ユーティリティで、プロの写真家を対象としています。SDカードの空化と3-2-1バックアップの確保、日付に基づいたフォルダへのファイル整理、AWS S3、Azure、Google Cloud Platformへのファイルアップロード、zentransfer.io経由での複数のFTPやクラウドサービスへのリレーなどが可能です。現在ベータ版であり、開発者のChrisは今後の開発と機能追加を決定するためにユーザーからのフィードバックを求めています。

開発 写真家

Ladybirdブラウザ:5月アップデート - パフォーマンス向上と新機能

2025-06-01
Ladybirdブラウザ:5月アップデート - パフォーマンス向上と新機能

Ladybirdブラウザプロジェクトは5月、53人の貢献者から261件のプルリクエストをマージするなど、生産性の高い月となりました。このプロジェクトは新しいスポンサーを迎え、公式に税制上の優遇措置を受けました。今月の主な成果は以下の通りです。Web Platform Tests (WPT) に15,961件の新しい合格テストを追加し、実行時間を大幅に短縮しました。より寛容な新しいJavaScript日付パーサーを実装しました。クリップボードAPIと転送可能なストリームの実装を完了しました。SharedWorkerの初期サポートを行いました。内部BigInt実装をLibTomMathに置き換え、パフォーマンスを向上させました。CSS短縮記法でvar()とattr()を実装しました。Speedometer 2.1で10%の速度向上を実現するパフォーマンス最適化を行いました。

Cloudflare Durable Objects:究極ガイド

2025-06-01
Cloudflare Durable Objects:究極ガイド

この包括的なガイドでは、強力なサーバーレステクノロジーであるCloudflare Durable Objectsを深く掘り下げます。Durable Objectsを使用すると、開発者は世界中にほぼ無限のミニサーバーをスピンアップでき、組み込みの永続的なストレージと、リクエスト間の休止状態機能を備えています。マルチプレイヤーシナリオに優れ、組み込みのWebSocketsを備え、HTTPリクエスト以外でコードをトリガーするためのアラームを提供します。Durable Objectsは、ステートフルなサーバーレスアプリケーションの構築を簡素化し、SQLiteサポートによる効率的なデータストレージを提供します。この記事では、アーキテクチャ、API、コスト、および現実世界のユースケースを網羅し、この革新的なテクノロジーの理解と活用のための包括的なガイドを提供します。

開発

Amiga OSアーキテクチャ:レガシーシステムからの教訓

2025-06-01

この記事では、Amiga OSのAPIとABIについて掘り下げ、実行時リンクを排除する独自の共有ライブラリへの直接呼び出しアプローチに焦点を当てています。これは、ライブラリ内の既知の場所に配置された分岐命令のテーブルを呼び出すことで実現されます。Exec.libraryは常に同じアドレスに存在し、他のライブラリのテーブルのアドレスを取得する機能を提供します。このABIは言語に依存せず、最新のメモリ保護でも機能します。Amiga OSは、効率的なカーネル、メッセージングシステム、そして非同期イベント処理を可能にし、現代システムで一般的なプログラムフリーズを回避するIntuitionウィンドウシステムについても称賛されています。Amiga OSの設計原則は、今日でも依然として関連性があります。

開発

Tailscale、次世代アクセス制御「Grants」を発表

2025-06-01
Tailscale、次世代アクセス制御「Grants」を発表

Tailscaleは、次世代アクセス制御システム「Grants」の一般提供を発表しました。Grantsは、ネットワークとアプリケーションの権限を単一の簡素化された構文に統合し、既存のACLを改良します。ポリシーの作成を簡素化し、アイデンティティベースの認可とカスタムアプリケーション機能のためにtsnetライブラリを介してTailscaleをアプリケーションに直接埋め込むなどの機能を追加し、粒度の細かいトラフィックルーティングのための`via`フィールドを導入します。重要なのは、Tailscaleは以前のACL構文を無期限にサポートし続けるため、段階的な移行が可能になることです。

開発

Svelteの状態管理がReactを凌駕:Prop Drillingからの解放

2025-06-01
Svelteの状態管理がReactを凌駕:Prop Drillingからの解放

複雑なアプリケーションを構築する際、Reactの状態管理は頭痛の種となることがあります。Reactはデフォルトでグローバルな状態管理機構を持たないため、ZustandやJotaiといったサードパーティライブラリに頼らざるを得ず、プロップドリリングの問題が発生し、プロジェクトが複雑で保守困難なものになりがちです。対照的に、Svelteはシンプルで使いやすい状態管理ソリューションであるSvelte storesを備えています。追加の依存関係は不要で、直感的な構文を使用することで、状態管理を大幅に簡素化し、開発者は状態の受け渡しに悩まされることなく、ビジネスロジックに集中できます。この記事では、コード例を用いてReactとSvelteの状態管理アプローチを比較し、Svelte storesの利点を強調します。

開発

JavaScriptにおける「クォート」:Lispに着想を得たモジュール型フロントエンド開発

2025-06-01
JavaScriptにおける「クォート」:Lispに着想を得たモジュール型フロントエンド開発

この記事では、Lispの「コードはデータである」という概念を借用して、Webアプリケーション開発におけるJavaScriptのモジュール性を向上させる方法を探ります。著者は、JavaScriptにはLispのような「クォート」メカニズムがないため、コード断片をデータとして直接操作できない点を指摘しています。しかし、「クォート」を模倣するような仕組み、例えば、クライアントサイドのモジュール識別子を実際のコードではなくクライアントに送信することで、コードの遅延実行とモジュール式の合成を実現できます。これにより、バックエンドプログラムはサーバーサイドとクライアントサイドの動作を合成し、サーバーサイドのロジックが単一の要求/応答サイクル内で完了することを保証し、さらに漸進的なストリーミングを可能にすることで、Webアプリケーションの効率性と保守性を向上させます。

開発

AIによる雰囲気コーディング:プログラマーの終焉か?

2025-06-01
AIによる雰囲気コーディング:プログラマーの終焉か?

AIチャットボットを使った「雰囲気コーディング」が、ソフトウェア開発を急速に変えています。スタートアップ企業BONDは、AIによるコード生成を利用して、わずか1日で新しいオンライン生産性ツールをリリースしました。この驚異的なスピードは、プログラマーの将来について懸念を生んでいます。AIがプログラマーを完全に置き換えるという見方と、AI支援開発への移行により、複雑なタスクや創造的な問題解決に集中できるようになるという見方があります。AIが参入障壁を下げる一方で、コードの改良や複雑なプロジェクトには、熟練したプログラマーの専門知識が不可欠です。

開発

LLMが洗練されたスパムの洪水を解き放つ:モデレーターの悪夢

2025-06-01

ベテランのコンテンツモデレーターが、スパムとの20年にわたる闘いを語り、大規模言語モデル(LLM)の変革的な影響を強調しています。LLMはスパマーの参入障壁を大幅に引き下げ、現実的で文脈に沿ったコメントや要約を生成し、検出がますます困難になっています。この進化は、テキストベースのスパムだけでなく、音声詐欺も包含しており、将来の悪用に対する深刻な懸念を引き起こしています。著者はこの増大する課題に対する懸念を表明し、この増え続ける問題と、AI生成の誤情報が絶え間なく押し寄せることからオンライン空間を守るための革新的な解決策の必要性に注目するよう促しています。

開発

メモリバウンドコードに対するコンパイラ最適化の影響:-O3が常に最適とは限らない

2025-06-01
メモリバウンドコードに対するコンパイラ最適化の影響:-O3が常に最適とは限らない

ジョニーズ・ソフトウェア・ラボの研究によると、メモリバウンドコードにおけるコンパイラ最適化(GCCの-O3など)の効果は必ずしも劇的ではないことが示されました。彼らは、命令レベル並列処理(ILP)が高いカーネルと低いカーネルの2種類をテストしました。その結果、ILPの高いカーネルでは-O3最適化により3倍の高速化が得られましたが、ILPの低いカーネルでは、メモリアクセスがボトルネックになったため、最適化の効果はわずかでした。これは、メモリバウンド性の高いシナリオでは、命令数が少なくなっても、ILPの低さによってパフォーマンスの向上が制限され、コードの特性に合わせて最適化戦略を調整する必要があることを示しています。

ブラウザ拡張機能:正規表現によるURLリダイレクト

2025-06-01
ブラウザ拡張機能:正規表現によるURLリダイレクト

このブラウザ拡張機能(Firefox、Chromeなど)を使用すると、カスタム正規表現またはワイルドカードパターンに基づいてURLをリダイレクトできます。広告のブロック、デスクトップサイトへの強制、DuckDuckGo検索の簡素化などに強力です。YouTube Shortsを通常のYouTubeにリダイレクトしたり、!bang付きのGoogle検索をDuckDuckGoにリダイレクトしたりする例があります。一般的なユースケース向けのプリビルドルールが含まれています。

Figma Slides:プレゼンテーションの大失敗

2025-06-01
Figma Slides:プレゼンテーションの大失敗

著者はプレゼンテーションにFigma Slidesを使ってみましたが、最初は強力なグリッドビュー、オートレイアウト、コンポーネントに感銘を受けました。しかし、実際のプレゼンテーションは大失敗でした。オフラインモードが機能せず、アニメーションにバグがあり、スライドを進めるには何度もクリックする必要がありました。対照的に、著者が長年使用してきたKeynoteは、シンプルながらも常に信頼性が高いことが証明されました。この経験は、結局のところ、信頼性の高い、目立たない技術の価値を浮き彫りにしました。

Rustにおける構造化エラー:トレードオフの評価

2025-06-01

この記事では、Rustアプリケーションにおいて、構造化エラー(例:`thiserror`の使用)と`anyhow`のメリットとデメリットを考察しています。大規模なRust Webサーバーの保守経験に基づき、著者によると、カスタムエラー型はコード量と保守コストが増加する一方で、以下のような大きな利点があります。関数の潜在的な失敗モードを明確に示し、コードの可読性とレビューを向上させること、より記述的なインターフェースを作成すること、冗長なエラーメッセージを回避すること、コンテキストの追加を強制すること、追加データと機能を許可することです。しかし、デメリットとしては、コード量の増加、ネーミングの課題、保守オーバーヘッド、潜在的なパフォーマンスの問題などが挙げられます。著者は、トレードオフはケースバイケースで評価する必要があると結論付けており、大規模アプリケーションでは、構造化エラーの利点がコストを上回る可能性があると示唆しています。

開発

nixos-anywhereを使ったNixOSのネットワークインストール:宣言的なアプローチ

2025-06-01
nixos-anywhereを使ったNixOSのネットワークインストール:宣言的なアプローチ

10年ぶりのNixOS再訪。nixos-anywhereを使ったネットワークインストールの経験を共有します。グラフィカルインストールや手動インストールとは異なり、nixos-anywhereはリモートマシンへのNixOSの宣言的設定とインストールを可能にします。設定ファイルはバージョン管理され、再現性とシステムの整合性が確保されます。この記事では、カスタムインストーラISOの作成と、リモートインストールのためのnixos-anywhereの使い方を詳細に説明し、NixOSの宣言的設定とバージョン管理の利点を強調します。

tldx: 超高速ドメイン名ブレインストーミング

2025-06-01
tldx: 超高速ドメイン名ブレインストーミング

tldxは、利用可能なドメイン名を迅速に生成および確認するコマンドラインツールです。プレフィックス、サフィックス、トップレベルドメイン(TLD)をカスタマイズでき、効率的な同時チェックを実行します。キーワードを入力するだけで、tldxはすぐに利用可能なドメインの組み合わせを返し、完璧な名前を探している創業者や開発者にとって非常に便利です。macOS、Linux、Windowsをサポートしており、brewまたは手動ダウンロードによる簡単なインストールが可能です。

Goにおける構造化エラー:ロギングとエラー処理のギャップを埋める

2025-06-01
Goにおける構造化エラー:ロギングとエラー処理のギャップを埋める

この記事は、中規模のGoプログラム、特にHTTP APIにおけるエラー処理の改善に関する実験を詳述しています。著者は、単純なエラー文字列が構造化ログと効率的なフィルタリングにおいて限界を持つことを指摘しています。構造化エラーへのコンテキストベースのアプローチが提示されており、メタデータをエラー内に埋め込むことで、構造化ログとのシームレスな統合を実現しています。このアプローチは、カスタムエラータイプとcontextパッケージを使用することで、コードのオーバーヘッドを大幅に増やすことなく、エラー情報の豊富さと可読性を向上させ、デバッグを簡素化します。著者は、このプロセスを合理化するためのオープンソースライブラリ`fault`を推奨しています。

Natureプログラミング言語:Go言語の進化?

2025-06-01
Natureプログラミング言語:Go言語の進化?

Natureは、エレガントで簡潔な開発体験を提供することを目的とした、汎用オープンソースプログラミング言語です。開発者は、安全で信頼性の高いクロスプラットフォームソフトウェアをシンプルかつ効率的に構築できます。Go言語の長所、例えば高性能ランタイムやガベージコレクションなどを活用しながら、Go言語の欠点、例えばより強力な型システムやより便利なエラー処理などを改善しています。Natureは早期利用可能なバージョンに達しており、LinuxとmacOSをサポートし、豊富な標準ライブラリとサンプルプロジェクトを提供しています。ゲーム開発、科学計算、AI、オペレーティングシステム、Web開発などに適しています。

開発

死者を蘇らせる:Project Astoria を使用して、非対応の Windows バージョンで Android アプリを実行する

2025-06-01
死者を蘇らせる:Project Astoria を使用して、非対応の Windows バージョンで Android アプリを実行する

この記事では、Microsoft が廃止した Android アプリブリッジソリューションである Project Astoria を、Windows デスクトップからアニバーサリーアップデート以降のさまざまな非対応の Windows バージョンで実行する方法を詳述しています。古い Windows 10 Mobile ビルドのファイルとレジストリエントリを巧みに使用し、期限切れのビルドの「タイムボム」問題を克服することで、著者は Android アプリを正常に実行しています。この記事では、ファイルのコピー、レジストリキーのインポート、サービスの構成、修正済みの WConnectAgent ツールを使用した APK の展開など、各ステップを詳しく説明しています。最後に、著者は Windows 10 で Android CPU-Z を正常に実行しています。

開発
1 2 70 71 72 74 76 77 78 214 215