Category: 開発

Reactからの脱却から1年後:Scholarlyのサーバーサイドレンダリングの成功

2025-01-22

急成長中のScholarly社は、驚くほどシンプルなテクノロジースタックを維持しています。Rails、Stimulus、MySQLに加え、TurboとActionCableでインタラクティブ性を向上させています。Reactを放棄してから1年後の経験は、このサーバーサイドレンダリングのアプローチが、テスト効率、アプリケーション速度、開発者の生産性を大幅に向上させることを示しています。複雑なJSフロントエンドと比較して、この軽量なアプローチはコードメンテナンスコストを削減し、リスクを最小限に抑え、チームがより迅速に価値を提供し、コアビジネス目標に集中することを可能にします。

開発

Evo:バージョン管理を再考する

2025-01-22
Evo:バージョン管理を再考する

Evoは、オフライン優先のモダンなバージョン管理システムで、開発ワークフローの簡素化とチームコラボレーションの強化を目的としています。複雑なGitブランチと煩わしいマージコンフリクトに別れを告げましょう。Evoはブランチの代わりにワークスペースを使用し、JSONとYAMLファイルのインテリジェントなマージをサポートし、ビルトイン認証とオプションのコミット署名を備えています。その基本理念はシンプルさ、効率性、信頼性です。Goで構築されており、大規模ファイルと詳細な権限をサポートしています。

開発 Git代替

成功する抽象化の本質:複雑性の隔離

2025-01-22
成功する抽象化の本質:複雑性の隔離

ソフトウェア開発において、複雑さは避けられませんが、制御することができます。Chris Krycho氏は、成功する抽象化の鍵は、複雑さを明確に定義された領域に限定することにあると主張しています。Rustの借用チェッカーは、メモリ安全性の複雑さを型システム内に隔離する例として挙げられています。TypeScriptは、既存の複雑さを型を通して明らかにし、管理します。これは、個々のサービスはシンプルに保ちつつ、全体の複雑さを管理するマイクロサービスの哲学を反映しています。著者は、成功する抽象化は複雑さを排除することではなく、効果的に隔離し、制御することで開発効率とコードの質を向上させることだと述べています。

10行のコードでフォトリアルな雲を実現:Shadertoyの「Tiny Clouds」を解剖する

2025-01-22
10行のコードでフォトリアルな雲を実現:Shadertoyの「Tiny Clouds」を解剖する

Shadertoyのシェーダー「Tiny Clouds」は、わずか10行のコードで驚くほどリアルな雲を生成します。この記事では、コードの複雑さを掘り下げ、巧妙な逆方向レイマーチング、フラクタルブラウン運動(FBM)サンプリング、アルファブレンディングの手法を説明します。これほど簡潔なコードで高品質の雲レンダリングを実現する方法を明らかにします。また、コードの長さを短縮するためのマクロの使用や、より自然な見た目を実現するための乱数の追加など、興味深いコード最適化についても考察します。分析では、効率的なコーディングと巧妙なアルゴリズムが、素晴らしい視覚効果を生み出す力を持っていることを強調しています。

開発

Wine 10.0:Linux上でのWindowsアプリ実行がよりスムーズに

2025-01-22
Wine 10.0:Linux上でのWindowsアプリ実行がよりスムーズに

Wineチームは、6000以上の変更を含む1年間の開発を経て、Wine 10.0を正式リリースしました。この安定版では、Linux(およびその他の非Windowsプラットフォーム)でWindowsアプリケーションを実行する際の、パフォーマンス、互換性、視覚的な体験を向上させるための主要なアップデートが導入されています。ARM64ECアーキテクチャの完全サポート、64ビットx86エミュレーション、高DPIスケーリングの改善、Direct3DとVulkanのアップデートなどが含まれています。

リスコフの置換原則:継承の真の意味

2025-01-22
リスコフの置換原則:継承の真の意味

この記事では、しばしば誤解されているSOLID原則の一つであるリスコフの置換原則(LSP)について詳しく解説します。古典的な長方形と正方形の問題を用いて、LSP違反の一般的なパターン、つまりサブタイプがベースタイプを完全に置換できないことを示します。著者は、LSP違反を回避するために、継承ではなくコンポジションとインターフェースを使用することを提唱し、支払い処理の実際的な例を示しています。予期しない例外の発生や、ベースタイプと矛盾する結果の返却など、一般的なLSP違反についても説明し、契約テストと明確な前/後条件を用いてLSPへの準拠を確保する方法を提示しています。最終的に、この記事はLSPが単なる継承以上のもの、つまり動作の互換性と期待値の充足に関わるものであることを強調しています。LSPに従うことで、より信頼性が高く保守しやすいコードを作成できます。

JReleaser:手軽なプロジェクトリリース

2025-01-21

JReleaserは、Java、Go、Node.jsなど多くの言語をサポートし、プロジェクトリリースプロセスを簡素化します。Homebrew、Snapcraftなどの様々なプラットフォーム向けパッケージを簡単に作成し、GitHub、GitLabなどのサービスに公開、変更ログの自動生成やTwitterへのリリースアナウンスも可能です。CLI、Maven、Gradle、Antなど、お好みの方法で利用でき、開発に集中できます。

Sigstore:オープンソースソフトウェアサプライチェーンのセキュリティ確保

2025-01-21
Sigstore:オープンソースソフトウェアサプライチェーンのセキュリティ確保

Sigstoreは、デジタル署名と透明なログ記録を通じてソフトウェアサプライチェーンのセキュリティを確保することを目的としたオープンソースプロジェクトです。ソフトウェア検証プロセスを簡素化し、開発者がソフトウェアの整合性と起源を容易に検証できるようにすることで、悪意のあるソフトウェアやサプライチェーン攻撃を防止します。Sigstore の強みは、使いやすさと既存ツールとの統合にあり、より安全で信頼性の高いソフトウェアエコシステムの構築に貢献します。

Kamalに別れを告げる:Dokkuを使ったRailsアプリのデプロイ

2025-01-21
Kamalに別れを告げる:Dokkuを使ったRailsアプリのデプロイ

BasecampがリリースしたKamalは、ベアメタルサーバーへのRailsアプリのデプロイソリューションだが、使い勝手は必ずしも良くない。この記事では、より簡単な代替手段であるDokkuを紹介する。Dokkuは、自己ホスト型のHerokuのようなものだ。筆者は、Dokkuを使ったRailsアプリのデプロイ手順をステップバイステップで解説しており、Dokkuのインストール、アプリの作成、データベース(PostgreSQL)の設定、環境変数の設定、ドメインとSSL証明書(Let's Encryptを使用)の設定、webとreleaseプロセスの指定のためのProcfileの使用などを網羅している。さらに、デプロイプロセス全体を自動化するDeployless gemについても紹介している。

開発

正規表現のアンカーの奇妙な歴史:`$`と`^`はなぜ?

2025-01-21
正規表現のアンカーの奇妙な歴史:`$`と`^`はなぜ?

この記事では、正規表現において`$`と`^`を行アンカーとして使用する歴史的起源を探ります。QEDテキストエディターを遡ると、`$`は当初バッファの終端を表し、後にKen Thompsonによって正規表現における行末アンカーとして適応されました。`^`の選択は、当時一般的に使われていたTeletype Model 35タイプライターの文字セットが限られていたこと、そして`^`がASCII-67に既に存在していたことによる可能性が高いです。これは巧妙な設計というよりは、当時のハードウェアと文字セットの制約の結果であり、正規表現における慣習となっています。

開発

Lisp系言語が複雑で柔軟なバイオインフォマティクスアプリケーション構築を促進する方法

2025-01-21

この記事では、バイオインフォマティクスと計算生物学の研究において、Lisp系プログラミング言語(Common Lisp、Scheme、Clojure)の利用拡大の正当性を主張しています。簡単に言えば、Lisp系言語は、他の言語よりも高速に実行されるプログラムを、より迅速に記述することを可能にします。Common Lisp、Scheme、Clojureなどの言語は、生物学のような複雑で急速に進化する分野に必要な、強力で柔軟なソフトウェアの作成を容易にします。この記事では、Lisp系言語を他のプログラミング言語と区別するいくつかの重要な主要な機能を指摘し、これらの機能が研究者の生産性向上とより良いコード作成にどのように役立つのかを説明します。

Foqos:NFCで集中力を高めるアプリ

2025-01-21

Foqosは、NFC技術を利用してユーザーの集中力を支援するアプリです。仕事、勉強、就寝前など、さまざまな状況に合わせて複数のプロファイルを作成できます。これらのプロファイルはNFCタグに書き込むことができ、タグにタップするだけで瞬時に起動・停止できます。アプリの起動やデバイスのロック解除は不要です。Foqosは無料、プライバシー保護、オープンソースで、永久的に購読料、トラッキング、データ収集はありません。純粋な集中力だけを提供します。

Jupyter NotebookとLLM:予期せぬコスト最適化

2025-01-21

著者は、LLMをコーディング支援に使用していました。最初はContinueDev + OpenRouterのセットアップを使用していましたが、コストが突然急増しました。調査の結果、Jupyter Notebook(.ipynb)ファイルには、多くの隠れたコンテンツ(コード出力、メタデータ、base64でエンコードされた画像など)が含まれており、トークンの数が大幅に増加し、LLMの呼び出しコストが高くなっていることが分かりました。解決策は、.ipynbファイルを.pyファイルに変換し、base64でエンコードされた画像を削除することでした。これにより、コストを94%削減し、レイテンシも削減できました。この記事では、LLMを使用する際の注意深い入力の重要性を強調し、コストの定期的な確認を推奨しています。

開発

テストスイートの美しさによって導かれる:Rust、Uxn、そして厳格なエンジニアリングの物語

2025-01-21

昨年夏、筆者はRaven、Uxn CPUとVaravaraオーケストレーターの独立した実装をリリースしました。最近、安定性とパフォーマンスを向上させるために、GitHub Actions CI、スナップショットテスト、静的パニック防止、ファジングを含む堅牢なテストインフラストラクチャを構築しました。この記事では、これらのテストを構築する際に遭遇した課題と解決策、例えばGitHub ActionsのWindowsとARMランナーの信頼性問題、パニックの不在を静的に証明することとファジングにおける落とし穴について詳しく説明します。筆者はRavenのパフォーマンスと信頼性を向上させ、クロスプラットフォームの移植性を確保することに成功しました。この取り組みは、堅牢で正確なシステムを作成するためのRust、cargo-fuzz、そして(ため息)GitHub Actionsのパワーを浮き彫りにしています。

開発

Alpineパッケージのインストール数の最大化:NP困難な課題

2025-01-21

この記事では、同時にインストール可能なAlpine Linuxパッケージの最大数を決定するための実験について説明しています。著者はAlpineのAPKINDEXファイルから、パッケージの依存関係、競合、提供関係を抽出し、それらをPuLPソルバー用の制約に変換しました。実験の結果、メインリポジトリの98.5%、メイン+コミュニティリポジトリの97.8%のパッケージのインストールに成功しました。これは、パッケージインストールのアルゴリズム最適化を示しており、より軽量なコンテナイメージの構築に関する知見を提供します。

LLMアプリ開発から学んだ教訓

2025-01-21

この記事では、大規模言語モデル(LLM)を使ったアプリケーション開発から得られた教訓をまとめたものです。LLMは大量のテキストを簡潔な要約に変換することに優れていますが、入力よりも多くのテキストを生成したり、事前学習済みデータに基づいて複雑な推論を行ったりすることに苦労します。効果的なLLMアプリケーションは、LLMに必要な情報をすべて提供し、テキストの圧縮を可能にする必要があります。著者は、人間の専門知識を必要とするタスク(例:医療診断)にLLMを使用しないことを推奨しており、LLMは人間の労働者を補完するものであり、置き換えるものではないと強調しています。通常のコードでできるタスクにはLLMを使用しないでください。

Apache NuttX RTOSにおけるunameのバグ修正:静的変数の罠

2025-01-21
Apache NuttX RTOSにおけるunameのバグ修正:静的変数の罠

この記事では、Apache NuttX RTOSのunameコマンドにおける、一見小さなバグのデバッグの過程を詳述しています。最初の問題は、出力からコミットハッシュが欠落していたことでした。調査は、カーネルイメージの検査、カーネル起動時のunameの呼び出し、アプリケーションの逆アセンブルなど、複雑な過程をたどりました。犯人は?コミットハッシュをNuttXアプリケーション内に格納する責任のある、壊れた静的変数(g_version)でした。この予期せぬ動作は、組み込みシステムにおける徹底的なデバッグの重要性を強調しており、小さな異常でも、より深刻な問題を示唆している可能性があることを示しています。

開発

Dokploy:開発者のための容易なデプロイメント

2025-01-21
Dokploy:開発者のための容易なデプロイメント

Dokployは、マルチサーバーアプリケーションのデプロイと管理を簡素化する、ユーザーフレンドリーなオープンソースプラットフォームです。Nixpacks、Heroku Buildpacks、カスタムDockerfileをサポートし、Docker Composeとネイティブに統合されています。高度なユーザー管理、バックアップ機能付きのデータベース管理、APIとCLIへのアクセス、Docker Swarmクラスタのサポートなどの機能があります。リアルタイムモニタリング、アラート、多数のオープンソーステンプレート、活気のあるコミュニティにより、機能がさらに強化されています。小規模プロジェクトから大規模アプリケーションまで、Dokployは柔軟で効率的なソリューションを提供します。

RedisのUNLINK vs DEL:内部メカニズムの深堀り

2025-01-21
RedisのUNLINK vs DEL:内部メカニズムの深堀り

RedisのUNLINKコマンドとDELコマンドはどちらもキーを削除しますが、内部的な実装が異なります。DELコマンドはキーを同期的に削除しメモリを解放しますが、UNLINKコマンドはキーの削除を非同期的にバックグラウンドキューで処理します。UNLINKの「ノンブロッキング」特性は絶対ではなく、オブジェクトの削除コストを計算します。コストが64未満の場合は同期的に、それ以外の場合は非同期的に削除します。この記事ではRedisのソースコードを詳しく分析し、UNLINKとDELコマンドの実装の詳細、キーのスロット計算、2段階のアンリンク、非同期削除などのメカニズム、そしてLAZYFREE_THRESHOLDの役割について解説します。

開発

フレームワーク疲れ:開発者が新技術に怒る本当の理由

2025-01-21
フレームワーク疲れ:開発者が新技術に怒る本当の理由

SvelteからSolid、Qwikまで、次々と登場する新しいJavaScriptフレームワークに、開発者たちは疲れ果てています。それぞれが驚異的な速度とパフォーマンス向上を約束する一方、開発者たちは延々と学習を続けるループに陥り、貴重な時間とエネルギーを浪費しています。これにより激しい議論が巻き起こり、新しいフレームワークが車輪の再発明だと批判する声や、雇用の不安や既存スキルの陳腐化を懸念する声が上がっています。この記事は、開発者が新フレームワークに怒る真の理由は、将来のキャリアへの不安からくる自己防衛メカニズムであると示唆しています。この点を理解することで、業界の健全な発展を促すことができます。

Perlコミュニティの話題:新しいPodcast、ワークショップ、そして毎週のチャレンジ

2025-01-21
Perlコミュニティの話題:新しいPodcast、ワークショップ、そして毎週のチャレンジ

Perlコミュニティではエキサイティングなニュースが盛りだくさん!新しいPodcast「The Underbar」が開始され、Perlの最新情報が届けられます。ミュンヘンではドイツのPerl/Rakuワークショップが開催され、開発者同士の交流と学習の機会が提供されます。人気のコーディングコンテストである週刊チャレンジは、来年もスポンサーを獲得し、Perl愛好家に毎週のプログラミング課題を提供し続けます。今週のニュースレターでは、いくつかのPerlモジュールのアップデートや、MIDI音楽制作、地理位置データ処理、パフォーマンスプロファイリングなど多様なトピックを網羅した記事も掲載されています。

OpenSSLがQUIC APIを提供しない:HTTP/3普及への逆風?

2025-01-21
OpenSSLがQUIC APIを提供しない:HTTP/3普及への逆風?

最も人気のあるTLSライブラリであるOpenSSLが、今後のリリースでQUIC APIを提供しないと発表し、HTTP/3の普及に大きな障害が生じています。コミュニティからのプルリクエスト(PR8797)で必要なAPIが提供されていたにもかかわらず、OpenSSL運営委員会は、ゼロから完全なQUICスタックを構築することを決定しました。これは数年かかる見込みです。すでに成熟したQUICライブラリが存在するにもかかわらず、この決定はコミュニティに不満を引き起こしています。MicrosoftとAkamaiは、QUIC APIを搭載したOpenSSLフォークであるquictlsを作成して対応しました。しかし、これは永続的な解決策ではなく、OpenSSLの決定によりHTTP/3の普及は不確実な状況に置かれています。

開発

Go 2は`context`パッケージを廃止すべきか?

2025-01-21

Goの`context`パッケージは、ゴルーチンのキャンセル問題を解決しますが、コードの可読性と保守性を犠牲にしており、コードベース全体にウイルスのように広がります。著者は、`context`が複雑すぎ、インターフェースメソッドが多すぎ、`ctx.Value`の使用に多くの問題があり、非効率であると主張しています。そして、Go 2は、よりシンプルで効率的で非侵襲的なソリューションを提供することで、言語レベルでゴルーチンのキャンセル問題に直接対処すべきだと提案しています。

AWS App MeshからAmazon ECS Service Connectへの移行

2025-01-21
AWS App MeshからAmazon ECS Service Connectへの移行

AWSは2026年9月30日にAWS App Meshの提供を終了します。この記事では、App Meshからコンテナ化されたマイクロサービスの信頼性と可観測性を向上させるマネージドサービスであるAmazon ECS Service Connectへの移行戦略について詳しく説明します。組み込みのヘルスチェック、外れ値検出、CloudWatchとの強化された統合など、2つのサービス間の主な違いが強調されています。移行中のダウンタイムを最小限に抑えるために、ブルーグリーンデプロイメント戦略が推奨されています。また、トラフィックルーティング、可観測性、セキュリティ、リソース共有などの機能についても比較しています。

Pythonのタートルグラフィックスライブラリを使った世界の国旗の描画

2025-01-21

この記事では、SVGファイルの解析によって様々な国の国旗を描画するために、Pythonのタートルグラフィックスライブラリを使用する著者の取り組みについて詳しく説明しています。単純なJavaの描画練習から始まり、Pythonとタートルを使ってより複雑なSVG解析を実装するまで、著者は座標変換、ベジェ曲線のレンダリング、スタイルの適用など、多くの課題を克服しました。ウェールズの旗など、以前は「不可能」と考えられていた複雑な旗も多く描画することに成功しました。いくつかの問題は未解決のままですが、この記事は著者のプログラミングスキルと粘り強さを示しています。

開発 タートル

Guitaraoke:カラオケ動画へのコード自動生成

2025-01-21
Guitaraoke:カラオケ動画へのコード自動生成

Dylan Beattieは、毎月のGuitaraokeナイトを向上させるために、カラオケ動画に自動的にコードを表示するシステムを構築しました。彼はVampプラグインを使用してオーディオからコード情報を抽出し、ImageSharpとFFMpegCoreを使用してコードを含む透明なビデオオーバーレイを生成し、最後にこれを元のビデオに合成します。これには、オーディオ分析、画像処理、ビデオ合成が含まれ、結果としてギター演奏者にとってリアルタイムのコード表示が実現します。今後の改善としては、自動ビート検出とバッチ処理があります。

開発

Ruff:超高速Pythonリンター&フォーマッター

2025-01-21
Ruff:超高速Pythonリンター&フォーマッター

RuffはRustで記述された、非常に高速なPythonリンターおよびフォーマッターです。Flake8やBlackなどの既存ツールよりも10~100倍高速で、人気のあるツールとの互換性を維持しながら、ビルトインキャッシュと自動修正機能を備えています。800以上のビルトインルールとpyproject.tomlのサポートにより、FastAPIやPandasなどの主要なオープンソースプロジェクトで使用されており、Python開発に革命を起こすツールです。

WordPress混乱:Mullenweg CEOの行動が土台を揺るがす

2025-01-21
WordPress混乱:Mullenweg CEOの行動が土台を揺るがす

WordPressの生みの親であるMatt Mullenwegとホスティング会社WP Engineとの間の対立が、WordPressの未来を脅かしている。Mullenwegの攻撃的な行動、WP Engineの禁止、異議を唱える従業員への解雇勧奨、オープンソースプロジェクトへの貢献の大幅削減などは、コミュニティからの反発と訴訟を引き起こした。この混乱はWordPressの安定性を損ない、将来の方向性に対する懸念を高め、代替案を探し始めるユーザーや開発者も出ている。根本的な問題は、オープンソースのガバナンスと商業利益の対立であり、テクノロジー業界全体に大きな影響を与えるだろう。

Meta、CapCutの不在を突くビデオ編集アプリ「Edits」を発表

2025-01-20
Meta、CapCutの不在を突くビデオ編集アプリ「Edits」を発表

ByteDanceのビデオ編集アプリCapCutがアプリストアから削除されたことを受け、Metaは日曜日、新しいビデオ編集アプリ「Edits」を発表しました。Instagram責任者のAdam Mosseri氏は、このアプリが来月iOSでリリースされ、その後Android版がリリースされると発表しました。Editsは、インスピレーションタブ、アイデア追跡タブ、高画質カメラなど、数々のクリエイティブツールを備え、ドラフトの共有機能も搭載しています。Metaのこの動きは、CapCutの不在によって生まれた市場の空白を突くものと見られており、以前のInstagram ReelsやThreadsのリリースと同様の戦略です。

Kronotop:Redis互換の分散型トランザクション型ドキュメントデータベース

2025-01-20
Kronotop:Redis互換の分散型トランザクション型ドキュメントデータベース

Kronotopは、FoundationDBを基盤としたRedis互換の分散型トランザクション型ドキュメントデータベースです。MQLに似たクエリ言語とACIDトランザクションをサポートし、プライマリ-スタンバイレプリケーションモデルを持つディスクストレージエンジンを備えています。現在、APIが不安定な早期開発段階にありますが、ZMap(順序付きキーバリューストア)、名前空間、一部のRedisデータ構造(文字列とハッシュ)のサポートを既に備えています。将来の計画には、より多くのRedisデータ構造(リスト、セット、ソート済みセット)と、JSONのようなドキュメントを格納し、MQLクエリ言語とトランザクションをサポートするBucketデータ構造のサポートが含まれます。

開発
1 2 180 181 182 184 186 187 188 214 215