Knoppix/Math による

Knoppix/Math による
数学教材の作成と創造
山田直記、福嶋幸生
(福岡大学理学部)
平成 21 年 5 月 11 日
目次
はじめに
1. 1 時間目—フリーソフトウェアの考え方、Knoppix/Math の紹介
2. 2 時間目—Knoppix/Math 入門
3. 3 時間目—KSEG で幾何
4. 4 時間目—Maxima で代数
5. 5 時間目—Maxima でグラフ、微分積分
6. 6 時間目—試験
7. 付録
7.1. GNU 宣言
7.2. GNU 一般公有使用許諾書 (GPL)
7.3. プリンタの接続
7.4. ソフトウェアについての解説
7.5. USB メモリに含まれるファイル一覧
1
はじめに
コンピュータはオペレーティングシステム (OS) がなければ動きません。
OS は Windows である、というのが一般的な理解でしょう。Mac もある
けれど一般的ではありませんし、少なくとも学校設備にはないと思われ
ます。Windows は有料であり、新しい製品が出るたびに買い替えなけれ
ばなりません。最近にも新しいバージョンが発売され、話題になりまし
た。しかし、学校には十分な予算がなく、古い Windows のままなのでは
ないでしょうか。
また、たとえ設備と Windows OS が更新されても教材となるソフト
ウェアの購入にまでは予算がつかないのではないでしょうか。生徒一人
一人にソフトウェアを使わせたいが、ライセンス料が膨大な金額になっ
てしまう、こんな悩みをお持ちではありませんか?。
Linux というフリーの OS について聞いたことがあるでしょうか?聞
いたことがあっても「あれはマニアやハッカーのもので、私には使えな
い」、「フリーソフトは危険なのではないか」などと尻込みしてはいない
でしょうか。
ここではそれらの疑念を解消し、現在学校や家庭にあるコンピュータ
環境で簡単に使用できる Knoppix/Math に収録されているフリーソフト
ウェアを用いて、数学の学習や教材研究を進めることができることを体
験し、実践的に学んでもらうことにします。
1
1.1
1 時間目
フリーソフトウェアとは?
「フリー」、「フリーソフト」というとどのように感じるでしょうか?
「タダ (無料)」のコンピュータソフトのことだと考える人が多いので
はないでしょうか?確かに勝手にダウンロードできるプログラムが Web
サイトなどにおいてあったり、そのようなソフトを集めた Web サイトも
数多くあります。
しかし、ここでお話ししようとする「フリーソフトウェア」は、
「自由
な」コンピュータソフトウェアを指しています。
その考え方は、提唱者である Richard M. Stallman の 「GNU 宣言」に
詳しく書かれています。このテキストの巻末にも掲載していますので、機
2
会があれば一度目を通して見て下さい。大変格調高い文章だと思います。
この考え方に基づいたソフトウェアであることを明確にするために、
「GNU 一般公有使用許諾書」(略称:GPL ライセンス) が定められていま
す。これも巻末に掲載しました。大事な点は次の 4 つの自由にあります。
memo
(teachers only)
(0) 目的を問わず、プログラムを実行する自由。
(1) プログラムがどのように動作しているか研究し、
そのプログラムにあなたの必要に応じて修正を加
え、採り入れる自由。
(2) 身近な人を助けられるよう、コピーを再領布する
自由。
(3) プログラムを改良し、コミュニティ全体がその恩
恵を受けられるようあなたの改良点を公衆に発表
する自由。
このような精神に支えられた、フリー (自由な) ソフトウェアが、無責
任なものでないこと、著作権を放棄したものではないことが理解できる
でしょう。ソースファイルも必要に応じて入手できることは当然です。ま
た、無保証であることにも注意しなければなりません。
この考え方に賛同する多くのフリーソフトウェアが制作され、改良さ
れ、広く利用されています。
ライセンスの考え方は様々です。ここではその代表的なものとして GPL
ライセンスを紹介しました。
1.2
Linux の紹介
Linux は、Windows が動くコンピュータで利用することができる Unix
互換のオペレーティングシステムです。1991 年頃スウェーデンの Linus
B. Torvalds さんが作成を始め、たくさんの人の協力で完成しました。現
在では GNU プロジェクトの一環として位置づけられています。GPL ラ
イセンスに従っていますから、再配布も自由ですし、自分で改変を加え
ることもできます。
3
その改変の一つとして、Knoppix があります。Knoppix は、Windows
が動いているコンピュータで CD(DVD) から起動できる Linux の一種
です。これがあれば、世界中のどこに行ってもいつもと同じ自分のコン
ピュータ環境が得られるので人気があります。ドイツの Klaus Knopper
さんが開発を始めました。Knoppix もフリーソフトウェアですから、自
由に改変を加えることができます。2002 年には独立行政法人産業技術総
合研究所の須崎有徳氏を中心とするグループにより日本語化されました。
さらにいろいろな用途に特化したバージョンがたくさん開発されてい
ます。今回我々が勉強しようという Knoppix/Math もその一つです。
1.3
Knoppix のセキュリティ
Knoppix を CD(DVD) から起動している間は、Windows のファイルは
見ることができません。これは不便なようですが、考え方を変えると、イ
ンターネットに接続していてもウィルスに侵入される心配がないことにな
ります。多くのウィルスは、Windows のファイルを書き換えるように仕
組まれているからです。万一、Windows がすでにウィルスに汚染されて
いても、Knoppix の利用には何の影響もありません。また、OS そのもの
を書き換えるようなウィルスが侵入する心配もありません。CD(DVD) を
書き換えることはできないからです。CD(DVD) から起動するたびにまっ
さらな環境が始まるのです。
ただし、インターネットを閲覧中のフィッシング詐欺やワンクリック詐
欺などに対しては注意が必要です。
1.4
Knoppix/Math の紹介
いよいよこの講座のテーマである Knoppix/Math の紹介です。CD 版
と DVD 版があります。
Knoppix/Math は、オリジナルの Knoppix の日本語版上に数学のソフ
トウェアを多数収録したものです。2002 年に福岡大学の濱田先生が作成
を開始され、現在は Knoppix/Math プロジェクトが開発を続けています。
その濱田先生が今日は皆さんのサポートにきてもらっています。ご紹介
します。
その後毎年新しいバージョンが作成されています。日本数学会の会場
で配布されているだけでなく、各国語のバージョンも作成されていて、世
4
界数学者会議でも配布されています。
Knoppix/Math のホームページは
http://www.knoppix-math.org
です。ここには Knoppix/Math に関する多くの情報が集められています。
1.5
Knoppix/Math のデモ
まず、実習をお手伝い頂く助教の皆さんを紹介しましょう。これからの
実習で皆さんの近くで疑問に答えて下さいます。よろしくお願いします。
これから Knoppix/Math でどんなことができるかお見せします。
Knoppix/Math を起動するには、Windows の動いているコンピュータ
に CD(DVD) を挿入して、再起動します。
しばらくいろいろなメッセージが続き、Knoppix が立ち上がります。右
上に Knoppix の文字が見え、アイコンが並んだ画面になりました。これ
がデスクトップ画面です。下側にはツールバーも見えます。
再起動しても Windows が再び立ち上がるようなら、CD から起動で
きるように操作しなければなりません。ノートパソコンではこのような
ケースが多いようです。Windows が立ち上がる直前の画面にセットアッ
プの変更方法が短時間だけ表示されるので、その指示に従います。ここ
に一台のノートパソコンがありますので実際に起動してみます。このパ
ソコンでは F12 を押しますが、機種ごとに操作法は異なります。皆さん
自身のコンピュータで起動するときの参考にしてください。
次の時間からみなさんが実際にやってみる例を中心にいくつかのソフ
トウェアを動かしてみます。
1. インターネット
自宅でプロバイダに接続している状況などでは、Knoppix/Math の
起動時に自動的にインターネットに接続してくれることが多いので
すが、この教室は独自のネットワークが設定されているので少し複
雑な操作が必要です。助教の先生に設定してもらって、インターネッ
トに接続できることを見て頂きます。2 時間目には実際に各自で設
定してみることにします。
2. シェル
ツールバーの左から7番目、テレビ画面の形のアイコンを1回ク
5
リックすると、黒色のウィンドウが現れます。これをシェル画面、
あるいはコンソール画面といいます。
knoppix@0[~]$
と表示された行に、キーボードからコマンドを入力していろいろな
プログラムを起動したりできます。白い四角形のカーソルがこの行
にあることを確かめて、試しにキーボードから
exit
と書き込み、 Enter キーを押してみましょう。この一連の操作を
今後
$ exit
と表すことにします。さて結果はどうなったでしょう。
シェル画面が消えてしまいました。つまり、シェルを終了したのです。
3. KSEG
定規とコンパスで作図する感覚で操作できる幾何学ソフトウェアで
す。2 時間目からは皆さんで実習して頂きますよ。
memo:
(teachers only) コンソール画面からの起動:
まず、点を一つとる。
もう一つ点をとって、これを半径とする円を描く。
交点を求めたり、繰り返して正三角形を描く。
4. Maxima
数式の展開や因数分解、方程式の求解、微分積分などを実行できる
数式処理ソフトウェアです。関数のグラフも自由に描けます。いく
つかを見てもらいましょう。
6
memo:
(teachers only) Knoppix/Math Start からの起動:
分数の計算
因数分解と展開
微分と積分
関数のグラフ
4 時間目と 5 時間目をこのソフトウェアの実習に当てることにします。
1.6
Knoppix/Math の終了
ツールバーの左端のアイコンをクリックすると、たくさんのコマンド
が表示されます。一番下のログアウトにマウスを動かしてクリックしま
す。ここでもクリックは 1 回です。
いくつかのメッセージが次々と表示され、最後にコンピュータが停止
します。トレイから CD(DVD) を取り出します。これで Knoppix/Math
が終了しました。
そして、1 時間目も終了です。
7
2
2 時間目
これからは、実際に Knoppix/Math を操作して教材研究に利用してみ
ましょう。
2.1
Knoppix/Math の起動
1 時間目のデモで見たように Knoppix/Math を起動してみましょう。う
まくゆかない人は助教の先生たちに知らせてください。
次のように手順を踏んでください。
実習:
(1) 電源を入れる。
(2) CD-ROM を挿入して、再起動します。 システム をクリックして、
メニューから 再起動 をクリックする。
Ctrl キー、Alt キー、Delete キーを同時に押すと再起動まで待たず
にスキップできる。
(3) boot: が現れたら、 Enter キーを押す。(そのままでも 60 秒すれば
自動的に次に進む。)
スクリーンと同じ画面が出たら、無事に Knoppix/Math が立ち上がりま
した。では、次に進みましょう。
2.2
フォルダ
まず、フォルダを開いてみます。Windows と異なり、クリックは 1 回
です。気をつけてください。
Knoppix/Math Start というペンギンマークのフォルダを 1 回クリック
します。いろいろな数学ソフトウェアの一覧が表示されます。これから学
ぶ KSEG や Maxima をここから起動することができます。また、Knoppix/Math についての解説も含まれていますので、後日参考にしてくだ
さい。
8
2.3
シェル画面
次に、シェル画面を開いてみましょう。画面の下に見えるツールバーに
あるテレビの形をしたアイコンを 1 回クリックすると、黒いウィンドウが
現れます。ここにコマンドを打ち込んで、各種のソフトウェアを起動す
ることができます。試しに、 ls とすると現在のディレクトリにあるファ
イルの一覧が表示されます。いくつかのコマンドを紹介します。 exit と
すると終了です。
memo:
(teachers only)
ls の結果の解説
pwd による絶対パスと相対パスの解説
cd の解説
これからいろいろなソフトウェア、プログラム、アプリケーション (み
んな同じ意味です) を利用しますが、まず起動してみて、ほんのちょっと動
かして、そして終了してみる。これがソフトウェアに慣れる第一歩です。
2.4
インターネット
Knoppix/Math は起動すると自動的にインターネット環境を調べて接
続してくれます。プロバイダに接続された家庭の環境なら通常何もしな
いでウェブを閲覧することができます。
今日のようなパソコン室では特別な環境が設定されていて、Knoppix/Math
の側で少し設定をしてやらなければならないことがあります。実行して
みましょう。
9
実習:
(1) ウェブブラウザの Iceweasel を、ツールバーから起動する。
(2) 編集 → 設定 → 詳細 → ネットワーク → 接続設定
と移動して
手動でプロキシを設定する
を選び、HTTP プロキシとポートを
192.168.100.1
8080
と設定し、
すべてのプロトコルでこのプロキシを使用する
にチェックマークを入れて、 OK ボタンを押して、設定ウィンドウ
の 閉じる を押して設定を完了する。
これでインターネットに接続できました。試しに福岡大学のホームペー
ジを覗いてみましょう。ブラウザのアドレス欄に
www.fukuoka-u.ac.jp
と入力してみてください。無事にホームページが表示されましたね。
memo:
(teachers only)
その他のページ www.yahoo.com
その他 各自の学校のホームページ
2.5
プリンタの設定
今回は実習の成果を印刷したいので、プリンタを設定します。
プリンタの設定は、パソコンの環境により大きく違います。ここで詳
しく書いても、家庭や学校での参考にならないと思いますので、付録 7.3
の設定要領に従って設定してください。
10
2.6
USB メモリ
CD(DVD) から起動した Knoppix/Math は、終了するとそれまでに作
成したデータはすべて消去されます。それでは不便ですから、必要なデー
タは USB メモリに書き込んでおくことができます。皆さんに先ほどお配
りした USB メモリには、これから学ぶソフトウェアで利用するファイル
やこのプリントの PDF ファイルなどが記録されています。
まず USB メモリの接続法から始めましょう。
実習:
(1) USB メモリを挿入する。しばらくすると画面にメモリのアイコン
が現れる。 USB Flash Disk[sda1] となっている。(「どうしたいで
すか」というウィンドウはキャンセルする。)
(2) USB アイコンをクリックするとウィンドウが開いてファイルの一
覧を見ることができる。
(3) これらのファイルを全部、現在のディレクトリ (knoppix$) に移す。
USB アイコンをクリックしてディレクトリを表示する。
編集 → すべて選択
編集 → コピー
(ディレクトリを Knoppix$に移して)
貼り付け
(6) USB メモリを取り外すには、USB アイコンを右クリックして現れ
るメニューから マウント解除 を選ぶ。
さて、USB メモリからコピーしたデータを利用して、プリンタにサン
プルを印刷してみましょう。
これから実行するのは、
(1) Emacs というテキスト編集ソフトを用いて原稿を作成し、
(2) TeX というソフトウェアで整形して、
(3) xdvi でそれを印刷する
11
という一連の操作です。どんな数式も思い通りに作成できるので、テス
トや問題ドリルの作成に利用できます。
では、Emacs から始めましょう。
実習:
(1) コンソール画面で emacs & と入力する。
(1-1) File → Open File
(1-2) 下段のカーソル位置で report01.tex と入力する。
(1-3) ファイルの中で \author の部分を自分の名前に書き換える。
日本語を入力するには CTRL+U (コントロールキーを押しな
がら U キーを押す) とする。
(1-4) File → Save(current buffer)
(2) コンソール画面に戻って、 platex report01 と入力する。
(3) コンソール画面で xdvi & と入力する。
(3-1) File → Open → report01.dvi → OK →
これらの一連の操作で、あなたの名前が印刷された report01.dvi が
作成され、それを画面で確認することができました。数式がきれいに印
刷されていることもわかりますね。
実習:
File → Print → OK
として印刷してみましょう。
memo:
(teachers only)
ファイル名は自由に決めてよい。
その他
12
これで準備が整いました。無事に 2 時間目が終了です。Knoppix/Math
は終了させないでください。最後までそのままで使いましょう。
2.7
余談
dvi ファイルを PDF ファイルに変換することもできます。コンソール画
面で
$ dvipdf ファイル名
として下さい。閲覧するには xpdf というソフトウェアを使います。USB
メモリにコピーしておけば Windows からも閲覧できます。
13
3
3 時間目
では 3 時間目を始めましょう。
3.1
KSEG
KSEG というソフトを使って、幾何の問題を考えてみます。
起動の方法は 3 種類あります。
(a) コンソール画面で kseg & と入力する。
(b) Knoppix/Math start アイコンをクリックして、KSEG を選択する。
(c) ツールバーの
選ぶ。
√
x アイコンをクリックして、メニューから KSEG を
どれでもかまいません。起動してください。
コンパスと定規で作図する要領で、図を描くことができ、平面幾何に
親しむことができます。
まず、基本的な使い方を学びましょう。点や線分、直線、円などをオブ
ジェクトと呼びます。
14
memo:
(a) 点を描くには、
(teachers only) カーソルを目的の位置に置いて 右クリック 。
(b) オブジェクトに注目するとは、
(teachers only) 赤い色をつけること。赤く色がついているときに
は、そのオブジェクトに注目しています。
(c) 注目したオブジェクトを解除するには、
(teachers only) 画面乗のどこかにカーソルをおいて 左クリック す
ると、解除されます。
(d) オブジェクトを注目するには、
(teachers only) オブジェクトの上にカーソルを置いて、 左クリック
すると、そのオブジェクトが注目されます。
(e) 複数のオブジェクトに注目するには、
(teachers only) SHIFT キーを押しながら 左クリック を繰り返し
ます。
(f) オブジェクトを移動させるには、
(teachers only) ドラッグします。
直線や線分を描くには 2 点を指定しなければなりません。円を描くに
は中心と半径を指定しなければなりません。複数のオブジェクトに注目
することで、このような指定を実現できます。
実際にやってみましょう。
実習:2 点を描いて、その 2 点に注目する。
このとき、画面の上側にあるツールバーを見てください。赤い色で現
在実行できる操作が示されています。( 新規 メニューから選ぶこともで
きます。)
実習:2 点を結ぶ線分を描いて、線分を移動したり、端点を移動させて
みる。
15
実習:2 点を指定して円を描く。最初に指定した点が中心になることを確
認する。円の上に点をとり、円上を移動させる。
それではしばらく自由に作図を実験してみてください。たとえば次の
ような図形はいかがでしょうか。
実習:
垂直 2 等分線
角の 2 等分
正三角形
正 6 角形
できた図をプリンタで印刷してみたいと思います。
16
実習:
(1) KSEG から eps ファイルへ出力する。
(1-1) ファイル → 印刷 → Print to File →
(1-2) ファイル名を入力する。ここでは figure02.eps とした。
(1-3) OK
(2) TeX でこのファイルを挿入した文書を作成して印刷するので、2 時
間目の操作を繰り返す。コンソール画面で emacs & と入力する。
(2-1) File → Open File
(2-2) 下段のカーソル位置で report02.tex と入力する。今回は図
を挿入するサンプルとして report02.tex を利用する。
(2-3) ファイルの中の指示された部分に figure02.eps を記入する。
自分の名前を書き入れ、できれば、その他の文章も記入して
みる (何でもよい)。
(2-4) File → Save(current buffer)
(2) コンソール画面に戻って、 platex report02 と入力する。
(3) コンソール画面で xdvi & と入力する。
(3-1) File → Open → report02.dvi → OK →
(3-2) 出力を確認して印刷する。操作法は、 File → Print → OK で
ある。
この出力を提出して、3 時間目はおしまいです。
KSEG を終了するには、
ファイル → 終了
とします。
17
3.2
余滴
時間が許せば 3 時間目に以下の内容を含めることにする。
もう少し KSEG を用いて、幾何の問題に挑戦します。基本的な定理を、
図に描いて直感的に内容を把握させるという教材を想定しています。
3.3
サンプルファイルの実行
先ほどコピーしたフォルダの中に KSEG のサンプルファイルがあります。
中点連結定理、円周角の定理、ピタゴラスの定理などを見ます。
いずれも、動点を移動させて形を変えることで、一般の三角形に対し
て、あるいは任意の円周角に対して定理が成り立つことを実感させられ
ます。角度や長さを計測できるので、動点を動かしても値が一定である
ことなどが容易に見て取れます。
3.4
教材の作成例
では実際に各自で教材ファイルを作成してみましょう。
例をピタゴラスの定理 (三平方の定理) にとりましょう。
まず、構想を練ります。
(1) 直角三角形を作図する。形は自由に変形できるようにする。
(2) 斜辺の長さを測り 2 乗する。
(3) 他の 2 辺の長さを測り、それぞれ 2 乗して和を計算する。
ここまでできれば、三角形を変形して二つの数字がいつでも等しいこ
とを見ることができるでしょう。
さて、頂点を移動させて形を変えてみましょう。数字を見ると定理が
成り立っていることがわかります。
3.5
ファイルの保存
せっかく作った教材です。保存しておきましょう。
KSEG で作図手順を保存するには、次のようにします。
18
(1) USB メモリをマウントし、書き込み可能にしておく。メモリは
/device/sda1/と表されている。
(2) ファイル → 名前を付けて保存
(3) File Name の欄に/device/sda1/file-name を記入する。
(4) Save
19
4
4 時間目
では 4 時間目を始めましょう。
4.1
Maxima(1)
今回は Maxima というソフトウェアを用いて、式の展開、因数分解、方
程式、関数のグラフ、微分積分などを考えてみます。
Maxima は Mathematica や Maple といった市販のソフトウェアに劣
らない性能を持っています。
4.2
起動と終了、ちょっと使ってみる
Knoppix/Math にはいくつかの Maxima のバージョンが収録されていま
す。エンジンはいずれも同じで、使い勝手や見た目が違うだけです。今回
は xmaxima を利用します。xmaxima を起動する方法は 3 種類あります。
(a) コンソール画面で xmaxima & と入力する。
(b) Knoppix/Math start アイコンをクリックして、xmaxima を選択
する。
√
(c) ツールバーの x アイコンをクリックして、メニューから xmaxima
を選ぶ。
どれでもかまいません。起動してください。これまでコンソール画面で
コマンドを入力する際、最後に & をつけました。これは、コマンドをバッ
クグラウンドで実行することを表しています。コンソール画面から続け
てコマンドを入力することができ、いくつものソフトウェアを平行して
実行する際に便利です。
いずれの場合も新たにウィンドウが開きます。下半分はヘルプ画面で
す。いろいろなコマンドの解説とその例題が収録されています。英語で
はありますが機会があるときに試してください。
まず、少し遊んでみましょう。遊ぶというと不謹慎なようですが、新し
いソフトウェアに早く慣れるには、このくらいの心の余裕があるとよい
と思います。
(%i1) 1/2+1/3;
20
と入力すると
(%o1)
5
6
と表示されます。%i1 は 1番目のコマンドを表し、 %o1 は1番目の
出力であることを表しています。入力の最後のセミコロン ”;” を忘れな
いようにしましょう。
何が計算できたのでしょう?もちろん
1 1
5
+ =
2 3
6
です。しかし、電卓と異なり、分数を小数に直すことなく、通分して計算
しています。このように、数式の形のままで計算するので、数式処理シ
ステムと呼ばれています。
さて、xmaxima を終了するには、ウィンドウ左上の File をクリック
し、メニューから Exit を選択します。
もう一度 Maxima を立ち上げて、もう少し遊びを続けましょう。
(%i1) (sqrt(2)*sqrt(3))^2;
(%i2) exp(2)*exp(-1);
(%i3) sin(%pi/3);
を順に試してみましょう。結果は
(%01) 6
(%o2) %e
sqrt(3)
(%03) ------2
√
√ √ 2
π
3
2 −1
となります。それぞれ、( 2 3) = 6, e e = e, sin =
を示して
3
2
いますね。これらの例から、いろいろな記号や関数の入力方法がわかる
でしょう。まとめてみると次のようになります。
21
memo:
根号
√
(teachers only) sqrt( )
指数関数 ex (teachers only) exp(x)
自然対数の底 e (teachers only) %e
三角関数 sin x, cos x, tan x
(teachers only) sin(x), cos(x), tan(x)
円周率 (teachers only) %pi
ここまでで経験したように、Maxima での分数や指数の出力は、同じ
大きさの文字を用いたテキスト形式です。その出力形式を再現するには
場所をとりすぎるので、このプリントでは以下、出力はふつうの数式で
表すことにします。
4.3
整数の話題
与えられた整数を素因数に分解する、最大公約数や最小公倍数を求め
るといった計算に利用してみます。
(%i1) ifactor(1234567);
(%i2) gcd(234, 123);
(%i3) load("functs"):lcm(234, 123);
に対する結果は
(%o1) [[127, 1], [9721, 1]]
(%o2) 3
(%o3) 9594
となります。少し解説が必要です。
この例の素因数分解では、127 と 9721 の素因数をそれぞれ 1 つずつ
持っていることを表しています。それでは ifactor(25); とすると結果
はどう表示されるか考えてみてください。
22
実習:
25 を素因数分解して、出力を確かめる。
(teachers only) [[5,2]]
最大公約数 (gcd: gratest common divisor) は、問題ないと思います。最
小公倍数 (lcm: least common multiple) を求めるには、最初に load(‘‘functs’’):
として functs というパッケージを読み込んでおきます。一度読み込め
ば、それ以後は終了までずっと利用できます。
4.4
式の展開、因数分解、方程式
数式のままで計算する特色を利用してみましょう。
(%i1) (x+y)*(x+y);
(%i2) expand((a+b)^3);
(%i3) factor(x^3-y^3);
に対する結果は
(%o1) x2 + 2xy + y 2
(%o2) a3 + 3a2 b + 3ab2 + b3
(%o3) (x − y)(x2 + xy + y 2 )
となります。
さらに、いろいろな方程式を解くこともできます。
(%i4)
(%i5)
(%i6)
(%i7)
solve(x^2-2*x+1=0, x);
solve(a*x^2+b*x+c=0,x);
solve([2*x+3*y=5, -x+6*y=3], [x,y]);
solve(z^3-1,z)
23
に対する結果は
(%o4) [x = 1]
√
√
b2 − 4ac + b
b2 − 4ac − b
(%o5) [x = −
, x=
]
2a
2a
7
11
(%o6) [[x = , y = ]]
5
15
√
√
3%i − 1
3%i + 1
(%o7) [z =
, z=−
, z = 1]
2
2
となります。% i は虚数単位を表しています。連立 1 次方程式など複数の
ものをまとめるときには [ ] で囲みます。
それでは、次の問題を解いて見てください。
実習:
(1) (a + b)(a − b)(a2 + b2 ) の展開式を求めなさい。
(teachers only) a4 − b4
(2) a3 + b3 + c3 − a2 b − a2 c − ab2 − b2 c − ac2 − bc2 + 2abc を因数分解
しなさい。
(teachers only) (c − b − a)(c − b + a)(c + b − a)
(3) 方程式 x2 + x + 1 = 0 を x について解きなさい。
√
√
3i + 1
3i − 1
(teachers only) [x = −
,x=
]
2
2
(4) 連立 1 次方程式 ax + by = p, cx + dy = q を x, y について解きな
さい。
(teachers only) [[x = −
dp − bq
cp − aq
,y=
]]
bc − ad
bc − ad
これで 4 時間目はおしまいです。
4.5
余滴
以下は、時間が許す場合の話題です。
24
三角関数三角関数の計算は、たくさんの公式が必要になります。どの
公式を利用するかによって、同じ式でもいろいろな表し方があり、取り
扱いがやっかいです。Maxima でも工夫が必要です。
(%i1)
(%i2)
(%i3)
(%i4)
(%i5)
trigsimp(sin(x)^2+cos(x)^2);
trigsimp(sin(x+y));
trigexpand(sin(x+y));
trigsimp(%);
trigreduce(%);
に対する結果は
(%o1) 1
(%o2) sin(y + x)
(%o3) cos(x) sin(x) + sin(x) cos(y)
(%o4) cos(x) sin(x) + sin(x) cos(y)
(%o5) sin(y + x)
となります。基本的なコマンドは trigsimp です。公式 sin2 x+cos2 x = 1
を利用しています。でも sin(x + y) の展開公式は適用できません。この
ためには trigexpand コマンドを用います。trigsimp でこの結果をまと
めてみようと思いましたがうまくゆきません。そこで trigreduce を用
いました。
ここで % を入力しています。これは直前の結果を参照する省略記号で
す。 % o4 などと番号と一緒に用いれば、もっと以前の出力も参照でき
ます。
このように三角関数や対数関数の公式を利用した計算には工夫が必要
です。高校の基本的な練習問題なら、Maxima で結果を求めるより自分
で解いた方が早く、求める形の結果が得られます。数学の基本をしっかり
身につけて、自由にコンピュータの計算能力を引き出せるようになって、
手計算ではできない複雑な計算に応用できるようになりたいものです。
25
5
5 時間目
今回も Maxima を用いて教材を考えてみましょう。
5.1
Maxima(2)
5.2
関数のグラフを描く
Maxima で関数のグラフを描いてみます。
(%i1) plot2d(x^2, [x,-5, 5]);
(%i2) plot2d(sin(t),[t,-%pi, %pi]);
とすると、別々のウィンドウが現れて y = x2 , y = sin x のグラフが描か
れます。関数と変数の範囲を入力しています。変数は、関数と範囲で対
応していれば何でもかまいません。目盛りが枠の外側にあって、座標軸
が描かれていないことがいつもと少し異なる印象を与えます。
(%i3) plot2d(1/(x^2+1)*sin(3*x), [x,-5, 5]);
(%i4) plot2d(tan(t),[t,-%pi, %pi]);
1
sin x のグラフは、式だけからはすぐ
+1
にはわかりにくいかもしれませんが、同じ要領で描くことができます。次
は、式から y = tan x のグラフを描くことは予想できます。結果はどうで
しょう。予想したような図ではありません。縦軸の目盛りを見ると、上
端は 2e + 16 = 2 × 1016 となっています。縦軸の範囲が大きすぎるよう
です。
をためしてみましょう。y =
x2
(%i4) plot2d(tan(t),[t,-%pi, %pi], [y, -20, 20]);
としてみると、期待したようなグラフが描けます。(%i4) のところに ,[y,-20,10]
を書き加えて ENTER キーを押せば入力できます。よく似たコマンドを
繰り返すときやエラーなどが起きたときの修正などにこの機能を利用で
きます。
さて、描かれたグラフを印刷してみましょう。
KSEG の時と同様に、図を eps ファイルとして出力します。これを以前
と同じく TeX で処理して印刷できるようにすればよいのです。
(%i3) で描いた図を印刷することにします。
26
実習:
(1) コマンド
(%i5) plot2d(1/(x^ 2+1)*sin(3*x),[x,-5,5],
[gnuplot term, ps], [gnuplot out file,
"figure03.eps"]);
により、図を eps ファイルとして出力する。ファイル名は各自で決
めてよい。
(2) TeX でこのファイルを挿入した文書を作成して印刷するので、2 時
間目の操作を繰り返す。コンソール画面で emacs & と入力する。
(2-1) File → Open File
(2-2) 下段のカーソル位置で report03.tex と入力する。今回は図
を挿入するサンプルとして report03.tex を利用する。
(2-3) ファイルの中の maxima/figure03.eps を確認する。自分の名
前を書き入れ、その他の文章も記入してみる。
(2-4) File → Save(current buffer)
(2) コンソール画面に戻って、 platex report03 と入力する。
(3) コンソール画面で xdvi & と入力する。
(3-1) File → Open → report03.dvi → OK →
(3-2) 出力を確認して印刷する。操作法は、 File → Print → OK で
ある。
それでは印刷できたプリントを提出してください。
もう少し別の機能を紹介しましょう。(時間が不足するときはここを省
略する。)
(%i5) F(x):= exp(-x^2);
(%i6) plot2d([F(x), -F(x), F(x)*sin(4*x)],[x,-5, 5]);
(%i6) plot2d([parametric, cos(t), sin(3*t)] ,[t,0,2*%pi], [nticks, 100]);
2
(%i5) では関数 F (x) = e−x を定義しています。(%i6) ではそれを用い
2
2
2
て 3 つの関数のグラフ y = e−x , y = −e−x , y = e−x sin 4x を同時に描
27
いています。これに対し (%i6) では媒介変数を用いて曲線 x(t) = cos t,
y(t) = sin 2t を描いています。オプション nticks は曲線を構成する点
の個数を指定しています。これが少ないと折れ線状の図になってしまい
ます。
5.3
微分積分
最後の時間の後半は微分と積分の計算です。
数式のままで計算する特色は、微分積分の計算でも威力を発揮します。
(%i4)
(%i5)
(%i6)
(%i7)
diff(cos(x), x);
diff(log(1+x),x);
integrate(x^2+x, x);
integrate(t^2+t, t, 0, 1);
に対する結果は
(%o4) − sin(x)
1
(%o5)
1+x
x3 x2
(%o6)
+
3
2
5
(%07)
6
となります。 diff は differential(微分する) の省略形、integrate は積分
するという意味です。 (%o6) は不定積分、(%o7) は定積分を計算してい
ます。
d2
2 階の導関数 2 log(1 + x) は
dx
(%i8) diff(log(1+x), x,2);
として求められます。
(%i9) diff(%o5, x);
1
をもう一度微分したもので
1+x
す。当然ながら、同じ結果が得られています。
応用問題を考えてみましょう。
は、(%o5)、すなわち、(log(1 + x))0 =
応用 1 関数の極値を求めてみましょう。
28
(1) 関数 y = f (x) を微分して、導関数 f 0 (x) を求める。
(2) f 0 (a) = 0 となる a を求める。
(3) (2) で求めた a について 2 階導関数の値 f 00 (a) を計算して、正なら
極小値、負なら極大値である。
という手順をとります。
5
y = x3 + x2 − 2x + 3 という関数を例にとって考えてみましょう。
2
(%i4) f(x):=x^3+5*x^2/2-2*x+3;
(%i5) define(f1(x), diff(f(x),x));
(%i6) define(f2(x), diff(f(x),x,2);
(%i7) solve(f1(x)=0, x);
(%i5), (%i6) では f (x) の導関数や 2 階導関数を Maxima の関数として定
義しています。
5
(%o4) f (x) := x3 + x2 − 2x + 3
2
2
(%o5) f 1(x) := 3x + 5x − 2
(%o6) f 2(x) := 6x + 5
1
(%07) [x = , x = −2]
3
と、極値をとる x の候補が求められました。
(%i8) f2(1/3);
(%i9) f2(-2);
(%i10) f(1/3);
(%i11) f(-2);
を計算すると
(%o8) 7
(%09) − 7
143
(%o8)
54
(%09) 9
143
1
で極小値 y =
を、x = −2 で極大値 y = 9
3
54
をとることがわかります。
となりますから、 x = −
29
(%i12) plot2d([f(x), f1(x), 0], [x,-5,5], [y,-5,20]);
によって y = f (x) と y = f 0 (x) のグラフを描いてみると、 f 0 (x) の値が
ゼロになるところで極値をとっていることがわかります。グラフに 0 が
あるのは、x-軸を描いています。
応用 2 関数の接線の方程式を求め、関数と接線のグラフを描いてみま
しょう。
π
関数 y = sin x の x =
における接線を求めて、グラフを描いてみ
4
ます。
まず、
(%i13) batch("maxima/maxima/maxima_sample01.mc");
と入力してみてください。
一瞬のうちにグラフが描かれました。Maxima の画面には一連の結果
も表示されています。これは、あらかじめ maxima sample01.mc という
ファイルに一連のコマンドを書いておいて自動的に実行しているのです。
以前にも利用した Emacs を用いてこのファイルを調べてみましょう。コ
ンソール画面から Emacs を立ち上げてください。次に maxima/sample01.mc
を読み込んでください。
ファイルの内容は、次のようになっています。
f(x):=sin(x);
a:%pi/4;
define(f1(x),diff(f(x), x));
t(x):= f1(a)*(x-a)+f(a);
plot2d([f(x), t(x)、0], [x, a-5, a+5]);
最初の 2 行は関数の定義と a の値の設定です。3 行目で導関数を diff コ
マンドによって定義して、4 行目で接線を定義しています。接線の公式を
そのまま書いているところに注目してください。従って、1 行目と 2 行目
を変更するだけでいろいろな関数やほしい点での接線が描けます。
Emacs では TeX や Maxima で利用できるファイルを自由に作成でき
ます。Maxima はここで紹介した機能だけでなく繰り返しや条件分岐の
機能も備えた完全なプログラム言語です。ここで紹介した以外にも教材
の作成に利用できることでしょう。
この講義の題名に含めた「創造」は、これからの皆さんの利用法次第
であるということを強調して、この講義を締めくくりたいと思います。
30
5.4
Toward the examination
次の時間は試験の時間です。
そのための情報は次の通りです。
(a) このテキストは持ち込んでかまいません。その他の参考書類は持ち
込まないでください。
(b) Knoppix/Math は起動したままにしてください。
31
6
6 時間目
(teachers only)
6.1
試験内容
Linux についての基本的な理解 (5 点)
フリーソフトウェアについての基本的な理解 (5 点)
課題 1 は提出したか?(yes or no) emacs で日本語入力への切り替え
はどのようにすればよいか答えよ。(15 + 5 点)
課題 2 は提出したか?(yes or no) 図を出力した eps ファイル point
を取り込む際に \rotatebox{−90} としたが、これを 90 とすると
どんな結果になるか答えよ。(15 + 5 点)
課題 3 は提出したか?それに関する質問 (15 + 5 点)
KSEG で次のような操作を行った。得られる図形の概形を描きなさ
い。ソフトウェアを実行してよい。(10 点)
Maxima で次のような操作を行った。得られる結果を述べなさい。
(計算) ソフトウェアを実行してよい。(10 点)
Maxima で次のような操作を行った。得られる結果を述べなさい。
(グラフ) ソフトウェアを実行してよい。(10 点)
32
7
付録
7.1
GNU 宣言
GNU 宣言(GNU Manifesto 1993 年改訂)
− 日本語版 − (1998 年 11 月 4 日)
Copyright (C) 1985, 1993 Free Software Foundation, Inc.
いかなる媒体でも次の条件が全て満たされている場合に限り、本ドキュメ
ントをそのまま複写し配布することを許可する。配布者は第三者に対して本著
作権表示と本許可告知と同一の許可を与える場合に限り、再配布を許可する。
• 受領、配布された写しに著作権表示および許諾告知が前もって載せられて
いること。
• 第三者 (写しの受領者) がさらに再配布する場合は、配布者が本告知と同
じ許可を第三者に与えていること。
修正版の作成を禁ずる。
————————————————–
【本日本語版について】
Copyright (C) 1998 Mieko Hikichi and Nobuyuki Hikichi
上記と全く同じ条件が満たされている場合に限り、そのまま複写し配布するこ
とを許可する。
————————————————–
GNU 宣言
*********
GNU 宣言 (GNU Manifesto)(以下参照) は、GNU プロジェクトの初期の頃に、
Richard Stallman が参加とサポートを求めるために書いたものである。当初 2
∼3 年間は、開発について説明するために参考として用いつつ更新していたが、
現在では、人々がよく目にするので変更しないでおくことが最善であると考え
ている。
その時以来、我々は、いくつかの表現をわかりやすくしたつもりだがよく誤解
を招く点があることがわかった。そこで、そのような点を明確にするべく、1993
年に脚注として追記した。
現在配布可能な GNU ソフトウェアに関する最新情報は、GNU’s Bulletin ([訳
注] 日本語版であれば「GNU ダイジェスト」) の最新号をご覧いただきたい。こ
こに引用するには情報量が多すぎるので。
GNU とは何か? Gnu は Unix ではない (Gnu’s Not Unix)!
==================================
33
GNU とは Gnu’s Not Unix の略であり、誰もがフリーに使えるよう (1) 、私が
今作成している Unix と完全互換のソフトウェア・システムの名称である。何人
ものプログラマが私を手伝ってくれている。時間やお金、プログラム、機器の
寄付を大いに必要としている。
既に我々のもとには、エディタ・コマンド記述用の Lisp を備えている Emacs
というテキスト・エディタや、ソース・レベル・デバッガ、yacc 互換の構文解析
部生成ツール、リンカ、その他約 35 個のユーティリティがある。シェル (コマ
ンド・インタープリタ) はほぼ完成している。移植性の良い新しい最適化 C コン
パイラは自分自身をコンパイルできるようになり、今年中にはリリースできるだ
ろう。初期段階のカーネルはあるが、Unix をエミュレートするためにはもっと
多くの機能が必要である。カーネルとコンパイラが完成すれば、プログラム開発
にふさわしい GNU システムを配布できるだろう。テキスト処理には TeX を採
用するつもりだが、nroff 関連の作業も進行中である。また、フリーで移植性の
良い X Window System も採用する。そのあとは、移植性の良い Common Lisp
や Empire ゲーム、スプレッドシート、その他数多くのものを、オンライン・ド
キュメントと共に追加していく。最終的には、Unix システムに標準で付いてい
る有用なツール全てに加えて、さらにはそれ以上のものを提供したいと考えて
いる。
GNU は、Unix のプログラムを実行できるようにするつもりだが、Unix とは
同一のものにはならない。他のオペレーティング・システムでの我々の経験を基
に、より使いやすくなるよう、全面的に改良していくからである。特に、長い
ファイル名の使用やファイルのバージョン番号、耐クラッシュ性に優れたファイ
ル・システム、ファイル名の補完機能 ([訳注] ファイル名を途中まで指定しただ
けでそのあとはシステムが完全なファイル名を追加してくれる機能)、端末に依
存しない表示のサポート、おそらく最終的には、いくつかの Lisp プログラムと
通常の Unix プログラムが 1 つの画面を共有できるような Lisp ベースのウィンド
ウ・システムを作る予定である。システム・プログラミング言語としては、C 言語
と Lisp の両方が使用可能になるだろう。通信用には、UUCP、MIT Chaosnet、
Internet の各プロトコルをサポートしようと考えている。
GNU では、最初は 68000/16000 ([訳注] モトローラ 68000 とナショナル・セ
ミコンダクタの 16000) クラスの仮想記憶を備えたマシンを対象とする。という
のは、GNU を最も実行しやすいマシンだからである。もっと能力の小さなマシ
ン上で GNU を動作させるための努力は、そのマシン上で使いたい人の手に委ね
ることにする。
とんでもない誤解を避けるために、このプロジェクトの名称としての「GNU」
の場合は、「G」を発音していただきたい。([訳注] もともと普通名詞の Gnu は
ヌーという動物であり、その発音を採用すると GNU project はヌー・プロジェ
クトになり new project と間違われる可能性もある。)
なぜ GNU を作成しなければならないのか?
==========================
34
もし私の好きなプログラムを他の人も好きであれば、私はその人とプログラ
ムを分かち合わなくてはならない、という黄金律 ([訳注] 自分の欲することは他
の人にも為すという考え方) を考案した。ソフトウェア販売会社は、ユーザ 1 人
1 人に他人と共有しない契約をさせることによって、ユーザを分離し支配しよう
としている。そのような方法で他のユーザとの連帯意識を壊すことは私は嫌で
ある。機密保持契約やソフトウェア・ライセンス契約へのサインは良心からでき
ない。何年もの間、私はそういった傾向やその他の冷遇に抵抗するために、AI
ラボ内で活動してきたが、最後にはその傾向や冷遇は度を越していった。私に
対して AI ラボが行なった事は私の意志に反するので、そこに留まることができ
なくなった。
信念を曲げることなくコンピュータを使い続けるために、フリーでないソフ
トウェアがなくてもうまくやっていけるようなフリー・ソフトウェアのしっかり
した団体を組織することを決意した。私が GNU を配布することを MIT が合法
的に阻止するのを拒否するために、私は AI ラボを辞職した。
なぜ GNU は Unix 互換なのか?
==================
Unix は私の理想とするシステムではないが、それほど悪いシステムでもない。
Unix の基本的な機能は良いものなので、それらを生かしつつ、Unix に欠けてい
るものを補っていけるだろうと考えている。また、Unix 互換のシステムであれ
ば、GNU を採用する他の多くの人々にとっても有用であろう。
GNU をどうやって配布するか?
===================
GNU はパブリック・ドメインには置かない。それにより、誰もが GNU を修
正して再配布でき、配布者が再配布することを禁止されることもない。つまり、
独占的な修正はできないのである。私は、あらゆるバージョンの GNU ([訳注]
誰でもソース・コードをアクセスできるという意味で) が確実にフリーであり続
けて欲しいのである。
なぜ他の多くのプログラマが協力してくれるのか?
=============================
私は、他の数多くのプログラマが GNU に熱狂し、そして協力したがっている
ことを知った。
多くのプログラマが、システム・ソフトウェアの営利化に不満を抱いている。
その営利化とは、プログラマに金儲けをさせる代わりに、他の一般のプログラ
マを仲間ではなく競争相手として見るよう仕向けるからである。プログラマ間
の友情を示す基本的な行為は、プログラムの共有である。現在の典型的な市場
の取り決めは、プログラマが他のプログラマを友人として接することを根本的
に禁じてしまっている。ソフトウェアの購入者は、友情をとるか、法律に従うか
を選択しなくてはならない。当然、友情のほうが大切であると考える人のほう
35
が多いだろう。しかし、法律に従うべきであると考える人のなかには、このよう
なことが簡単に選択できない人が多い。そういう人は人の誠意を信じない人間
になっており、プログラミングは単なる金儲けの一手段でしかないと考えてい
るからである。
独占的なプログラムではなく GNU に関する作業を行ない、GNU を使ってい
れば、誰に対しても排斥的ではなくなり法を守ることもできる。さらに、GNU
は共有という点において、激励するための一例となり、人々が我々に参加すべく
結集するための旗印となる。これにより、もし我々がフリーでないソフトウェア
を使っていては得られないある種の和の感情を抱くことができる。私が対話し
たプログラマのうちの約半数が、これはお金には換えられない大切な幸福であ
ると言っている。
あなたはどのようにしたら貢献できるか?
=========================
私は、コンピュータ・メーカにはマシンとお金の寄付を求めている。個人に
対してはプログラムと労働の寄付を求めている。
マシンの寄付を受けた場合は、その見返りの 1 つとして、GNU が近いうちに
そのマシン上で動作するようになるだろう。マシンは完成していてシステムが
使える状態であり、住宅区域で使用可能で、特殊な冷却や電力を必要としないも
のでなくてはならない。
私は非常に多くのプログラマが GNU のためにパートタイムで作業する熱意が
あることを知った。ほとんどのプロジェクトでは、そういったパートタイムでの
分散した作業をまとめていくことは非常に困難だろう。しかし、Unix を置き換
えるというこの特定の作業に関しては、そのような問題はない。完全な Unix シ
ステムには数百ものユーティリティ・プログラムがあり、その 1 つ 1 つには別個
にドキュメントが付いている。たいていのインタフェース仕様は、Unix との互
換性の観点から決定されている。プログラマ各人が単一の Unix ユーティリティ
と互換の代替品を作成できれば、そのようなユーティリティをひとまとめにし
ても正しく動作するはずである。マーフィの例で言えば、いくつか予期せぬ問
題が生じたとしても、これらの構成要素をまとめることは可能な作業であろう。
(カーネル作業には、より緊密なコミュニケーションが必要なので、少人数で密
接なグループでの作業となる。)
お金の寄付を受けた場合は、フルタイムかパートタイムで 2∼3 人を雇えるだ
ろう。給料はプログラマの標準収入ほど高くはないが、お金を稼ぐことと同じ
ように共同体精神を築くことは重要だと考えている人を私は捜している。私は、
この給料とは、プログラマが別の方法で生計を立てなくても、GNU 作業に全力
投球できるようにするための一手段としてとらえている。
なぜ全てのコンピュータ・ユーザが恩恵をうけるのか?
================================
いったん GNU が作成されれば、誰もが良質のシステム・ソフトウェアを無料
で入手できるようになる。(2)
36
これは、Unix ライセンスの価格を誰もが節約できることだけではなく多くの
ことを意味する。つまり、非常に無駄となるシステム・プログラミングの重複を
避けることができる。代わりに、その労力は現在の技術水準の進歩に向けるこ
とができる。
完全なシステム・ソースは誰に対しても配布可能になる。そのため、システ
ムに変更を施さなくてはならないユーザは、自分でいつでも自由にそれを行なっ
たり、あるいは、自分の代わりにそれを行なってくれるプログラマや企業を雇う
ことができるようになる。ユーザはもはや、ソース・コードを所有するプログラ
マや企業のなすがままになることはなく、変更を施すことに関しては独立した
存在でいられる。
大学側は、学生にシステム・コードを学習し、改良するよう奨めることによ
り、はるかに良い教育環境の提供が可能になる。ハーバード大学のコンピュータ
研究所では、ソース・コードを公開して見れないようなプログラムは一切、シス
テムにインストールしないという方針が習慣であり、特定のプログラムをイン
ストールすることを実際に拒否することを支持した。このことに私は非常に勇
気づけられた。
最後に、システム・ソフトウェアを誰が所有しているのかを、それを使って
やっていいことといけないことを考慮することのオーバーヘッドが解消される
だろう。
人々にプログラムの使用料を支払わせる契約 (複製のライセンスを含む) は常
に、人がいくら (つまり、どのプログラムに) 支払わなくてはならないかを理解
するのに欠くことのできない厄介な機構を通じて、社会は多大なコストを被って
いる。そして、警察国家でもなければ、そのような機構に全ての人を従わせるこ
とはできない。例えば、多大なコストをかけて空気を製造しなくてはならない
宇宙ステーションのことを考えてみよう。空気 1 リットルごとの息継ぎに課金す
れば公平かもしれないが、たとえ皆が空気料金を支払う余裕があったとしても、
そのために一日中メータ付きの空気マスクを付けるとなれば耐え難いことであ
る。まして、マスクを外したかどうかを TV カメラが至る所で見張っているな
どというのは、全くとんでもないことである。それよりは、料金を頭割りにし
た税金で空気工場を維持して、マスクを外すほうがましである。
プログラムの一部または全てを複写することは、プログラマにとって呼吸す
るのと同じくらい自然なことであり生産的なものである。だから、プログラム
はフリーであるべきである。
GNU の目標への異義と、簡単にできる反証
==========================
「プログラムがフリーであれば誰もそれを使わないだろう。なぜな
ら ば、無料ということは、サポートを当てにできないからである。」
「サポートを提供するために料金をプログラムに課す必要がある。」
37
人々が、サービスのない無料の GNU よりも、サービス付きの有料の GNU のほ
うに支払うというのであれば、GNU を無料で入手した人々に対して、サービス
だけを提供する企業は利益を得て当然である。(3)
本当のプログラミング作業を行なうサポートと、単なる支援とは区別すべき
である。前者は、ソフトウェア業者からのサポートを当てにできない種類のも
のである。もしあなたの問題が多くの人々の問題になっていなかった場合には、
ソフトウェア業者は邪魔しないでほしいと言うだろう。
あなたのビジネスがサポートに頼らざるをえない場合は、必要なソース・コー
ドとツールを全て自分で抱えるしかない。そうすれば、あなたの問題点を直し
てもらうための人を雇うことができる。人に翻弄されることはない。Unix を使
う場合、ソース・コードが高価なので、ほとんどのビジネスではこのようなこと
はできない。GNU を使えば、これは簡単に実現する。有能な人材がいなかった
としても可能であり、しかも、問題点を修正できないのは配布規定のせいでは断
じてない。GNU は、世界中の全ての問題ではなく、その一部のみを取り除いて
いる。
一方、コンピュータについて何も知らないユーザには支援が必要である。自
分で容易に処理できる範疇であっても、その方法を知らない場合に支援が必要
なのである。
そのようなサービスは、単なる指導や修理サービスだけを行なっている企業
が請け負うことができるだろう。ユーザがお金を支払ってもサービス付きの製
品を購入するほうが良いと考えているのであれば、無料の製品に対するサービ
スにも喜んでお金を払うだろう。サービス会社は、品質と価格の面で競争するこ
とになり、ユーザは特定のサービス会社にこだわる必要がなくなる。一方、サー
ビスを必要としない我々等などであれば、サービスへの対価を支払わなくても、
プログラムを使うことができる。
「広告なしでは多くの人々に知らせることは無理であり、その費用
だけでもプログラムに料金を課すべきである。」
「誰もが無料で入手できるようなプログラムを宣伝しても仕方が
ない。」
GNU 等の情報を、多くのコンピュータ・ユーザに知らせられるような無料ま
たはきわめて安価な広告媒体がいろいろとある。しかし、宣伝すれば、より多く
のマイクロコンピュータ・ユーザに知らせられるというのも事実かもしれない。
本当にそうであれば、GNU を無料で複写したり配布するサービスを宣伝するビ
ジネスは、その広告費用にかかった以上の成功をおさめるはずである。この方
法は、宣伝によって利益を得るユーザだけが広告料を払うものである。
他方では、多くの人々が友人から GNU を入手するので、上記のような企業が
成功しないというのであれば、その宣伝が GNU を広める上で、本当に必要なも
のではないということである。なぜ自由市場擁護者は、このことを自由市場に
決めさせたくないのだろうか?(4)
「私の会社は、競争の頂点に立つために独占的なオペレーティング・
システムが必要である。」
38
GNU により、オペレーティング・システム・ソフトウェアは競争の世界から
取り除かれることになるだろう。このオペレーティング・システム・ソフトウェ
アの分野では、あなたは競争の頂点に立つことはできないし、競争相手もそうな
ることはできない。この分野では、あなたとその競争相手は互いに利益を受け、
競い合うのは他の分野でということになる。あなたのビジネスがオペレーティ
ング・システムの販売であった場合には、GNU は好ましくなく、あなたにとっ
て厳しい状況になるだろう。あるいは他の種類のビジネスならば、オペレーティ
ング・システムの販売といった高価なビジネスにあなたが強要されないように、
GNU があなたを救うことができる。
私は、多くのメーカやユーザからの寄付に支えられて GNU が発展し、そのよ
うな人々の個々のコストが軽減されていくのをこの目で見たいと思う。(5)
「プログラマは自分の創造性に対して報酬を受けるに値しないので
はないか?」
何事にも報酬があるとしたら、それは社会的貢献である。創造性は社会的貢
献となりうるが、それは社会がその成果を自由に使用できる場合に限られる。も
しプログラマが、革新的なプログラムを作成したことで報酬を得るとしたら、そ
のようなプログラムの利用を制限した場合にも同じ理由で罰に値する。
「プログラマは、自分の創造性に対して報酬を要求してはいけない
のではないか?」
仕事に対して支払いを求めたり、自分の収入を最大に増やすよう求めることは、
破壊的な手段を使わない限り、何ら悪いことではない。しかし、今日のソフト
ウェア分野で習慣となっている手段は、破壊的行為に基づいている。
プログラムの使用を制限してプログラムのユーザからお金をとることは、そ
の制限のせいで、使用できるプログラムの種類や方法が減ってしまうので、破
壊的行為となる。これは、人類がプログラムから得られる富の量を減らしてし
まう。故意に制限すると決定したときには、意図的な破壊という有害な結果をも
たらすだろう。
善良な市民がそのような破壊的手段を用いないのは、そうしないことこそが
裕福であると思っているからである。もし誰もが破壊的手段を用いたとしたら、
我々は互いの破壊行為によってさらに貧しくなっていくばかりであろう。これが
カント哲学の倫理、または黄金律である。皆が情報を隠し持った結果として`生
じる結末を私は好まないので、そうすることは悪いことであると考えざるを得
ない。明確に言えば、自分の創造性が報われたいという欲望は、その創造性の
全部または一部を、一般の世の中から奪う言い訳にはならない。
「プログラマは飢えてしまわないだろうか?」
プログラマに強要できる者はいないということは言える。我々の大半は、街
に立ってしかめ面をしてもどうにもお金を稼ぐことはできない。しかし、結果
的には、我々がしかめ面をしながらひもじい思いをしつつ街に立って一生を過
39
ごすことになったとしても、それを厳しく非難されはしない。我々には他にす
ることがあるからである。
しかし、これは、質問者の暗黙の仮定、つまり、ソフトウェアの所有権がな
ければ、プログラマは一銭たりとも収入を得ることはできないという仮定を受
け入れているので間違った答えである。おそらく、一か八かということなのだろ
う。プログラマが飢えてしまわない本当の理由は、単に今ほどの額ではないだけ
であって、プログラミングに対しては支払われる可能性が依然としてあるから
である。
複写を制限することだけが、ソフトウェアにおけるビジネスの唯一の基礎で
はない。それが最も多くのお金をもたらすので、一番の共通基盤になっている
だけである。もし顧客のほうから複写の制限を禁じたり拒絶すれば、ソフトウェ
ア・ビジネスの組織の土台は、今ではあまり多くは使用されていないような別の
種類ものへと変わるだろう。
おそらく、新しい基盤のもとではプログラミングは現在と同じくらいの利益
にしかならないだろう。しかし、それだからといって変化に反対する理由にはな
らない。販売員が今と同じ給料を得ることが不公平だというのではない。プロ
グラマも同様に今と同じ給料を得たとしても、不公平にはならないだろう。(実
際、プログラマは給料以上のことを行なうだろうから。)
「人々には自分の創造性がどのように使用されるのかを制御する権
利があるのではないか?」
「自分のアイデアの使用を制御すること」は実は、他人の人生を制
御し、一般にその人の人生をもっと困難にするために用いられる性
質のものである。
(弁護士のように) 知的所有権の問題を勉強した人によれば、知的所有物には
本来の権利もないと言っている。政府が認めている推定上の知的所有権の類は、
特定の目的のための特定の法律によって作り出されたものである。
例えば、特許制度は、発明家がその発明の細部を公開するよう促進するため
に制定された。その目的は、発明家を保護するというよりは、社会を保護するこ
とにあった。当時、17 年という特許の保護期間は、技術水準の進歩に比べて短
いものであった。特許は製造業者の間だけの問題なので、ライセンス契約のコ
ストや手間が製品作りの準備に比べれば少ないような人々にとっての特許とは、
さほどの損害にはならない場合が多い。特許製品を使用するたいていの個人を
妨害してはいない。
著作権という概念は、著者がノンフィクション作品の中に他の著者から長々
と頻繁に真似ていた古代には存在しなかった。この習慣は役に立っていたし、現
在でも多くの著者の作品に部分的に生き続けている習慣である。著作権制度は、
著述業を明白に促進するために作られた。その制度が作られた分野として本が
あるが、これは印刷するだけで安く複製できるのでほとんど損害を与えること
はなく、何よりも本を読む個人を妨害することはなかった。
全ての知的所有権は、社会が認めるライセンスにすぎない。というのは、良
きにつけ悪しきにつけ、知的所有権を認めることにより社会全体が利益を得る
40
と考えられたからである。しかし、どのような特殊な状況においても、我々に
は問直さなければならないことがある。
「我々はそのようなライセンスを認める
ことで本当により裕福になるのか?」、
「我々はどのような種類の行為を人に許可
しているというだろうか?」と。
今日のプログラム事情は、100 年前の書物のときとは全く異なっている。例え
ば、プログラムを複写するときの最も簡単な方法は、隣の人からさらに隣の人
へと順にまわしていくという事実や、プログラムにはソース・コードとオブジェ
クト・コードがあってそれぞれ別のものであるという事実、プログラムは読んだ
り楽しむものではなく使用されるものであるという事実が混ぜ合わされて、著
作権を押し通す人が、物質的にも精神的にも社会全体に害を及ぼしている状況
を作り出しているのである。つまり、法的に著作権の強要が可能かどうかにかか
わらず、人はそのようなことをすべきではないということである。
「競争が物事をより良くしていく。」
競争の典型はレースである。勝者には報酬が与えられるので、誰もがもっと
速く走ろうと努力する。資本主義がこの方法で本当に機能すればよいが、資本
主義の擁護者は、この方法で常に機能することを前提としている点が間違って
いる。例えば、なぜ報酬が与えられるのかを走者が忘れてしまい、手段を選ば
ず勝つことのみに執着したとすれば、他の走者を攻撃するといった他の作戦を
とるかもしれない。走者達が真っ先に殴り合いをしてしまえば、皆のゴールイ
ンが遅れてしまうだろう。
ソフトウェアの占有と秘密は、真っ先に殴り合う走者と道義的には同じであ
る。悲しいことに、我々の唯一の審判でさえ、殴り合いに反対していないよう
に見える。ただ走者を (「10 ヤード走るごとに 1 発殴ってもよい」というふうに
して) 規制するだけである。審判は本来、そのような走者達の中に分け入って、
暴力を働こうとした走者を罰してしかるべきである。
「金銭的な刺激がなくなっては誰もプログラミングなどしないので
はないか?」
実際には、多くの人々が金銭的刺激が皆無であってもプログラムを書いてい
るだろう。プログラミングには、一部の人にとってはたまらないほどの魅力があ
り、そういう人こそプログラミングに最も向いている。音楽で生計を立てる望み
がないからといって、プロの音楽家がいなくなることはない。
しかし、この疑問は実際、よく提起されるのだが、現実に即してはいない。プ
ログラマへの支払いは少なくなっても、無くなることはない。したがって、正し
い質問は、「金銭的な魅力が減っても人はプログラムを書くか?」となる。私の
経験がそれを語っている。
10 年以上もの間、世界中の多くの最優秀プログラマが、よそでならもっと収
入を得られたはずにも関わらず、AI ラボで働いてきた。彼らは、金銭ではない
報酬、例えば、名声や感謝といったものを得てきた。そして、創造は楽しくもあ
り、それ自体が自分への報償であった。
41
やがて、彼らの大半は、多くの給料をもらいながら引き続き興味ある同じ仕
事ができる機会を与えられて去っていった。
この事実は、人は金持ちになること以外の理由でもプログラムを書くという
ことを示している。しかし、より多くのお金を得る機会があれば、人はそれを
期待し求めもするだろう。給料が少ない組織は、多いところと競争すれば劣勢に
はなるが、給料の多い組織が息詰まっても、少ないほうまで悪くなるわけでは
ない。
「我々は絶望的になってプログラマを必要としているのではないか。
我々の隣人を助けるのをやめるようプログラマが我々に要求すれば、
我々はそれに従わざるを得ない。」
あなたは、そういった要求に従うほど決して絶望的ではない。忘れないでい
ただきたい。そのような要求に従わなければ数百万ドルの価値となるが、従え
ば 1 セントもの賛辞には値しないのである!
「プログラマは何とかして生計を立てなくてはならない。」
短い目で見ればこれは当てはまる。だが、プログラマが、プログラムの使用
権を売らずに生計を立てていける方法はいくらでもある。この方法は、他に生
計を立てる手立てがないからではなく、プログラマやビジネスマンに多額のお
金をもたらすので、今では慣習的となっている。他の方法を見つけようと思え
ば簡単に見つかる。その例をいくつか示しておく。
• 新しいコンピュータを導入している製造業者は、新しいハードウェアにオ
ペレーティング・システムを移植する作業に対して支払うだろう。
• プログラミングに関する教育や指導、保守といったサービスをビジネスと
する場合にもプログラマを雇うことができるだろう。
• 新しいアイデアを持った人は、プログラムをフリーウェアとして配布し、
それに満足したユーザに寄付を求めたり、簡単な指導サービスを販売する
ことができるだろう。私は、この方法を既に実践して成功した人々を知っ
ている。
• 似たような要求があるユーザ同士は、ユーザ・グループを組織し、会費を
払う。グループでは、ソフトウェア業者と契約して、メンバーが使いたい
プログラムを作成してもらう。
あらゆる種類の開発が、以下に示す「ソフトウェア税」で積み立てることがで
きる。
• コンピュータを買う人は誰でも、ソフトウェア税として、その価格の x
パーセントを支払うようにする。政府は、これを、ソフトウェア開発のた
めに NSF ([訳注] 米国科学財団、National Science Foundation) のような
機関に与える。
42
• ただし、コンピュータの購入者がソフトウェア開発に寄付する場合には、
相当額の税金控除となる。自分で選んだプロジェクトへ寄付することがで
きる。ほとんどは、プロジェクトの成果を利用したいような所を選ぶだろ
う。本来支払うべき税金の合計を上限として、寄付金の額に応じて控除す
ることができる。
• 全体の税率は、課税額に応じて重み付けをし、納税者の投票によって決定
可能とする。
• その結果、
* コンピュータを使用するコミュニティはソフトウェア開発を支援する。
* そのコミュニティは、どの程度のサポートが必要なのかを決定する。
* 自分達の負担したものがどのプロジェクトに費やされるかに関心の
あるユーザは、自分で ([訳注] 立ち上げて欲しい) プロジェクトを選
ぶことができる。
長い目で見た場合には、プログラムをフリーにすることは、欠乏の無い世界
への第一歩であり、そこでは誰も生計を立てるためだけにあくせく働く必要はな
いだろう。人々は、週に 10 時間の課せられた仕事、例えば、法律の制定や、家
族との相談、ロボットの修理、小惑星の試掘といった必要な仕事をこなしたあと
は、プログラミングといった楽しめる活動に自由に専念することになるだろう。
もはやプログラミングで生計を立てる必要はなくなる。
我々は既に、社会全体が実質的生産のためにしなければならない作業量を大
幅に減らしてきたが、そのうちのほんのわずかが労働者の娯楽に変わっただけで
ある。というのは、生産活動に伴い多くの非生産活動が必要とされるからであ
る。その主な原因は、官僚主義と競争に対する差の無い骨折りである。フリー・
ソフトウェアは、ソフトウェア生産の分野でこれらの乱費流出を大幅に減らす
だろう。生産における技術的利得が我々にとっての労働の軽減になるよう、我々
はこれを行なっていかなければならないのである。
———- 脚注 ———(1) ここの言葉遣いは不注意であった。意図することは、誰も GNU システム
を使う「許可」のために支払う必要はない、という意味である。しかし、
これでも明確になっていないし、GNU の複写は常にほとんどまたは全く
の無料で配布されるべきであると言われていると解釈している人が多い。
後述で、この宣言では、利益のために配布サービスを提供している企業の
可能性について述べているように、これは意図した意味では決してない。
その後、私は、自由という意味の「フリー」と価格という意味の「無料」
を注意深く区別するようになった。フリー・ソフトウェアとは、配布する
自由と変更する自由をユーザが持っているソフトウェアのことである。無
料でコピーを入手するかもしれないユーザもいれば、コピーの入手に支払
うユーザもいるかもしれない。また、集まったお金がソフトウェアの改良
43
支援となればますます良いことである。重要なことは、コピーを持ってい
る人は誰でも、そのコピーの使用にあたり、他人と協力するための自由が
あるという点である。
(2) これは、2 種類の意味を持つ「フリー」について私が注意深く区別するの
を怠ったもう 1 つの箇所である。この文は文字どおりの意味である。つ
まり、GNU ソフトウェアのコピーを友人やネット経由で無料で入手する
ことができる、という意味である。ただし、間違った考え方を提示してし
まっている。
(3) そのような企業は現に数社存在する。
(4) Free Software Foundation は企業ではなく慈善団体ではあるが、配布サー
ビスで資金の大半を調達している。FSF への注文によってコピーを入手
する人がいなくなると、作業ができなくなるだろう。しかし、これは独占
的制限によってユーザに支払いを強要することが正しいという意味ではな
い。たとえ小さな注文であってもユーザ全てが FSF へコピーを発注して
くれれば、それだけで FSF は借金をしないで済む。あなたなりに何か貢
献しているのか?
(5) コンピュータ企業が数社集まって、GNU C コンパイラの保守をサポート
するための資金を最近共同出資した。
44
7.2
gnu public license
GNU 一般公有使用許諾書
1991 年 6 月,バージョン 2
Copyright (C) 1989,1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
何人も、以下の内容を変更しないでそのまま複写する場合に限り、本使用許諾書
を複製したり頒布することができます。
はじめに
ほとんどのソフトウェアの使用許諾は、ソフトウェアを共有し、変更するユー
ザの自由を奪うことを意図しています。それに対して、我々の GNU 一般公有使
用許諾は、フリー・ソフトウェアを共有したり変更する自由をユーザに保証す
るためのもの、即ちフリー・ソフトウェアがそのユーザ全てにとってフリーで
あることを保証するためのものです。本使用許諾は、Free Software Foundation
のほとんど全てのソフトウェアに適用されるだけでなく、プログラムの作成者
が本使用許諾に依るとした場合のそのプログラムにも適用することができます。
(その他の Free Software Foundation のソフトウェアのいくつかは、本許諾書で
はなく、GNU ライブラリ一般公有使用許諾で保護されます。) あなたは自分の
プログラムにもこれを適用できます。我々がフリー・ソフトウェアについて言う
場合は自由のことに言及しているのであって、価格のことではありません。我々
の一般公有使用許諾の各条項は、次の事柄を確実に実現することを目的として
立案されています。
• フリー・ソフトウェアの複製物を自由に頒布できること (そして、望むな
らあなたのこのサービスに対して対価を請求できること)。
• ソース・コードを実際に受け取るか、あるいは、希望しさえすればそれを
入手することが可能であること。
• 入手したソフトウェアを変更したり、新しいフリー・プログラムの一部と
して使用できること。
• 以上の各内容を行なうことができるということをユーザ自身が知っている
こと。
このようなユーザの権利を守るために、我々は、何人もこれらの権利を否定
したり、あるいは放棄するようにユーザに求めることはできないという制限条項
45
を設ける必要があります。これらの制限条項は、ユーザが、フリー・ソフトウェ
アの複製物を頒布したり変更しようとする場合には、そのユーザ自身が守るべ
き義務ともなります。例えば、あなたがフリー・ソフトウェアの複製物を頒布す
る場合、有償か無償かにかかわらず、あなたは自分の持っている権利を全て相
手に与えなければなりません。あなたは、相手もまたソース・コードを受け取っ
たり入手できるということを認めなければなりません。さらにあなたは、彼ら
が自分たちの権利を知るように、これらの条項を知らしめなければなりません。
我々は次の2つの方法でユーザの権利を守ります。(1) ソフトウェアに著作権
を主張し、(2) 本使用許諾の条項の下でソフトウェアを複製・頒布・変更する権
利をユーザに与えます。
また、各作成者や我々自身を守るために、本フリー・ソフトウェアが無保証で
あることを全ての人々が了解している必要があります。さらに、他の誰かによっ
て変更されたソフトウェアが頒布された場合、受領者はそのソフトウェアがオリ
ジナル・バージョンではないということを知らされる必要があります。それは、
他人の関与によって原開発者に対する評価が影響されないようにするためです。
最後に、どのフリー・プログラムもソフトウェア特許に絶えず脅かされてい
ます。我々は、フリー・プログラムの再頒布者が個人的に特許権を取得し、事実
上そのプログラムを自分の財産にしてしまうという危険を避けたいと願ってい
ます。これを防ぐために我々は、いずれの特許も、誰でも自由に使用できるよう
に使用許諾されるべきか、あるいは何人に対しても全く使用させないかの、い
ずれかにすべきであることを明らかにしてきました。
複写・頒布・変更に対する正確な条項と条件を次に示します。
GNU 一般公有使用許諾の下での複製、頒布、変
更に関する条項と条件
1. 本使用許諾は、本一般公有使用許諾の各条項に従って頒布されるという著
作権者からの告知文が表示されているプログラムやその他の作成物に適用
されます。以下において「プログラム」とは、そのようなプログラムや作
成物を指すものとし、また、「プログラム生成物」とは、上述した「プロ
グラム」自身、または、著作権法下における全ての派生物;すなわち、そ
の「プログラム」の全部又は一部を、そのまま又は変更して、且つ/又は
他の言語に変換して、内部に組み込んだ作成物を意味します。(以下、言
語変換は「変更」という用語の中に無条件に含まれるものとします。) 本
使用許諾によって許諾を受ける者を「あなた」と呼びます。
複製、頒布、変更以外の行為は本使用許諾の対象としません。それらは
本使用許諾の範囲外です。「プログラム」を実行させる行為に関して制約
はありません。
「プログラム」の出力は、(「プログラム」を実行させて作
成させたかどうかとは無関係に) その内容が「プログラム生成物」である
場合に限り本使用許諾の対象となります。これが当てはまるかどうかは、
「プログラム」が何をするものかに依ります。
46
2. あなたは、どのような媒体上へ複製しようとする場合であっても、入手し
た「プログラム」のソース・コードをそのままの内容で複写した上で適正
な著作権表示と保証の放棄を明確、且つ適正に付記する場合に限り、複製
又は頒布することができます。その場合、本使用許諾及び無保証に関する
記載部分は、全て元のままの形で表示してください。また、
「プログラム」
の頒布先に対しては、「プログラム」と共に本使用許諾書の写しを渡して
ください。
複製物の引き渡しに要する実費は請求することができます。また、あなた
独自の保証を行なう場合はそれを有償とすることができます。
3. 次の各条件を全て満たしている限り、あなたは、「プログラム」又はその
一部分を変更して「プログラム生成物」とすることができ、さらに、変更
版や右作成物を上記第 2 項に従って複製又は頒布することもできます。
(a) ファイルを変更した旨とその変更日とを、変更したファイル上に明
確に表示すること。
(b) 変更したか否かを問わず、凡そ「プログラム」又はその一部分を内
部に組み込んでいるか又はそれから派生した生成物を頒布する場合
には、その全体を本使用許諾の条項に従って第三者へ無償で使用許
諾すること。
(c) 変更したプログラムが実行時に通常の対話的な方法でコマンドを読
むようになっているとすれば、最も普通の方法で対話的にそのプロ
グラムを実行する時に、次の内容を示す文言がプリンタへ印字され
るか、或いは画面に表示されること。
• 適切な著作権表示。
• 無保証であること (あなたが独自に保証する場合は、その旨)。
• 頒布を受ける者も、本使用許諾と同一の条項に従って「プログ
ラム」を再頒布できること。
• 頒布を受ける者が本使用許諾書の写しを参照する方法。
(例外として、「プログラム」自体は対話的であっても起動時の文言
を通常は印字しないのならば、あなたの「プログラム生成物」はこ
のような文言を印字する必要はありません。)
これらの要件は変更された作成物にも全て適用されます。その変更版の或
る部分が「プログラム」の派生物ではなく、しかもそれ自体独立で異なる
作成物だと合理的に考えられる場合、あなたがそれらを別の作成物として
頒布した時は、本使用許諾とその条項はそれらの部分には適用されませ
ん。しかし、それらを「プログラム生成物」の一部として頒布する場合は、
全体が本使用許諾の条項に従って頒布されなければならず、使用許諾を受
ける他の全ての者に対する許諾もプログラム全体にわたって与えられなけ
ればならず、結果として、誰が書いたかにかかわらず、全ての部分に本使
用許諾が適用されなければなりません。
47
このように、本条項の意図するところは、完全にあなたによって書かれた
作成物について、権利を要求したり、あなたと権利関係を争うことではあ
りません。むしろその目的は、作成物が「プログラム生成物」である場合
にその派生物や集合物の頒布を規制することにあります。
さらに、「プログラム」(又は「プログラム生成物」) と「プログラム生成
物」とはならない他のプログラムとを、単に保管や頒布のために同一の媒
体上にまとめて記録したとしても、本使用許諾は他のプログラムには適用
されません。
4. あなたは、以下のうちいずれか 1 つを満たす限り、上記第 2 項及び第 3 項
に従って「プログラム」(又は、上記第 3 項で言及している「プログラム
生成物」) をオブジェクト・コード又は実行可能な形式で複製及び頒布す
ることができます。
(a) 対応する機械読み取り可能なソース・コード一式を一緒に引き渡す
こと。その場合、そのソース・コードの引き渡しは上記第 2 項及び
第 3 項に従って、通常ソフトウェアの交換に用いられる媒体で行な
われること。
(b) 少なくとも 3 年間の有効期間を定め、且つその期間内であれば対応
する機械読み取り可能なソース・コード一式の複製を、ソース頒布
に関わる実費以上の対価を要求せずに提供する旨、及びその場合に
は上記第 2 項及び第 3 項に従って、通常ソフトウェアの交換に用い
られる媒体で提供される旨を記載した書面を、第三者に一緒に引き
渡すこと。
(c) 対応するソース・コード頒布の申し出に際して、あなたが得た情報
を一緒に引き渡すこと 。(この選択肢は、営利を目的としない頒布
であって、且つあなたが上記の (b) 項に基づいて、オブジェクト・
コード或いは実行可能形式のプログラムしか入手していない場合に
限り適用される選択項目です。)
なお、ソース・コードとは、変更作業に適した記述形式を指します。また、
実行可能形式のファイルに対応するソース・コード一式とは、それに含
まれる全モジュールに対応する全てのソース・コード、及びあらゆる関連
のインタフェース定義ファイル、及び実行を可能にするコンパイルとイン
ストールの制御に関する記述を指します。特別な例外として、実行可能な
ファイルが動作するオペレーティング・システムの主要な構成要素 (コン
パイラ、カーネルなど) と共に (ソース・コード又はバイナリのどちらか
で) 頒布されているものについては、その構成要素自体が実行形式に付随
していない場合に限り、頒布されるソース・コードに含める必要はありま
せん。
実行可能形式またはオブジェクト・コードの頒布が、指示された場所か
らの複製のためのアクセス権の賦与である場合、同じ場所からのソース・
48
コードの複製のための同等なアクセス権を賦与すれば、たとえ第三者にオ
ブジェクト・コードと共にソースの複製を強いなくとも、ソース・コード
を頒布したものとみなします。
5. 本使用許諾が明示的に許諾している場合を除き、あなたは、
「プログラム」
を複製、変更、サブライセンス、頒布することができません。本使用許諾
に従わずに「プログラム」を複製、変更、サブライセンス、頒布しようと
する行為は、それ自体が無効であり、且つ、本使用許諾があなたに許諾し
ている「プログラム」の権利を自動的に消滅させます。その場合、本使用
許諾に従ってあなたから複製物やその権利を得ている第三者は、本使用許
諾に完全に従っている場合に限り、引続き有効な使用権限を持つものとし
ます。
6. あなたはまだ同意の印として署名していないので、本使用許諾を受け入れ
る必要はありません。しかし、あなたに「プログラム」又はその派生物を
変更又は再頒布する許可を与えるものは本使用許諾以外にはありません。
これらの行為は、あなたがもし本使用許諾を受け入れないのであれば、法
律によって禁じられます。従って、あなたが「プログラム」(又は「プロ
グラム生成物」) の変更又は頒布を行えば、それ自体であなたは本使用許
諾を受け入れ、且つ、「プログラム」又はその「プログラム生成物」の複
製、頒布、変更に関するこれらの条項と条件の全てを受け入れたことを示
します。
7. あなたが「プログラム」(又はその「プログラム生成物」) を再頒布すると
自動的に、その受領者は、元の使用許諾者から、本使用許諾の条項に従っ
て「プログラム」を複製、頒布、変更することを内容とする使用許諾を受
けたものとします。あなたは、受領者に許諾された権利の行使について、
さらに制約を加えることはできません。あなたには、第三者に本使用許諾
の受け入れを強いる責任はありません。
8. 裁判所の判決、又は特許侵害の申し立て、又は (特許問題に限らない) 何ら
かの理由の結果として、あなたに課せられた条件が本使用許諾と相入れな
いものであったとしても (裁判所の命令、契約、その他によるものであれ)、
本使用許諾の条件が免除されるものではありません。本使用許諾による責
務と、その他の何らかの関連責務を同時に満たす態様で頒布することがで
きないならば、あなたは「プログラム」を全く頒布してはいけません。例
えば、特許権の内容が、あなたから直接又は間接に複製を受け取った全て
の人に使用料のないプログラムの再頒布を許さないものであれば、あなた
がかかる特許上の要請と本使用許諾の両方を満足させる方法は、「プログ
ラム」の頒布を完全に断念することだけです。
本条項の或る部分が何らかの特別な状況下で無効または適用不可能になっ
た場合、本条項のその他の残りの部分が適用されるように意図されてお
り、また、本条項は全体としてその他の状況に当てはまるように意図され
ています。
49
本条項の目的は、特許やその他の財産権を侵害したり、そのような権利に
基づく主張の妥当性を争うようにあなたに勧めることではありません。本
条項の唯一の目的は、フリー・ソフトウェアの頒布システムの完全性を守
ることで、それは公有使用許諾の実践によって履行されます。多くの人々
が、このシステムの一貫した適用を信頼して、このシステムを通じて頒布
されている幅広い範囲のソフトウェアに惜しみない貢献をしてくれまし
た。作成者や寄贈者が他の何らかのシステムを通じてソフトウェアを頒布
したいと決めることは彼らの自由意志であり、使用許諾を受ける者はその
選択を強いることはできません。
本条項は、本使用許諾の他の条項の意味内容が何であるかを完全に明らか
にすることを意図しています。
9. 「プログラム」の頒布・使用が、ある国において特許又は著作権で保護さ
れたインタフェースのどちらかで制限される場合、「プログラム」を本使
用許諾下においた原著作権保持者は、その国を除外する旨の明示的な頒布
地域制限を加え、それ以外の (除外されない) 国に限定して頒布が許され
るようにすることができます。そのような場合、その制限を本使用許諾の
本文にあたかも書かれているかのように本使用許諾の中に組み入れられる
ものとします。
10. Free Software Foundation は随時、本一般公有使用許諾の改訂版、又は
新版を公表することがあります。そのような新しいバージョンは、現行の
バージョンと基本的に変わるところはありませんが、新しい問題や懸案事
項に対応するために細部では異なるかもしれません。
各バージョンは、バージョン番号によって区別します。「プログラム」中
に本使用許諾のバージョン番号の指定がある場合は、その指定されたバー
ジョンか、又はその後に Free Software Foundation から公表されている
いずれかのバージョンから 1 つを選択して、その条項と条件に従ってく
ださい。「プログラム」中に本使用許諾のバージョン番号の指定がない場
合は、Free Software Foundation が公表したどのバージョンでも選択する
ことができます。
11. 「プログラム」の一部を頒布条件の異なる他のフリー・プログラムに組み込
みたい場合は、その開発者に書面で許可を求めてください。Free Software
Foundation が著作権を持っているソフトウェアについては、Free Software
Foundation へ書面を提出してください。このような場合に対応するため
に我々は例外的処理をすることもありますが、その判断基準となるのは、
次の 2 つの目標の実現に合致するか否かという点です。即ち、1つは我々
のフリー・ソフトウェアの全ての派生物をフリーな状態に保つことであり、
もう1つはソフトウェアの共有と再利用とを広く促進させることです。
50
無保証
12. 「プログラム」は無償で使用許諾されますので、適用法令の範囲内で、
「プ
ログラム」の保証は一切ありません。著作権者やその他の第三者は全く無
保証で「そのまま」の状態で、且つ、明示か暗黙であるかを問わず一切の
保証をつけないで提供するものとします。ここでいう保証とは、市場性や
特定目的適合性についての暗黙の保証も含まれますが、それに限定される
ものではありません。「プログラム」の品質や性能に関する全てのリスク
はあなたが負うものとします。「プログラム」に欠陥があるとわかった場
合、それに伴う一切の派生費用や修理・訂正に要する費用は全てあなたの
負担とします。
13. 適用法令の定め、又は書面による合意がある場合を除き、著作権者や上記
許諾を受けて「プログラム」の変更・再頒布を為し得る第三者は、
「プログ
ラム」を使用したこと、または使用できないことに起因する一切の損害に
ついて何らの責任も負いません。著作権者や前記の第三者が、そのような
損害の発生する可能性について知らされていた場合でも同様です。なお、
ここでいう損害には通常損害、特別損害、偶発損害、間接損害が含まれま
す (データの消失、又はその正確さの喪失、あなたや第三者が被った損失、
他のプログラムとのインタフェースの不適合化、等も含まれますが、これ
に限定されるものではありません)。
以上
注意
英文文書 (GNU General Public Licence) を正式文書とする。この和文文書は
弁護士の意見を採り入れて、できるだけ正確に英文文書を翻訳したものである
が、法律的に有効な契約書ではない。
和文文書自体の再配布に関して
いかなる媒体でも次の条件がすべて満たされている場合に限り、本和文文書
をそのまま複写し配布することを許可する。また、あなたは第三者に対して本許
可告知と同一の許可を与える場合に限り、再配布することが許可されています。
• 受領、配布されたコピーに著作権表示および本許諾告知が前もって載せら
れていること。
• コピーの受領者がさらに再配布する場合、その配布者が本告知と同じ許可
を与えていること。
51
• 和文文書の本文を改変しないこと。
52
あなたの新しいプログラムにこれらの条項を適用
する方法
あなたが新しくプログラムを作成し、それを公用に供したい場合は、プログ
ラムをフリー・ソフトウェアにして、全ての人々が以上の各条項に従ってこれを
再頒布や変更をすることができるようにするのが最良の方法です。
そうするためには、プログラムに以下の表示をしてください。その場合、無
保証であるということを最も効果的に伝えるために、ソース・ファイルの冒頭に
その全文を表示すれば最も安全ですが、その他の方法で表示する場合でも、
「著
作権表示」と全文を読み出す為のアドレスへのポインタだけはファイル上に表
示しておいてください。
プログラム名とどんな動作をするものかについての簡単な説明の行
Copyright (C) 19 ○○年、著作権者名
本プログラムはフリー・ソフトウェアです。あなたは、Free Software
Foundation が公表した GNU 一般公有使用許諾の「バージョン 2」
或いはそれ以降の各バージョンの中からいずれかを選択し、そのバー
ジョンが定める条項に従って本プログラムを再頒布または変更する
ことができます。
本プログラムは有用とは思いますが、頒布にあたっては、市場性及
び特定目的適合性についての暗黙の保証を含めて、いかなる保証も
行ないません。詳細については GNU 一般公有使用許諾書をお読み
ください。
あなたは、本プログラムと一緒に GNU 一般公有使用許諾の写しを
受け取っているはずです。そうでない場合は、Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA へ手紙
を書いてください。
また、ユーザが電子メイルや書信であなたと連絡をとる方法についての情報
も書き添えてください。
プログラムが対話的に動作する場合は、対話モードで起動した時に次のよう
な短い告知文が表示されるようにしてください。
Gnomovision バージョン 69、Copyright (C) 19 ○○年 著作権者名
Gnomovision は完全に無保証です。詳細は show w とタイプしてく
ださい。これはフリー・ソフトウェアなので、特定の条件の下でこ
れを再頒布することができます。詳細は show c とタイプしてくだ
さい。
53
上記の show w や show c は各々、本一般公有使用許諾の関連する部分を表示
するコマンドを指します。もちろん、あなたが使うこれらのコマンドは show w
や show c といった呼び名でなくても構いません。さらに、それらのコマンドは
あなたのプログラムに合わせる為に、マウスでクリックしたりメニュー形式に
することもできます。
また、必要と認めた場合には、あなたの雇い主 (あなたがプログラマとして働
いている場合) や在籍する学校から、そのプログラムに対する「著作権放棄」を
認めた署名入りの書面を入手してください。ここにその文例を載せます。名前は
変えてください。
Yoyodyne, Inc. は、James Hacker が開発したプログラム ‘Gnomovision’ (コンパイラにつなげるプログラム) についての著作権法上
の全ての権利を放棄する。
Ty Coon の署名, 1 April 1989
Ty Coon, 副社長
本一般公有使用許諾は、あなたのプログラムを財産権の対象となっている他
のプログラムに組み込むことは認めていません。あなたのプログラムがサブルー
チン・ライブラリであって、あなたがそのライブラリを財産権の対象となってい
る他のアプリケーションとリンクさせることによって、さらに有用なものにし
ようとする場合には、本使用許諾書の代わりに、GNU ライブラリ一般公有使用
許諾書に従ってください。
54
7.3
プリンタの接続
以下の接続法は、福岡大学理学部応用数学科パソコン室での設定です。
下段のツールバーからペンギンのアイコンをクリックして、
Configure → Configure printer(s))
と進む。
KDE コントロールモジュールが起動する。
追加 → プリンタ / クラスを追加
KDE Print (プリンタ追加ウィザード) が起動する。
次 → ネットワークプリンタ (TCP) → 次
IP アドレス 192.168.100.201 又は 192.168.100.202 を入力
する。ポートは 9100 とする。
次 → RAW プリンタ → 次
テスト を選択し、プリンタからの出力を確かめる。
次→次→次
バナーの選択、クォータ、ユーザの設定などを無視する。
一般情報 → 名前をつける
プリンタの名前 (自分で決める) を入力する。例えば pr1
次 → 完了
KDE コントロールモジュールのツールバーにプリンタの名前が表示さ
れる。
プリンタのアイコンを右クリックして、メニューから ユーザの標準に設定
を選択する。
OK
これでプリンタの設定が完了しました。
7.4
余談
職場や家庭で Knoppix からプリンタを接続しようとすると、うまくいかない
場合がおこります。そのときは USB メモリにデータを移して、他のコンピュー
タ (Windows) から印刷できます。
55
7.5
ソフトウェアについての解説
Emacs
テキストエディタです。プログラムのソースや各種の文書の原
稿を作成するときに使います。
Help → Emacs Tutorial
とすると、日本語の入門ガイドが現れます。書籍もたくさん出
版されています。制作者自身の書いた
GNU Emacs マニュアル
リチャ−ド・スト−ルマン 著、赤池英夫 訳
アスキ−・メディアワ−クス、1999/01 出版
ISBN:9784756130020
がお薦めです。
TeX
組み版システムです。ソースファイルを作成して、どんな形の
文書にも組み版できます。特に数式をきれいに作成できるので
数学関係者にはなくてはならないソフトウェアです。いくつか
のバージョンがありますが、LaTeX2ε が標準的です。入門書
として
LATEX2ε 美文書作成入門
奥村晴彦 著
技術評論社、2007/01/05 出版
ISBN:9784774129846
をお薦めします。
講習では出力に DVI ファイルを利用しましたが、PDF ファイ
ルに変換することもできます。
KSEG
定規とコンパスで平面図形を作図するように図形を描くソフト
ウェアです。講座では直線図形と円のみを扱いましたが、曲線
を描くこともできます。詳しくは Knoppix/Math に収録され
ているドキュメント
KSEG examples in package
Examples in Wiki/PPDG
KSEG で遊ぶ平面幾何
56
を参照して下さい。また KidsCindy というソフトウェアもよ
く似た機能を持っています。かわいいキャラクタが現れるので
生徒には好評を博するかも知れません。
Maxima
数式処理ソフトウェアです。多彩な機能を持っています。解説
書としては
はじめての Maxima
横田博史 著
工学社、2006/10/01 出版
ISBN:9784777512010
が出版されています。また、Knoppix/Math に収録されている
ドキュメント
Maxima 入門ノート
はじめての Maxima(改訂 α0 版)
が役に立ちます。
Basic
高校の教科書では、Basic を用いたプログラムが採り上げられ
ています。Knoppix/Math には Decimal Basic というソフト
ウェアが収録されています。
57
7.6
USB メモリに含まれるファイル一覧
text2009_student.pdf
text2009_student.tex
text2009_student.dvi
text2009_body.tex
report01.tex
report02.tex
report03.tex
kseg
---------------
text(student 版) の pdf ファイル
text(student 版) の TeX ソースファイル
text(student 版) の TeX 出力ファイル
text の本文を記述した TeX ソースファイル
2 時間目のレポート原稿
3 時間目のレポート原稿
5 時間目のレポート原稿
--- KSEG 関係のファイルを収めたディレクトリ
chuten01.seg --- コンパスだけで 2 点の中点を作図する
enshukaku01.seg --- 円周角が一定であることを実感する
gaishin01.sec --- 外心を作図するコンストラクション
gaishin01.seg --- 外心の性質を理解する
jushin01.seg --- 重心の性質を理解する
naishin01.seg --- 内心の性質を理解する
pythagoras01.seg --- 三平方の定理を理解する
maxima --- Maxima 関係のファイルを収めたディレクトリ
maxima_sample01.mc --- 関数と接線のグラフを描く
58