0043 号 巻頭言

フリーソフトウェアと「ソフトウェアの自由」について

Rubyist Magazine 第 43 号をお届けする。

今号は RubyKaigi 2013 で配布されたフライヤーの企画について任天堂株式会社の担当者の方に寄稿していただいた Ruby でナゾ解き? 任天堂 Code Puzzle 解説&裏話、 RubyKaigi 2013 に合わせて開催された TRICK 2013 の詳しい結果と解説を @mametter さんがまとめた TRICK2013 開催報告&入賞作品紹介 同じく RubyKaigi 2013 での発表「Be a library developer!」を須藤さんが補足を交えて誌上で再現した ライブラリー開発者になろう、 そして国内外のイベントレポートとして RubyKaigi 2013 レポートRailsberry 2013 And RailsConf 2013RubyMotion Kaigi 2013 レポートRedDotRubyConf 2013 旅行記EuRuKo 2013 参加レポートRegionalRubyKaigi レポート (38) 九州 Ruby 会議 02、 さらに書籍の紹介として 書籍紹介 『パーフェクト Ruby』 と、イベント特集号的な体裁となった。


RubyKaigi 2013 レポートでも詳しく書かれている通り、もう二ヵ月近く前のことになるが、RubyKaigi 2013 は無事に開催され、多くの方に参加いただいた。また、Ruby の会も一般社団法人になってから、2 年目が終わろうとしている。Ruby は多くの方々の熱心な活動によって支えられ、今なお広がりつつあることを実感する機会に恵まれているのは、大変ありがたいことである。

その一方で、気になることもある。私は Ruby の会を設立する以前より、FSIJ(特定非営利活動法人フリーソフトウェアイニシアティブ)という NPO に所属している。先日その総会があり、参加してきた。

その席上、自由ソフトウェア (フリーソフトウェア) のムーブメントが停滞気味、もしくは退潮気味ではないかという懸念が語られていた。私自身も、ここ数年「オープンソース」という言葉が取り上げられることは頻繁にあっても、「フリーソフトウェア」という言葉が取り上げられる機会は少ないように感じている。Ruby も Rails も当然のようにフリーソフトウェアなのだが、もしかしたら比較的積極的に Ruby を使っている方の中にも、馴染みがないという方もいるのではないだろうか。

そこで、この場を借りて、改めてフリーソフトウェアの基本を説明してみたい。あくまで「基本」であり、フリーソフトウェアという言葉に馴染んでいる人には特に新しい情報はないので、以降全文読み飛ばしていただいて構わない。

なお、「自由ソフトウェア」(「自由なソフトウェア」という記述も使われる)も「フリーソフトウェア」も「free software」の訳語であり、GNU の日本語サイトでは前者が使われている。わざわざ自由と書くのは「無料」の意味の free ではないことを強調するためであるが、(たぶん固有名詞ではなく普通名詞のように読まれることを避けるためか)フリーソフトウェアと書かれることも多い。以下ではフリーソフトウェアと書くことにする。

フリーソフトウェアについて知るべきもっとも大切なことは、「ソフトウェアの自由」である。

プログラマに向かってフリーソフトウェアの話をするときには、「GPL」と「MIT/X11 ライセンス(あるいは修正 BSD ライセンス)」の違いや、コピーレフトの話を強調することも多い。が、私見では両者の違いは実用的には大きいものの、「フリーソフトウェア」というものを考える上では、最初は無視しても構わない、と思っている。「GPL」も「MIT(X11) ライセンス」もフリーソフトウェアのライセンスであることは何の疑問の余地もない(と GNU のサイトでも紹介されている)し、無用な対立を招く必要もない。

また、GNU(とその創設者リチャード・ストールマン氏)や FSF の歴史的な話から進めることも多いが、その辺りも思い切って省略してみたい。もちろんどこかで GNU の思想と背景について知るに越したことはないのだが、フリーソフトウェアの理念や推進は GNU や FSF が独占しているものではないし、そうなるべきでもない。

それよりも重視したいのは「ソフトウェアの自由」である。GNU が定義する「フリーソフトウェア」は、4 つのソフトウェアの自由を満たすもの、とされている。すなわちフリーソフトウェアの定義そのものである。以下にその 4 項目を引用する。

あるプログラムが自由ソフトウェアであるとは、そのプログラムの利用者が、以下の 4 つの必須の自由を有するときです:

  • いかなる目的に対しても、プログラムを実行する自由 (第零の自由)。
  • プログラムがどのように動作しているか研究し、必要に応じて改造する自由 (第一の自由)。ソースコードへのアクセスは、この前提条件となります。
  • 身近な人を助けられるよう、コピーを再配布する自由 (第二の自由)。
  • 改変した版を他に配布する自由 (第三の自由)。これにより、変更がコミュニティ全体にとって利益となる機会を提供できます。ソースコードへのアクセスは、この前提条件となります。

(http://www.gnu.org/philosophy/free-sw.html より)

ゼロから始まっているのはアシモフのパクリ……ではなく、「コンピュータなら最初は 0 に決まってるだろ」的な理由によるものらしい(ネタかもしれない)。4 つの自由を順に見ていこう。

第零の自由、「いかなる目的に対しても、プログラムを実行する自由」というのは、ある意味当たり前の自由である。これだけならば、有償のソフトウェアでも(免責条件がつくことはあっても)許されることが少なくはない。

とはいえ、ある目的での実行は禁じられているソフトウェアはいくらでもある。商用には使ってはダメだとか、個人的な利用のみ使ってよいといったような制限がついているようなものだ。この手のソフトウェアは、いくらソースコードが公開され、改良や再配布が許されていたとしても、フリーソフトウェアではない。自由ではないからだ。

第一の自由、「プログラムがどのように動作しているか研究し、必要に応じて改造する自由」というのは、単なるソースコードの公開を含んでいるが、それ以上の条件がつけられている。 NDA(秘密保持契約)などを結ぶ必要があるとか特別な何かが必要であるとかいうのはもちろんフリーソフトウェアではない。

とはいえ、ここで大事なのはなぜ NDA や特別な条件があるのはうれしくないのか、という理由付けである。別に「なんかうざいからイヤ」みたいなワガママによるものではない。クレクレ厨みたいな話をしたいわけではない。

自由が必要となるのは、例えば OS が更新されたり、ハードウェアが変わったりした場合だ。古いハードが入手できなくなった場合、そのソフトウェアが動かせなくなるのは困る。もちろん元の作者の個人なり企業なりが対応してくれればいいが、それを義務とするのは酷である。しかし、ユーザやユーザの周囲の人がそれを自力で修正できるなら、その修正を施せるようにしたい。これを妨げないようにする、というのが、ここで求められている「ソフトウェアの自由」だ。

もちろんそれだけではない。改良によって用途が広がったり、機能が向上したりできるのであれば、それを何かよく分からない理由により制限をかける、というのは、素朴に考えてうれしいことではないだろう。ソフトウェアが便利になって利用者が困ることはあまり考えられない。ソフトウェアが便利になるのであれば、それが広まった方が、不便なソフトウェアを無理して使うよりも、社会全体としては良い方向に向かいそうである。

このような背景を踏まえれば、第二の自由と第三の自由もその重要性が明らかになる。同一のものを再配布できること、あるいは改造したものを再配布できること。それを妨げることは、結局はコミュニティの中での助け合いを否定するものである。それは善いことではないのではないか、と考えるのが、フリーソフトウェアの考え方である。

フリーソフトウェアの考え方の根底にあるのは、別に美しい理想主義とか高尚な思想といったものではない。ある種のプラグマティズムというか、端的に実用的なものだ。フリーソフトウェアのライセンスを採用すれば、そのソフトウェアが勝手に良くなるとか便利になるとか広まるとかいうような都合のいい話はない。ただ、誰かがそのソフトウェアをより良くしたいとか、より広めたいと思った時に、それを誰かに妨げられないようにしたい。その方が世の中にも良いことなのではないか。そのような利用者による行為は一種の「権利」として認められるべきではないのか。それだけのことだ。

もっとも、そのような自由を守ろうとすると、経済的な不利益を被るのではないか、という疑問もあるだろう。それに対する反論は、平たく言えば「別にコピーしても減るものじゃないからいいじゃん」ということになりそうである。ソフトウェアの場合、物や土地などの財とはその点が大きく異なっている。あとは間接的な利害の話であり、そこは別途バランスを取ることも可能なので(別にフリーソフトウェアの新規開発や修正作業に費用を取ることを否定してはいない)、そこは各自調整した上で、ソフトウェアの自由は守られるべきである、というのがフリーソフトウェアの考え方だと言っても良いだろう。そもそも現代ではソフトウェア開発ビジネスが多くのフリーソフトウェアによって支えられている。それらのフリーソフトウェアは何かの規制によって広まったのではなく、単に競争に勝ち残ったために広まったと考えるべきだろう。要するにソフトウェアの自由を守ることがソフトウェアの発展に役立っただけである。

ここからさらに、ソフトウェアの自由をどこまで強制できるか・させるべきか、という話になると、コピーレフトという考え方が出てきて、前述の GPL と MIT(X11) ライセンスとの違いといった話につながる。が、それは「ソフトウェアの自由」という発想そのものが重要であることに比べれば、些細な違いと言っても過言ではない。 また、オープンソース運動との対立についても、別にオープンソースソフトウェアが「ソフトウェアの自由」を(強調しないことはあっても)否定することはありえないだろう。この対立についても、ソフトウェアの自由が守られるか守られないかの差に比べれば無視できるものでしかない。

ソフトウェアの自由が、ありとあらゆる場面で認められるようになることは難しそうである。しかしながら、それが広がること自体は歓迎に価することであり、それが顧みられなくなることはあまり歓迎できない。ただでさえ、デバイスにインストールできるアプリが制限されたり、無許可の OS をブートさせなくしたりすることが行われつつある。そういうものが存在することを否定まではしなくとも、そのようなことが当たり前になるのは黙認できない。

ご存知の方も多いかと思うが、まつもとさんは Ruby 等のフリーソフトウェア開発の功績により、FSF 2011 Free Software Award を受賞している。この Award は「フリーソフトウェアの進歩と発展に大きく寄与した個人に与えられる賞」である。もしあなたが Ruby を使っているのであれば、Ruby が守り、そして進歩・発展させてきた「ソフトウェアの自由」というものが何か、しばし考えてみるのも良いだろう。そう思って、今更ではあるが少し書いてみた。

(るびま編集長 高橋征義)