Text.js:console.log 内でレンダリングされるフルスタック React アプリを開発

2026/11/04 13:59

Text.js:console.log 内でレンダリングされるフルスタック React アプリを開発

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

要約▶

Japanese Translation:

Text.js は、ブラウザのコンソール内でのフルスタック React アプリケーションの直接構築を可能にすることで開発を革新します。React 19 の機能を活用しており、このアプローチは複雑な外部環境の必要性を取り除き、開発者がチャートやフォームなどのインタラクティブ UI を画面に直接即座にプロトタイプ化することを可能にします。フレームワークは、「dirty gating」と呼ばれる技術を使用してパフォーマンスを最適化し、不要なビジュアル更新を最小限に抑えます。また、軽量なサーバーサイドレンダリングを活用して効率性を高めています。開発者ツール向けの標準的な React 慣習を適応させることで、入力方法のハンドリングや任意のズームレベルに対応するレスポンシブレイアウトなどの必須タスクをサポートします。開発者はキーボードショートカットを利用してすぐに構築を開始でき、専用のプレビューペインにアクセスできます。将来、この技術はエージェントプロキシを通じて高度な AI 相互作用をサポートするために拡大すると予想されます。この移行により、ワークフローが簡素化され、デバッグが迅速化され、チームが複雑な非同期的コンポーネントを展開前にプレビューできるため、デジタルイノベーションのペースが大幅に加速しています。

本文

ブラウザコンソール上で動作するフルスタック React アプリケーション (Text.js)

このページは開発者ツール内のコンソールで動作します。
⌘⌥J(Mac)または Ctrl+Shift+J(Windows/Linux)を押してコンソールを開き、↑/↓キーでナビゲート、そしてプレビューをクリックしてください。最初に開発者機能を有効することをお勧めします。

サンプルコード

以下のコードをコンソールの REPL に入力・実行できます。

import { useState } from "react";
import { AsciiFont, Box, Text, useInput } from "@textjs/app";

export default function Page() {
  const [count, setCount] = useState(0);
  
  // ↑/↓ キーでカウント値を変更
  useInput((e) => {
    if (e.key === "up") setCount((c) => c + 1);
    if (e.key === "down") setCount((c) => c - 1);
  });

  return (
    <Box className="flex-col gap-1 p-2">
      <AsciiFont text="▼ TEXT.JS" />
      <Text color="muted">コンソール内の React 19</Text>
      <Text bold color="accent">count = {count}</Text>
    </Box>
  );
}

機能とキャパビリティ

  • React 19 対応: Text.js はコンカレント描画、Suspense、エラーバウンダリを完全に対応しています。
  • App Router:
    app/
    フォルダ構造をサポート。ルート・レイアウト設定、バック/フォワードボタン、深いリンク動作が正常に機能します。
  • レスポンシブグリッド: ページのズームレベルや開発者ツールパネルのサイズに自動的にフィットします。
  • キーボード入力: 隠された単一の
    <textarea>
    を介して全ての入力を処理し、ペースト操作や IME(入力方法)を正しくサポートします。

コンポーネントとレイアウト

サポートされているコンポーネントパターン

  • <Box>
    ,
    <Stack>
    ,
    <Grid>
    ,
    <SplitPane>
    ,
    <ScrollBox>
    ,
    <Center>
  • <Data>
    ,
    <List>
    ,
    <Table>
    ,
    <Tree>
    ,
    <Markdown>
    ,
    <Code>
    ,
    <Diff>

サポートされている可視化機能

  • チャート:
    <LineChart>
    ,
    <BarChart>
    ,
    <Sparkline>
  • インジケータ:
    <ProgressBar>
    ,
    <Gradient>
  • メディア:
    <Image>

サポートされているコントロール

  • 入力系:
    <Input>
    ,
    <Select>
    ,
    <Checkbox>
    ,
    <Switch>
    ,
    <Slider>
  • オーバーレイ:
    <Dialog>
  • ユーティリティ:
    <Keyboard>
    ,
    <useKeymap>
    ,
    <KeyHelp>
    ,
    <KeyHints>
    ,
    <CommandPalette>
    ,
    <StatusBar>
    ,
    <useFocus>

アーキテクチャとパフォーマンス

Text.js は以下的高效な処理サイクルを実現しています。

  1. コミット (Commit): React のカスタムリコンシリエーター経由。
  2. レイアウト (Layout): Yoga がボックスの全体セル上で計算。
  3. 描画 (Paint): 変更された行のみを再描画(損傷限定)。
  4. ディルティゲート (Dirty gate): 変更がないフレームは処理停止。
  5. エンコード (Encode): 3,200 セルが圧縮され、149 個の
    %c
    スパンへ変換。
  6. 発信 (Emit): フレーム追加間隔は最低でも 66ms。

パフォーマンス指標の詳細

  • コンソールのクリア戦略:
    • 次のフレームが開発者ツールの描画を待つまで空欄(
      clear()
      +
      log()
      ):70.6% のフレームで空。
    • アドオン追加 (
      log()
      のみ):1.0% のフレームが空、処理時間は 0.163ms。
  • フル描画サイクル(レイアウト・描画・エンコード合計): 平均 0.011ms。
  • 単一行の編集(キーストローク時):0 回 の追加コールオーバーヘッド。

高度な利用法

  • アイドルフレーム最適化: 3,200 セルを 149 個の
    %c
    引数に変換して軽量化。
  • サーバー側レンダリング:
    runtime = "server"
    をエクスポートすることで、ルートや非同期コンポーネントをサーバーでレンダリング可能。ブラウザは約 21kB (gzip) のフレームプレイヤーのみ読み込みます。
  • 環境互換性: ターミナルおよび AI エージェント上での実行も動作確認済み。

OpenCode インテグレーション

OpenCode TUI を Text.js で再構築した 「OpenCode Lite」 は、ブラウザコンソール上で即座に動作します。

  • サンドボックス機能: スクリプト化されたエージェントが任意の質問に回答可能。インストール不要。
  • 1 コマンドで接続:
    bunx @textjs/opencode@latest proxy
    
    表示されたコマンドを入力すると、ローカル OpenCode サーバーと同期されます。
  • モデルとセッション管理:
    /models
    アクションを通じて、OpenCode サーバー上の任意のモデルやセッション、エージェントを選択可能です。

ツールリング

エディタ機能に加え、リントおよびテストツールへの統合サポートが含まれています。

同じ日のほかのニュース

一覧に戻る →

2026/11/08 3:02

Microsoft Research の「AI Frontiers」チームの解散

## 日本語訳: ## サマリー: 2023 年の ChatGPT のリリース以降、Microsoft は Microsoft Research 内に「AI Frontiers(AIF)」を設立し、フル・バンドwidth・トランスフォーマーや Autogen、Fara といった画期的な研究の調整を担ってきた。9 月上旬に AIF は解散され、拡大志向のリーダーシップの下にあるより大きな Microsoft AI 部門へ統合された。当時の経営陣は、高リスクの技術的ブレイクスルーと、管理側が予測可能なビジネスリターンにのみ注力する姿勢との間に乖離を認識し、研究が明確な応用の道筋を持たないと感じていたため退任した。その結果、AIF は 9 月上旬をもって運営を終了し、本年度のインターンシップもすべて終了となった。この移行は、モノレポ統合による効率化の追求を目指しているものの、画期的な協力の機会を損ねるリスクがある。この変化は、組織内のスケーラブルなビジネス成長と深層研究イノベーションとの間の緊張関係を反映している。

2026/11/08 3:12

10 ドルの OpenStick ホームラボで私が実行しているもの

## Japanese Translation: 本テキストは、高度なサービス(AI エージェントや広告ブロックツールなど)を最小限のハードウェア上で実行できる理想的な低コストなホームサーバーとして、$10 の OpenStick を主に推奨しています。Debian と Podman による軽量コンテナ化を利用することで、パッシブ冷却設計による極めて低い電力消費と静音環境を確保したセキュアな構築を実現します。この構成は、OpenStick の ARM Cortex-A53 プロセッサに対してメモリ効率の高いアプリケーションを組み合わせることで一般的な制限に対処しています;例えば、大規模なブロックリストの処理には AdGuard Home を使用し、破損したリンクの修正には Shiori を使用することでコストを発生させません。セキュリティ強化のためには Cloudflare Tunnels を用いて直接インターネットポートを公開する必要がなくなります。将来的な運用では Zeroclaw AI エージェントを活用して通信チャネルの管理を行い、システム更新に対して Telegram アラートをトリガーします。このアーキテクチャにより、512 MB の RAM だけで複雑な監視や DNS レベルのフィルタリングを含む堅牢な IT 解法を確実に動作させることができることが証明されています。最終的には、このプロジェクトはホビーユーザーおよび小規模企業に対し、エネルギー消費が高いサーバーに対する持続可能な代替手段を提供し、通常のコストの僅かであるにも関わらず、静かなメディア消費やインテリジェントな自動化といったプレミアム機能を実装します。

2026/11/08 8:09

GitHubの「プルリクエスト概要ページ」がパブリックプレビューで利用可能に

## 日本語訳: GitHub は、本週末までの期間限定公開プレビューとして、プルリクエスト用の再設計された「Overview ページ」のオプトイン版をリリースします。この機能はヘッダーメニューから新しいインターフェースとクラシック表示の切り替えが可能になっています。今回のアップデートにより、「マージボックス」(ステータスインジケーター)という主要な部分を前回の半分以下のサイズに縮小すると同時に、重要なレビューシグナルをトップレベルの準備状況サマリーに統合することで、ワークフローの効率が大幅に向上しました。このコンパクトなセクションは、サポートシグナル(チェック、承認、コメント)の確認、ブロックされた問題の解決、マージの可否確認という 3 つの主要機能を支援し、失敗したチェック、待機中の承認、関連するコメントへの直接リンクを含みます。新しい会話管理機能により、未解決の会話や自分自身のコメントをフィルタリングでき、またコメントは最初から古い議論ではなく最新から古順にソート表示できます。右上のヘッダーサマリーには、レビューコメント、レビューリクエスト、その他の最近のアクティビティへの快速アクセスが可能で、ユーザーは PR をレビュー用に準備済みとしてマークしたり、許可された場合は直接閉鎖したりすることもできます。プレビューを試すには、ヘッダー内の「✨ Overview ページを試用する」ボタンを選択してください。フィードバックや問題報告については、専用となる overview プレビューフィードバックディスカッションにて共有してください。