異常に興奮するやり方で! Ruby まつもと氏
@IT編集部
2010/12/22
Ruby on Rails情報に特化した@IT内の新コーナー「Rails Hub」が2010年12月22日にオープンした。開設に当たって、Rubyの生み親のまつもとゆきひろ氏と、日本のRails界の第一人者である松田明氏に、Ruby/Railsを取り巻く状況や国内での普及、教育といったテーマでお話しいただいた。(聞き手:@IT編集部 西村賢)
まつもと氏がDVDに出演!?
@IT 最近ちょっと驚いたのですが、まつもとさんは、RubyのDVD教材に出演されてますよね。幅広いジャンルで通信教育や教材提供をしているヒューマン・アカデミーさんから、Ruby入門講座ということでDVD3枚+テキストという構成です。これ、具体的にはどういう教材なのですか?
まつもと ヒューマンアカデミーの教材に登場している講師陣は、私が所属するネットワーク応用通信研究所(NaCl)の協力会社の方々です。ただ、DVDの中で「Rubyはこんな言語です」という最初の紹介には私も出ています。もともと素材となったテキストは、私が所属するNaClが提供しています。
テキストのほうの作成には、私も協力していて、DVD教材もそれがベースとなっています。最初にテキストを作った2007年頃には伊藤忠テクノソリューションズ(CTC)と協力してRuby講習にも会社として協力していたことがあります。ただ、もともとNaClの本業はソフトウェア開発なので、今はそれほど講習に力を入れているわけではありません。NaClには技術を持っている人はたくさんいますが、それを教えるというのは違うスキルですからね。
「それ」でないと開かないドアがある
@IT 教育に目覚めた、というわけではない。
まつもと 自分たちで先頭を切って教えようということにはなりませんが、そういう基準が必要な場合、自分たちに何かできることはあれば協力はしたいと思っています。
@IT われわれ@ITも、アールラーニングとの協業で認定ビジネスに取り組みます(関連記事:@ITとアールラーニング、「Rails技術者認定試験」で協力)。すでにRubyアソシエーションを設立して、Ruby認定試験を開始している関係者の1人として、Rails認定はどうご覧いただけていますか?
まつもと まつもと個人としては、Rubyが広まることも、Railsを使う人が増えてRubyが広まることも、それによって多くのエンジニアがハッピーになるのであれば望ましいことだと思っています。だから、私が役立つことであれば応援したいと思っています。私自身、Ruby認定試験を始める前には、認定なんて役立つのかなと懐疑的だったんですよ。でも、「それじゃないと開けられないドアがある」と思うようになったんですね。人事担当者に対して「私はRubyコミュニティでこんなブログを書いてます」と言っても分かりませんよね?
@IT GitHubのレポジトリ見てください、ソースコードを見てください、と言って通じる人事担当者は少ないかもしれませんね。
まつもと ええ、だからRubyアソシエーションという組織によって認定されたこんな資格を持っていて、「私はRubyについて、これだけ頑張っていて、知っています」と見える化できることが大事な局面もあるだろう、と。
松田 JavaやOracleデータベースの企業用途での成功を見ると、人事担当者が「ある基準を満たしている人を採りたい」というときに、やっぱり認定試験のようなものは活用されていますよね。
まつもと そんなのは社会のほうが間違っていると思っているところも私にはあるんですけどね(笑)
@IT 「プログラミングが分からないのに良いエンジニアなんて採れるか!」、と。でも、そんなことを言ったら、人事担当者が足りなくなりますよ(笑)
まつもと そうそう。で、社会を変えるより自分を変えるほうが早いので、Ruby認定試験を自ら用意したんですよ。特に「この会社はRubyを頑張っています」という証明になる、「Rubyアソシエーション認定SI事業者」のほうがインパクトがあったと思います。Railsもね、すごいたくさんの人が使っているけど、特に日本ではエンタープライズ分野で入り込めていないのなら、Rails認定試験のような資格も、まつもととしては応援したいです。
@IT ありがとうございます。
初心者向けのツールなんて要らない
松田 DVD教材ですが、ガベージコレクタやmixin、特異メソッドの説明など、結構高度な知識まで教えるんだな、という気がしました。
まつもと 技術者が書いているので、すべてが入門に必要な知識なのかと言われると、ちょっと詰め込みすぎたかなという感じもしていますけど。
松田 入門講座だけど高度なことも学べる。マニアの卵のようなタイプの人にも良いかもしれませんね。
@IT Ruby自体は初心者に優しい面もありますよね。
まつもと まあただ初心者のためのツールって要らないと思ってるんですよ。もちろん教育用は別ですよ。でも、ツールとして存在するときに、初心者のためのツールっていうのは要らない。人は成長するので、いつまでも初心者じゃありません。初心者のためにデザインしてしまうと、プロが使うツールとしてみたら歪んでるわけですからね。歪んだものを使うと、歪んだまま成長してしまう。そのアプローチは好ましくないと思うんです。PHPには、ちょっとそういう面があるかなと思っています。ソフトウェアって段階的に成長していくので、プログラムが大きくなっていっても大丈夫かなーと思うんですよね。Rubyはプロの領域や、あるいはそれを超えたような場合でもプロダクティビティが落ちない。
松田 小さな規模ならPHPで作るのはいいと思います。オブジェクトとかじゃなく、紙芝居的なWebサイトですね。PHPはどちらかというとプログラミング言語というよりはテンプレートエンジンなので、Webページにちょっと動的な情報を加える程度ならいいんですよ。でもアプリって成長するんですよね。そうなったときに、PHPだと身動きが取りづらいところに追い込まれるかな、という。
まつもと 紙芝居だったはずなのに機能や要求が増えたりね。
松田 PHPでコードが徐々に“オレオレ・フレームワーク”的なものに進化するのなら、最初からレール(Ruby on Rails)に乗っかっちゃったほうが早いと思います。
異常に興奮するのが良い方法!?
@IT 初心者に媚びない、というお話ですが、どうやったらRubyやRailsのプログラマとして一人前になれるのでしょうか?
まつもと いや……、好きにやったらいいと思うんです(笑)
@IT えっ、投げやりなアドバイスですね……。
まつもと 個人的には、どういう風に教えたらプログラマが育つかということのイメージが、全然持てないんですよね。それに、人によって興味を持つ方向が違うので、こうやればいいというのは言いにくいですよね。いきなり最初に作った本格的なプログラムが言語処理系という人もいますし、ゲームの人もいるでしょうし。
松田 私はRubyでは最初に数独ソルバーを書きました。ゲームというかパズルですが。
@IT 自分が熱中できる方向を目指す、と。
まつもと ちょっと変わった絵本を描く絵本作家の方がいるんですけど、この方が幼稚園の保育士に「子どもたちにどうやって先生のご本を読んであげたらいいでしょうか?」という質問を受けたときに、「好きなように読んでください」って答えたそうなんです。そう言われた保育士たちは困って、そこをなんとかアドバイスをと聞き直したんですね。そうしたら、その絵本作家さんは、「じゃあ、子どもたちが“異常に”興奮するように読んであげてください」って言ったそうなんですよ(笑)
@IT 子どもたちが異常に興奮する絵本ってありますよね(笑)
まつもと ええ、それで私はその意見にすごく共感して、「プログラムをどうやって教えたらいいでしょうか」と聞かれたら、まず「好きにやってください」と言って、そこをなんとかと言われたら「じゃあプログラムしている人が異常に興奮するやり方で」って応えるようにしてるんです(笑)
@IT 異常に興奮するプログラミング学習方法! そういえば私はPerl、awkの代替という文脈でRubyに触れ始めたので、オブジェクト指向や関数型っぽい高階関数、メタプログラミングのエッセンスが興奮のツボだったように思います。SmalltalkやHaskell、Lispとまで言わなくてもRubyは言語としても十分に面白いですよね。
まつもと 10年ぐらい前だと、Perlやawkを使っていた人たちの間にはオブジェクトって何? みたいな感覚がありましたよね。でも「オブジェクト指向って実はいいんじゃない?」と気付いてきた。で、Rubyって最初からオブジェクト指向じゃんって気付いたという。Javaの普及やRails人気もあってですけど、時代が進んで啓蒙されてきてオブジェクト指向が世間に届いてきた。それは素晴らしいことです。
「初めてがRails」でいい
まつもと プログラミングって達成感がありますよね。人によって違うとは思ますけど、何かを動かして、「動いた!」という思いが重要だと思うんですよ。私もポケコン(昔の電卓型簡易パソコン)で1から10まで表示して、「おぉ出た!」という体験を繰り返して、ここまで来たんですよね。もしかして私が凄いんじゃないか、みたいな勘違いが、プログラマとしての駆動力になっていると思います。RubyやRailsは、そういう達成感に対する距離が近いのかなっていうのはありますね。
@IT 松田さんはRuby on Railsの新人教育もされてます。先日のRailsDevCon2010では「初めてがRuby」というセッションで、実際に新人を引き連れてお話しされていましたよね。
松田 ええ、最近は新人にRailsを教えたりもしています。いくつかやってみた感触としては、例えばプログラミング自体の初学者にとっても、いきなりRailsから入ってそこから掘り下げていくというアプローチはかなり良さそうな手応えを感じています。
@IT 初めてのオブジェクト指向がRailsのORマッパー、みたいな。
松田 はい、それでだいたい皆さん半年ぐらい経つと、ハッシュとか配列とかRuby言語の文法のことはよく分かっていなくても、Railsアプリはなんとか書けるという状態になりますね。
@IT えぇぇーっ!?
松田 最初はイディオムとして書くんですよね。こう書けばこう動く、という。でも、どこかの時点、半年とか1年でRuby言語の面白さにも目覚めてくるんですよ。で、Railsの何が良いって、そこにたどり着くよりも前に、動作するWebアプリが作れちゃうっていう派手な成功体験が得られるんですね。だからモチベーションが持続しやすいんです。もし、こういうステップアップが許される環境、職場であれば、とてもいい学習方法だと思います。
@IT 向き不向きはありますか?
松田 向いていない人は確かにいます。知的好奇心を持って、知らないことが分かるようになるというのを楽しめる人でないと難しいかもしれません。でも、RubyもRailsも、あるいはウェブやコンピュータは掘っても掘っても分からないことだらけで、飽きることがありませんから、好奇心があれば「初めてがRails」でもいいと思うんです。
まつもと 人によって興味が持てる領域って違いますよね。Webアプリのような上位から入っても、プログラミング言語やライブラリ、OSのカーネルへと潜っていく人がいます。
自分が作ったアプリを使ったユーザーがどういう顔をするかしか興味がないという人もいれば、言語はどうあるべきかといって言語処理系にハマる人もいる。あ、それは私ですけどね(笑)。あるいはOSにまで潜って、どうやったらCPUを効率よく使えるかということを考えるLinuxの生みの親のリーナス・トーバルズみたいな人もいます。潜水艦みたいに、ちょうどいいところで止まるんですね。
@IT 松田さんは、Ruby on RailsというWebアプリのフレームワークがちょうど良い潜り具合だったと。
松田 ええ、私は自分でフレームワークやORマッパーを作っちゃうタイプなんですけど、Railsを見て、こりゃ駄目だ、勝てる気がしないと悟ったんです。Railsは、ある種の完成形ですね。DHH(Railsプロジェクトの創始者、David Heinemeier Hasson)がバランスやデザインセンスの天才ということもあるんでしょうけど、やっぱりこのプロジェクトにみんな乗ってきて、いまさらそこに乗らないってないんですよね。Railsに出会って、私は打ちのめされた。それからも凄い進化を続けていて、Railsというプロダクトが面白いんですよ。
「Railsは知りません」は通用しない
@IT 2010年の今だと、上の方から入って潜るスタート地点としてRailsは良いということでしょうか。ところで国内外でRailsの流行には、すごく温度差があるように思いますが、日本では流行していると言えるのでしょうか?
松田 ビジネスのメインストリームではなくても、技術者たちはすごく注目してますよね。注目というか、イマドキ、Railsを通ってなくてプロのWebアプリケーションエンジニアになるって難しくなってきていると思います。「Railsは知らないけどJavaならできます」って通用しませんよね。どういうことかというと、Railsって一過性のムーブメントじゃなくて、Railsの影響を受けて、JavaとかPHPとか.NETとかPerlのフレームワークが“Railsチルドレン”として広がっているので、Railsのエッセンスを知らずに済むということはないですからね。
@IT ただ、Rails登場から5、6年経ってみて、もう使っている人は日本でも使ってると思うんですけど、英語圏と比較するとどうも盛り上がりに欠ける気もします。日本のWeb業界だと、Perlを使ってシステムのAPI設計からすべて自分たちでできて一人前という雰囲気がありませんか?
まつもと きっといろいろと異なるクラスタがあるんですよね。日本のソフトウェアの領域でいちばん強いのは大企業クラスタですよね。NEC、富士通、日立、NTTデータのような。そのクラスタではJavaは入ってきているけど、Railsは入っていません。Railsを知らないわけじゃないけど、仕事では使いませんよね。その大企業クラスタが日本では目立つので、海外に比べてRailsのプレゼンスが低く感じられるのかもしれません。
@IT アメリカでは先日、Rubyスタックをクラウドで提供するHerokuがSalesforceに買収されて、業務アプリ方面でもプレゼンスが上がる可能性が出てきていますよね。
松田 日本の場合、仕事でRubyを使うときって、いわゆる受託開発が多いですよね。「お客さまの業務をIT化します」みたいな。売り方としてはどうしても、Railsを使えばJavaの何倍早く、つまり安くできます、みたいになっちゃう。一方、アメリカで流行っているRailsってスタートアップなんですよね。自分が作りたいアイデアやひらめきが先にあって、人より早く発信したい、形にしたいというときに、Railsはいちばん早いから使われる。思い付きが形になるまでの時間がいちばん早い。「だから、オレ達はRailsを使っている」ということをアメリカでRails使っている人たちは言っていますね。
日本では、そこまでスピードが求められていません。SI業が中心で、顧客のニーズをじっくり時間をかけてヒアリングしてっていう。
@IT むしろそれならUML書いてJavaでカッチリ作ったほうがいいかもしれませんね。それほどスピードは要らない。
まつもと ただ、早く仕上がるという意味でのアジャイルはRailsでもそんなに期待されていないんじゃないですかね。ほしい物に近づくということであって、結果が早く出るということではないかもしれません。
@IT “ムービング・ターゲット”でしたっけ。そもそもゴールが事前に分からずに、開発している最中にも標的が動き続けている。システムをどんどん進化させて行くという意味でのアジャイルですよね。そういう面だとRailsのほうが柔らかくて良いということはあるのでしょうね。
松田 だからなおさらRailsがいいと思うんですよね。書きやすいし、メンテナンスしやすい。自分が書いたものすら時間が経過すると読めないコードになるという言語もある中で、Rubyは自分のコードも人のコードも読みやすい。メンテナンスし続けるようなものだったらほんとにRubyが断然いいです。
@IT ドリコムで数十万ユーザーを集めるソーシャルゲームにRailsを使って成功しているという例もありますよね。結局、そこまで行くとミドルウェアをどう組み合わせるかという話で、言語はボトルネックではないのでしょうね。
まつもと 日本でもベンチャーに近い比較的小さい企業で、特にWebを中心にビジネスしているところならRailsのシェアは圧倒的だと思うんですよ。Railsで作りましたっていちいち書いていないですし、プレス発表もしないですけどね。海外だとTwitterやグルーポンはRailsですよね。10万同時アクセスとか聞くと、ずいぶん頑張ったなとは思いますけど……。
@IT ちょっと話がズレますけど、PythonのDjangoなんかはどうなんでしょうね。ドキュメントが非常に良く整備されていることと、Admin向け画面が標準で入っていて素晴らしいというウワサは良く聞きます。
松田 Admin向けはRails 3.1で使えるようになりますけどね。
@IT そのへんも互いに影響し合っているということでしょうか。PHPだとCakePHPだけではなく、最近はAkelosやLithiumというフレームワークの評判がいいと聞きますが、こうしたプロジェクトもRailsの影響を受けているのですよね。
勢いに才能が集まる好循環
松田 ほかのフレームワークとの違いでいうと、勢いというのもあると思います。Rubyという言語もそうですけど、新しい技術のところに面白い人が集まってきています。Railsって、そういう人たちの人間観察をしているだけでも面白いぐらいです。まつもとさんは一昨年のRuby会議のときに、Rubyは梁山泊のようになっているとおっしゃってましたけど、Rubyにはユニークなキャラが集まっていますよね。
まつもと そういう人たちを引き付けるムーブメントは常に起こしていたいという思いはありますね。ツマンナイ状態にはしたくない。「ここ何年も面白いことがないねぇ……、よそに行こうか……」ということにならないようにね。
松田 いまのRubyの勢いの大元はそこだと思うんです。新しく若いタレントが集まって来る。その人に引かれてまた集まってくるという循環ですね。国内ではありませんが、Google Summer of CodeとかRuby Summer of Codeのように、有望なアイデアやプロジェクトに資金援助する学生向けコンテストで、20歳そこそこの人たちが、どんどん彗星のようにデビューして、果てはRailsのコミッタになっちゃったりするんですよね。そういう現象も面白い。若い人が入ってくるのはコミュニティとして健全ですよね。一部のおじちゃんたちだけが頑張ってるんじゃなくて、RubyやRailsは若い世代を巻き込みながら成長しているような、とてもいい状態にあるように感じます。
@IT この対談を読んで、さらに才能ある若者たちがどんどん入って来るといいですよね。本日はどうもありがとうございました!
- プログラムの実行はどのようにして行われるのか、Linuxカーネルのコードから探る (2017/7/20)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。最終回は、Linuxカーネルの中では、プログラムの起動時にはどのような処理が行われているのかを探る - エンジニアならC言語プログラムの終わりに呼び出されるexit()の中身分かってますよね? (2017/7/13)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。今回は、プログラムの終わりに呼び出されるexit()の中身を探る - VBAにおけるFileDialog操作の基本&ドライブの空き容量、ファイルのサイズやタイムスタンプの取得方法 (2017/7/10)
指定したドライブの空き容量、ファイルのタイムスタンプや属性を取得する方法、FileDialog/エクスプローラー操作の基本を紹介します - さらば残業! 面倒くさいエクセル業務を楽にする「Excel VBA」とは (2017/7/6)
日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。本稿では、業務で使うことが多い「Microsoft Excel」で使えるVBAを紹介する。※ショートカットキー、アクセスキーの解説あり
|
|