オープンソースとは何か? Scratch に例えて解説
teramotodaiki.icon Scratcher の皆さんに分かりやすいよう Scratch に例えて書いていますが、僕の認識が間違っているかも知れません。ぜひこのプロジェクトに参加して、このページを修正してください! Open Source(オープンソース)という言葉を聞いたことはありますか?
プログラマー以外の方には、聞き慣れない言葉かも知れません。しかし、オープンソースがなければ今の世の中は成り立たないと言っていいほどに、オープンソースは重要なことです
ところで、あなたは Scratch の作品をリミックスしたことはありますか?
長年 Scratch をやっているなら、きっと一度は誰かの作品をリミックスしたことがあると思います。あるいは、あなたの作品が誰かにリミックスされたこともあるかも知れません(それは誇らしいことです!)
実は、そのリミックスこそが、オープンソースの考え方そのものなのです
Scratch で作品を投稿すると、ブロックが全部公開されますね。また、そのブロックは別の誰かがリミックスすることで、自由にいじることも可能です。ここに「ある考え方」を付け加えたものが、オープンソースです
その「ある考え方」とは一体何なのでしょうか?
/icons/hr.icon
ある日、あなたは「チャット機能」という作品を Scratch に公開しました。Scratch の中でチャットが出来るようになるとても面白い機能です。あなたの友達は、その作品をリミックスすることにしました。そして、さらにアイデアが浮かびました。それはチャット上で使える「スタンプ機能」です。スタンプが加わり、チャット機能はさらに面白くなりました
あなたはスタンプ機能を見て、とても良い機能だ!と思いました。同時に、あなたはチャット+スタンプ機能を、もっと多くの 人に使って欲しいな、と思いました
あなたの友達はあまり有名ではないので、リミックスする人はいませんでした。一方、あなたはそこそこ有名で、チャット機能も既に10回以上リミックスされています。あなたは、友達と相談することにしました
・・・
あなた「君のスタンプ機能はとても良いね」
友達 「ありがとう。でも、あんまりリミックスされないんだ。もっと多くの人に使って欲しいんだけど」
あなた「私が君の作品をもっと色んなところで宣伝するのはどう?」
友達 「いいね。でも、君の作品にもスタンプ機能を追加した方が、もっと多くの人に使ってもらえるよ」
あなた「でも、それってパクリじゃないの?」
友達 「作品の紹介文に、私の名前を書いたら良いよ。そうすれば、リミックスする人にも分かってもらえるはずだよ」
あなた「本当かなぁ・・・(パクリだと思われたら、嫌だな)」
・・・
あなたは、友達が組んだブロックを参考にして、自分の作品にもスタンプ機能を追加しました。そして、紹介文にはこのように付け加えました
code:紹介文
2019/1/14
私が作ったチャット機能に、〇〇さんがスタンプ機能を付け加えてくれました!
とても良い機能なので、〇〇さんに相談して、この作品にもスタンプ機能を入れました。ぜひリミックスして使ってみてください!
その後、あなたの作ったチャット+スタンプ機能は、さらに多くの人にリミックスされました
それどころか、紹介文を見た別の人から、「私の作ったこの機能もここに加えて欲しい」というチャットが何件も来るようになったのです!あなたは全てのリミックス作品を1つ1つしっかりと確認して、良い機能があれば追加していきました。紹介文には多くの人たちの名前が書かれることになり、海外からのリミックスも増え、あなたやあなたの友達は、色んなところで紹介されて、有名 Scratcher になったのでした
めでたしめでたし。これは架空の物語です
/icons/hr.icon
実は、あなたの友達が提案したことこそ、オープンソースで重要な「ある考え方」の答えでした
それは、誰かがリミックスして作り変えた部分が、本家にはない良さを持っていたら、その部分を本家にも取り入れるという考え方です
作品に良いところを取り入れていけば、使う人が増えて、有名になります。そして、有名になればなるほど、自分の機能を取り入れて欲しいと思う人が増えて、どんどん作品が進化していくはずです!
このように「みんなで作り上げていくソフトウェア」ことを OSS(オープンソースソフトウェア)と呼びます
Scratch のリミックス機能は、この OSS の考えを取り入れた機能と言えます
世の中にはオープンソースソフトウェアが沢山あります。有名なところだと、次のようなものがあります
そして、Scratch もオープンソースソフトウェアです。GitHub(ギットハブ)というサイトでソースコードを公開していて、Fork(フォーク:リミックスのこと)された回数は763回にも上ります(2019/1/14現在)
本家に取り込んでもらうことを Contribute(コントリビュート)と呼び、 Contribute する人たちは Contributor(コントリビュータ)と呼ばれます。Scratch は 61 人(2019/1/14 現在)もの Contributor によって支えられています
Contributor とは一体どんな人たちでしょうか。 MIT の社員?MIT に雇われた人?
オープンソースの Contributor は、実際には一般人がボランティアでやっている場合がほとんどです。「自分はこの機能があったらいいと思うから」という理由で機能を追加したり、「自分のパソコンでバグが起きて困ったから」という理由でバグを直してあげたりするのです。日中はプログラマーとして働いて、夜になったら家で Contribute しているのかも知れません。えらい!
Contribute するにはコードを書かなければなりませんが、言葉で意見を言うこともできます。意見は掲示板に書くのが一般的です。 Scratch 3.0 の場合は GitHub Issue(イシュー)を使っていて、世界中の人たちが Scratch 3.0 の今後について日夜議論をしています。その他にも、バグ報告や新機能のリクエストをするためにも使われます
オープンソースに興味が湧いてきましたか?あなたも Scratch に Contribute できるかも知れません :)