**Show HN: Box of Rain – 自動レイアウト付き ASCII 図形**

---

### 概要  
Box of Rain は、ASCII アートを自動で整形し、読みやすく保守しやすい形式に変換するツールです。生のテキストを入力すると、図形要素を揃え、必要に応じてスペースを追加・調整します。

---

### 主な機能

- **自動配置**  
  ツールは図を解析し、すべてがきれいに並ぶように適切な空白を挿入します。

- **既存構造の保持**  
  スペースだけを調整するため、入力した文字はそのまま残ります。

- **どんな ASCII アートでも対応**  
  フローチャート・ネットワークトポロジー・単純な図形など、Box of Rain がすべて処理します。

---

### 動作原理

1. ツールに生の ASCII 図を入力する。  
2. アルゴリズムが各行の非空白文字をスキャン。  
3. 列位置を計算し、垂直揃えが保たれるようスペースを追加。  
4. 整形された図はコピーまたは埋め込み用に出力されます。

---

### 例

| Before | After |
|--------|-------|
| `+---+`<br>`|   |`<br>`+---+` | `+---+`<br>`|   |`<br>`+---+` |

(簡単なボックスは変わらず、複雑な図では明確に揃いが見える例です。)

---

### 利用シーン

- **ドキュメント** – Markdown やプレーンテキストファイルで技術図を読みやすく保つ。  
- **コードコメント** – ソースコード内に構造化された ASCII アートを直接埋め込む。  
- **教育ツール** – グラフィックエディタなしで概念を視覚化。

---

### 使い始め

1. プロジェクトの GitHub ページへアクセス:  
   `https://github.com/username/box-of-rain`  
2. リポジトリをクローンまたはダウンロード。  
3. スクリプトをローカルで実行 (`python box_of_rain.py`) もしくは Web インターフェイスがあれば利用。

---

**楽しい図作りを!**

2026/02/15 6:42

**Show HN: Box of Rain – 自動レイアウト付き ASCII 図形** --- ### 概要 Box of Rain は、ASCII アートを自動で整形し、読みやすく保守しやすい形式に変換するツールです。生のテキストを入力すると、図形要素を揃え、必要に応じてスペースを追加・調整します。 --- ### 主な機能 - **自動配置** ツールは図を解析し、すべてがきれいに並ぶように適切な空白を挿入します。 - **既存構造の保持** スペースだけを調整するため、入力した文字はそのまま残ります。 - **どんな ASCII アートでも対応** フローチャート・ネットワークトポロジー・単純な図形など、Box of Rain がすべて処理します。 --- ### 動作原理 1. ツールに生の ASCII 図を入力する。 2. アルゴリズムが各行の非空白文字をスキャン。 3. 列位置を計算し、垂直揃えが保たれるようスペースを追加。 4. 整形された図はコピーまたは埋め込み用に出力されます。 --- ### 例 | Before | After | |--------|-------| | `+---+`<br>`| |`<br>`+---+` | `+---+`<br>`| |`<br>`+---+` | (簡単なボックスは変わらず、複雑な図では明確に揃いが見える例です。) --- ### 利用シーン - **ドキュメント** – Markdown やプレーンテキストファイルで技術図を読みやすく保つ。 - **コードコメント** – ソースコード内に構造化された ASCII アートを直接埋め込む。 - **教育ツール** – グラフィックエディタなしで概念を視覚化。 --- ### 使い始め 1. プロジェクトの GitHub ページへアクセス: `https://github.com/username/box-of-rain` 2. リポジトリをクローンまたはダウンロード。 3. スクリプトをローカルで実行 (`python box_of_rain.py`) もしくは Web インターフェイスがあれば利用。 --- **楽しい図作りを!**

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

要約

Japanese Translation:

## Summary
`box-of-rain` は、構造化データ(JSON、YAML)または Mermaid 構文を明確な ASCII ボックス図に変換する CLI ツールおよび JavaScript ライブラリです。さらに豊富な視覚表現のために SVG を出力できます。ネストされたボックス、3 つのルーティングスタイル(直線、L字型、U字型)の矢印接続、複数の枠線スタイル(`single`、`double`、`bold`、`rounded`、`dashed`)、オプションの影、および `x`、`y`、`width`、`height` を使用した自動レイアウトと手動配置をサポートします。

このツールは Mermaid にカスタムディレクティブ(`:::shadow`、`%% @route`)を追加し、ノード形状を枠線にマッピングし、矢印ルーティングを制御します。Mermaid サブモジュールはフローチャート、シーケンス図、サブグラフ、コメント、セミコロン、引用テキスト、および改行をサポートしています。

API は `render`(プレーンテキスト)や `renderSvg`(SVG 文字列)のような簡単な関数を公開します。入力検証は Zod ライブラリで処理され、不正なスキーマには `ZodError` が投げられます。開発スクリプト(`pnpm install`、`pnpm test`、`pnpm typecheck`、`pnpm build`)によりプロジェクトの保守性が維持されます。

典型的な使用コマンドは次のとおりです:
- `npx box-of-rain --example` – 例図を表示
- `npx box-of-rain diagram.json` – JSON/YAML から図を描画
- `npx box-of-rain --svg diagram.json` – ASCII の代わりに SVG を出力
- `npx box-of-rain --mermaid diagram.txt` – Mermaid 入力を解析

今後の計画には、新しい例コマンド、混合自動レイアウト/手動配置モード、および拡張された Mermaid サポートが含まれます。MIT ライセンスとオープンソース設計により、このツールは開発者がドキュメント、コードレビュー、CI パイプライン、またはエディタ統合のために読みやすい図を迅速に生成できるようにします。

本文

box-of-rain – クイックスタート

npx box‑of‑rain --example

JSON、YAML、または Mermaid から ASCII ボックス図を生成します。入れ子のボックス、矢印接続、自動レイアウト、複数の枠線スタイルと影がサポートされています。出力はプレーンテキストでも SVG でも可能です(CLI またはプログラム的に)。

このコードは完全に AI が生成したものです。ご注意ください。保証はいたしません。

turbopuffer、planetscale、oxide computing の ASCII 図からインスパイアされています。主に自動レイアウトを利用した、シンプルで効果的な図作成手段として設計されました。
ロバート・ハンター(彼は恐らく嫌悪感を抱くだろう)へのオマージュとして命名しました。以下のすべても AI が生成しています。


これらの例は SVG です。GitHub はコードブロックの行間をカスタマイズできないためです。ウェブサイトに貼る際には

line-height: 1
を設定してクリッピングを防ぐとよいでしょう。

(SVG画像は省略)

インストール

pnpm install box-of-rain

CLI の使い方

コマンド説明
npx box-of-rain --example
ビルトイン例を実行
npx box-of-rain diagram.json
JSON から図を描画
npx box-of-rain diagram.yaml
YAML から図を描画
npx box-of-rain diagram.mmd
Mermaid から図を描画
npx box-of-rain --mermaid diagram.txt
Mermaid の解析を強制
npx box-of-rain --svg diagram.json
SVG 出力

スキーマ

図はノードの再帰的なツリー構造です。各ノードはテキストまたは入れ子の子ノードを含むことができます。接続は任意のレベルで定義可能です。

{
  "children": [
    {
      "id": "web",
      "children": ["Frontend"],
      "border": "rounded"
    },
    {
      "id": "platform",
      "title": "Cloud Platform",
      "border": "double",
      "shadow": true,
      "children": [
        { "id": "api", "children": ["API Server"], "border": "bold" },
        { "id": "db", "children": ["Database"] }
      ],
      "connections": [{ "from": "api", "to": "db" }]
    }
  ],
  "connections": [
    { "from": "web", "to": "api", "label": "HTTPS" }
  ]
}
  • children
    は多態です
    • "Hello"
      – 単一行テキスト
    • ["Line 1","Line 2"]
      – 複数行テキスト
    • [ { ... } ]
      – 入れ子のボックス(再帰)

ノードプロパティ

プロパティデフォルト説明
id
string一意識別子(接続に必須)
children
string  string[]  Node[]
border
string
"single"
single
,
double
,
bold
,
rounded
,
dashed
のいずれか
title
string上部枠に表示されるテキスト
shadow
boolean
false
右下に ░ 影を追加
disabled
boolean
false
░ と打ち消し線で灰色化
childDirection
string
"horizontal"
子ノードのレイアウト方向(
horizontal
,
vertical
x
,
y
number
auto
位置(左上隅)
width
,
height
number
auto
ボックスの寸法(文字数)
connections
Connection[]このレベルでの子 ID 間の接続

接続プロパティ

プロパティデフォルト説明
from
string出発ボックスの ID
to
string目的地ボックスの ID
label
string矢印上に表示するテキストラベル
fromSide
string
auto
矢印が出る側(
right
,
left
,
top
,
bottom
toSide
string
auto
矢印が入る側

サイドは

right
,
left
,
top
,
bottom
です。省略した場合、相対位置に基づいて自動判定されます。


Mermaid サポート

JSON/YAML の代わりに Mermaid 構文で図を記述できます。フローチャートとシーケンス図がサポートされています。

フローチャート

flowchart LR
  subgraph home1[Your Home WiFi]:::shadow
    iphone((Your iPhone))
    robot((Your Robot))
  end
  subgraph cloud[China]:::shadow
    server{Company Servers}
  end
  iphone -->|data| server
  server -->|commands| robot
  %% @route server-->robot toSide=right

サポートされるフローチャート機能

  • 方向:
    LR
    ,
    RL
    ,
    TD/TB
    ,
    BT
    (または
    graph
  • ノード形状が枠線スタイルにマップ
MermaidBorder
A[text]
single
A(text)
/
A([text])
rounded
A[[text]]
/
A[(text)]
double
A((text))
/
A{{text}}
bold
A{text}
dashed
  • エッジ:
    -->
    ,
    ---
    ,
    -.->
    ,
    ==>
    (オプションで
    |label|
    または
    -- label -->
  • 連鎖エッジ:
    A --> B --> C
  • サブグラフ:
    subgraph id[Title] ... end
    (入れ子も可)
  • コメント:
    %%
  • セミコロン:
    A[One]; B[Two]
    を同一行に書ける
  • 文字列引用:
    A["Hello World"]
  • 改行:
    A[Line 1<br>Line 2]

シーケンス図

sequenceDiagram
  participant A as Alice
  participant B as Bob
  participant C as Server
  A->>B: Hello Bob
  B->>C: Auth request
  C-->>B: Auth response
  B-->>A: Hi Alice

サポートされるシーケンス機能

  • participant
    actor
    宣言(アクターは丸みのある枠線)
  • エイリアス:
    participant A as Alice
  • メッセージタイプ:
    ->>
    ,
    -->>
    ,
    -x
    ,
    --x
    ,
    -)
    ,
    --)
  • メッセージから暗黙的に参加者を生成

拡張機能

Mermaid 互換構文で使用できるライブラリ固有の拡張があります。

  1. :::shadow
    – ノードまたはサブグラフに影を付与
    A[Server]:::shadow
    subgraph cloud[Cloud]:::shadow
    
  2. %% @route
    – 接続ルーティングを制御(
    fromSide/toSide
    %% @route server-->robot toSide=right
    %% @route A-->B fromSide=bottom toSide=top
    

矢印のルーティング

矢印はアンカー位置に基づいて自動でルーティングされます。

  • ストレート – 同一行上にある場合
  • L字型 – 水平 → コーナー → 垂直 → コーナー → 水平
  • U字型
    fromSide
    toSide
    が同じ(例: 両方
    "right"
    )の場合、矢印はすべてのボックスを越えて伸び、垂直に曲がり戻る

枠線スタイル

single:  ┌──────┐    double:  ╔══════╗    bold:  ┏━━━━━━┓
         │      │             ║      ║           ┃      ┃
         └──────┘             ╚══════╝           ┗━━━━━━┛

rounded: ╭──────╮    dashed: ┌┄┄┄┄┄┄┐
          │      │            │      │
          ╰──────╯            └┄┄┄┄┄┄┘

自動レイアウト

ボックスに明示的な

x
/
y
が指定されていない場合、レイアウトエンジンは次のように処理します。

  • 各ボックスを内容に合わせてサイズ決定
  • 子ノードを親コンテナ内で配置
  • 接続フローに基づきトップレベルボックスを水平層へ割り当て
  • 各層内でエッジ交差を最小化するよう並べ替え
  • 依存グラフのサイクルも処理

手動位置指定と自動配置を混在させることができます。特定ボックスに

x
/
y
/
width
/
height
を設定し、残りは自動で決定します。


プログラム的利用

import { render, renderSvg } from 'box-of-rain';

const diagram = {
  children: [
    { id: 'a', children: ['Hello'], border: 'double' },
    { id: 'b', children: ['World'], border: 'bold' },
  ],
  connections: [{ from: 'a', to: 'b' }],
};

console.log(render(diagram));          // プレーンテキスト
const svg = renderSvg(render(diagram)); // SVG 出力

Mermaid から

Mermaid のサポートは別パス (

box-of-rain/mermaid
) に分離されており、メインエントリポイントを軽量に保ち、Chevrotain パーサーを引き込まないようにしています。

import { renderMermaid, parseMermaid } from 'box-of-rain/mermaid';

// ワンステップで描画
console.log(renderMermaid(`
  flowchart LR
    A[Frontend] --> B[API] --> C[Database]
`));

// またはパースしてから描画
import { render } from 'box-of-rain';
const nodeDef = parseMermaid(`
  sequenceDiagram
    Alice->>Bob: Hello
    Bob-->>Alice: Hi
`);
console.log(render(nodeDef));

入力は実行時に Zod で検証されます。スキーマが不正な場合、

ZodError
が投げられ詳細情報が含まれます。


開発

pnpm install
pnpm test        # テストを実行
pnpm typecheck   # 型チェック
pnpm build       # dist/ にビルド

ライセンス – MIT

同じ日のほかのニュース

一覧に戻る →

2026/02/18 2:48

**Claude Sonnet 4.6**(クロード・ソネット 4.6)

## Japanese Translation: **Claude Sonnet 4.6** は Anthropic の最新かつ最も優れた Sonnet モデルで、現在すべての Claude プラン(Free と Pro)でデフォルトとなっています。価格は Sonnet 4.5 と同じままで、1 兆トークンあたり $3 / $15 です。このモデルは 1,000,000 トークンのコンテキストウィンドウ(ベータ版)、適応/拡張思考、コンテキスト圧縮、自動ウェブ検索フィルタリング、拡張ツール例、および Excel の MCP コネクタサポートを導入しています。 初期ユーザーは、Sonnet 4.5 に対してコードの正確性、一貫性、指示追従、全体的なパフォーマンスで大幅に優れていると報告しています。特に Opus 4.5 を約 70%(59%)上回る性能を発揮しています。OSWorld、Vending‑Bench Arena、OfficeQA、Financial Services Benchmark、保険ワークフローなどのベンチマークでは、複雑なスプレッドシートや多段階ウェブフォームでほぼ人間レベルの結果が得られ、Sonnet 4.6 は Opus 4.6 と同等またはそれに近い性能を示しつつ、コストも低く抑えられています。安全性評価では大きな不整合問題は確認されず、プロンプトインジェクション耐性は Opus 4.6 と同等です。 製品アップデートには、フロントエンド設計とコード修正の改善(例:楽天 AI 用の最高 iOS コード)や保険ベンチマークで 94% の精度率が含まれます。Claude Code、API、および主要クラウドプラットフォーム全体で拡張された可用性により、Sonnet 4.6 はスプレッドシート自動化、保険ワークフロー、複雑なウェブ操作などのタスクにおいて、コード精度の向上、安全な対話、および低い導入コストを提供し、多くの産業で生産性ツールを再構築する可能性があります。

2026/02/18 2:06

ありがとうございます、HNさん。おかげさまで約3万3千人もの命を救うことができました。

## Japanese Translation: ## Summary: Watsi.org は Show HN の立ち上げから始まり、Hacker News からの大量トラフィックに急速に引き寄せられ、寄付が急増し、世界中で手術ケアのために 2,000 万ドル以上を調達しました。このプラットフォームは、Hacker News の “pg” が Watsi を Y Combinator 最初の非営利団体として指摘したことで早期の信頼性を獲得し、創設者がユーザーと深く関わり、自らサイトをコーディングし、効率・透明性・継続的改善に注力するようになりました。消費財とは異なり、非営利団体は寄付への熱意曲線が弱く、ケア要請は爆発的に増加した一方で寄付額は線形にしか成長せず、バーンアウトと取締役会主導の持続可能な成長への転換を招きました。結果として Watsi の戦略は今や積極的拡大ではなく、安定した段階的スケーリングを重視し、長期的な実現可能性を目指しています。このモデルはテックコミュニティが非営利団体を持続可能に支援できる方法を示しており、将来の YC 非営利プロジェクトや広範なチャリティ・テック分野への影響力を持つ設計図となります。 ## Summary Skeleton **What the text is mainly trying to say (main message)** Watsi.org は Show HN で始まり、Hacker News のトラフィックにより急速に成長し、現在は手術のために 2,000 万ドル以上を調達した持続可能な非営利団体として運営されています。 **Evidence / reasoning (why this is said)** - Show HN を通じて立ち上げ → 大量トラフィックが発生。 - Hacker News の “pg” が最初の大きなチェックを行い、Watsi を YC 最初の非営利団体として認識。 - 創設者はユーザーと時間を共有し、自らコードを書き、効率・透明性・革新を優先。 **Related cases / background (context, past events, surrounding info)** - 非営利団体のプロダクト‑マーケットフィットは消費財とは異なり、寄付への熱意が弱い。 - 寄付額は線形に成長した一方でケア要請は爆発的に増加し、バーンアウトと取締役会による持続可能な成長への転換を招く。 **What may happen next (future developments / projections written in the text)** 戦略は急速な拡大ではなく、ゆっくりとした安定的で持続可能な軌道へシフトしており、継続的に段階的スケーリングと長期的実現性への焦点が期待される。 **What impacts this could have (users / companies / industry)** ユーザーは手術のための信頼できる資金調達を享受し、寄付者は資金の透明な使用を見ることができます。このモデルはテックコミュニティが非営利団体を持続可能に支援する方法を示しており、将来の YC 非営利プロジェクトや広範なチャリティ・テック分野への影響力を高める。

2026/02/18 4:24

**HN ストーリー:AsteroidOS 2.0 – みんなが聞かなくても、私たちはリリースしました**

## 日本語訳: **改訂概要** AsteroidOS 2.0は2026年2月17日にリリースされ、ファームウェアの機能セットとデバイスサポートを拡張し、将来の開発計画を概説しています。主要な新機能にはAlways‑on‑Displayモード、滑らかなUIアニメーション、電池寿命の向上、およびAndroid用に更新されたAsteroidOS Syncクライアントを動力付けるモジュラーBluetoothライブラリが含まれます。Gadgetbridge(v0.73.0)は同じライブラリをサポートし、Amazfish(SailfishOS/Linux)とTelescope(Ubuntu Touch)が同期エコシステムに追加されました。このリリースはウォッチの互換性を30デバイスに拡大し、Fossil Gen 4–6、Huawei Watch/Watch 2、LG Watch W7、Moto 360 2015、OPPO Watch、Polar M600、さまざまなTicwatchモデルをカバーします。また、Casio WSD‑F10/F20、LG Watch Urbane 2、Moto 360 1st gen、Samsung Gear 2/Liveの5つの実験的ウォッチが追加され、Sony Smartwatch 3は降格されました。 新しいUI改良にはランチャースタイルオプションとカスタマイズ可能なクイック設定が含まれます。コミュニティへの貢献も強調されており、Weblateを通じて20以上の言語に翻訳され、ウォッチフェイス作成ガイドが公開されました。また、moWerk、MagneFire、Dodoradio、Berosetなどの顕著な貢献者が認められています。インフラストラクチャーの更新には、FAQやウォッチギャラリーを備えた拡張ウェブサイト、MediaWikiへのドキュメント移行、公式サブレディットの立ち上げ、およびコミュニティ通信をMatrixとLibera.chatへシフトすることが含まれます。新しいコミュニティリポジトリは事前コンパイルされたパッケージ、ウォッチフェイス、ゲーム、およびエミュレーターをホストし、毎晩のリリースはより頻繁になりましたが、すべてのイメージを再構築するには約1週間かかります。 将来の計画には、統合フィットネスアプリ、設定経由でのWi‑Fiセットアップ、ウォッチフェイス作成とファームウェアフラッシュ用のWebベースツール、アプリストア、および1.0リリースサイクルから安定した頻繁なリリースを目指すクォーシー1.1ナイトリー型モデルへの移行が含まれます。ユーザーは公式ウェブサイトからAsteroidOS 2.0をダウンロードし、提供された手順でインストールし、GitHubのIssueやWeblate翻訳を通じて貢献するよう奨励されています

**Show HN: Box of Rain – 自動レイアウト付き ASCII 図形** --- ### 概要 Box of Rain は、ASCII アートを自動で整形し、読みやすく保守しやすい形式に変換するツールです。生のテキストを入力すると、図形要素を揃え、必要に応じてスペースを追加・調整します。 --- ### 主な機能 - **自動配置** ツールは図を解析し、すべてがきれいに並ぶように適切な空白を挿入します。 - **既存構造の保持** スペースだけを調整するため、入力した文字はそのまま残ります。 - **どんな ASCII アートでも対応** フローチャート・ネットワークトポロジー・単純な図形など、Box of Rain がすべて処理します。 --- ### 動作原理 1. ツールに生の ASCII 図を入力する。 2. アルゴリズムが各行の非空白文字をスキャン。 3. 列位置を計算し、垂直揃えが保たれるようスペースを追加。 4. 整形された図はコピーまたは埋め込み用に出力されます。 --- ### 例 | Before | After | |--------|-------| | `+---+`<br>`| |`<br>`+---+` | `+---+`<br>`| |`<br>`+---+` | (簡単なボックスは変わらず、複雑な図では明確に揃いが見える例です。) --- ### 利用シーン - **ドキュメント** – Markdown やプレーンテキストファイルで技術図を読みやすく保つ。 - **コードコメント** – ソースコード内に構造化された ASCII アートを直接埋め込む。 - **教育ツール** – グラフィックエディタなしで概念を視覚化。 --- ### 使い始め 1. プロジェクトの GitHub ページへアクセス: `https://github.com/username/box-of-rain` 2. リポジトリをクローンまたはダウンロード。 3. スクリプトをローカルで実行 (`python box_of_rain.py`) もしくは Web インターフェイスがあれば利用。 --- **楽しい図作りを!** | そっか~ニュース