フリーソフトウエアに対する考えかた(好き勝手に書きました)

ぼくは,もの作りがだいすきである.むかしっから,そうである.

むかしは糸ノコやドリルやヤスリで切ったり貼ったり削ったりして 作るようなモノが多かったのだが,ぼくも世の流れにならってか,最近は, 作るというと,ソフトウエアの割合が非常に大きくなってきた.

フリーソフトは,作っていておもしろい.というのは,発表の場があるからである.

空きカンや竹ひごからなにか作っても,自分の部屋に飾って,たまに友達に 見せびらかして,おわりである.しかし,ソフトウエアなら,フリーにして インターネット上で全世界に配布して,使ってもらうことができる. こんなおもしろいことはない.

だから,インターネットは,すばらしい道具だとおもうのだ.

以前には,面白いものを作ったり,ちょっとしたいいことに気がついたり, とてもすばらしいアイディアをひらめいたりしても,それは自分とそのまわりでしか 共有することはできなかった.しかし,今はそういったすばらしいアイディアや 作品を,世界中の人々と共有できるのである.

だから,フリーソフトウエアは,作ってておもしろい.作っている最中にも, 常に作品の向こう側に,完成した暁には使ってくれるであろうひとたちが 見えかくれする.だから,やる気も湧いてくる.

ぼくはアマチュアで作っているわけだから, 気が向くまま,好きなものを好きなように作る.

バグや手抜きはちょっと恥ずかしいこともあるけど, それを修正していくことよりも,新しいものを作っていくことのほうがおもしろい. そんなわけなので,暇をみては古いプログラムの保守とバージョンアップも していきたいとは思っているのだが,基本的には,新しいものの開発が メインになっている.

Cを使う理由

たいていは,C言語で書いている.これには理由があって,

てなことかな.

でも最近は,PerlやJavaをやって,高級言語に傾いている.
ちょっとなにか書くには,Perlだと楽でいいよね.GUIならTcl/Tkかな.

ぼくはコンピュータに関しては非常に保守的で, 「いいものかどうか」より,「普及しているかどうか」を重要視することがある.
フリーソフトは,いろんな人に使ってもらうためには, けっきょくはその時点でもっとも普及している言語やツールで 書きたいと思っているから,やはりCということになってしまっているのかなあ.

C++ もいいんだけど,僕の書くくらいの規模のプログラムだと,とくに必要性を 感じない.C言語でオブジェクト指向で書く方法を身につけてからは, さらにその必要性を感じなくなった.

結局のところ,CだろうがC++だろうが,きれいに書けばきれいになるし, オブジェクト指向で書けばオブジェクト指向になるわけであって, ちゃんと書けるならどちらでもかまわない.それならコンパイラが 普及していて,万人が読み書きできるCで書いたほうがいいだろう,と思っている.

とくに,万人が読み書きできるということは大きい.その理由は, 次章の「フリーで公開するということ」にある.

フリーで公開するということ

フリーで公開していくことに関しては,一つの大きなメリットがある. それは,確実にプログラミングの技術が上達する,ということである.

ぼくの書いたフリーソフトを見るとわかるんだけど,昔のものは,まあ,ひどい. よくもまあこんなプログラムを公開してたもんだと自分で恥ずかしくなってしまう.

しかし,年月が経つにつれ,プログラミングの技術は, かなりまともに近付いていっている(いまだにまともとはいえない部分も多いけれど, それはそれとして).それは,僕のプログラムを年月を追って見ていく (そんなことをするような暇な人は少ないと思うけど)だけで,よくわかる.

だからといって,「フリーで公開することにより,これこれこういうような 助けを得ることができた」というような,直接的な理由がそれほどあるわけではない.

ぼくは,これからの時代は,自分の技術を囲い込むような時代ではないと思う.

いままでは,自分のもっている技術は,ノウハウとして,自分の中だけで しまっておいたほうが,よかったのかもしれない.そうすれば,会社や 学校といった,ある決まった集団の中で,特別な存在になれたからだ.

しかし,これからはインターネットの普及で,情報は至るところにとびかう 時代になるし,また,転職とかも当り前の時代になってくる.社内での 実力ではなく,もっと一般に通用するグローバルな実力が重要になってくる.

だから,(転職などのことも考えると)自分の中だけに技術を囲って, 特定の小さな世界の中で特別な存在になるのではなく, いろいろと教えあって,会社ならその部所全体でスキルを高めて, いかに他人とうまくやりとりして,自分のグローバルなスキルを いかに効率良く高めていくか,ということが重要になってくると思う.

けっきょくは,それが自分のスキルをもっとも効率良く高めていける 方法なのだと思う.重要なのは,特定の小さな世界の中で特別な存在に なることではない(だって転職するかもしれないし,リストラだってされるかも しれない.そもそも会社がつぶれるかもしれない).一般の世界の中で 通用する,グローバルな実力を身につけることが重要なのだ.

という考えもあるので,ぼくは基本的には自分の知っていることはどんどん 教えていくし,自分で書いたプログラムは,どんどん公開していく. それがたとえ非常に汚いソースだったとしても,それはそれとして,公開していった ほうがいいとおもう.駆け出しプログラマの場合は,とくにそうである. 「もっと上達したら,フリーソフトを書いてみたい」 「まだ他人に見せることができるような実力ではない」 なんていってたら,いつまでたってもフリーソフトなんて書けない.

プログラミングに関して,ひとつ確実にいえることがある.それは,
「閉じた世界の中で書いていては,いつまでたっても上達しない」
ということである.

ちょっとした役にたつプログラムを書いたとき,それを公開しないことは, わりと良くないことだと思う.

これは,「そんなの別に書いた人の自由ではないか」と言われそうなことでは あるが,ぼくに言わせると,
「駅への道がわからないときに,自分は他人に聞きはするが,自分が聞かれた ときには『よくわからないから』などと言って,けっして教えてあげない人」
と同じに見える.
もしくは, 「テスト前に,皆で教えあっているときに,自分は他人に聞きはするが, 自分が聞かれても,けっして教えてあげない人」
と同じに見える.
つまりそれは,「本人の自由」という次元の話ではなく,人道的な問題なのだ. ここまで言うと,大げさではあるが. (そのかわり,自分は絶対に他人には聞かないし,他人の書いたフリーソフトや ツールは絶対に使わない,というポリシーなら,それはそれで納得はできるが)

だからせめて,自分の所属している組織のなかでだけでも,公開する必要は あるとおもう.

と,ここまで書くとかなりおおげさではある.これらのことは,他人に強制したり しているわけではない.単にぼく自身がそう思っているのでぼくはそれを 実行しているだけであり,もしもそれに共感してくれる人がいれば,一緒に 協力しあってスキルを高めあっていこう,というだけである.

フリーソフトウエアの世界の根底には,
「みんなで助け合って,みんなで幸せになろう」
という考えがある.

役にたつ知識やツールはお互いに共有しあって,(グローバルな)スキルも 高めて,仕事も効率良くこなして,残業時間も減らして,みんなで幸せになろうよ, と思っている.

そういう意味では,社内や部所ごとにひとりずつ,社内のちょっとしたツールを 書く専門の人がいてもいいように思う.こういった,ちょっとしたツールを書く, という仕事に対しては,すごく意識が低くて,「とてもひまなときにちょっと やっておくもの」というような考えが根強いように思うのだが,忙しいときこそ ツールをガンガン作って,効率良く作業を進めるべきだ.ひまなときには, ツールを作るための土台になる勉強をするべきだ.(perl を勉強しておくとかね)

プログラマをやってるひとが,何百行もあるテキストデータを, 一生懸命表に編集しなおすようなことをしてはいけないし, そういうようなことを「よくがんばっている」と評価してもいけないと思う.
そういうことを一生懸命やってはいけない. perl で html に変換するようなスクリプトを1時間かけて書けば, 数10秒で終ってしまうことなのである.しかもそれなら,今後,あらゆる応用が きくのである.


メールは kozos(アットマーク)kozos.jp まで