**Show HN:*GrobPaint* ― MS Paint と Paint.NET の中間地点に位置するアプリケーション

2026/03/15 7:41

**Show HN:*GrobPaint* ― MS Paint と Paint.NET の中間地点に位置するアプリケーション

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:


要約

GrobPaint は、Paint.NET が macOS をサポートしていないというギャップを埋めるために設計された軽量でクロスプラットフォームの画像編集ソフトウェアです。ペンシル、ブラシ、消しゴム、塗りつぶし、吸盤、線、四角形、楕円、テキスト、選択、マジックワンド、移動、回転、拡大縮小、ミラーなどの基本的な描画ツールと、完全な選択機能を備えており、すべて純粋な JavaScript(ES モジュール)で構築され、小さな Python バックエンドが付随しています。

主な特徴は次のとおりです:

  • レイヤー管理:追加・削除・複製・マージ・並び替え、レイヤーごとの不透明度設定、および 16 のブレンドモード。
  • ファイル I/O:PNG、JPEG、BMP、GIF を開いて保存。プロジェクトは GrobPaint 独自の
    .gbp
    フォーマット(レイヤーと
    manifest.json
    を含む ZIP アーカイブ)で保存されます。
  • マルチドキュメントタブインターフェース とクリップボード統合により、ユーザーは画像を新しいレイヤーとして直接貼り付けることができます。
  • よく使われる操作のキーボードショートカット(Ctrl + N/O/S、Undo/Redo、Zoom、Grid 切替)やツール用ホットキー(ブラシサイズ、色スワップなど)。

コードベースは約 2,500 行の純粋な JavaScript で、コア・レンダラー・ツール・UI・アプリモジュールに分かれています。Python は簡易 HTTP サーバーと

pywebview
を介したオプションのネイティブダイアログを提供します。npm のビルドステップやバンドラは不要で、ソースから
python grobpaint.py
で実行するか、PyInstaller によって生成されたスタンドアロンバイナリ(macOS アプリまたは Linux/Windows 実行ファイル)を起動します。任意の場合は、静的ファイルサーバーから直接エディタを配信できます。

ZIP 処理には CDN 経由で読み込むライブラリ JSZip だけが使用され、外部フレームワークや重い依存関係はありません。設計目標は、Photoshop のような大規模スイートのボリュームを持たずに、Windows、macOS、および Linux 上で高速かつリソース効率の良い編集ツールをユーザーと開発者に提供することです。

本文

MS Paint と Paint.NET の中間地点
デフォルトでマルチプラットフォーム対応。

Paint.NET は macOS では動作しないため、GrobPaint がそのギャップを埋めます。Web 技術と軽量 Python バックエンドで構築されたレイヤー付き画像編集ソフトです。目的は Paint.NET をクローンしたり Photoshop と競争することではなく、本当に必要なツールだけを余計な機能なしに提供することです。


主な特徴

カテゴリ詳細
レイヤー追加・削除・複製・統合・順序変更;レイヤーごとの不透明度と 16 種類のブレンドモード
ツールペンシル、ブラシ、消しゴム、塗りつぶし、吸い取り器、直線、四角形、楕円形、テキスト、選択、マジックワンド、移動、回転、拡大・縮小、ミラー
選択矩形とマジックワンド(許容度可設定);コピー/カット/ペースト;選択領域で切り抜き
カラーHSV ピッカー、RGB / Hex 入力、アルファチャンネル;パレット(Lospec 500, PICO‑8)付き;プライマリ/セカンダリの入れ替え
キャンバスズーム(スクロールホイール・ピンチ・キーボード)、パン(スペース+ドラッグ、ミドルクリック、トラックパッド)、画面に合わせて表示、グリッドオーバレイ
ファイル I/OPNG, JPEG, BMP, GIF;ネイティブ
.gbp
プロジェクト形式はレイヤーを ZIP アーカイブとして保存
スプライトシートシートをレイヤーに分割、またはレイヤーを横並びのシートとしてエクスポート
画像操作スケール(最近傍・双線形・バイキュービック)、キャンバスリサイズ(アンカー付き)、反転、フラット化
マルチドキュメントタブ付きインターフェース;複数画像を同時に開くことが可能
クリップボードクリップボードから直接画像を新しいレイヤーとして貼り付け

はじめ方

ソースから実行する場合

python grobpaint.py

pywebview
を使ってネイティブウィンドウが起動します。
pywebview
が無いとデフォルトのブラウザに落ちます。

ブラウザモードを強制したい場合:

python grobpaint.py --browser

依存関係

  • Python 3.9 以上
  • pywebview
    (オプション、ネイティブウィンドウ用) –
    pip install pywebview
    でインストール

npm やビルドツールは不要です。フロントエンドは ES モジュールを使った純粋な JavaScript です。

スタンドアロンアプリの構築

PyInstaller を実行すると:

  • dist/GrobPaint.app
    (macOS)
  • dist/GrobPaint/GrobPaint
    (バイナリ)

ブラウザのみで利用する場合

index.html
を直接開くか、任意の静的ファイルサーバーで配信します。ファイルダイアログは使用できませんが、ブラウザのファイル入力とダウンロードでオープン/セーブを行います。


キーボードショートカット

ショートカット動作
[ / ]
ブラシサイズ減少 / 増加
X
プライマリ/セカンダリカラーの入れ替え
+ / -
ズームイン / ズームアウト
Ctrl+0
画面に合わせて表示
Ctrl+1
実寸(100 %)
Ctrl+N
新規画像
Ctrl+O
ファイルを開く
Ctrl+S
上書き保存
Ctrl+Shift+S
名前を付けて保存
Ctrl+Z / Ctrl+Shift+Z
元に戻す / やり直し
Ctrl+C / Ctrl+X / Ctrl+V
コピー / カット / ペースト
Ctrl+A / Ctrl+D
すべて選択 / 選択解除
Ctrl+G
グリッドの表示切替
Delete
選択領域を削除
Space + ドラッグ
キャンバスをパン

プロジェクト形式

.gbp
ファイルは ZIP アーカイブで、以下の構成になっています。

manifest.json          # 画像サイズ、レイヤー情報(名前・不透明度・表示状態・ブレンドモード)
layers/
  layer_0.png
  layer_1.png
  ...

アーキテクチャ

アプリは約 2500 行の純粋 JavaScript を 4 つのモジュールに分割して構築しています。

ファイル役割
js/core.js
EventBus、Layer、History(スワップベースの Undo/Redo)、PaintDocument、Selection
js/renderer.js
合成エンジン、チェッカー ボード背景、ズーム・パン、グリッドオーバレイ
js/tools.js
すべてのツール(フラッドフィル、フラッドセレクト、Bresenham の直線)
js/ui.js
カラーシステム、HSV ピッカー、レイヤーパネル、ドキュメントタブ、メニュー、ダイアログ
js/app.js
アプリ初期化、キャンバスイベント、キーボードショートカット、ファイル I/O
grobpaint.py
Python HTTP サーバー + pywebview ランチャー、ネイティブファイルダイアログ

フレームワークや重い依存は一切使用しておらず、ブラウザ側で

.gbp
を扱うために JSZip を CDN から読み込むだけです。


謝辞

GrobPaint は Anthropic の Claude の大きな助けを受けて開発されました。

同じ日のほかのニュース

一覧に戻る →

2026/03/15 7:10

**アゲルス・リナックス ― 時代を超えて使えるソフトウェア** このソフトウェアは、年齢や経験に関係なく「時代を越えた使いやすさ」と柔軟性を重視するユーザー向けに設計されています。

## Japanese Translation: --- ## Summary Ageless Linux は意図的にカリフォルニア州の AB 1043 年齢確認法を拒否し、監視への抗議として Debian ベースのディストリビューションを位置付けつつ、オペレーティングシステムプロバイダーであり続けます。プロジェクトは標準の `/etc/os-release` ファイルを Bash スクリプト経由で「Ageless Linux」に置き換え、通常モードでも **“flagrant” モード** でも年齢確認 API を提供しません。「flagrant」 モードでは `/etc/ageless/REFUSAL` ファイルをインストールし、§ 1798.501(a)(1)–(a)(2) に対する完全かつ意図的な非準拠を明示的に宣言し、執行措置を促します。 ウェブサイトには子供、学校、図書館、および USB ドライブや Raspberry Pi Pico デバイスを通じて OS を配布するための **詳細なガイダンス** が含まれており、これらはすべて AB 1043 の下でオペレーティングシステムプロバイダー活動に該当します。また、ディストリビューションが年齢データを収集しないため「影響を受ける子供」を特定できず、影響を受ける子供ごとの罰金を算出できないことも説明しています。 Ageless Linux は暗号的に不可能であることとプライバシー懸念を理由に年齢確認を決して実装しないと主張し、Apple、Google、Microsoft などの大手テック企業が最小限のコストで AB 1043 を満たすケースとは対照的です。プロジェクトの FAQ は法的問題、コンプライアンス状況、および州最高検事への罰金可能性に関する一般的な質問に対応しています。 最後に Ageless Linux は裁判記録を取得するために、Raspberry Pi または USB ドライブを子供へ配布したことによる **$7,500 の罰金** をカリフォルニア州最高検事に請求し、AB 1043 が小規模オープンソースプロジェクトにどのように適用されるかを明確にすることを目的としています。サイトには法的問い合わせや報道関係者向けの連絡先情報(John McCardle、BDFL、FFwF Robotics LLC)が掲載されています。 ---

2026/03/15 6:27

**Show HN:Han – Rustで書かれた韓国語プログラミング言語**

## Japanese Translation: ## 要約 ハンは静的型付けでコンパイルされるプログラミング言語で、キーワードはすべて韓国語で記述されています(例:**함수**、**만약**、**반복**、**변수**)。コンパイラはRustで実装され、LLVM IRを生成し、clangがそれをネイティブバイナリに変換します。ツリー走査型インタープリタ(`hgl interpret`)により、すぐに実行して迅速な試験が可能です。 ハンの型システムは静的で、5つのプリミティブ型を持ちます—정수 (int)、실수 (float)、문자열 (string)、불 (bool)、그리고 없음 (void)。また配列・構造体・クロージャ・パターンマッチング・エラーハンドリング・ファイルI/O・フォーマット文字列・モジュール・ジェネリクス、組み込み数学関数もサポートしています。現在、配列と構造体はインタープリタのみで扱われており、コンパイラの完全なサポートは計画中です。 開発者はハンを REPL(`hgl repl`)、LSP サーバー(`hgl lsp`)によるエディター上のホバー/補完、およびさまざまな CLI コマンド:`interpret`、`build`、`run`、`repl` で操作できます。VS Code 統合は `editors/vscode` ディレクトリにあります。インストールには Rust(≥1.70)と clang が必要で、他の外部コンパイラ依存はありません。 現在の制限としては、タプル・列挙型・非同期/並行処理・ネットワーキング・サブプロセス、および配列/構造体の完全なコンパイルサポートが欠如しています。これらのギャップは今後の開発優先事項を示しています。

2026/03/15 8:10

エアバスは無人戦闘機を二機開発中です。

## Japanese Translation: Airbus は、2029 年までにドイツ空軍へ運用可能な無人協調戦闘機(UCCA)を納入する予定であり、これは Kratos Defense & Security Solutions の Valkyrie プラットフォーム上に構築され、Airbus の Multiplatform Autonomous Reconfigurable and Secure (MARS) ミッションシステムと AI‑有効化された MindShare ソフトウェアを備えています。 MARS システムは、人有人機と無人機の全グループを動的および非動的ミッションで統合して調整することができます。 **主要技術仕様:** - 元の UCCA は長さ 9.1 m、翼幅 8.2 m、航続距離 >5,000 km、MTOW 約 3 t、最大高度 45,000 ft。初飛行は 2019 年に実施されました。 - ドイツ版の初飛行は 2026 年に予定されています。 このパートナーシップには、Airbus と Rafael が Eurofighter コマンド機上で Litening 5 Advanced Targeting Pod をアップグレードし、クロスプラットフォーム接続性と戦闘致死率を向上させる作業も含まれます。 Airbus のエグゼクティブ・マーコ・ガンブラッハトは、「信頼できる主権的な戦闘能力を手頃な価格で提供する」ことの重要性を強調し、Kratos のスティーブ・フェンドリーは「ミッション化された Valkyrie は単独でも、チームとしても、人有人機と無人機の協同作戦においても利用可能である」と述べています。 この取引はドイツにタイムリーかつ大量展開が可能なドローンソリューションを提供し、AI 主導型多プラットフォーム戦闘システムへのより広範な転換を示しています。