「人とAIの“模倣”は本質的に同じ」Rubyの父・まつもとゆきひろに聞く、技術の進化と“模倣”の関係
“人类与人工智能的‘模仿’本质上是一样的”——Ruby之父松本行弘访谈:技术进化与“模仿”的关系
一般財団法人Rubyアソシエーション 理事長/Ruby開発者
一般财团法人Ruby协会 理事长 / Ruby 开发者
まつもと ゆきひろ(松本行弘)
松本行弘
プログラミング言語Rubyの生みの親。株式会社ネットワーク応用通信研究所フェロー、一般財団法人Rubyアソシエーション理事長、NPO団体軽量Rubyフォーラム理事長などを務める。島根県松江市名誉市民。
编程语言 Ruby 的创造者。现任网络应用通信研究所(株式会社)Fellow、一般财团法人 Ruby 协会理事长、NPO 轻量级 Ruby 论坛理事长等职。岛根县松江市荣誉市民。
近年、大量のデータから文章や画像を生み出す生成AIに注目が集まる中、改めて「模倣」が果たす役割を問い直そうという動きが広がっているように見受けられます。実際に、人間はこれまで、既存の技術を「模倣」しながら新しい技術をつくりだし、その繰り返しによって発展を遂げてきました。
近年来,能够从海量数据生成文本与图像的生成式 AI 备受关注,与此同时,重新审视“模仿”所扮演角色的动向也在不断扩大。事实上,人类一直以来都是在“模仿”现有技术的同时创造新技术,并通过这样的反复迭代实现发展。
世界中のプログラマーから支持を集める「Ruby」も、他のプログラミング言語のさまざまな要素を採り入れて誕生した技術のひとつです。今回はRubyの生みの親・まつもとゆきひろさんに、技術の進化と「模倣」の関係についてお話しいただきました。
受到全球程序员支持的 Ruby,也是融合了其他多种编程语言的元素而诞生的技术之一。本次我们采访了 Ruby 的创造者松本行弘先生,探讨技术进化与“模仿”之间的关系。
keyboard_arrow_down 技術における「模倣」は誇るべきことである
技术中的“模仿”是值得骄傲的事
keyboard_arrow_down 価値あるものに欠かせない要素は「独創性」ではない
有价值的事物所不可或缺的并非“独创性”
keyboard_arrow_down 生成AIの進化は、Rubyにとって「福音」かも
生成式 AI 的进化,对 Ruby 而言或许是“福音”
技術における「模倣」は誇るべきことである
技术中的“模仿”是值得骄傲的事
——まつもとさんは「模倣すること」について、どういった考えをお持ちですか?
——松本先生,您对“模仿”这件事是怎么看的?
まつもと:よく私たちは創作物を評して「独創性がある」「ゼロイチで生み出した」といった表現をしがちです。でもそもそも、人間が創作するもののほとんどは、ほかの誰かが過去に生み出した作品をある種「模倣」して創っているだろうと考えています。
松本:我们在评价创作时,常常会说“有独创性”“从零到一创造出来”这类话。但我认为,人类创作的绝大多数东西,本质上都是在某种程度上“模仿”前人的作品而产生的。
身近な例を挙げましょう。たとえばマンガには、コマ割りや吹き出しの形など、形式化された「お約束」、つまり多くのマンガに共通するプロトコルがあります。どの作品も、こうした先人たちが積み上げた過去の蓄積の上に成り立っているからこそ、読者もすらすらと読めるし楽しめるわけです。
举个身边的例子。比如漫画里,有分镜、对话框样式等被固定下来的“约定俗成”,也就是许多漫画共通的范式。所有作品都建立在前人积累的基础之上,正因为如此,读者才能顺畅阅读、乐在其中。
もちろんこれはマンガに限った話ではありません。作者がゼロから生み出したように見えるものでも、「模倣」と無縁のものってほとんどないんじゃないでしょうか。
当然,这并不只限于漫画。即便是看起来像是作者从零创造出来的东西,也几乎没有能与“模仿”完全无关的。
——ということは、Rubyも「模倣」と無縁ではないのですか?
——这么说,Ruby 也与“模仿”脱不开关系吗?
まつもと:もちろんRubyも例外ではありません。RubyはLispやSmalltalkをはじめ、過去の色々な言語のアイデアを採り入れながら開発したプログラミング言語です。私自身、こうした意味での「模倣」は、誇るべきことだと思っています。
松本:当然,Ruby 也不例外。Ruby 是在吸收 Lisp、Smalltalk 等过去多种语言的思想基础上开发出来的编程语言。我个人认为,这种意义上的“模仿”,是值得骄傲的。
——「誇るべきこと」というのはどういう意味でしょうか?
——您说“值得骄傲”,具体是什么意思呢?
まつもと:Rubyはソフトウェア開発者のための道具です。独創性を発揮しすぎれば、道具としての価値が下がってしまいます。
松本:Ruby 是给软件开发者用的工具。如果过度追求独创性,反而会降低它作为工具的价值。
クルマを例に挙げるとわかりやすいかもしれません。アクセルとブレーキの位置がクルマごとに違っていたら運転免許制度は成り立ちませんし、運転手は乗るクルマが変わる度に運転を学び直さなければならないはめになってしまいます。これをプログラミング言語に置き換えると、ある言語を習得した経験が、他の言語を習得するときに活かせないことになり、非常に不便です。道具というのは「ほかと違っている、独創性があるから素晴らしい」面がある一方、「前例を模倣しているからこそ素晴らしい」こともあるんです。
用汽车来举例可能更容易理解。如果每辆车的油门和刹车位置都不一样,驾照制度就无法成立,司机每次换车都必须重新学习驾驶。放到编程语言上,就是学会一门语言的经验无法迁移到另一门语言上,会非常不便。工具固然有“与众不同、有独创性所以优秀”的一面,但也有“正因为模仿了先例所以优秀”的一面。
とくにソフトウェアの世界には、一定の条件に従えばオープンソースソフトウェアを再利用できるフェアユース文化が根づいています。再利用のルールも確立しており、かつコミュニティに深く浸透しているからこそ、他のジャンルに比べて「模倣」に関して寛容なのだと思います。
特别是在软件领域,已经形成了在一定条件下可以复用开源软件的合理使用文化。复用规则已经确立,并且深深扎根于社区,因此相比其他领域,对“模仿”的态度也更为宽容。
もちろんオープンソースコミュニティに問題がないわけではありません。ソフトウェア作者に十分な見返りが提供できていないケースはごまんとありますから。ただ、過去数十年にわたって育まれてきたこうした文化的な土壌が、ある種の「模倣」による技術の発展を促してきたのは確かです。
当然,开源社区并非没有问题。软件作者无法获得充分回报的情况比比皆是。但可以肯定的是,过去几十年培育出的这种文化土壤,确实通过某种形式的“模仿”推动了技术发展。
——道具をつくるうえでは「模倣」こそが利便性につながっているのですね。ちなみに最近よく問題になるAIの「模倣」と人間の「模倣」は、どういう違いがあるのでしょう。
——在打造工具这件事上,“模仿”反而带来了便利性。顺便想问,最近常被讨论的 AI 的“模仿”和人类的“模仿”,有什么不同?
まつもと:これはあくまでも個人的な考えであって、誰もが合意する事実ではありませんが、私は本質的には違わないと思ってます。ただ、少なくとも現段階では、模倣したうえでの最終的なアウトプットにおいて、AIと人間には大きな差があります。この差は、主に以下の2つの要因から生まれるものだと考えています。
松本:这只是我个人的看法,并非所有人都认同的事实,但我认为两者在本质上是一样的。不过至少在现阶段,模仿之后的最终输出上,AI 和人类存在巨大差异。我认为这种差异主要来自以下两个因素。
1つは「AIは忘れない」ということ。AIは、インプットしたものの細部にわたるまで覚えているから、精度高く模倣できます。だから「AIが生成したものが何かしらの権利を侵害する」といったことが起こってしまう。対して人間は、インプットしたものの一部だけを覚えていて、細部は忘れます。そのため、模倣の精度はAIよりも低くなります。インプットしたものと同じようなものをつくろうとしても再現しきれない。意図せずとも、オリジナリティが出てしまうのです。
一是“AI 不会遗忘”。AI 能记住输入内容的每一个细节,因此可以高精度地模仿。于是就会出现“AI 生成的内容侵犯了某种权利”的问题。相比之下,人类只会记住输入内容的一部分,细节会被遗忘。因此模仿的精度低于 AI。即便想做出和输入相似的东西,也无法完全复刻,即便无意,也会产生原创性。
もう1つは「AIにはブレーキがない」ということ。意図せず似すぎてしまったものに対して、人間であれば「これはそっくりすぎるから、このままアウトプットとして出すべきじゃない」とブレーキがかかります。しかしそのようなブレーキが、今はまだ当たり前のようにAIに搭載されているわけではありません。
另一个是“AI 没有刹车”。对于无意中过于相似的内容,人类会踩下刹车:“这也太像了,不能就这样发布出去。”但目前 AI 还没有普遍具备这样的刹车机制。
この2つの要素によって、「生成AIは既存の著作物や表現をコピーし権利を侵害するもの」というイメージを抱きやすくなっているのだと考えています。
我认为正是这两个因素,让人们容易产生“生成式 AI 就是复制现有作品与表达、侵犯权利的东西”这种印象。
価値あるものに欠かせない要素は「独創性」ではない
有价值的事物所不可或缺的并非“独创性”
——Rubyは「道具」であって独創性は強く求められないとはいえ、新しい言語としての独創性があったからこそ、広く使われるようになったのではないでしょうか。
——虽说 Ruby 是“工具”,不必过度追求独创性,但它之所以被广泛使用,不正是因为作为新语言具备了独创性吗?
まつもと:Rubyをつくりはじめた当時は、オブジェクト指向がプログラマーに受け入れられるかどうか瀬戸際の時期でした。そのため、Rubyにオブジェクト指向をフルセットで組み込むことは非常にチャレンジングな試みでした。このチャレンジが、Rubyという新たな言語の「独創性」として評価してもらえていたと思っています。
松本:刚开始做 Ruby 的时候,正是面向对象能否被程序员接受的关键时期。因此,把完整的面向对象特性内置到 Ruby 中,是一个非常有挑战性的尝试。我认为正是这个挑战,让 Ruby 作为一门新语言获得了“独创性”的评价。
Rubyをつくった1993年当時、オブジェクト指向機能を使う前提でつくられたスクリプト言語はありませんでした。Rubyより少し古いPythonでは、言語が出来上がったあとにオブジェクト指向機能を追加していました。ただ、あとから追加したためか、当時のPythonでは、オブジェクト指向をもとに書いた部分とそうでない部分がうまく馴染まず、使いづらくなっていたのです。
1993 年我做 Ruby 的时候,还没有以面向对象为前提设计的脚本语言。比 Ruby 稍早的 Python,是在语言成型之后才追加面向对象功能的。但或许是因为后加的缘故,当时的 Python 中,基于面向对象写的部分和非面向对象的部分融合得不好,用起来很别扭。
Rubyにオブジェクト指向機能を組み込んだのは、この馴染まなさを解消したいと思ったから。だからこそRubyは、「オブジェクト指向機能とそれ以外の箇所がなめらかにつながる使いやすさ」という、当時他になかった価値を評価してもらえたのだと考えています。
我把面向对象内置到 Ruby 中,就是想消除这种割裂感。也正因为如此,Ruby 才凭借“面向对象与其他部分平滑衔接的易用性”这一当时独有的价值获得了认可。
そう考えると、Rubyにおける「独創性」として評価してもらっていた部分も、Pythonを「模倣」しブラッシュアップしてできたものだったのかもしれませんね。
这么一想,Ruby 中被评价为“独创性”的部分,或许也是在“模仿”Python 的基础上打磨出来的。
——価値あるものには独創性があるものだ、と思っていたのですが、まつもとさんは「価値」と「独創性」の結びつきはどう捉えているのでしょう。
——我一直以为有价值的东西一定有独创性,松本先生您如何看待“价值”与“独创性”的关系?
まつもと:私がつくったRubyのような、プログラミング言語という「道具」においては、必ずしも「価値」と「独創性」が結びついているわけではないだろうと思います。
松本:在我创造的 Ruby 这类编程语言“工具”中,我认为“价值”与“独创性”未必是绑定的。
オブジェクト指向機能をフルセットで備えたこと=Rubyの独創性であり価値である、という図式も、当時の時代背景を鑑みたうえでの評価に過ぎません。Ruby発表から30年経った今、同じ機能を持つ言語はたくさんありますから。道具としての独創性は時とともに減衰するものですし、魅力のひとつではあっても、多くの人に使っていただくための必須条件ではないでしょう。
“具备完整面向对象 = Ruby 的独创性与价值”这种等式,也只是结合当时时代背景的评价而已。Ruby 发布至今 30 年,现在拥有同样功能的语言已经很多了。作为工具的独创性会随时间衰减,它虽然是魅力之一,却并非让很多人使用的必要条件。
たしかにRubyは世界中で使われて、その価値を認めてもらっています。でもそもそも「価値」とは何なのか、つくったものが世界中で使われるという経験をした私自身も、よくわかっていないのです。
Ruby 确实在全球被使用,价值也得到了认可。但“价值”到底是什么,即便我亲身经历了自己创造的东西被全世界使用,我自己也并不完全明白。
人間はどうしても、価値あるものには独創性があってほしいと思ってしまうものです。道具であればたとえ独創性がなくても、既存のものを模倣しつつ使いやすくブラッシュアップしていれば価値を感じることもあるでしょう。でも「この要素がなければ価値はない」と言い切ることはできませんよね。多くの人々が全く同じように感じる「良い」の定義はないのですから。
人类总是希望有价值的东西具备独创性。但对工具来说,即便没有独创性,只要在模仿现有事物的基础上打磨得更好用,也能让人感受到价值。但我们无法断言“缺少这个元素就没有价值”,因为不存在一个能让所有人感受完全一致的“好”的定义。
ただ、私は個人的な信念として、価値あるものには人の「意思」が介在していると思っています。クリエイター自身が、良いものをつくりたいという「意思」のもとに、自分がつくったものを「良い」と信じて世に問う。それが広く受け入れられてはじめて、その個人的な「良い」が多くの人にとっても「良い」、つまり「価値がある」と認められるのです。
但我个人的信念是:有价值的事物中,一定存在人的“意志”。创作者怀着“想做出好东西”的意志,相信自己创造的东西是“好”的,并将其推向世界。只有当它被广泛接受,这种个人的“好”才会被许多人也认为是“好”,也就是被认可为“有价值”。
Rubyの場合も、私が思う「良い言語」を、多くの先人からアイデアをもらいながら、また自分もアイデアを出しながらつくりました。結果的に、人々が私の「良い」を受け入れてくれたからこそ、Rubyは価値ある言語だと評価してもらえています。この経験からもやはり、価値あるものをつくるために、クリエイターの「意思」は必須なのだろうと考えています。
Ruby 也是如此,我在吸收众多前辈思想、同时也提出自己想法的过程中,创造了我心中“好的语言”。最终,人们接受了我心中的“好”,Ruby 才被评价为有价值的语言。从这段经历我也确信,要创造有价值的事物,创作者的“意志”是必不可少的。
生成AIの進化は、Rubyにとって「福音」かも
生成式 AI 的进化,对 Ruby 而言或许是“福音”
——生成AIの発展と普及は、プログラマーにどんな影響を与えると思いますか?
——您认为生成式 AI 的发展与普及,会对程序员产生怎样的影响?
まつもと:未来を予測するのは非常に難しいのですが、私の見立てでは、生成AIは大きな進歩である一方、プログラマーの利便性と生産性の向上に資する技術のひとつに過ぎないというのが、いまのところの認識です。プログラミングの歴史において、人間がコンピューターに0と1を手入力しているところからアセンブリ言語が生まれ、さらに可読性が高く理解しやすい高級言語が主流になったのと同じく、生成AIの登場も過去何度も起きてきたこうした変化のひとつであって、プログラミングの本質を変えるものではないと考えています。
松本:预测未来非常困难,但以我目前的判断,生成式 AI 虽然是巨大进步,却也只是提升程序员便利性与生产力的技术之一。在编程史上,从人类手动向计算机输入 0 和 1,到汇编语言诞生,再到可读性更高、更易理解的高级语言成为主流,生成式 AI 的出现也只是过去反复发生过的这类变化之一,并不会改变编程的本质。
——なぜそう思うのでしょうか?
——您为什么这么认为?
まつもと:広義のプログラミングは、解決すべき課題とその解決方法を同定して、コンピュータに実行可能な形にまで分割し、課題解決に導くことを指します。その一連のプロセスの最後に「プログラムを書く」という行為があるわけですが、生成AIが貢献するのは、まさにこの「プログラムを書く」という狭義のプログラミングにおける生産性の向上です。
松本:广义上的编程,是指识别要解决的问题及其解法,将其分解为计算机可执行的形式,并引导问题解决。在这一系列流程的最后,才是“写代码”这个行为。而生成式 AI 所贡献的,正是狭义上“写代码”这一环节的生产力提升。
ただそれまでのプロセス、つまり世の中にどんな問題が存在するのか、あるいはどういう問題を解決したら便利なのか、お金になるのかを考えることにこそ、プログラミングの本質があると思います。AIが自発的に解くべき問題を見つけ、「この問題を解決したい」という意思をもってソフトウェアを設計する日がすぐに訪れるとは思えません。AIには肉体もなければ、欲求も意思もありませんから。
但我认为,编程的本质在于此前的过程:思考世界上存在什么问题、解决什么问题会更便利、能创造价值。我不认为 AI 会很快主动发现要解决的问题,并怀着“我想解决这个问题”的意志去设计软件。AI 既没有身体,也没有欲望和意志。
——まつもとさんは、AIの進化がRubyにどんな影響を与えると考えていますか。
——松本先生,您认为 AI 的进化会对 Ruby 产生怎样的影响?
まつもと:生成AIがコードを書く力がもっと進化したら、もしかしたらRubyに改めて注目が集まるんじゃないかと期待しています。
松本:我期待,如果生成式 AI 的写代码能力进一步进化,或许 Ruby 会重新受到关注。
生成AIにできることがもっと増えたら、AIが色々な言語のコードを読んだり解釈したり、その言語やシステムに最適な書き方を選んでくれるようになるはず。もしそうなったら、簡潔な表現をするプログラミング言語がより高く評価をされるのではないかと予想しています。
如果生成式 AI 能做的事更多,它就应该能阅读、解释各种语言的代码,并选择最适合该语言或系统的写法。如果到了那一步,我预计表达简洁的编程语言会得到更高评价。
もちろん、コードを書くときに、細かいルール設定、たとえば「ここは整数を受け付けます」「ここはポイント(点)オブジェクトを受け付けます」などを厳密に全て指定する言語ならではの良いところもあります。細かく指定するからこそエラーを発見しやすくなるし、予想外の動きを避けやすく、信頼性を高めやすい。これは人間がコードを書くからこそのメリットとも言えますね。書く人によってコードの信頼性にブレが出てしまうから、細かいルール設定でブレを減らすのです。
当然,写代码时,那些需要严格指定所有细节规则的语言也有其优势,比如“这里接受整数”“这里接受点对象”等。正因为规定细致,才更容易发现错误、避免意外行为、提升可靠性。这可以说是人类写代码才有的优势:不同人写的代码可靠性参差不齐,所以需要用细致的规则来减少偏差。
しかし生成AIがコードを書くなら、人間ほどブレが出るわけではないでしょう。であれば、細かな指定がなくとも簡潔に書ける言語を使えば、より早く動くものをつくれるし、読みやすいコードになる。すると「AIにコードを書かせるなら、簡潔に書ける言語、たとえばRubyなどが特に相性が良いだろう」という結論が出るかもしれません。「簡潔に書ける」はRubyの代名詞ですから。
但如果是生成式 AI 写代码,就不会像人类那样出现那么大偏差。这样一来,使用无需细致指定、写法简洁的语言,就能更快做出可运行的东西,代码也更易读。于是可能会得出这样的结论:“如果让 AI 写代码,写法简洁的语言,比如 Ruby,会特别适配。”毕竟“简洁书写”几乎就是 Ruby 的代名词。
ちょっと我田引水が過ぎるかもしれませんが、AIの進化で、Rubyも、プログラミングを簡潔に書くこと自体も、再評価されるようになったらうれしいですね。
这可能有点自卖自夸,但如果 AI 的进化能让 Ruby,以及简洁编程这件事本身得到重新评价,我会非常开心。