2019年はワールド・ワイド・ウェブ（WWW）誕生30周年だ。その立ち上げ当初に約束されていたことのひとつに、「ソースコードの確認」を選べるというものがあった。ソースコードを読むことで、ウェブページがなぜそのように表示されているのか独習できる、という趣旨だった。

このページは、プログラミングサイトの「Glitch」がWWWの30周年にあたって最初のウェブページを再現したものだ。ソースコード表示に切り替えると、「title」「body」「p」（「パラグラフ（paragraph）」を示すことが推測できる）といったラベルでマークされた箇所がある。何が何を指しているのかが単純明快にわかるだろう。

「単純明快にわかるだろう」と書いたが、それは英語を理解できる人の見方でしかない。仮にあなたがこれから初めてウェブページを見るとしよう。その仕組みを知りたくてうずうずしている。しかし、そこに書かれたラベルがなじみのある言葉ではなく、わたしがつくったこちらのヴァージョンが表示されたらどうだろうか。

このヴァージョンは、ソースコードが英語ではなくロシア語に基づいたものである以外は、オリジナルとまったく同じものだ。わたしはロシア語を話さないが、読者の多くもそうだろう。ここでや、、といった記述を目にして、手を出そうと思うだろうか。

絵文字でもキリル文字でもプログラミングはできる

プログラミング言語には、理論上はどんな記号も使える。見えないプログラム（コンパイラー）によって、コンピューター上では人間が入力する「IF」も「

」も、1と0の組み合わせに変換されるのだ。IFを表すのにジャガイモの絵文字「?」が使われようと、を表すために15世紀のキリル文字のO（ꙮ）が使われようと、まったく同じように機能するわけだ。

プログラミングの言葉は、「body」や「if」のような英単語に似ているものが多いが、これは人間の小さな脳に合わせたものだ。人間の脳は、すでに知っている単語に似ているコマンドのほうがよく覚えられるからである。

しかし、こうしたコマンドの単語をすでに知っているのは一部の人々、つまり英語が理解できる者だけだ。ウェブ設立当初の「約束」は、実は英語を話す人々への約束でしかなかった。もともと英語を話す地域の人や、第2言語として十分に英語を学べるエリート教育へのアクセスをもつ人が対象だったのだ。

現在のソーシャルメディアプラットフォームやソフトウェアプログラムは、30言語から100言語くらいで利用できることが多い。しかし、わたしたちを消費者ではなくクリエイターにしてくれるツールはどうだろうか？

わたしは少数言語を元にしたプログラミング言語をつくるべきだと言っているわけではない（そうなればいいのだが）。しかし、中国語やスペイン語、ヒンディー語、アラビア語といった、長らく文学に使われて地域の通商語にもなっている言語ですら、コードの言葉として広く使われるには至っていないのである。

多言語版のあるプログラミング言語は4つ

わたしがこれまでにみつけた多言語版が広く手に入るプログラミング言語は4つだ。400ではなく、4つである。

そのうち2つは「Scratch」と「Blockly」で、コーディング方法を子どもたちに教えるために特別に設計された言語だ。Scratchは調査も実施していて、母語が基になったプログラミング言語で学ぶ子どもたちは、そうでない言語で学ぶしかない子どもたちよりも覚えるのが速いことがわかっている。彼らが成長すればどうなるだろう？

これとは別に、言語学習があまり好きではない大人向けにローカライズが進んでいるプログラミング言語が2つある。Excel関数と「Wikiマークアップ」だ。

スプレッドシートは、スプレッドシートプログラムのインターフェイス言語に基づいた式によるコマンドが使える。マイクロソフトの「Excel」も「Google スプレッドシート」も、例えば「=IF(condition,value_if_true,value_if_false)」と書くように、スペイン語で「=SI(prueba_lgica,valor_si_es_verdadero,valor_si_es_falso)」と書くことができる。数十の言語でこうしたことが可能だ。

コーディングと言われてExcelシートを最初に思い浮かべる人は少ないだろう。しかし、Excelシートをチューリングマシンにすることも技術的には可能だし、ローカライズ版はビジネスになることも証明されている。

同じように、WikipediaをはじめとするWikiも、英語以外のさまざまな言葉を元にしたWikiマークアップで編集できる。リンクは角カッコで囲むなど、Wikiマークアップの基本機能は言語に左右されないものになっているが、高度な機能になると単語が使われていて、この単語が現地の言葉になっているのだ。

例えば、人に関するインフォボックスをつくる場合、英語版には「name =」や「birth_place =」といったパラメーターがある。ブルガリア語版では、これが「име =」と「роден-място =」になる［編註：日本語版では「名前 =」と「出身地=」になる］。

ウェブの約束は「脅威」でもある

幅広く提供されている多言語プログラミング言語4つに加えて、英語以外の言語で提供されているものが数十個はある（もしかすると100個以上かもしれない）。例えば、Qalb（アラビア語）、Chinese Python（中国語）、farsinet（ペルシア語）、Hindawi Programming System（ベンガル語、グジャラート語、ヒンディー語）、Perlのラテン語版などがその例だ。

こうした非英語プログラミング言語のなかには、政府の支援による部屋いっぱいの巨大コンピューターが使われていた時代にさかのぼるものもある。旧ソ連時代の「ALGOL 68」（1960年代）や「4th Dimension」（1980年代）など、ロシア語やその他の言語に基づいてつくられたプログラミング言語がそうだ。

しかし、「Python」や「Ruby」「Lua」といった比較的新しい言語は、非英語国（オランダ、日本、ブラジル）が発祥でも英語に基づくキーワードを採用しているものが多い。「ページのソースを閲覧すれば仕組みを独習できる」というウェブの当初の約束は、多くの人からするとむしろ脅威だ。英語を話さなければネットから取り残されるぞ、ということでもあるのだから。

このように他言語が存在するのは、プログラミング言語の変換が難しくないからだ。プログラム言語変換ソフトは豊富にある。JavaScriptの一節を放り込んでPython版を入手したり、Markdownを入れてHTML版を取り出したりできるのだ。しかも、これは特段難しいことでもない。

プログラミング言語は語彙が限定的でしっかり定義されており、自然言語の自動機械翻訳が苦しむような多義性や文化的なニュアンスもない。100ほどのコマンドについて、何が何と対応しているのかわかれば、コードのどんな一節も自動的に翻訳することができる。

実際、プログラミング言語の変換は容易にできることから、ユーモア目的やアート目的でしばしば行われており、「難解プログラミング言語」と呼ばれるオタク的な楽しみ方もある。

例えば「Whitespace」はスペースとタブ、ラインブレークといった不可視文字で構成されていて、人間の目にはまったく見えない。「Pikachu」というプログラミング言語もあり、「pi」と「pika」と「pikachu」の3単語だけで構成されている。仮にピカチュウがトレーナーに愛想を尽かしたときにも、高給なプログラマーとして第二の人生を歩めるわけだ。

コードの翻訳をポケモンの話で考えると、荒唐無稽に感じるかもしれない。しかし、英語を話せない何十億という人々の話であれば、どうだろう。高給な職やデヴァイスに自ら手を加える能力への手がかりは、仮定の話ではない。コードが英語に依存していることで、技術とはまったく関係のない理由から、こうした恩恵を受けられていない人々がいるのだ。

文書におけるラテン語と、プログラミングにおける英語

プログラミング言語の問題は、ただの技術的実装の話にとどまらない。これは人間のコミュニティーの話でもあるのだ。

広く普及している4つの多言語プログラミング言語は、英語ベースではない孤絶したプログラミング言語と比べれば、コミュニティの育成に成功してきた。とはいえ、ボトルネックがあることに変わりはない。

エラーメッセージが出たらGoogleで解決法を検索し、どうにか有用なリソースを見つける必要がある。それ以前の問題として、そもそもそのプログラミング言語を自分のコンピューターで動作させる方法も見つけなければならない。

史上初のウェブブラウザーで、ウェブサイトの閲覧のみならず編集もできたことが重要な意味をもつのはそのためだ。Glitchが、ブラウザーのウィンドウ内から動作中のコードを編集できるようにしているのも、他人に協力を求めやすくしているのも同じ理由である。

しかし、非英語話者のためのGlitchはどこにあるのだろうか。いまウェブに参加しようとしている人たちや、この10年間ずっと消費者としてウェブを使ってきた人たちにも、ウェブを最初の登場時と同じくらい、いじくりやすいものにするには、どうしたらいいのだろうか。

わたしはまだ希望をもっている。その理由はこうだ。中世のヨーロッパでは、「筆記」というテクノロジーにアクセスしたければ、新しい言語を習得する必要があった。書き言葉といえばラテン語だったからだ。日常語、つまり母語である話し言葉で書かれたものは、隅に追いやられた傍流だった。そんななかで、なぜ英語やフランス語の書き方を覚える必要があるのだろう？ ラテン語なら、完全な共通語で書かれた知的伝統にアクセスできるというのに。

当時を振り返ってわれわれは、日常的に話している言語で書くことができたのに、なぜわざわざラテン語にしたのだろうと考えがちだ。まず母語で教えたほうが、子どもたちはずっと早く読めるようになるとわかっていたのに、当時は書き方を学ぶならラテン語を勉強するのが当然だった。これは、いまわたしたちがプログラミングの勉強のために英語を学んでいるのと同じ理屈だ。

Stack Overflowのようなウェブサイトで目にする、英語ベースのコードへの賛成論も同じだ。「英語を学べばいいじゃないか。テクノロジーの伝統全体にアクセスできるようになる」という論理なのである。

まずは呼び方を改めることから

書き言葉におけるラテン語の優位が終わったことを、わたしたちは知っている。書くテクノロジーは、ほかの言語に広がった。書くテクノロジーがラテン語に束縛されなかったのと同じように、コードを書くテクノロジーは本来、英語に束縛されるものではない。

「人間の言語からの単語を含むプログラミング言語」について、まずはその呼び方を修正することをわたしは提案する。最初のウェブサイトはHTMLで書かれたのではなく、「英語の」HTMLで書かれたのだ。Glitchによる再現版のいちばん下にあるコードのスニペットは、JavaScriptではなくて「英語の」JavaScriptによるものだ。

表記は欠けているが英語なのだと名指しすることで、現状を問うていけることが明確になる。ロシア語のHTMLやスワヒリ語のJavaScriptも存在し、母語がたまたま英語だということでコード学習に労せず有利になるということがない世界を、想像していけるようになる。

そんな世界はまだ存在していない。これからの30年で、われわれがつくっていくのかもしれない。