2006-04-07
■ 研究と開発の谷間 
Haskellとか関数型言語とか日ごろお馴染みでないことを書いたおかげでなかなか垣間見れないお隣さんを発見した。
コンピュータサイエンスの研究者と現場の人間というのはほとんど交流がない。企業は大学が有用な研究をしていないと考えているし、大学は企業があまりに短期的な収益を追い求めていると考えている。双方の立場には絶望的なほどの深い谷がある。
文句を言ってばかしではいけない。できる事を考えてみた。
企業は大学に物申そう。
どのような機能を大学に求めているか明示的に宣言しよう。人材の育成か?教育か?研究か?大学の研究が企業にとって魅力的ではないとしたらそれはなぜなのか?明示的に宣言しよう。
例えば大学卒業生は企業で即使い物になるのか?そもそも即戦力として期待していないとしたら大学は何を教育しているのだろう?単なる教養課程を修了しただけの知識でいいのか?大手コンピュータベンダーなんかは新卒採用者を何ヶ月も新人研修と称して教育をしているが、これって大学での教育がまったく無駄だっていうことにならないか。ちょっと極論だが、企業でやらねばならないこととは到底思えないようなプログラミング入門とかをなぜ大学で教えないのか?
ソフトウェアの開発実習経験もないというのはいかがなものか?全員プログラマになるわけではないから必修科目でなくてもいいがCのプログラムぐらいは普通に書けるようになってほしい。
職業訓練としてプログラミングは必要とされていないと大学は考えているのだろう。確かにプロのプログラマの需要は低い。だからと言ってそのような教育をしなくていいと言うことではない。
大学は企業とコラボレートの場を作ろう
シリコンバレーにいたときの話である。毎週金曜日の午後、スタンフォードのデータベースグループが主催するデータベースの公開ワークショップがあった。企業の現場の人がいろいろなお題をもってプレゼンをする。それを学生や企業からきた人々がわいわい突っ込む。データベースの研究と言うのは実装があって何ぼの世界だから技術に対する深い理解は大学よりも企業にあったりするので、このライブでの議論と言うのは大学にとっても非常に意義がある。データベースだけではなく、OSの研究なども実装があって何ぼの世界である。実装と理論の絶妙なバランスが必要である。そのような場を大学が提供する。
関数型言語の有効性を示そう
その言語が本当に有効だというのならその有効性を分かるように実例で示そう。Haskellの有効性はAudrey TangがPugsを作ったから広く知られるようになった。その成果を利用しないとしたらHaskellの研究者は相当の馬鹿者だと言われてもやむをえないと思う。
http://d.hatena.ne.jp/sumii/20060404/1144111484
他の例として、(あくまで一例なので他意はまったくありませんが)日本の一部のコミュニティではPugsが非常に話題になっているようですが、論文はHaskellワークショップにrejectされたようです(違っていたら教えてください>知っている方)。おそらくプログラム委員も迷ったと思うのですが、あくまで学会なので、テクニカルにすごいというわけではない、と判断されたのだと思います。
http://wiki.perlchina.org/main/show/haskell%20workshop%202005 を読め。
# sumii 『ご意見、感謝します。教育については我々も本当に必死に努力している「つもり」なのですが、ごく一部以外、(たとえば他の分野の人から反対されて)なかなかうまくいきません…。たとえば関数型言語や計算機科学一般について非常に強力なカリキュラムのある、東京大学理学部情報科学科や大学院情報科学研究科コンピュータ科学専攻の平均的な卒業生であれば、企業の「プログラミング入門」の大半はまったく不要だと思うのですが、それすら違うのでしょうか…
そのリンク先は見ましたが、ちょっと「読め」という意図がわかりませんでした。(以前からある本家の)Haskellワークショップというのはhttp://www.cs.uu.nl/~daan/hw2005/のことなのですが…。http://svn.openfoundry.org/pugs/docs/talks/READMEにも「Haskell Workshop 2005 (rejected)」とあるようです。私自身は(厳密な意味で)「Haskellの研究者」ではないのと、Haskellワークショップの委員でもないので、本当の経緯はわかりませんが…』
# sumii 『すみません、「情報科学研究科」→「情報理工学系研究科」です。現在の所属と名称を混同してしまいました。』
# sumii 『Pugsももちろん素晴らしいですし、Haskellの著名研究者であるPeyton Jonesは、ICFPという関数型言語の学会(Haskellワークショップなども併設)でPugsのTシャツを着ていました。ただ、http://www.haskell.org/haskellwiki/Haskell_in_practiceにあるように、Pugsが最初ないし唯一の実用というわけではない、というつもりでした。Galois Connection (http://www.galois.com/)という、ずっとHaskellで商売している会社もあります。もちろん、特定の方面ではPugsでHaskellが有名になったのは確実なので、だからこそTシャツを着たり、CUFPに招待したりされたのだと思います。』
# sumii 『あと、他のエントリに書かれているような、OSS関連の授業や企業とのワークショップのようなものは、すでに始まっています/始まりつつあります。これもなかなか参加していただける企業を探すのが難しいのですが、頑張ります(と何の権限もない私が宣言してもしょうがないですが)。』
# t_trad 『>新卒採用者を何ヶ月も新人研修と称して教育をしているが
・新入社員はコンピュータ系学科を出た人ばかりではありません。
・研修期間の間ずっと技術研修ばかりしているわけではありません。
・技術研修においてコンピュータ系学科出身者は、そうでない人とのレベルの平均化のために、それまでの常識を捨てることを教育されます。つまり、「オープンソースを利用したものは売り物になりません。我慢して使い辛い商用ソフトを使い、車輪の再発明をどんどんしましょう」ということと「プログラムは一人で書くものではありません。コーディングルールにはいかなる疑問があろうとも従い、『ポインタってイマイチわかんねぇな』とか言ってる人が汚いコードを書いてもキレず、直さず」ということです。
凡人の10倍の働きをするが自分達には意味不明なスキルを駆使する生意気なやつと、10人の従順な凡人、ベンチャーならともかく、大手が欲するのはどちらでしょう。』
# サラリーマン 『企業の技術者ってそんなレベル低いですかね。一流大学で情報科学を学んで10年間半日仕事を続けた人が主流だと思うのですが。そうでない人はそうでない仕事をしているのだから(色々努力すべきですが)問題は少ないと思います。
hyoshiokさんだって重要な技術を大部分身に付けている訳でもないと思いますが、それは問題ではないのでしょうか。結局、多くの人は必要なことはそれなりにやっていると思います。
この文書のテーマは基礎的大学教育についてですが。』
# masaka 『関数型言語の基礎研究と実務での開発とのコラボレーション、という視点では、 MSラボあたりがうまく活用しているように思います。必ずしも関数型言語をそのまま使うわけではなく、LINQ周辺のように研究の成果をうまくおいしいどころどりしてみたり。』
# kzk 『東京大学理学部情報科学科3年の者です。教育される&雇用される側の立場としてコメントさせて頂きます。今学期(4-7月までの4ヶ月)のOS演習ではC言語&Linux;を使用し、システムコールプログラミング、シェルの作成やネットワークプログラミング、そして最終課題としてデバイスドライバを作成する予定です。同時にハードウェアや、関数型言語についての実習も有ります。3年生後半から4年生はさらに高度な科目を履修する事になります。4-5人グループで独自アーキテクチャのCPU, コンパイラを作成しレイトレーシングの速度を競うという実習も有ります。勿論全ての大学でこのようなカリキュラムが組まれているとは考えられないのですが、こういった「マトモな」教育をしている大学も有るのだという事を認識して頂きたいです。
逆に学校に対しては「大学は企業とコラボレートの場を作って欲しい」と思っています。学生にとってはこの国の現場ではどの様な知識が必要とされていて、何を学べば良いかという指針にもなりますし、人脈の形成も起こります。さらに企業側にとっても学生のレベルの判断材料にもなるので、非常に良い場になると思います。
大学と企業の距離が近くなる事で双方(+学生)良いことが有ると思うのですが、何故反発しているのか僕にはちょっと分かりません。hyoshiokさんの語り口からは「絶望的なほどの深い谷」に橋をかけようという考えが無いように思われるのですが。
ちなみにPugsはHaskell Workshop 2005にrejectされている(と思う)のですが、もう一つHaskellで書かれている有名な分散型バージョン管理システムDarcsが取り上げられています(http://www.cs.uu.nl/~daan/hw2005/program.html)。オープンソースソフトウェアの中でも割と有名です。開発者の人がFOSDEM2006でも喋っていったはず。なので別にHaskellで実際に書かれたアプリケーションの成果を学会側が評価していないという訳でも無い様に見えます。』
# sumii 『たびたびすみません。上のほうの私のコメントで「以前からある本家のHaskell Workshop」とか意味不明なことを書きましたが、PerlChinaにあったHaskell Workshopを別のワークショップか何かと勘違いしました。(言い訳ですが、赤ちゃんをあやしながら見ていたので…笑) ただ、赤ちゃんが寝たのでじっくりと読んでみましたが、依然として「読め」の意図はちょっとわかりません。物分かりが悪くてすみません…』
# hyoshiok 『sumiiさま、コメントありがとうございます。一日のコメントとしては最大数かもしれません。多謝です。大学と企業と言うのは対立するものではなく協調するべきものとわたしは考えますが、現状は深い谷があるかと思います。その谷に橋をかけたいと言うのがわたしの願いです。そのために双方が交流する必要があり、日記がきっかけになって、そのようなことが始まったらとっても面白いなあと思います。
個別の問題については別途コメントをさせていただきます。』
# hyoshiok 『t_tradさま、コメントありがとうございます。現状はそのとおりでしょう。コンピュータサイエンスを専攻しなかった人々を大量にソフトウェアの現場に送り込むというのが日本のソフトウェア産業の脆弱性の要因の一つになっているのではと思っていたりします。その現状を変えたいと言うのがわたしの思いです。』
# hyoshiok 『サラリーマンさま、コメントありがとうございます。半日仕事というのがちょっとわからなかったです。どのようなことなのでしょうか?教えていただければ助かります。』
# hyoshiok 『masakaさま、コメントありがとうございます。コラボレーションの事例をいろいろ教えてください。パクリたいっす。』
# hyoshiok 『kzkさま、コメントありがとうございます。学生さんのコメントというのは当事者としてのご意見として貴重です。まともな教育をしているということは素晴らしいですね。そのような教育は東京大学だけなのでしょうか?それとも多くの大学でされているのでしょうか?大学の実情を知らないのでぜひ教えてください。
大学と企業の距離が近くなることは双方にとってプラスになると思います。私の日記から反発しているように読めてしまったとしたらわたしの書き方が悪かったです。あなたに与えた印象と180度逆でわたしはその距離を縮めるために、企業と大学にそれぞれ提言(?)しているのです。橋をかけたいと思います。』
# kkojima 『かって東京大学理学部情報科学科の CPU, compiler, Ray tracing 作成の発表会を見学させてもらった者です。 正直その内容に感動しました。 しかし学部段階であれが可能でしかも意味があるのは本当に限られた大学の学部学科だけだと思います。
もちろんおそらく多くの情報・理工学系学科にもあのような演習に見合う学生や教員がおられるでしょう。 でもそれはカリキュラムとして成り立つことを意味しそうにないです。 対象者が少ないです。 スタッフの割り当て、演習の時間をどこに押し込むか、それに機材や予算はどうするのか、問題ありすぎとなるのではないでしょうか。
ああいった演習ができるのは一つの理想ですが、どの学部学科でも制約条件の中で可能な限りの工夫を凝らしているだろうと思います。 私がかって見聞きした中にはもう涙ぐましいとしかいいようのない努力を一部教員の犠牲の上で行っていた所もありました。 もちろん制約条件がどうしようもない場合もあるでしょうし、工夫したって目に見える結果がでなきゃ意味がないと言われればそれまでかもしれません。
ところで Haskell は Categorical Programming の流れを汲んで生まれたと思うのですがさらにこの Categorical Programming の基盤になっている圏論というのは代数幾何や代数的位相幾何などおよそ現実の役に立たないと信じられている数学研究の分野から生まれ整備されていった概念だと思います。 # 私の勘違いだったらすみません
いずれにしてもこういうものが出てくるところが懐の深さだという気がします。 もっとも Categorical Programming 発祥の地でさえも役に立たない研究はやめろという風当たりが大変に厳しくてもうダメとぼやいているという話を聞いたことがありますが。:-)
研究でも開発でも面白い/面白くないと役に立つ/立たないの間には微妙な関係があってどちらかだけを絶対の基準としてしまうとなんだかおかしなことになってしまうように思えます。 圏論はおよそ役に立ちそうには見えませんが、これで programming できるぜ面白いぜという連中が現れ、じゃあ使える処理系作ってみせたるという人が出てきて実際に役に立ちはじめるわけですよね? 絶望的に見えるギャップというのは実は誰かにとっての大きなチャンスだという見方だってできるかもしれないです。
企業、大学ともお互い懐が少しづつ深くなるような交流ができる橋がかかれば素晴しいです。』
# 田畑 『(私の勤務先ではない)国内某社の半導体部門でHaskellで書かれた内製ツールを使用していると聞いたことがあります。当然のように管理職もユーザもHaskellのことを意識することはない、その一人以外はメンテナンスできない、半導体設計の学会にもソフトウェアの学会にも成果が出てくることはない、という不遇な状態なようですが、ツールの能力によって容認されているようです。
企業の外での関数型言語の生産性の分かりやすい成果としては、近年登場した
オープンソースの仮名漢字変換エンジンたちがHaskell, OCaml, Ruby, Scheme
等で書かれていることが挙げられると思います。余暇の時間で変換エンジンの
ような複雑なソフトウェアを作成しようとすると、必然的に生産性の高い
言語が選択されるのではないかと考えています。』
# hyoshiok 『kkojimaさま、コメントありがとうございます。東京大学ではできるのですね。素晴らしい。できない理由を100探すよりできる方法を考えたいとおもいます。どうすれば、そのような教育が東京大学以外でできるようになるのか?
企業が大学にそのような教育を必要としていると明示的にいう事が第一歩のような気がします。』
# hyoshiok 『田畑さま、コメントありがとうございます。不遇な状況を変えたいと思っているのですが、余計なお世話ですか?
オープンソースのかな漢字変換にHaskell等が利用されていると言うのは愉快ですね。
実装の話をカーネル読書会でご披露いただけませんか?』
# 21century.po 『学会とか学会主催のイベントに参加しようと思うとお値段がだいぶアレな感じで、サラリーマンがおこづかいで参加するにはちょーっと敷居が高いですよね。』
# 田畑 『Haskellで書かれた変換エンジンはnatume(natume.sourceforge.jp)で、
私は直接の関係者ではないです。』
# hyoshiok 『21century.poさま、コメントありがとうございます。そうですねえ。学会の研究会なんかは参加費を無料だったらいいかもですね。数千円くらいまでだったらお小遣い範囲ですかね。学会は経済的に難しいんでしょうけど。』
# hyoshiok 『田畑さま、コメントありがとうございます。なかなか面白そうなプロジェクトですね。』
# sumii 『たとえばPPLサマースクール2005は一般非会員でも4000円でしたよ!:-) 多分、またやりますよ!(と宣伝)
http://www.math.kyoto-u.ac.jp/~susumu/ppl_ss05/
あと、未踏ソフトウェア関連で行ったビジネスショウTOKYO2005で思ったのですが、企業のセミナーもメジャーなのだと数十万円とかしないっすか…(^^; もちろん、内容が役に立つ(ことになっている)ので会社からお金が出るのでしょうけど…』
# hyoshiok 『sumiiさま、コメントありがとうございます。4000円ならおこづかいでもOKですね。飲み会一回分(笑)
企業のセミナーが高いのは業務で必要だと会社が判断しているからです。プログラミング言語のワークショップに参加することが業務につながるという人は、研究者以外皆無だと思います。
Perlのカンファレンスであれば業務でいける人は少なくないです。だとしたらLLDNとかRubyカンファレンスとか、PHPのそれとかで地道にゲリラ的に関数的言語の宣伝活動をするとかしてファンを少しずつ獲得するという作戦が時間がかかるかもしれませんが確実な方法かもしれません。
有料のHaskell入門コースとかが商売になるような環境になったらおもしろいですね。
あ、あと学会で宣伝しても、そこに参加している人は、多分ふつーのプログラマな人ではないのでリーチしたい人には届かないと思います。むしろBLOGやら日記で宣伝した方がよっぽど効果があるかと思います。』
# cavorite 『研究者と現場の人間というと、PTTはどうなっているんだろうと思いました。
ああいう切り口の集まりをもっと盛んにするような取り組みは有用なのではないでしょうか。』
# hyoshiok 『cavoriteさま、コメントありがとうございます。研究者と現場の人間の交流は重要ですね。LUGとかに研究者のみなさんもどんどん参加してほしいなあと思います。』