Category: 開発

TextKit 2:4年後、万能薬ではない

2025-08-16
TextKit 2:4年後、万能薬ではない

WWDC21で発表されたTextKit 2は、4年経っても使いやすさが期待どおりではありません。アーキテクチャは堅実ですが、実装には多くの問題があります。NSTextContentStorageは唯一の実用的なストレージ実装であり、カスタマイズ性が大きく制限されています。さらに、パフォーマンス向上を目的としたビューポートメカニズムは、スクロール時のスクロールバーの位置が不安定になり、カクカクした動きを引き起こします。作者は多くのバグに遭遇し、その中には長期間解決されないものもあり、ユーザーエクスペリエンスに大きな影響を与えています。要するに、TextKit 2は、特にテキスト編集UIに関しては、完璧なテキストレイアウトソリューションではありません。

CorebootによるGigabyte MZ33-AR1でのAMD Turinサポートの有効化:フェーズ1完了

2025-08-16

このブログ投稿では、CorebootでのAMD Turinサポートの有効化とGigabyte MZ33-AR1マザーボードへの移植の第一段階について説明します。NLnet Foundationの資金提供を受けたこのプロジェクトは、AMDによるオープンソースファームウェアへの取り組みを基盤としています。チームは、Coreboot内でTurin SoC構造を正常に作成し、必要なPSPファームウェアパッケージを抽出して統合し、MZ33-AR1マザーボードの基本的なサポートを構築しました。公開されているTurin PSP blobの統合には課題がありましたが、回避策により正常にブートすることができ、今後の改善への道が開かれました。

開発

効率的なAIエージェントシステムの構築:UserJotからの学び

2025-08-16
効率的なAIエージェントシステムの構築:UserJotからの学び

UserJotは、顧客からのフィードバックを大規模に分析し、変更ログを自動生成するためのマルチエージェントAIシステムの構築を試みました。この記事では、その過程で得られた重要な知見を共有しており、中心となるのは2層アーキテクチャです。プライマリエージェントはコンテキストとタスクの分解を管理し、ステートレスなサブエージェントは個々のタスクに焦点を当てます。効率性は、タスクの分解(垂直と水平)、構造化された通信プロトコル、エージェントの専門化、MapReduceなどのオーケストレーションパターンから生まれます。この記事では、ステートレスの重要性、コンテキスト管理戦略、エラー処理メカニズムを強調し、パフォーマンスの最適化に関するヒントや監視メトリクスを提供します。

開発

意外な遅さ:シンプルなソケットベンチマークがLinuxのOpenBSDに対する遅れを示す

2025-08-16

スレッドを作成し、256個のソケットを開く単純なCプログラムが、LinuxとOpenBSDの間で驚くべきパフォーマンスの違いを示しました。Linuxでは、実行時間は17〜26ミリ秒の間で変動しますが、OpenBSDではわずか2〜6ミリ秒です。さらに興味深いことに、OpenBSDは最初に「開いているファイルが多すぎる」というエラーを返しましたが、これはリソース管理の違いを示唆しています。著者は、この違いはネットワークコードとは関係ないと述べており、このベンチマークでOpenBSDを凌駕するLinuxシステムを見つけるよう読者に挑戦しています。

ジム地獄の47秒:Apple WalletでPureGymの壊れたチェックインを修正する方法

2025-08-16
ジム地獄の47秒:Apple WalletでPureGymの壊れたチェックインを修正する方法

iOS開発者のPureGymアプリへの不満(チェックインに47秒もかかる!)が、彼を狂騒の旅へと導きました。彼は、笑っちゃうほど安全性の低いAPIを発見しました。8年間変わっていないPINコードの方が、1分ごとに更新されるQRコードよりも安全だったのです。mitmproxyを使ってシステムのリバースエンジニアリングを行い、PassKitでApple Walletパスを作成し、チェックイン時間を3秒に短縮しました。この記事では、リバースエンジニアリング、証明書との格闘、Swiftバックエンド開発などのプロセスを詳しく説明しています。Home Assistantにも統合しました。ユーモラスで技術的な詳細に富んだ個人的なプロジェクトで、ユーザーエクスペリエンスの重要性を強調しています。

開発

Gitの大ファイルキラー:Git LFSの終焉が近い

2025-08-16

大規模ファイルは長らくGitの問題でした。Git LFSは解決策ではありましたが、新たな複雑さとコストをもたらしました。しかし、Git自身も徐々にこの問題に取り組んでいます。最新のGitリリースでは、部分クローン機能が導入され、Git LFSと同じメリット、つまり高速なクローンと小さなチェックアウトを提供しつつ、追加のツールやサーバーサイドのコストを必要としません。さらにエキサイティングなのは、Gitの大規模オブジェクトプロミサーが開発中で、将来的にはGit LFSを完全に時代遅れにする可能性があり、大規模ファイルの管理をよりシンプルで効率的にします。もう大規模ファイルの頭痛の種とは無縁です!

漢字失念症:意味は覚えているのに書けないのはなぜ?

2025-08-15
漢字失念症:意味は覚えているのに書けないのはなぜ?

著者は、日本語学習において、まず漢字の意味と書き方を覚え、その後発音を覚えるという方法で大きな成功を収めました。しかし、長年経った今、多くの漢字の書き方を忘れてしまっていることに気づきました。この「漢字失念症」は日本や中国で広く見られる現象です。著者は、読みと書きにおける脳の異なる処理過程を探り、自身が抱える「心像想起不能症」(アフアタンジア)の経験を踏まえ、「漢字失念症」の背後にある認知科学的メカニズムを分析します。それは、脳における「逐語的痕跡」と「要約的痕跡」という2つの記憶メカニズムに関連していると考えています。

開発

LLM:優れたコードジェネレーターだが、劣悪なソフトウェアエンジニア

2025-08-15
LLM:優れたコードジェネレーターだが、劣悪なソフトウェアエンジニア

長年のソフトウェアエンジニアの面接から、明確なメンタルモデルの構築と維持が重要であることが明らかになった。LLMはコードの生成と修正に優れているが、これらのモデルを維持する重要な能力を欠いている。簡単に混乱し、コンテキストの欠落や最近のバイアスに苦しみ、詳細な幻覚を起こし、複雑なタスクの反復的な問題解決を妨げる。著者は、LLMはソフトウェアエンジニアにとって便利なツールだが、単純なプロジェクト以外では置き換えられないと結論付けている。

開発

ブラウザからXSLTを廃止すべきか?

2025-08-15
ブラウザからXSLTを廃止すべきか?

ブラウザに組み込まれたXSLTプロセッサ(バージョン1.0、1999年に標準化)は時代遅れであり、セキュリティリスクをもたらしています。現代のWeb開発ではJavaScriptとJSONが使用されており、XSLTはほぼ使われなくなっています。古いXSLTライブラリ(Chromiumのlibxsltなど)のメンテナンスはリソースを消費し、メモリセーフティの脆弱性による攻撃を受けやすいため、大きな攻撃対象となります。この提案は、セキュリティリスクを軽減し、リソースの割り当てを最適化するために、Web標準からXSLTを廃止することを提案しており、開発者にとって実質的な機能の損失はありません。

開発

中心極限定理のシミュレーションと可視化:実践的な探求

2025-08-15

この記事では、シミュレーションと可視化を通して中心極限定理(CLT)を探求します。以前は統計を避けていた著者は、R言語を使用して様々な分布(一様、正規、二項、ベータ、指数、カイ二乗)からサンプルを生成し、標本平均を計算します。結果は、サンプルサイズが増加するにつれて、標本平均の分布が正規分布に近づくことを視覚的に示しており、CLTを確認しています。さらに、サンプルサイズが限られており、母分散が不明な場合に、正規分布ではなくt分布を使用することの実用的な意味合いについても調査します。シミュレーションは、様々なサンプルサイズにおける信頼区間のカバレッジの違いを強調しています。最後に、アニメーションは、サンプルサイズが増加するにつれて標本平均の分布が正規分布に収束していく様子を示し、この基本的な統計的概念に対する説得力のある視覚的な理解を提供しています。

MacBookのノッチがゲームレンダリングを破壊:開発者の悪夢

2025-08-15
MacBookのノッチがゲームレンダリングを破壊:開発者の悪夢

ノッチのあるMacBookディスプレイでは、多くのゲームが正しくレンダリングされません。この問題は、ゲームが画面解像度を取得する方法(CGDisplayCopyAllDisplayModes)に起因しており、ノッチ領域を含む解像度が返されるため、ゲームの視覚表現が圧縮され、歪んでしまいます。この記事では、さまざまな画面領域(フルスクリーン、セーフエリア、AppKitフルスクリーンエリア)の違いを分析し、解像度をフィルタリングするためのソリューションを提供しています。しかし、最終的には、AppleのAPI設計が根本原因であると指摘しています。この記事では、影響を受けるゲームと、Appleが実装できる潜在的な改善策(HIGの更新、CGDisplayModeの改善、新しいゲーム中心のAPIの作成など)もリストアップしています。

WTF:ビルドの可視化によるパフォーマンスボトルネックの発見

2025-08-15
WTF:ビルドの可視化によるパフォーマンスボトルネックの発見

What the Forkは、あらゆるビルドシステムのビルドプロセスを視覚化するクロスプラットフォームツールであり、開発者がパフォーマンスのボトルネックを特定して解決するのに役立ちます。システムコールを監視することで、プロセスの開始と終了を追跡し、プロセスのタイムライン、コマンド、引数などを表示するインタラクティブな視覚化を生成します。著者は、さまざまなプロジェクトのビルドプロセスの例を通して、このツールの威力を示し、並列処理の不足や冗長な操作などの問題を明らかにしています。これにより、開発者はビルド時間を大幅に最適化でき、特にCIビルドで効果的です。

開発

Linuxのコピー&ペーストがレトロなアップグレード:Ctrl+Shiftに別れを告げる

2025-08-15
Linuxのコピー&ペーストがレトロなアップグレード:Ctrl+Shiftに別れを告げる

LinuxターミナルでのCtrl+Shift+C/Vによるコピー&ペーストにうんざりしていませんか?朗報です!2025年末までに、ほとんどのLinuxアプリケーションが従来の「コピー」と「ペースト」キーコードをネイティブにサポートするようになります。これは、プログラマブルキーボードの台頭と、GTKやQTなどのソフトウェアツールキットによるこれらのキーコードのサポートのおかげです。Alacritty、Foot、Weztermなどのいくつかのターミナルエミュレーターは既にサポートしており、Gnome TerminalやKonsoleも年末までにアップデートでサポートされる予定です。これにより、Linuxでのコピー&ペースト体験が革新的に向上し、より便利で効率的になります。

Ghostty GTKの書き直し:GObjectとValgrindの勝利

2025-08-15

ターミナルエミュレータGhosttyのGTKアプリケーションは完全に書き直され、ZigのGObject型システムを完全に採用し、すべてのステップでValgrindを使用してメモリ検証を行いました。その結果、LinuxとBSD上でより機能が豊富で、安定性が高く、保守性の高いGhosttyが実現しました。書き直しでは、GObjectシステムを避けていたことによって発生していた以前のメモリ管理の問題に対処し、GObjectの属性変更通知システムを使用して、設定の再読み込みなどのタスクを簡素化しました。Valgrindは少数のメモリの問題を発見しましたが、ほとんどはC APIとの相互作用に関連しており、大規模で複雑なプロジェクトにおけるZigのメモリ安全性機能の有効性を示しています。

開発

EmbedPDF:洗練されたオープンソースJavaScript PDFビューア

2025-08-15
EmbedPDF:洗練されたオープンソースJavaScript PDFビューア

EmbedPDFは、MITライセンスのフレームワーク非依存のオープンソースJavaScript PDFビューアです。React、Vue、Svelte、Preact、またはvanilla JSを使用して構築する場合でも、EmbedPDFはスムーズでモダンな読書体験とクリーンな開発者APIを提供します。注釈(ハイライト、付箋、フリーテキスト、インク)、真の改ざん、検索、テキスト選択、ズーム、回転、スムーズな仮想スクロールなどの機能を備えています。拡張可能なアーキテクチャとツリーシェイク可能なプラグインも備えています。コントリビューションは大歓迎です!

Jujutsu + Radicle:ほぼブランチレスなワークフロー

2025-08-14
Jujutsu + Radicle:ほぼブランチレスなワークフロー

この記事では、著者がJujutsuとRadicleを組み合わせて、ほぼブランチレスなバージョン管理ワークフローを実現する方法を説明しています。JujutsuはGitの上位に位置する透過的なレイヤーとして、変更IDを使用して変更を管理し、rebaseやsquashといった複雑なGit操作を簡素化します。RadicleはGitのストレージとプロトコルを活用し、安全で信頼性の高いコードコラボレーションプラットフォームを提供します。著者は、`.git/config`と`.jj/config`の設定、`jj new`、`jj edit`、`jj squash`、`jj rebase`などのコマンドを使用して変更を作成、編集、マージ、並べ替え、Radicleのpatchメカニズムによって効率的なコードコントリビューションとメンテナンスを実現し、最終的に煩雑なブランチ管理を排除し、開発効率を向上させる方法を詳しく説明しています。

開発

Linux ASIのパフォーマンスブレークスルー:I/Oオーバーヘッドが70%から13%に削減

2025-08-14

長年にわたり、Googleのエンジニアは、増加するCPUの投機的実行の脆弱性に対抗するために、Linuxカーネルのアドレス空間分離(ASI)に取り組んできました。初期の実装では、I/Oスループットが70%も低下するという深刻な問題がありました。しかし現在、そのオーバーヘッドはわずか13%に減少しました。GoogleのエンジニアであるBrendan Jackman氏は、この取り組みを再開し、ページキャッシュのパフォーマンス問題に対する解決策を提示しました。コンテキストスイッチやコピーオンライト操作など、課題は残っていますが、大幅な進歩により、ASIはCPUの脆弱性に対する一般的なソリューションとしての可能性が高まりました。

Org-social: Orgモードベースの分散型ソーシャルネットワーク

2025-08-14
Org-social: Orgモードベースの分散型ソーシャルネットワーク

Org-socialは、HTTP経由で提供されるOrgモードファイル上で動作する分散型ソーシャルネットワークです。ユーザーは`social.org`ファイルを作成し、個人情報と投稿を追加して、Webサーバーにアップロードします。シンプルで、登録不要、データベース不要で、投稿、返信、メンション、投票など、Orgモードの機能を活用しながら、さまざまなテキストエディタとの互換性を維持しています。その中核となる価値は、シンプルさ、アクセシビリティ、分散化、そしてOrgモードの原則への準拠です。

開発 orgモード

ArchWikiの成功の秘訣:DebConf25からの教訓

2025-08-14

Arch LinuxのArchWikiは、その高品質なドキュメントでLinuxコミュニティで知られています。DebConf25で、ArchWikiのメンテナは、コンテンツ戦略、貢献ガイドライン、コミュニティ管理など、成功の秘訣を共有しました。MediaWikiの長所である包括的で高品質、最新の情報を利用しながら、MediaWikiマークアップ言語の複雑さ、貢献者の参入障壁の高さ、AI生成コンテンツやスクレイピングボットによる脅威といった課題にも取り組みました。将来の計画には、コミュニティの関与の向上、より多くのエディタツールの開発、AIの慎重な導入などが含まれています。このプレゼンテーションは、DebianがMediaWikiを使用してWikiを刷新するきっかけとなりました。

開発

片手でiPhoneコーディング:Pythonistaを超えて、3つのアプリが台頭

2025-08-14

著者のiPhone片手コーディングの夢が実現しました。Pythonistaから脱却し、Secure Shellfish(オフラインフォルダ同期機能付き)、Textastic(コードエディタ)、Working Copy(Gitクライアント)の3アプリを組み合わせ、VPS上でコードを実行しています。初期費用は高め(約57ユーロ+VPS月額料金)ですが、ソーシャルメディアからの解放、集中した片手コーディングを実現しています。

開発

500日間の毎日数学:ゼロから(ほぼ)ヒーローへの旅

2025-08-14
500日間の毎日数学:ゼロから(ほぼ)ヒーローへの旅

著者は、Math Academyを使って500日間毎日数学を練習した経験を語っています。最初はAIの数学的基礎を理解するために始めたものの、自身の基礎知識の不足に気づき、初歩から学習を始めました。継続的な努力と戦略的な調整(専用の学習時間、スキマ時間の活用、学習進捗の公開共有など)により、複数の基礎コースを修了し、現在は微積分や線形代数を学んでいます。この経験は数学的能力の向上だけでなく、より良い学習習慣と忍耐力を育み、生活の他の面にも良い影響を与えました。

開発

Debian 13 デスクトップをレベルアップ:必須の調整とヒント

2025-08-14

Debian 13 がリリースされました!このガイドでは、新しい Debian デスクトップエクスペリエンスを最適化するための必須の調整について説明します。追加のリポジトリ(非フリーソフトウェアを含む)の有効化、PATH の設定によるコマンドラインアクセスの簡素化、システムグループへの参加による管理の簡素化、Cloudflare DNS を使用した高速ブラウジング、ローカルミラーへの切り替えによる高速なパッケージダウンロード、Snap と Flatpak の有効化による幅広いソフトウェアアクセス、GNOME ソフトウェアセンターのインストール、Synaptic を使用したパッケージ管理方法について学習します。これらの手順により、Debian の使いやすさと効率性が大幅に向上します。

Debian 13 Trixieリリース:32ビットへの別れ、RISC-Vへの歓迎

2025-08-14
Debian 13 Trixieリリース:32ビットへの別れ、RISC-Vへの歓迎

Debian 13、コードネームTrixieがリリースされ、多くの改良が加えられました。最も重要な変更点は、32ビットx86アーキテクチャのサポートを終了し、RISC-Vアーキテクチャをサポートし、Linuxカーネル6.12にアップグレードしたこと。Trixieは、プログラミング言語のアップデート(Python 3.13、PHP 8.4など)、改良されたAptパッケージマネージャー、セキュリティ強化(CET、PAC、BTIなどに対応)、GNOMEとKDEデスクトップ環境のパフォーマンスとユーザーエクスペリエンスの向上も特徴としています。GoとRustエコシステムのセキュリティサポートは限定的ですが、全体としてTrixieは安定性、安全性、そして高いパフォーマンスを備えたディストリビューションです。

開発

有限状態機械をデータ構造として:数十億のURLのインデックス作成

2025-08-14

この記事では、有限状態機械(FSM)をデータ構造として使用して、順序付き集合とマップを表す方法を探求し、Rustのfstクレートによる効率的なインデックス作成を示しています。FSMの構築について詳しく説明し、TrieとFSAの構築を網羅し、2015年7月のCommon Crawlアーカイブから16億以上のURLをインデックス化する例を示します。メモリマップ、正規表現とのオートマトン交差、Levenshtein距離によるあいまい検索、ストリーミング集合演算などの手法についても説明します。著者は、さまざまなサイズと特性を持つ複数のデータセットにおいて、他の圧縮スキーム(gzip、xz)と比較してFSTのベンチマークを作成しています。

スマートグラスのプライバシーインフラ:プライバシーの心配なくアプリを構築

2025-08-14
スマートグラスのプライバシーインフラ:プライバシーの心配なくアプリを構築

このプロジェクトは、スマートグラスアプリケーションに固有のプライバシーの課題に取り組みます。カメラとアプリの間にリアルタイムプライバシーフィルターを配置することで、自動的にコンプライアンスを確保します。このフィルターは顔を匿名化し、同意を管理し(「撮影に同意します」などの音声同意を検出)、720p 30fpsでビデオをオフラインで処理します。FFmpeg、OpenCV、Faster Whisper、Phi-3.5 Miniを使用して構築されており、簡単なカメラ統合、RTMP入力/複数の出力形式、HTTP APIによる制御を提供します。AIアシスタント、ソーシャルアプリ、エンタープライズソリューション、コンテンツ作成に最適で、このツールにより開発者はプライバシーを意識したスマートグラスアプリケーションを構築できます。

開発

AI革命:プログラマー兼ライターのアイデンティティクライシス

2025-08-14
AI革命:プログラマー兼ライターのアイデンティティクライシス

ベテランプログラマー兼ライターが、急速に進化するAI技術によって引き起こされる存在論的な危機に直面している。彼は複雑な技術的概念を明確に説明する能力を誇りにしており、そのスキルは彼の著書の成功によって証明されている。しかし、AIの台頭は彼の生計を脅かしており、AIはすでに技術的なライティングで効果を発揮している。AIが技術的なトピックを説明する能力を認めながらも、彼はAIが人間の作家を完全に置き換えることができるかどうか、特にスタイルやニュアンスに関して疑問を抱いている。彼は新しい本の執筆を計画しており、AIを支援ツールとして活用しているが、AIが支配する世界における彼の将来の役割について不確実性を抱き、自身の価値と目的を問いかけている。

開発

Nyxt:Emacsをインスパイアされた開発者向けブラウザ

2025-08-14

Nyxtは、Emacsの哲学に基づいて構築された、型破りなウェブブラウザです。高度にカスタマイズ可能で、キーボード操作を重視しています。Common Lispで記述され、BSD 3条項ライセンスで利用可能で、Linuxユーザーを優先し、開発者が機能を拡張できるようにします。Emacsからインスピレーションを得ていますが、Nyxtは独立して動作し、viとCUAキーバインドをサポートしています。現在の3.xシリーズはWebKitGTKを使用していますが、今後の4.0では、パフォーマンスの向上とクロスプラットフォームのサポート(macOSとWindows)のためにElectronが使用されます。Nyxtのミニマルなインターフェースと広範なカスタマイズオプションは、最高の効率性を求める開発者を惹きつけますが、急な学習曲線と限られたコミュニティリソースが課題となっています。

開発

10 PRINT: 一行のコード、文化現象

2025-08-14
10 PRINT: 一行のコード、文化現象

2012年出版の『10 PRINT』は、Commodore 64のBASICプログラムの一行のコードを通して、クリエイティブ・コンピューティングという現象を探求しています。著者たちは、このコードをテキストとして扱い、その作成、目的、仮定を検証しています。本書では、コンピューティングとアートにおけるランダム性と規則性、迷路の文化的意義、BASICの人気に加え、Commodore 64の影響についても考察しています。コードから着想を得た生成された本の表紙は、現在ニューヨーク公共図書館とグーテンベルク・プロジェクトで使用されています。

OCaml:現代において驚くほど関連性の高い言語

2025-08-14

この記事は、OCaml言語を擁護し、研究言語と産業における実用的なツールとしての両方の強みを強調しています。著者は、OCamlの強力な機能(静的型システム、マルチパラダイムサポート、進化するエコシステムなど)を詳細に説明し、さまざまなプロジェクトに適していることを主張しています。OCamlに関するいくつかの一般的な誤解に対処し、活気のある支援的なコミュニティを描写しています。この記事は、しばしば見過ごされているこの言語を探求するための説得力のある招待で締めくくられています。

開発

Convo-Lang:LLMプロンプトエンジニアリングを簡素化するAIネイティブ言語

2025-08-14
Convo-Lang:LLMプロンプトエンジニアリングを簡素化するAIネイティブ言語

Convo-Langは、GPT-4、Claude、LlamaなどのLLM向けに、強力で構造化されたプロンプトとエージェントワークフローを構築するために設計された、オープンソースのAIネイティブプログラミング言語とエコシステムです。自由形式の英語プロンプトを書く代わりに、Convo-Langを使用すると、複数ステップの会話を定義し、構造と変数を追加し、外部ツールとナレッジベース(RAG)を統合し、さまざまなLLMを切り替えることができます。その読みやすい構文は、複雑なAIアプリケーションの開発を簡素化し、ロジック、デバッグ、保守の管理を容易にします。

1 2 24 25 26 28 30 31 32 214 215