「人とAIの“模倣”は本質的に同じ」Rubyの父・まつもとゆきひろに聞く、技術の進化と“模倣”の関係

2024年5月14日

一般財団法人Rubyアソシエーション 理事長/Ruby開発者

まつもと ゆきひろ(松本行弘)

プログラミング言語Rubyの生みの親。株式会社ネットワーク応用通信研究所フェロー、一般財団法人Rubyアソシエーション理事長、NPO団体軽量Rubyフォーラム理事長などを務める。島根県松江市名誉市民。

近年、大量のデータから文章や画像を生み出す生成AIに注目が集まる中、改めて「模倣」が果たす役割を問い直そうという動きが広がっているように見受けられます。実際に、人間はこれまで、既存の技術を「模倣」しながら新しい技術をつくりだし、その繰り返しによって発展を遂げてきました。

世界中のプログラマーから支持を集める「Ruby」も、他のプログラミング言語のさまざまな要素を採り入れて誕生した技術のひとつです。今回はRubyの生みの親・まつもとゆきひろさんに、技術の進化と「模倣」の関係についてお話しいただきました。

技術における「模倣」は誇るべきことである

——まつもとさんは「模倣すること」について、どういった考えをお持ちですか?

まつもと:よく私たちは創作物を評して「独創性がある」「ゼロイチで生み出した」といった表現をしがちです。でもそもそも、人間が創作するもののほとんどは、ほかの誰かが過去に生み出した作品をある種「模倣」して創っているだろうと考えています

身近な例を挙げましょう。たとえばマンガには、コマ割りや吹き出しの形など、形式化された「お約束」、つまり多くのマンガに共通するプロトコルがあります。どの作品も、こうした先人たちが積み上げた過去の蓄積の上に成り立っているからこそ、読者もすらすらと読めるし楽しめるわけです。

もちろんこれはマンガに限った話ではありません。作者がゼロから生み出したように見えるものでも、「模倣」と無縁のものってほとんどないんじゃないでしょうか。

——ということは、Rubyも「模倣」と無縁ではないのですか?

まつもと:もちろんRubyも例外ではありません。RubyはLispやSmalltalkをはじめ、過去の色々な言語のアイデアを採り入れながら開発したプログラミング言語です。私自身、こうした意味での「模倣」は、誇るべきことだと思っています

▲取材はオンラインで行いました

——「誇るべきこと」というのはどういう意味でしょうか?

まつもと:Rubyはソフトウェア開発者のための道具です。独創性を発揮しすぎれば、道具としての価値が下がってしまいます。

クルマを例に挙げるとわかりやすいかもしれません。アクセルとブレーキの位置がクルマごとに違っていたら運転免許制度は成り立ちませんし、運転手は乗るクルマが変わる度に運転を学び直さなければならないはめになってしまいます。これをプログラミング言語に置き換えると、ある言語を習得した経験が、他の言語を習得するときに活かせないことになり、非常に不便です。道具というのは「ほかと違っている、独創性があるから素晴らしい」面がある一方、「前例を模倣しているからこそ素晴らしい」こともあるんです。

とくにソフトウェアの世界には、一定の条件に従えばオープンソースソフトウェアを再利用できるフェアユース文化が根づいています。再利用のルールも確立しており、かつコミュニティに深く浸透しているからこそ、他のジャンルに比べて「模倣」に関して寛容なのだと思います。

もちろんオープンソースコミュニティに問題がないわけではありません。ソフトウェア作者に十分な見返りが提供できていないケースはごまんとありますから。ただ、過去数十年にわたって育まれてきたこうした文化的な土壌が、ある種の「模倣」による技術の発展を促してきたのは確かです。

——道具をつくるうえでは「模倣」こそが利便性につながっているのですね。ちなみに最近よく問題になるAIの「模倣」と人間の「模倣」は、どういう違いがあるのでしょう。

まつもと:これはあくまでも個人的な考えであって、誰もが合意する事実ではありませんが、私は本質的には違わないと思ってます。ただ、少なくとも現段階では、模倣したうえでの最終的なアウトプットにおいて、AIと人間には大きな差があります。この差は、主に以下の2つの要因から生まれるものだと考えています。

1つは「AIは忘れない」ということ。AIは、インプットしたものの細部にわたるまで覚えているから、精度高く模倣できます。だから「AIが生成したものが何かしらの権利を侵害する」といったことが起こってしまう。対して人間は、インプットしたものの一部だけを覚えていて、細部は忘れます。そのため、模倣の精度はAIよりも低くなります。インプットしたものと同じようなものをつくろうとしても再現しきれない。意図せずとも、オリジナリティが出てしまうのです。

もう1つは「AIにはブレーキがない」ということ。意図せず似すぎてしまったものに対して、人間であれば「これはそっくりすぎるから、このままアウトプットとして出すべきじゃない」とブレーキがかかります。しかしそのようなブレーキが、今はまだ当たり前のようにAIに搭載されているわけではありません。

この2つの要素によって、「生成AIは既存の著作物や表現をコピーし権利を侵害するもの」というイメージを抱きやすくなっているのだと考えています。

価値あるものに欠かせない要素は「独創性」ではない

——Rubyは「道具」であって独創性は強く求められないとはいえ、新しい言語としての独創性があったからこそ、広く使われるようになったのではないでしょうか。

まつもと:Rubyをつくりはじめた当時は、オブジェクト指向がプログラマーに受け入れられるかどうか瀬戸際の時期でした。そのため、Rubyにオブジェクト指向をフルセットで組み込むことは非常にチャレンジングな試みでした。このチャレンジが、Rubyという新たな言語の「独創性」として評価してもらえていたと思っています。

Rubyをつくった1993年当時、オブジェクト指向機能を使う前提でつくられたスクリプト言語はありませんでした。Rubyより少し古いPythonでは、言語が出来上がったあとにオブジェクト指向機能を追加していました。ただ、あとから追加したためか、当時のPythonでは、オブジェクト指向をもとに書いた部分とそうでない部分がうまく馴染まず、使いづらくなっていたのです。

Rubyにオブジェクト指向機能を組み込んだのは、この馴染まなさを解消したいと思ったから。だからこそRubyは、「オブジェクト指向機能とそれ以外の箇所がなめらかにつながる使いやすさ」という、当時他になかった価値を評価してもらえたのだと考えています。

そう考えると、Rubyにおける「独創性」として評価してもらっていた部分も、Pythonを「模倣」しブラッシュアップしてできたものだったのかもしれませんね

——価値あるものには独創性があるものだ、と思っていたのですが、まつもとさんは「価値」と「独創性」の結びつきはどう捉えているのでしょう。

まつもと:私がつくったRubyのような、プログラミング言語という「道具」においては、必ずしも「価値」と「独創性」が結びついているわけではないだろうと思います

オブジェクト指向機能をフルセットで備えたこと=Rubyの独創性であり価値である、という図式も、当時の時代背景を鑑みたうえでの評価に過ぎません。Ruby発表から30年経った今、同じ機能を持つ言語はたくさんありますから。道具としての独創性は時とともに減衰するものですし、魅力のひとつではあっても、多くの人に使っていただくための必須条件ではないでしょう。

たしかにRubyは世界中で使われて、その価値を認めてもらっています。でもそもそも「価値」とは何なのか、つくったものが世界中で使われるという経験をした私自身も、よくわかっていないのです。

人間はどうしても、価値あるものには独創性があってほしいと思ってしまうものです。道具であればたとえ独創性がなくても、既存のものを模倣しつつ使いやすくブラッシュアップしていれば価値を感じることもあるでしょう。でも「この要素がなければ価値はない」と言い切ることはできませんよね。多くの人々が全く同じように感じる「良い」の定義はないのですから。

ただ、私は個人的な信念として、価値あるものには人の「意思」が介在していると思っています。クリエイター自身が、良いものをつくりたいという「意思」のもとに、自分がつくったものを「良い」と信じて世に問う。それが広く受け入れられてはじめて、その個人的な「良い」が多くの人にとっても「良い」、つまり「価値がある」と認められるのです。

Rubyの場合も、私が思う「良い言語」を、多くの先人からアイデアをもらいながら、また自分もアイデアを出しながらつくりました。結果的に、人々が私の「良い」を受け入れてくれたからこそ、Rubyは価値ある言語だと評価してもらえています。この経験からもやはり、価値あるものをつくるために、クリエイターの「意思」は必須なのだろうと考えています。

生成AIの進化は、Rubyにとって「福音」かも

——生成AIの発展と普及は、プログラマーにどんな影響を与えると思いますか?

まつもと:未来を予測するのは非常に難しいのですが、私の見立てでは、生成AIは大きな進歩である一方、プログラマーの利便性と生産性の向上に資する技術のひとつに過ぎないというのが、いまのところの認識です。プログラミングの歴史において、人間がコンピューターに0と1を手入力しているところからアセンブリ言語が生まれ、さらに可読性が高く理解しやすい高級言語が主流になったのと同じく、生成AIの登場も過去何度も起きてきたこうした変化のひとつであって、プログラミングの本質を変えるものではないと考えています。

——なぜそう思うのでしょうか?

まつもと:広義のプログラミングは、解決すべき課題とその解決方法を同定して、コンピュータに実行可能な形にまで分割し、課題解決に導くことを指します。その一連のプロセスの最後に「プログラムを書く」という行為があるわけですが、生成AIが貢献するのは、まさにこの「プログラムを書く」という狭義のプログラミングにおける生産性の向上です。

ただそれまでのプロセス、つまり世の中にどんな問題が存在するのか、あるいはどういう問題を解決したら便利なのか、お金になるのかを考えることにこそ、プログラミングの本質があると思います。AIが自発的に解くべき問題を見つけ、「この問題を解決したい」という意思をもってソフトウェアを設計する日がすぐに訪れるとは思えません。AIには肉体もなければ、欲求も意思もありませんから。

——まつもとさんは、AIの進化がRubyにどんな影響を与えると考えていますか。

まつもと:生成AIがコードを書く力がもっと進化したら、もしかしたらRubyに改めて注目が集まるんじゃないかと期待しています。

生成AIにできることがもっと増えたら、AIが色々な言語のコードを読んだり解釈したり、その言語やシステムに最適な書き方を選んでくれるようになるはず。もしそうなったら、簡潔な表現をするプログラミング言語がより高く評価をされるのではないかと予想しています。

もちろん、コードを書くときに、細かいルール設定、たとえば「ここは整数を受け付けます」「ここはポイント(点)オブジェクトを受け付けます」などを厳密に全て指定する言語ならではの良いところもあります。細かく指定するからこそエラーを発見しやすくなるし、予想外の動きを避けやすく、信頼性を高めやすい。これは人間がコードを書くからこそのメリットとも言えますね。書く人によってコードの信頼性にブレが出てしまうから、細かいルール設定でブレを減らすのです。

しかし生成AIがコードを書くなら、人間ほどブレが出るわけではないでしょう。であれば、細かな指定がなくとも簡潔に書ける言語を使えば、より早く動くものをつくれるし、読みやすいコードになる。すると「AIにコードを書かせるなら、簡潔に書ける言語、たとえばRubyなどが特に相性が良いだろう」という結論が出るかもしれません。「簡潔に書ける」はRubyの代名詞ですから。

ちょっと我田引水が過ぎるかもしれませんが、AIの進化で、Rubyも、プログラミングを簡潔に書くこと自体も、再評価されるようになったらうれしいですね。

取材・執筆:武田敏則
編集:光松瞳・王雨舟

関連記事

人気記事

  • コピーしました

RSS
RSS