コンテンツにスキップ
PR

Jellyとは

JellyはJに着想を得たコードゴルフ向けのレクリエーショナル言語で、専用コードページ、atom、quick、chainという独自モデルを使います。一般業務の短さや可読性を競う言語ではなく、文字数制約の中で配列処理と合成規則を学ぶ対象です。コードゴルフ、配列言語、難解言語処理系に関心がある読者にとって重要なのは、名称だけで採用可否を決めず、仕様・実装・製品・歴史資料のどれを見ているかを区別することです。最初に確認するのは、対象コードがDennis Mitchell版JellyのコードページかUTF-8表記かを確認することです。本記事の一次情報確認日は2026年8月6日です。

  • Jellyは汎用業務言語ではなく、コードゴルフ向けに設計された。
  • 公式リポジトリはPython 3で動くインタープリターとチュートリアルを提供する。
  • ソースの一文字がatomやquickを表し、Unicode表示と256文字コードページを区別する。
  • JellyfishやOpen Jellycoreなど同名・派生実装と混同しない。
  • 短いコードの意味を読むには、atom一覧、quick、chainの評価規則が必要。
項目内容
名称Jelly
分類レクリエーショナル・コードゴルフ・配列指向
着想J
主要実装DennisMitchell/jellylanguage
実装言語・要件Python 3
入力形式JellyコードページまたはUTF-8

Jellyは、短いバイト数で問題を解くコードゴルフを主目的とした言語です。多数の組み込み操作を一文字へ割り当て、配列・数値・文字列へ作用するatomを、quickやchainで合成します。通常の関数名や括弧を多用する言語とは読み方が異なります。

設計上の価値は、可読性を犠牲にしている点だけではありません。暗黙引数、単項・二項・零項リンク、ベクトル化、配列操作の合成を極端に圧縮したとき、評価規則をどう定義するかを観察できます。

Jellyという名称は一般名詞であり、Apple Shortcuts向けの別プロジェクトやJellyfishなどの派生言語があります。本記事の対象はDennis Mitchell氏のjellylanguageリポジトリです。

J言語とも別です。JellyはJから着想を得ていますが、Jの標準処理系や文法の短縮版ではありません。Jellyのatom記号をJへ貼り付けたり、Jの語彙をJellyへそのまま適用したりできません。

Jellyプログラムはlinkの列として解釈され、atomは基本操作、quickは周囲のlinkを変形・合成します。文字の意味は公式のAtoms、Quicks、Syntax、Code page資料で確認します。

同じ見た目でも、UTF-8のバイト数とJellyコードページでの1バイト表現は異なります。コードゴルフのスコアやファイル入力では、ffueeuの違いを確認します。

公式インタープリターはPython 3を必要とします。リポジトリを取得してパッケージを導入するとjellyコマンドを利用できます。オンライン処理系もありますが、コードページ、引数解釈、処理系の更新状況を固定して再現性を確認します。

  • コードゴルフ問題の解法と圧縮表現
  • 配列指向・暗黙引数・関数合成の学習
  • 難解言語インタープリターの実装研究
  • 文字コードと意味表現の関係を扱う教材
  • チーム開発、長期保守、業務ロジックの標準言語を探している場合
  • 処理系・バージョン・コードページを固定せず再現したい場合
  • 一般的な静的型検査やIDE補完を必須とする場合
  • 短いソースを安全性・単純性の証拠として扱う場合
比較対象共通点違い・判断
J配列指向と記号的表現Jellyはコードゴルフ専用の語彙と評価規則を持つ
APL配列へ一括適用する発想Jellyのatom・quick・chainはAPLの標準構文ではない
GolfScriptコードゴルフ向けスタック中心かJellyのlink合成かが異なる
Python公式実装の基盤Python構文でJellyを書くわけではない

公式リポジトリのQuickstartには、UTF-8コードを直接評価する例があります。

Terminal window
jelly eun '“3ḅaė;œ»'

期待出力は次です。

Hello, World!

また、二項atomの最小確認として次が掲載されています。

Terminal window
jelly eun '×' 14 3

期待出力は42です。eunはUTF-8でコードを読み、末尾改行を付けるフラグ構成です。

  1. 公式リポジトリのREADME、Code page、Atoms、Quicks、Syntaxを同じコミットで確認します。
  2. 実行環境のPython 3版とJellyリポジトリのコミットIDを記録します。
  3. UTF-8入力かJellyコードページのファイルかを明記します。
  4. 入力引数と標準入力のどちらを使うか確認します。
  5. 既知の短い例で処理系を検証してから、対象コードを一文字ずつatom表へ照合します。
  6. ゴルフ投稿の説明では、バイト数の数え方と処理系URLを残します。

Jellyとはを評価するときは、言語名に対する印象ではなく、難解・コードゴルフ言語として必要な証拠をそろえます。最低限の確認対象は、Jellyコードページ、atom、quick、chain、Python実装です。ソース断片だけを見て「簡単」「古い」「高速」「安全」と判断せず、同じ版・同じ入力・同じ実行環境で再現できる範囲を記録してください。

判断確認する証拠採る行動
学習対象にする公式仕様または原典、動く最小例、用語の定義隔離環境で小さな例から試し、実装固有部分を注記する
既存資産を保守する正確な版、ビルド方法、依存、テスト、現行成果物変更前の再現環境を保存し、差分を小さくする
別言語へ移行する入出力、データモデル、実行時意味、外部連携、例外・失敗条件構文変換より先に互換テストと段階切替を設計する
新規採用する公開処理系、ライセンス、release、CI、debugger、library、保守者小規模prototypeと撤退条件を承認してから依存を増やす

この対象の採用ゲートは、公式Quickstartと対象コードを同じコミットの処理系で再現できるかです。これを満たせない場合は、本文を読んで構文を理解できても、製品採用・移行完了・互換性確認とは扱いません。

入力、期待結果、実行コマンド、標準出力、終了状態を一組で保存します。配列・relation・record・object・文字列書換えなど、その言語が中心にするデータ単位を一つだけ使い、別機能を混ぜません。実行結果のスクリーンショットだけでなく、処理系版とソースのハッシュも残します。

具体的な検証ケースB: 境界・失敗系

Section titled “具体的な検証ケースB: 境界・失敗系”

型不一致、未定義名、不正入力、空データ、終了しない規則、未対応拡張、外部資源不足など、その対象で起きる失敗を一つ作ります。エラーが出ること、停止できること、データを壊さないことを確認します。歴史言語で実行環境がない場合は、原典ページと転記の差分確認を失敗系の代わりにします。

資料とコードを混同しないための読み方

Section titled “資料とコードを混同しないための読み方”

一次資料には、言語仕様、利用者向けマニュアル、処理系README、API reference、release note、研究論文、歴史的スキャンがあります。それぞれが証明する範囲は異なります。仕様に構文が載っていても処理系が完全実装しているとは限らず、READMEの例が動いても言語全体の互換性を保証しません。研究論文の擬似コードを実行可能ソースとして扱わず、歴史的スキャンのOCRを原文として引用しません。

次の順序で証拠を整理します。

  1. 対象名、版、発行者、URL、確認日を記録する。
  2. 仕様・実装・製品・派生処理系を別行にする。
  3. 最小例の出典と実行環境を対応付ける。
  4. 実行できなかった点は「要確認」とし、類似言語の知識で補完しない。
  5. 記事更新時は古い記述を消すだけでなく、どの版から変わったかを履歴へ残す。
  • 名前が同じだから互換である: 同名の言語、ライブラリ、製品、略称は多数あります。
  • 構文が似ているから同じデータモデルである: SQL風、C風、Lisp風でも評価規則と実行環境は異なります。
  • 公式GitHubがあるから安定している: 研究プロジェクト、限定公開、歴史アーカイブも公式リポジトリを持ち得ます。
  • Hello Worldが動いたから採用できる: 配布、依存、エラー、データ、性能、更新、撤退まで検証が必要です。
  • 過去に使われたから現在も使える/古いから価値がない: 現行利用、既存資産、歴史研究、教育価値を別々に判断します。

Jellyは最初から長いゴルフ解答を読むより、単一atom、二項atom、quick、chainの順に分解します。一文字ごとの入力と出力を表にし、同じ記号が単項・二項で異なる意味を持つ場合は別行にします。コードページの一文字を通常Unicodeの文字数と混同しないことも重要です。最終的な短さではなく、評価規則を説明できることを学習完了条件にします。

公式リポジトリは参照できますが、一般的な安定リリースや互換性保証を持つ業務向け処理系とは性格が異なります。GitHubの最終更新だけから言語全体の活発さや将来性を断定しません。派生処理系を利用する場合は、元のJellyとの互換範囲を個別に確認してください。

  • 2026-08-06: 公式サイト、仕様書、公式実装または原典資料を再確認し、名称の区別、実行環境、最小例、採用判断を更新しました。

最終更新日: