世界を動かす技術を、日本語で。

フォルダープログラミング言語

2026年10月16日原文(danieltemkin.com)

概要

  • Folders は、フォルダ構造のみでコードを表現する非テキスト型の Esolang。
  • フォルダの 包含関係と順序 のみが意味を持ち、名前は無視される。
  • Windows 向けに設計され、理論上は無限のストレージを提供。
  • コードもデータも ファイルを使わずフォルダで管理 する独特な設計。
  • 詳細な言語仕様やエミュレータ、リファレンス実装は GitHub で公開。

Folders言語の特徴

  • 非テキスト型言語 :コードはフォルダの入れ子構造と順序のみで表現。
  • フォルダ名は無視 :アルファベット順の並びだけが意味を持つ。
  • 純粋な順序付き木構造 :プログラム全体がネストしたリストとして表現。
  • Whitespace から着想を得た、極限まで「無」のコード表現。
  • .gitignore ファイルの活用推奨、Gitで空フォルダが無視されるため。

Windowsおよびストレージとの関係

  • Windows環境で開発 :空フォルダはディスク容量を消費しない特性。
  • 理論上無限ストレージ :数十万フォルダ作成しても容量ゼロ。
  • データもフォルダで管理 :フォルダ名にデータを格納するFolders FS。
  • ファイル領域からの解放 :全てのデータ・コードをフォルダで表現。

コードとデータのエンコーディング

  • コマンドはサブフォルダ数で判別 :最初のサブフォルダの数が命令種別。
  • 引数や変数もサブフォルダで表現 :二番目・三番目のサブフォルダで指定。
  • 一時データはフォルダ名で保持 :Folders FSではフォルダ名がデータ本体。

コマンド一覧

  • if :サブフォルダ0個、2番目に条件式、3番目にコマンドリスト
  • while :サブフォルダ1個、2番目に条件式、3番目にコマンドリスト
  • declare :サブフォルダ2個、2番目に型、3番目に変数名(サブフォルダ数で指定)
  • let :サブフォルダ3個、2番目に変数名、3番目に式
  • print :サブフォルダ4個、2番目に出力する式
  • input :サブフォルダ5個、2番目に入力先変数名

式(Expressions)

  • variable :サブフォルダ0個、2番目に変数名
  • add :サブフォルダ1個、2番目・3番目に加算する式
  • subtract :サブフォルダ2個、2番目・3番目に減算する式
  • multiply :サブフォルダ3個、2番目・3番目に乗算する式
  • divide :サブフォルダ4個、2番目・3番目に除算する式
  • literal value :サブフォルダ5個、2番目に型、3番目に値
  • equal to :サブフォルダ6個、2番目・3番目に比較する式
  • greater than :サブフォルダ7個、2番目・3番目に比較する式
  • less than :サブフォルダ8個、2番目・3番目に比較する式

型(Types)

  • float :サブフォルダ1個
  • string :サブフォルダ2個
  • char :サブフォルダ3個

可視化と応用

  • ネストリストやJSON風の表現 :フォルダ構造をそのままデータ構造化。
  • 地図・家系図・植物構造など :フォルダの順序や入れ子を多様に可視化可能。
  • Truth MachineやFibonacci :具体的なプログラム例も存在。

実装・エミュレータ・リファレンス

  • GitHub公式実装 :https://github.com/rottytooth/Folders
  • JavaScriptエミュレータ :他OSでもFoldersの体験が可能。
  • Folders FS :一時ファイル不要、全てフォルダでデータ保持。

まとめ

  • Folders は、フォルダのみでプログラムとデータを表現する 前衛的Esolang。
  • 無限ストレージ、 非テキスト、 極限まで抽象化されたコード の世界。
  • 興味があればGitHubで実装を体験、新しいプログラミングの可能性を探求。

Hackerたちの意見

これ、めっちゃクレイジーで無意味だけど…大好き!AIじゃ絶対に思いつかないようなやつだね :)

└

…最近のオープンAPIの「脱出」の一つは、エージェントがパス名を使って、メッセージボードの代わりに「記憶」を保って協力するための調整をしてたって、実際にあったよね?(もちろん、それには「意味」があったけど)

これが今まで見た中で一番「お前、何考えてんの?」って感じのエソランだわ。構文を見たとき、一つの文を書くのにどれだけの労力がかかるか想像したら、思わず引いちゃった。

└

それが好きなら、WORSTとMalbolgeの不快さを紹介するよ。 https://esolangs.org/wiki/WORST https://esolangs.org/wiki/Malbolge どっちも本当に底なしの苦痛だよ。

あ、それ、数年前のCTFで見たやつだ!めっちゃ面白かったよね!

「Windowsでは、フォルダは空っぽさの極端な例で、全くディスクスペースを占有しない。証明するために、352,449個のフォルダを作ってプロパティを見てみて。」これ、ジョークだと思うけど、真剣に受け止めすぎかな。でも、これが「証明」するのは、Windowsが嘘をついてるってことだけだよね(笑)。情報はどこかに保存されてるのは明らかだし。

└

これ、ジョークだと思う どうしてフォルダープログラミング言語の作者を真剣じゃないって疑うのさ!

└

NTFSにはMFT(マスターファイルテーブル)があって、すべてのメタデータを保存するために事前に割り当てられてるんだ。これでフラグメンテーションを避けられるから、事前に割り当てられたMFTが埋まるまでは、スペースを取ってるようには見えないよ。他のファイルシステムでも同じようなことをしてるのがあるけど、NTFSは比較的大きなレコード(1024バイト)を持ってるから、小さなファイルもMFTに収められるんだ。

└

明らかにどこかに情報が保存されてる。 それはファイルシステムメタデータのために予約されたディスクブロックに保存されてる可能性が高いね。ディスクは常に空に見えるかもしれないけど、利用可能なスペースは徐々に減っていくよ。

└

明らかにどこかに情報が保存されてる。 そうだけど、それは事前に割り当てられた場所(MFTの一部)だから、ディレクトリが本当に巨大になったり、MFTを使うものが十分に増えない限り、余分なスペースは取られないんだ。確か、こういう実験では各ディレクトリがMFT内で1Kバイトのブロックを取るし、さらにそのディレクトリが他のブロックを消費する必要があるから、ちょっとだけスペースが必要になるんだ。たくさんの短いファイルを作るのも、一般的なLinuxファイルシステムでは、事前に割り当てられたinode以外は何も使わないから、最初はスペースを取らないことがあるよ。

すごいなって感心するのか、怒るべきなのか決められない。少なくとも、飛ぶテスラよりは役に立ちそうだね。

フォルダの名前は無視される それは良かった!だって、物に名前を付けるのって難しいもんね!

Hacker Newsで議論の続きを見る