2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
リンクをコピー
記事をブックマーク
まつもとゆきひろ氏:じゃあ、始めます。Rubyを作り始めた記録が残っているんですが、その当時勤めていた会社の先輩にあたる人が、本を書くという話になったんですね。
その時に、彼は『プログラミング言語を作りながら学ぶオブジェクト指向』という本を書くと言ってきたんですね。編集の人と話をしていく中で「どういう企画でどんなのを書く?」という話になったそうです。
彼は、私がプログラミング言語に非常に興味を持っていることを知っていたので、「じゃあ、まつもとにプログラミング言語を作ってもらって、自分が原稿を書いて、それを合わせて本にしよう」という話を持ってきました。
もともとプログラミングが大好きですし、プログラミング言語を作りたいなとずっと思っていたんですね。これはいい機会だと思ってですね、その企画に乗ることにしました。
がんばって言語を作り始めたんですけど、しばらく経ってから先輩からメールで連絡がきて「企画は没になった」って言われて(笑)。
その本は日の目を見なかったんですが、すでに(Rubyを)作り始めていたので、ここで捨てるのも惜しいなと。ちょっと始めちゃったし、ということで続いたのが、本ではなくRubyだったので、非常に稀有な運命なわけですけれども。
そういうこともあり、その時の先輩と「新しい言語を作る企画の名前を何にしようか?」という話になった時に、当時Perlという言語が非常に人気が高かったんですね。Perlは真珠なので、なにか宝石の名前から取ろうと思って。
Ruby、Coral(サンゴ)とか、いくつか候補があったんですけれども、Rubyのほうが4文字で短くて、美しいし、Rubyのほうが高いので。
(会場笑)
価値があるのでRubyにしようと思ったんですね。
その名前が決まったのが1993年の2月24日。コミュニティではその日をRubyの誕生日と呼んでいます。その誕生日が2023年で30年ということで、2023年は「RubyWorld Conference」は15年、Rubyそのものは30年という、節目の年に当たるわけです。
そう思って、「30 Years of Ruby」というタイトルで提出したんですけども、考えてみたら「RubyKaigi」でも同じテーマで話していたんですね。
(会場笑)
なんかちょっとマンネリになる。同じ話を繰り返す講演者もいますが、私も時々やっちゃう(笑)。
きっとこの話は、来週行われるRubyカンファレンス(「RubyConf 2023」)でも話すんですけど。
(会場笑)
マンネリは良くないなと思って、RubyKaigiとは違う話をしようと思いました。
何かというと、過去、歴史から学ぶ教訓についてちょっと話そうと思います。
ご存じの方もいると思いますが、私自身、プログラミング言語が高校生ぐらいの時からすごく大好きで、プログラミング言語を勉強する中で調べるのもすごく好きだったんですよね。世の中に存在するいろいろなプログラミング言語を調べるのがすごく好きだったんですよ。
その中でおもしろい機能があったら、「いつか自分でプログラミング言語を作って、この機能を自分の言語に入れたい」みたいなことをずっと思っていたんですよね。
それを結集したのがRubyなので、そういう意味で言うと、私自身は「言語オタク」と呼んでもいいんじゃないかなと思います。
私は高校時代を鳥取県の米子市で育ったのですが、1980年代前半の話なので、周りにプログラミングをする友人がぜんぜんいなかったんです。プログラミングに興味がある人は当時すごく少なかったんですが、でも確かにいたんですね。コンピューター関係の雑誌とかも販売されていましたし。
プログラミングに興味のある半分ぐらいの人は、プログラミング言語にも興味があるだろうと思っていたんですね。
プログラミング言語に興味がある人の10人に1人ぐらいは、プログラミング言語を作りたいと思っているに違いないと思っていたんです。後に、高校を卒業して大学に入って、私の見積もりはだいぶ甘かったということに気がつきました。
実際に、プログラミング言語を好きな人はそれなりにいます。今でもJavaやPythonがありますよね。JavaScriptやPHPなどいろいろなプログラミング言語があって、それぞれのカンファレンスにたくさんの人が参加するので、プログラマーの人はプログラミング言語に興味があるんですね。
なんですが、「じゃあ、自分のプログラミング言語を作りたいという人はどんぐらいいるか?」というと、10人に1人と私は思っていたのですが、100人に1人どころか、1,000人に1人もいなかった。大学に入ってその事実に気がついた時にはもうだいぶ手遅れで、いつか(プログラミング言語を)作りたいなという気持ちは止められなかったんですね。
いずれにしても、私のプログラミング言語への興味、関心、愛が今のRubyにつながったと言えるんですが、例によって私の見積もりはいつものようにすごく甘かったということですね。
なので私自身は、Rubyに限らずいろいろなプログラミング言語が大好きなんですね。そういう雑学が大好きなので、まずは特に有名でないプログラミング言語の雑学から、教訓を引き出して今日は話したいと思いました。
ちょっとみなさんにおうかがいしたいんですが、みなさん、世界で最初に作られたプログラミング言語は何かご存じでしょうか?
ほとんどの方は、1954年に作られたFORTRANというプログラミング言語を思い出すと思うんですね。1954年より前の時代には、コンピューターをプログラムするために、アセンブラもなかったので、手でバイナリを書いて、それを入力するんです。私は大学の演習でやったんですが、どうやって入力するかというと、トグルスイッチが8つあって、パチパチパチとやって、ビットのオンとオフを書いて、9番目のスイッチをパチンと書くと、その該当のbitを書き込むというシステムになっていたんですね。やめてくれという感じですけども(笑)。
人間は当時バイナリでプログラミングしていたんですね。それはあんまりだろう、非人間的だろうということで、数式を含む表現をコンピューターが解釈するバイナリに変換するコンパイラという技術が誕生したのが、この1954年なんですね。
ですがこの時は、今まで人間がやってきた数式をコンピューターが理解できるバイナリに変換する技術だったので、これは人工知能であると言われたんですね。AI時代なんですよ。コンパイラはAIだったんだ(笑)。
それがみなさんの知っている歴史なんですが、実はそれより前にプログラミング言語は存在していたんですね。
それが1942年。第二次世界大戦中に作られた、Plankalkül、ドイツ語で「プランカルキュール」と発音するらしいですね。この時代には、まだプログラミングという言葉が存在していないんですよ。
「Plan」は日本語の「プラン」と同じで、「kalkül」は「計算」という意味なので、これは「計算計画」という単語らしいです。僕はドイツ語がよくわからないんですけど、これをもってプログラミングすると言っていたらしいです。
このPlankalkülをデザインした人は、コンラート・ツーゼというドイツのエンジニアの人で、当時彼は、「Z3」という名前の……ドイツ語でも「ゼット」ですね。「ゼットスリー」……「ゼットドライ」と言わないといけない(笑)……という名前のコンピューターを作っていたそうです。「Z1」「Z2」もあったそうです。
このコンピューターのためのプログラミング言語であるPlankalkülを、当時は設計だけされていたんですが、代入文があります。まぁ、当たり前っちゃ当たり前ですけど。if文もあります。ループもあるので、基本的にチューリング完全なんですね。
当時、まだFORTRANも持っていなかった構造体もあります。サブルーチンもあります。配列もあります。だんだんおかしくなりそうだぞ。アサーションがすでに存在していました。例外処理機能がありました、1942年に。
続いて、目的指向実行、つまりPrologとかがやるような実行機能があったと言われているんですね。「これ、オーパーツか?」という感じですけど(笑)。時代を無視している感じがするんですが。
しかし、1942年から1945年にかけてPlankalkülは設計されてレポートが書かれたんですが、そのレポートは誰にも注目されることがありませんでした。
実際にPlankalkülの言語仕様の仕様書が発表されたのは、それからずっと後の1972年ですが、それまで誰の眼にも留まりませんでした。このあたりでね、このあたりでFORTRANに追い越されているわけですね。残念。
さらに、Plankalkülのコンパイラが最初に実装されたのは、1998年でした。Rubyより新しい。世界で最初のプログラミング言語だったはずなのに。
このことから学ぶことができるのは、アイデアはすばらしいかもしれないけども、アイデアだけでは十分ではないということですね。みんなが使えるような実用的な実装が存在していて初めて意味がある。
インターネットのサービスもそうなんですね。最近はなくなりましたが、昔私がプログラミングをするということだけが知られていた頃、話し掛けてくる人がいたんですね。「私にはすばらしいビジネスのアイデアがあるんだけど、君、実装してくれないか?」とか「利益は折半ね」みたいなことを言うわけですよね。お前はアイデアだけかよという感じがするんですけれども(笑)、全部断ったわけなんですけれども。
アイデアだけだと意味がないんですよね。実用的なアイデアは最初から完成している必要はなくて、段階的に成長していけばいいんですね。
アイデアは重要だとよく言われますが、それだけではなくて、きちんと実装してみんなに使ってもらって、それがみんなと一緒に成長していくことが重要であるということを、最初の教訓としてお伝えしたいなと思います。
(次回へつづく)
「RubyWorld Conference 2023」が開催されたほぼ同時期に、島根県では「Ruby biz Grand prix 2023」が開催されました。 Ruby biz Grand prixは、プログラム言語「Ruby」を活用して開発されたサービスや商品に対して表彰されるビジネスコンテストです。第9回目となる今回は計29事例の中から、大賞2点と特別賞3点、ソーシャルインパクト賞4点が受賞しました。
関連タグ:
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略