オープンソースシステム科ブログ

日本電子専門学校「オープンソースシステム科」の最新情報を発信しています

2009年03月13日

カテゴリー: イベント  |  学習・授業関連

【特別授業】まつもとゆきひろ×日本電子専門学校オープンソースシステム科 (その2)

前回に引き続きまして、
オープンソースカンファレンス2009 Tokyo/Springで行なわれた
特別授業「まつもとゆきひろ×日本電子専門学校オープンソースシステム科
の様子をお送りします。

_MG_8804.jpg


今回は7チーム中5チーム目の「ひつじさん」チームより、
リーダーの浜中君が質問します。

pict0049.jpg

Q.Ruby以外の言語をつくろうと思ったことはありますか。

ま.えっと、Ruby作る前はいっぱいいろいろつくってましたので、
  そういう意味では、あります。
  で、これから先Rubyじゃない言語をつくるかっていう話ですけど、
  ゼロとは言わないけどちょっと可能性低いかな、と。
  つまり自分のやりたいことがRubyの周回にまだまだ残っているので
  それをほったらかして他の言語をつくろうっていう気は
  今のところないですね。
  最近プログラミング言語をつくろうっていう人が増えてきているので、
  ま、そういう人たちに任せてもいいかなみたいな(笑)
  ふうに思っております。

Q.Rubyでまだやりたいことが?

ま.そうですね、Rubyの中で、っていう意味ですね。
  Rubyのプログラミング言語に、こんなものを入れたい、
  みたいなのがたくさんある。

Q.例えば、とかありますか。

ま.例えばですね、Rubyって既存のクラスの中身でも
  書き換えられちゃうんで
  極端な話例えば整数の1+1が4になるようことを
  書こうと思ったら書けるんですよ。
  でもそしたらみんなギャッ!って言いますよね(笑)。
  「なんか計算したら違うんだけど」みたいなプラグインは
  普通は使えないんですけども。
  それっていうのは、Rubyは自由度がある代わりに
  みんなに迷惑かけることができる、
  って言う意味だと思うんですよ。
  で、その変更をですね、ある、namespaceっていうパッケージとか、
  そういうようなかたちで区切って、
  自分の責任の範囲内では何をやってもいいけど
  それが他のチームに迷惑をかけないように分離することは
  できるようにしたいんですね。
  そういうニーズがあって、そういう機能があると、
  ま、Javaとかはそういう機能があるんですけど、パッケージとかね、
  で、そういう機能があると安心して例えば
  「500人のチームでひとつのソフトウェアを開発しましょう」
  っていう話ができると思うんですね。
  そういう点においてRubyは言語的な強制能力が低いんで、
  「みんなに迷惑になることはやらないようにしましょうね」
  って言えば良いわけなんだけど、
  ただ冒険したい人たちにとっては、
  「ここの範囲内で安心して無茶ができる」
  って言われたら安心して冒険できるじゃないですか。
  そういうことをさせてあげたいんで、
  その辺ちょっと将来考えたいなあっていうふうに思ってます。
  あとは、既存のクラスを継承して新しいクラスを作るときに
  今だと持ってきたものに新しいものを追加するだけなんだけど、
  それを混ぜ方をいろいろ工夫したりみたいな、
  無茶をしたい時、今の仕組みだけだとちょっと
  きれいにできないんで、
  無茶をやってもガードレールがあるっていうか、
  崖から落ちないで済むような機能を今後提供していきたいな、
  というふうに思っています。

Q.それって結構時間かかりそうなんですか?

ま.そうですね。そういう機能をやりたいけど、
  Rubyそのものをちょっと速くしたいとか
  いろんなコンピュータで動くようにしたいとか
  そういう日常的にやることもあって、
  時間はかかりそうですね。
  僕、ちょっと死ぬまで退屈しないで済みそうです(笑)。

Q.死ぬ時はパソコンの前で、とか(笑)。


_MG_8927.jpg

ま.ああ、できれば(爆笑)。

Q.そういえば、なんですけれども、
  半年に一回ぐらいでもいいんで、
  日本電子の講師に・・・(爆笑)
  (注.本日3度目のおねだり!)

ま.(笑)考えておきます。

司会者N.いやあ、まつもとさんは松江ですから遠いですし、
  私の立場からはお願いしづらいことを、
  学生たちが次々と言ってくれるなんて・・・
  なんて良い学生たちなんでしょう(笑)。


次の質問は「一休さん」チームのリーダー、玉置さんからです。
語学に関心が高いようです。

_MG_8940.jpg

Q.ITエンジニアにとって英語力は必要ですか。

ま.絶対ないとご飯が食べられないほど必要ではないけど、
  あったらすごく便利だと思います。特に読む力。
  何かって言うと、結局みなさんがどっかの会社に就職して
  英語を使ってビジネスをするとか、海外出張になりますとか
  そういうケースはそんなにたくさんはないと思うんですね。
  だけど、この業界の新しい情報って
  たいがい英語で発生するんですよ。
  例えば上の本屋さん(注:1階ロビーに出展している
  オライリージャパンさんなど)で本いっぱい売ってますけど
  かなりの割合で翻訳書ですよね。元の情報が英語なんですよ。
  で、その情報を英語のうちに入手できると、
  人より早く情報が手に入れられるわけですね。
  その時間差っていうのは、
  皆さんの差別化になるんじゃないかなっていうふうに思います。
  エンジニアの中には結構厳しい環境で働いている人が多い、
  っていう話をしますけど、
  それっていうのは差別化ができるかどうかで
  待遇が変わってくるんじゃないかなあって思うんですね。

  pict0050.jpg

  つまり、自分が周りにいる100人のエンジニアと
  どこも差がないんだったら、
  もしかしたらちょっとでもパフォーマンスが悪かったり
  働きが悪かったりしたら切られてしまうかもしれない
  っていう不安がありますよね。
  ので、体を壊してでも働かないといけない
  と思うかもしれないですけど、
  でも、もし自分に自信があって
  「僕は周りの人よりも、この点においては優れているから」
  と思えたら、ちょっと余裕を持って、無茶なことは断れる、
  ってできるんじゃないかなあというふうに思うんですね。
  その辺が3Kだか7Kだか知りませんけど(笑)、
  厳しいエンジニアとそうでないエンジニアの
  違いを生むんじゃないかなあと思うんですね。
  そういうものの一環として、
  英語で情報を手に入れる力が大事だと思います。

Q.日本人のエンジニアは、海外から情報が発信される時
  英語なのでハンディキャップがあると思うんですけど、
  まつもとさんが日本人のエンジニアでよかったな、
  と思うことはありますか。

ま.日本のご飯がおいしいんで(笑)、
  日本人であって嬉しいなあと思ったことはありますね。
  あとRubyを英語で使っている人がすごく多いんで、
  もうちょっと英語が上手だったらなあと思うことと逆に、
  英語がもうちょっとよく使われる国に生まれてたら
  楽だったよなあ、と思うことも、あります。
  あとは日本というのは国の規模の割には
  コミュニティ活動が盛んな国なので、
  オープンソースコミュニティとか、
  で、たぶん他の国、もっとIT人口のたくさんいる
  アメリカとかでも、こういうオープンソースカンファレンス
  みないなのが全国で津々浦々で開かれる、って言うのは
  かなりレアな話なので、
  そういう意味でコミュニティ活動が活発で、
  それに参加することによって、さっきの差別化と同じだけど
  ITエンジニアとしてのスキルを身につけたり、
  自分をより有利な立場に持って行くことがしやすい、
  っていうことは日本の恵まれた環境なんじゃないかな、
  というふうに思います。

Q.TOEICとかで言えば、どれくらいの点数が必要ですか。

ま.あー、僕TOEIC受けたことないんで(笑)。
  ただ重要なのは、伝えたいことがあるかどうか、
  っていうこと。
  つまり外人と話をする時に、
  自分の持っている情報を欲しいから
  外人は話をするわけですよね。
  そうすると、むしろ
  「おまえの英語が上手かどうか」というよりも、
  「おまえの話が聞く価値があるかどうか」の方が
  外人にとっては重要かもしれない。

  _MG_8782.jpg

  もし僕のしゃべりに価値がないんだったら、
  「おまえ英語下手くそだから
   おまえの話なんかもう聞かなくていい」
  って追い払われちゃうし、
  僕の話に価値があるならば
  「いや、下手くそだけど、話聞きに行って
   面白かったから、いいや、我慢して聞く!」
  って言ってもらえるんで、
  そっちの方が、何を伝えるか何を聞くか、
  って言うことの方が大事なんじゃないかな。
  あと、それはしゃべる方だけど、
  逆に聞く方、情報を入力する方は
  時間をいくらかけてもいいし、
  辞書をいくら引いてもいいんで、
  TOEICとはまたちょっと違う、
  制限時間内にどのくらい点を取るかとか
  単語をどのくらい覚えているかとか
  違うニュアンスなので、
  エンジニアとして必要な英語っていうのは
  TOEICレベルとはちょっと違うものなんじゃないかな、
  逆にもっと低いレベルで十分じゃないかな、と思います。


次の質問は最後のチーム、サンプラザ国際チームのリーダー、
金さんです。このチームは唯一の留学生だけからなるチームです。

pict0058.jpg

Q.言語をつくるために、
  エンジニアとしての技術力も必要だと思いますが、
  その他に何か「これは勉強しておいた方がいいよ」
  と思ったことがありましたら、是非教えてください。

ま.はい、えっと、ま、プログラミング言語をつくる人が
  どのくらいいるか知りませんけども(笑)、
  えっと、プログラミング言語っていうのは非常に特殊なソフトで、
  さっきもちょっと話が出たんですけど
  こう、ソフトウェアサイエンスのあらゆる領域に
  関わってくるんですねえ。
  プログラミング言語そのものも言語理論とか属性文法とか、
  人間の書いたプログラミング言語をコンピュータに
  解釈させるための理屈みたいなのがあって、
  それもひとつのコンピュータサイエンスの領域ですし、
  それ以外にも例えばクラスライブラリを作ったら、
  文字列のクラスを作るっていうことは
  文字列に対する処理ですね、検索、この文字列の中に
  この文字列は含まれますか含まれませんかとか、
  それからソート、順番を並び替えるとか、
  そういういろんなアルゴリズムが
  言語の中に必要になるんですね。
  プログラミング言語を作るっていうことは、
  コンピュータサイエンスのほぼあらゆる領域に
  少しずつ接する、っていうことなので、
  僕はよく
  「プログラミング言語はコンピュータサイエンスの
   総合芸術です」
  みたいな言い方をするんですけど、
  いろんな領域について勉強する必要があるというか、
  勉強になります。
  僕がプログラマとして優れているとするならば、いや、
  優れているかどうか皆さんも知らないと思いますけど(笑)、
  そういう経験によってコンピュータサイエンスの
  いろんな領域に実際に接して自分でプログラムする
  機会があった・・・
  みなさん例えば正規表現ルーチンとか書いたことないですよね。
  そういうことを実際に自分でやって、
  やるために勉強したことがあるかどうか、っていうことが
  優れたエンジニアになることだと思うので、
  そういういろんな経験が必要になります。

  _MG_8880.jpg

  えっと僕の知っている優秀なIT関係のエンジニア、
  特にプログラマの人たちは、
  コンピュータサイエンスのアルゴリズム、
  データ構造にかなり深い知識を持っている人が多いです。
  世間のプログラマの仕事の多くはですね、
  アルゴリズムとか全然関係なくて
  「こっちの属性をこっちで書き換えて」とか
  そういうものが多いんですけど、
  ただ、そこでアルゴリズムが関わるような領域まで
  踏み越えるエンジニアって言うのは
  一歩も二歩も先を行ったエンジニアで、
  そういうエンジニアの待遇っていうのは
  他の人よりもずっと良くなる、っていう傾向がある、
  というふうに思います。
  で、大事なのは「アルゴリズムとデータ構造」です!(笑)


司会者N.はい、ありがとうございました
  「総合芸術」ですね。これ是非皆さん覚えておいてください。

ま.いえいえ、そこはいいです!(笑)


これで全てのチームからの質問は終わりました。
ここからは1年生なども含めて、
リーダー以外からの質問も受け付けました。
あ、まずは1年生の高尾君から質問のようです。


_MG_8972.jpg

Q.おヒゲはどこまで伸ばすおつもりでしょうか(笑)。

ま.あ、近いうちに剃ります。(一同、エエーッ!)
  あ、このヒゲは割と伸びたり縮んだりしてるんで(笑)。

N.完全に剃っちゃうんですか。

ま.えっと、剃ったあと数日放置すると元通りになるんで(笑)。
  ほんとはもうちょっと男前だったら
  イチローっぽい感じを目指しているんですが(笑)、
  そうはいかないですね。

N.プログラミング言語開発者はヒゲが大切なんですよね。

ま.ああ、そうですね、はい。
  その記事を読んで以来、ヒゲを生やしているんですけど(笑)。
  あ、でも今のネタはわかる人にしかわからない。

  VX1G7404.jpg

  4年くらい前にイスラエルの人がですね、
  「成功するプログラミング言語の設計者はヒゲがある」
  っていうブログを書いたんですよ(笑)。
  で、FORTRANっていう、一時一世を風靡した
  プログラミング言語なんですけど、ヒゲが生えてるんですねえ。
  それからJavaの開発者もヒゲが生えてるんですね。
  C++の開発者もヒゲが生えてるんですよ。
  Perlをつくった人もヒゲが生えてるんですね(笑)。
  で、COBOLってもう一時の人気もないんですけど
  これつくったの女の人なんでヒゲないんですよ(爆笑)。
  で、Pascalっていう20年30年前までは教育用で
  非常に有名だった言語なんですけども、
  これもあんまり今は聞かないんですけどヒゲがないんですね。
  っていう話があって、
  Rubyの時にどっからかダウンロードした僕の写真があって
  その時ヒゲがなかった。
  「ヒゲがないからこれはどうか?」って書いてあって、
  悔しい!とか思って(笑)、
  それ以来ヒゲを生やしてるんですけど(笑)。
  それが出た後にRuby on Railsが出てきて大人気になったので、
  ヒゲの効果って実はあったりするんじゃないか(笑)、
  普段ジンクス信じるタイプじゃないんですけど。


次は最後の質問。一年生の高原君から。

Q.viとEmacsとどっちが好きですか。

ま.(即座に)僕はEmacs派ですね。

(注.viもEmacsもエディタというジャンルのソフト。
   エディタとはテキスト編集のためのソフトで、
   プログラマにとって一番大切な道具。)

ま.生まれた時からEmacs、じゃないですけど(笑)、
  朝から晩までEmacsです。
  プログラムを作る時もEmacsだし、
  メールを読む時もEmacsだし、
  あとなんだろ、日記を書く時もEmacsだし、
  ほぼ全てEmacsです。
  で、残念ながらですね、Webを見る時だけはFirefox(笑)。
  EmacsのWebブラウザはまだちょっといまいち表示しないし、
  Javascriptも理解してくれないんで、
  その時だけはFirefoxを使ってます。
  が、テキストエリアの入力の時はEmacsを立ち上げます(笑)。


Emacsかviか、というのはプログラマにとって重要な問題で、
Emacs派とvi派のエディタ自慢合戦は、
時にはちょっとした論争になったりもします。
まつもとさんもWeb上でそのあたりについて触れていらっしゃるようです。
是非読んでみて下さい。


さて学生にとって夢のような時間も終わってしまいました。
あと数時間後には松江の自宅に戻るために機上の人となる
まつもとさんと、みんなで集合写真。良い記念になりました。

_MG_8983.jpg


まつもとさんは全ての質問に対し、みんなにわかりやすい言葉で
とても丁寧に説明してくださいました。
すごく高いレベルにいる方なのに、こんなに私達のレベルまで
下りてきて話してくださるなんて、思ってもいませんでした。
優秀なエンジニアほど、わかりやすく説明できるのだ、
自分達がそのことを忘れてはいけない、と強く思いました。

とにかくものすごくたくさんの勇気をもらった気がします。
トップレベルのエンジニアがどんなことを考えているのか、
すぐ近くで感じることができ、自分も同じレベルまでは
行けないとしても、この業界でなんとかやって行けそうな
勇気をもらえたのです。まつもとさん、遠くからわざわざ
私達のためにありがとうございました!