未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

セキュリティ&プログラミングキャンプキャラバンで長野に行った。

昨日はセキュリティ&プログラミングキャンプキャラバンで長野 *1 に行った。場所は長野工業高校。約40名の高校生と一般(大学生など)が参加した。大半は高校生である。

いつもの、id:sonodamid:wakatonoid:hyoshiokid:amachang の超豪華講師陣、そして特別にキャンプの講師を勤めた滝崎さん*2。わたしは、お題的には、前回の岡山と同じ内容を40分程度でざざざとお話する。最後にフリーディスカッション。

自分のセッションで出ていた質問。

オープンソースにかかわるきっかけ。id:amachang からの質問。その話長いよ。10年前シリコンバレーにいたとき、1998年1月23日だか24日だかに今はないNetscapeという会社がブラウザのソースコードを公開すると発表した。当時わたしはあるデータベース会社のエンジニアをしていてデータベースのエンジンの部分を開発していた。大規模商用ソフトウェアの現場にいた。昔からフリーソフトウェアというのがあるというのは知っていたし、使ってもいたけど、自社の製品の利益の根幹であるソースコードを公開するという発想はまったくなくて、それにとてつもない衝撃をうけた。一人の人間として商用ソフトウェアの開発現場を心底楽しんでいる自分もいれば、オープンソースの世界にわくわくしている自分もいる、180度違う世界なのに同時に楽しんでいる自分がいる。その後、日本にもどってきて、MIRACLE LINUX (http://www.miraclelinux.com) を立ち上げてオープンソースを仕事にして、今にいたる。みたいなお話をした。はしょったけど、いろいろな思いはある。

前列に座っていた、高校生から「最初のコンピュータは」という質問もいただいた。30年以上前のお話をした。http://d.hatena.ne.jp/hyoshiok/20081124#p1 のあたりの思い出話をした。当時パソコンもなくて、中学生の時に出会った電子計算機のお話をした。大学に入学した1977年頃にやっとAPPLE IIとかがでてきた、当時7-Elevenで時給400円でバイトをしていたのだが、それを貯金して、パソコンを買ったお話をした。パソコンで何かをやりたいからパソコンを買ったのではなくて、自分のコンピュータが欲しいからパソコンを買ったのである。目的と手段が逆だろうと言われなくもないが、いいの趣味なんだから。

というような、その話、長いよという類の話をいくつかさせていただいた。楽しんでいただけただろうか。

最後のセッションは恒例(といっても岡山*3 に続いて二度目)のQ&Aコーナーとフリーディスカッションである。そこで出ていた質問。

ソースってなんですか。高校生からの質問である。大変失礼した。情報科の君達にとって、アルゴリズムとかプログラムという言葉は知っているが、ソースとかソースコードというのは知らない言葉だったんだ。それをわたしは、オープンソースだとかなんだとかソースを公開してとか延々お話ししていたわけだ。反省。深く反省。そして、質問をしてくれた君、ありがとう。わたしは、頭真っ白、顔面蒼白、しどろもどろになりながら、えーと、ソースというのはですね、うーん、なんだろう、天野さん、ソースって何ていったらいいですかね、と丸投げ。プログラムを書いて、人間が読める、例えば Hello Worldのプログラムだったら、main.cとか、そーゆーファイルをソースコードとか、ソースファイルとか、ソースプログラムとか言います。それをコンパイルした結果をバイナリとかエクゼとか実行ファイルとか言うけど、それは人間は普通読めません…などと説明してくれた。まだまだ修行が足りない。勉強になった。

どんなオープンソースプロジェクトに参加すればいいですか。後ろの方に座っていた、大学三年生からの質問である。うーむ、これも難しい質問だ。またまた天野さん、どうですかね?そーですね、最近あるサービスを公開したら、海外から英語でライセンスの質問が来たのだけど、公開すれば今日から君もオープンソースプログラマだ、みたいな回答で、いやいや、そうじゃなくて、既存のいろいろある、オープンソースプロジェクトで、どのようなプロジェクトに参加したらいいのでしょうという質問だと思うと話を戻す。

なんでもいいのだけど、例えば、rubyなんかは日本語の開発者メーリングリストがあるから、それを購読してみたらどうだろう。ruby-devというメーリングリスト*4は日本語だし、英語の敷居がないのでいいかもしれない。質問者頷く。

関連して天野さんが例えばrubyソースコードを読むのはどうしたらいいすかねと質問してきたので、これも長くなるよと断りつつ答える。インターネットで検索すれば、「ruby ダウンロード」、rubyソースコード*5があるので、それをダウンロードする。READMEにビルド方法が書いてある。./configure; make などとするとビルドしてくれる。ビルドしたrubygdbを利用して実行する。emacsソースコードを読むのだけど、先刻紹介したRubyソースコード完全解説(RHGと呼ばれている)*6などを参考にすればいいと思う。ruby-devには毎日ruby処理系のバグ報告がされているので、それを見ながら適当なバグを直してみるといいと思う。どこから読むというより、実際のバグを直すということで、rubyの土地勘をやしなっていくというのが、ソースコードを読む力をたくわえて自分のためにもなるし、バグを直すので、みんなのためになって世間から喜ばれるかもしれない。最近、自分もruby-devで流れていたコアをはいてrubyが死ぬというバグがあったので、それを試しに直してみたら*7、いつのまにかに、まつもとさんがそのパッチをとりこんでくれて嬉しかった、というエピソードを話た。

フリーのアクセスポイントについて。滝崎さんが回答。

マイコンLispの処理系をつくるには。Lisp処理系と言えば、計算機の構造となんちゃらを読んでSchemeの処理系でも作ればいいんじゃないですかね、と適当なことを答えるが、横から、呪文ですね、なんですか、とツッコマれる。気をとりなおして、lispというのは今年生誕50年になる古い言語で、lispに魅了された人はいっぱいいて、人の数ほどの処理系、大きなものから小さなものまで、いっぱいある。計算機構造のなんちゃらという本*8は、その中でSchemeという処理系について書かれているので、参考にして作ったらどうかと答えた。しかしわたし自身lispの処理系を作ったことがないので、それでいいのか定かではない。天野さんもSchemeの処理系を作った経験から回答していた。Javascriptで50行ちょっとで書いたそうだ。すげー。

毎回、このフリーディスカッションはいろいろな話題が出てライブセッションとして非常に楽しいし充実している。参加者と講師陣の絶妙なコラボレーションによって始めて成立する。講師陣を含めた参加者全員で楽しめればと思う。今回参加してくれた人達は、楽しんだのだろうか?感想を書いてくれた受講生*9がいたので、トラックバックをしておく。

皆さんありがとう。