**Elo – JavaScript、Ruby、およびSQLにコンパイルされるデータ表現言語**

2026/01/07 20:59

**Elo – JavaScript、Ruby、およびSQLにコンパイルされるデータ表現言語**

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

要約

Japanese Translation:

Eloは、ノーコードツールを使用する非技術者向けに設計された軽量で携帯可能なデータ表現言語です。すべてのスクリプトが同一の方法でJavaScript、Ruby、およびSQLにコンパイルされるため、ブラウザ、サーバー、またはデータベース上で同じロジックをコードを書き換えることなく実行できます。

Elo のすべての値は不変です。等価演算子は一つだけ(

==
)で、可変オブジェクトや
new
は存在せず、組み込みスキーマが自動的に入力を検証し型変換します(例:
Int(c | c > 0)
)。関数パイプライン演算子(
|>
filter
map
reduce
)とラムダ構文により、開発者は再利用可能なデータパイプラインを構築できます。また、ガード構造(
guard positive: _.age > 0
)は実行時の検証と安全な推論を提供します。

Elo は日付・時間・期間をファーストクラスでサポートし、明確なリテラル表記(例:

+ P30D
)があります。タイムリーな式や基本的なプログラミング概念を学ぶためのプレイグラウンドも用意されています。

今後のリリースでは、Bmg フレームワークを介して関係代数機能(クエリ、結合、集計)を追加し、すべてのターゲット言語で統一的にコンパイルできるようにします。データ操作ロジックを統一することで、Elo はノーコードプラットフォームの開発時間とバグを削減し、ウェブフロントエンド、バックエンドサービス、およびデータベースの統合をよりシームレスに行えるよう支援します。

この言語は Bernard Lambeau(設計者・監督)と Claude Code(AI共同設計者・実装者)によって作成されました。

本文

シンプルで設計が優れ、携帯性と安全性を兼ね備えたデータ表現言語
Elo は JavaScript、Ruby、および SQL にコンパイルされます。


デザインの「シンプルさ」

  • 純粋なデータ言語:すべてが値であり、参照セマンティクスや
    new
    などはありません。
  • 一つの等価演算子だけで動作します。
  • 非技術者にも安全に使えるよう設計されています。

3× 真のポータブル

一つの式が意味的に同等な JavaScript、Ruby、SQL にコンパイルされます。
フロントエンド・バックエンド・データベースがすべて同じデータ言語で話し合います。

実際のデータ向けに構築

第一級の日時・時間・期間を直感的な構文で扱えるよう設計されています。
入力を検証し型変換するスキーマも備えており、ビジネスロジックはどこでも動作します。


Elo の特徴

実世界のデータ問題に対処するために、Elo はシンプルな構文で強力な機能を提供します。

let
  signup = D2024-06-15
in
  TODAY > signup + P30D

第一級日時・期間

日付・時間・期間はネイティブ型で、直感的なリテラル構文が使えます。
30 日後を求めるときは

+ P30D
と書くだけです。パースや変換、ライブラリのインポートは不要。

let Event = {
  name: String,
  date: Datetime,
  capacity: Int(c | c > 0)
} in _ |> Event

機能するデータスキーマ

信頼できない入力を安全で検証済みのデータに変換します。Elo はすべてを強制的にチェックし、コードは常に安心して動作します。

_
  |> filter(i ~> i.price > 100)
  |> map(i ~> i.price * 1.21)
  |> reduce(0, fn(a, b ~> a + b))

関数型・ポータブルパイプライン演算子

ラムダと豊富な標準ライブラリを備えており、一度書けば JavaScript、Ruby、SQL にコンパイルされます。すべての言語で同じ意味が保証されます。

guard
  positive: _.age > 0,
  adult:    _.age >= 18
in
  'Welcome!'

安全な推論のためのガード

実行時に仮定を検証するラベル付きガードを使い、ロジックを明示化し、無効データで即座に失敗させます。コードが保証することを自信を持って推論できます。

orders
  |> restrict(o ~> o.status == 'pending')
  |> extend({total: o ~> o.qty * o.price})
  |> project([.customer, .total])

近日公開:関係代数

Tutorial D に触発され、Bmg の力を借りて Elo はデータパイプラインに真の関係代数をもたらします。クエリ・結合・集約がポータブルなセマンティクスで行えます。


一つの式、三つのターゲット

Elo2 ^ 10 > 1000 && TODAY >= SOY
言語コード
JavaScript
Math.pow(2, 10) > 1000 && DateTime.now().startOf('day') >= DateTime.now().startOf('year')
Ruby
2 ** 10 > 1000 && Date.today >= Date.today.beginning_of_year
SQL
POWER(2, 10) > 1000 AND CURRENT_DATE >= DATE_TRUNC('year', CURRENT_DATE)

Elo を試してみる

プレイグラウンドで temporal 表現を書き始めて、簡単に動くことを体感してください。
[Playground を開く]

📚 プログラミング初心者の方へ

Elo は「怖い専門用語」や「混乱する概念」を排除し、シンプルなアイデアだけを明確に説明します。自分のペースで数値・文字列・日付・判断などを学べます。
[Learning を始める →]


開発者紹介

名前役割
Bernard Lambeauデザイナー&監督(Enspirit で25年間言語設計)
Claude CodeAI 共創者・実装担当(コード、テスト、ドキュメント全てを担当)

[プロジェクトの詳細を見る →]

同じ日のほかのニュース

一覧に戻る →

2026/01/12 5:47

**macOS Tahoe におけるウィンドウサイズ変更の苦労** macOS Tahoe では、アプリケーションウィンドウをリサイズすることが思ったより難しい場合があります。ユーザーは次のような点に悩むことが多いです: - 標準のドラッグ&ドロップ方式が安定しない。 - リサイズ用キーボードショートカットが十分に文書化されていない。 - 特定のアプリではウィンドウサイズ制限を無視してしまう。 これらの問題は、デスクトップ上で効率的に作業することを困難にします。

## Japanese Translation: --- ## 要約 macOS Tahoe の極端に大きなウィンドウの角丸半径は、通常のリサイズ動作を妨げます。丸みが付いた角は、必要な 19×19 ピクセルのクリックターゲットの約 75% を可視ウィンドウ枠外へ押し出します。その結果、ユーザーが緑色領域(通常使う部分)内で角を掴もうとすると、クリックが許容領域外に落ちてリサイズが失敗します。見える角のすぐ外側、同じ 19×19 ピクセル帯内でのみクリックが成功し、リサイズが起動します。以前の macOS バージョンでは、このターゲットの約 62% がウィンドウ内部に配置されており、ユーザーの期待に合っていました。筆者はほぼ四十年にわたるコンピュータ使用経験の中でこのような問題を一度も遭遇したことがありません。この不一致はフラストレーションと生産性低下を招きます。開発者は対策を設計するか、Apple にバグ報告を提出する必要があります。 ---

2026/01/12 6:29

2026 年はセルフホスティング(自前で運用すること)の年です。

## 日本語訳: > 本記事は、Claude Code CLI エージェントを利用することで、誰でも低価格のミニPCで完全に機能的なホームサーバーを構築できることを示しており、深いシステム管理スキルが不要になる点を強調しています。Beelink Mini N150($379)に8 TB NVMe SSDを搭載し、著者はUbuntu 22.04 LTS をインストールし、セキュアネットワーク用に Tailscale を追加、その後 SSH で Claude Code をインストールします。シンプルな英語のプロンプトを発行するだけで、Claude Code は自動的に Docker を設定し、Compose ファイルを作成し、サービス(Vaultwarden, Plex, Immich, Uptime Kuma, Caddy, Home Assistant, ReadDeck)をデプロイし、リバースプロキシを構築し、永続性を確保し、更新とセキュリティパッケージを管理し、ブート時の再起動も可能にします。 > > Vaultwarden は軽量な Bitwarden 互換パスワードマネージャーとして機能し、Immich は Google Photos の代わりにモバイルアプリ、ローカル顔認識、タイムライン/マップビューを提供します。ReadDeck は Mozilla Pocket を補完するクリーンな UI と読み続行機能を備えています。Lazydocker(Docker コンテナ UI)や Glances(システムモニタリング)などの追加ユーティリティもスタックを完成させます。著者は低い消費電力(CPU 約6 %、メモリ約32 %)を指摘し、保守作業がサーバーを所有する感覚に近く、問題は SSH と Claude Code への英語プロンプトで解決できると強調しています。 > > 対象読者はターミナル操作に慣れたユーザーで、既に SaaS サービスの料金を支払っているが、フルインフラ専門家になることなく基盤システムを理解したい人々です。本記事は、ミニPC 上で Claude Code を利用したセルフホスティングが今や実現可能で楽しく、今年おすすめできると結論付けています。

2026/01/12 7:14

このゲームは、Windows・Linux・ブラウザ上で動作する単一の13 KiBファイルです。

<|channel|>final <|constrain|>## Japanese Translation: 記事では、1つのソースファイルが「ポリグロット」バイナリを生成する方法を示しています。このバイナリには、Windows、Linux/BSD、およびブラウザ用にコンパイルされた3つの小さなプログラム(スネークゲーム)がすべて含まれており、合計13 312バイトです。コードはJustine Tunneyのcosmopolitan libcアイデアを使用し、各プラットフォームでネイティブに実行できる<16 KiBの実行ファイルを生成します。 3つのビルドが作成されます: • WinAPI用C(i686 Visual C)– 画面スクリプトとしても機能する非従来型PEヘッダーを使用。スタブはゲームを解凍して起動し、最初に再実行まで0xc0000005エラーが表示されます。 • Linux/X11用C(x86_64 clang)– lzmaデコンプレッションとシェルドロッパーを使用してファイルからELF64バイナリを抽出します。 • ブラウザ用JavaScript – ブラウザは先頭の無害なゴミを無視し、CSSで隠し、HTML/Canvasゲームがこの余白後に開始されます。 各コンパイル済み/ミニファイド版は約3–5 KiBです。3つのバイナリは順序通りに連結され、各オペレーティングシステムまたはブラウザが自分のセクションを実行します。元のゲームソースは13 772バイトでしたが、パッキングと連結後、正確に13 312バイトになります。 ゲームプレイの詳細(パッケージング物語の一部ではなく、キーポイントで言及されている)は次の通りです: - スネークは食べ物を食べることで成長し、壁を避けます。 - 操作:矢印キー/WASDキー、ESCで終了、Rでリセット、Pで一時停止、Spacebarで開始。 - スコア:フルーツごとに+10、黄色のフルーツは+20。フルーツは一定レートで生成され、スネーク速度/長さに比例した時間が経過すると消えます。 - 10個のフルーツ後、ランダム壁を含むレベル変更が行われ、ヘッドから任意の食べ物へのパスが保証されます。初期スネーク位置はランダムですが、向いている方向に少なくとも5つの空きタイルがあります。 このプロジェクトは、複数のオペレーティングシステムとウェブブラウザ用の実行コードを1ファイルにまとめることができることを示し、小規模プログラムの軽量でプラットフォーム非依存的な展開の可能性を開きます。

**Elo – JavaScript、Ruby、およびSQLにコンパイルされるデータ表現言語** | そっか~ニュース