松江Ruby会議05に参加してきた(2)

前回は講演の超主観的な感想であった。全体的にレベルが高いのは松江だからなのか、それともどこに行ってもこんな感じなのか。
自分が普段置かれている環境に若干の疑問を持ちつつ。次いってみよー。

松江、島根の取り組み

Ruby合宿、中学生Ruby教室、Ruby.Jrなど、Rubyの勉強会的なものを自治体が主体でやっている。いずれもDXRubyを使ったり、使わなかったりしていて、また、よくわからないのだが、NaClが関係していたり、していなかったりするようだ。
Matsue.rbのTシャツを着ている人がMatsue.rbのメンバーなんだろうという気がする。県とか市の人も着ていた。このあたり、特定個人が組織やコミュニティにかぶって所属していると思うので実態がいまいち把握できていない。
結局のところ、誰(どこ)が具体的に何をしているのかというのは妙にややこしくて、というか理解が足りてなくて、うまく説明できない。ともあれ、それぐらい渾然一体となってRubyを広めようと頑張っている、と考えるのがよさそうだ。

実際に教えている人の話

県や市の人とは懇親会で酔っ払った状態で話していたから、記憶が怪しいことになっているわけだが、まあ、それでもいろいろと話してきた。
・DXRubyはプログラム初心者に興味を持ってもらうのに良い
・数えてみたら松江の中学生の100人に1人ぐらいはDXRubyを使ったことがあることになるらしい
・ごく普通のJC(原文ママ)が楽しそうにデバッグしていた
などなど。
DXRubyについては「これがあったからこういう活動をしていけている」というお言葉をもらった。まあ、多分にリップサービスが入っているだろうとは思うが、少なくとも使われている、選択されているという状況が俺にとっては嬉しい。

DXRubyを使っている理由

島根・松江の取り組みについて、前にTwitterで「担当者の趣味でライブラリ選んでるんじゃね」ってなツッコミを見たことがある。
俺自身、そうなのかなーとか思ってたのだが、実際に担当の人などに話を聞いていると、選択されたポイントというのがなんとなくわかってきた。俺的解釈だが。
・初心者や子供にRubyを教えるのに、まず興味を持ってもらうのが大事。ゲームは題材として大変良い。
・ゲームを作るからと言って低レベルレイヤの知識から始めるのは無駄。そもそもそこはRubyじゃない。体験して欲しいのはRubyなのだ。
・高度なゲームを簡単に作れるようなツール系のものはツールを使う技術を教えることになってしまうのでよろしくない。
つまり、低レベルレイヤを極限まで抽象化して、ゲームのアルゴリズム部分のサポートは呆れるほど無い、Rubyで書いたコードがそのまま目に見える形で動く、そういうライブラリを所望していた、というわけだ。他の色々なライブラリと比較した結果として、DXRubyが選ばれたという話であった。当然ながら、今後もずっと選ばれ続けるという保証は無い。

Smalruby

話は変わるが、Ruby.Jrの発表会のとき、高尾さん(@takaokouji)がSmalrubyを実演していた。SmalrubyはRubyAssociationの2013年度助成事業に採択されたもので、子供向けRuby学習教材一式を作るプロジェクトである。助成金の対象はこの一連のプロジェクトのうちのsmalruby-editorとなっているようだ。Scratchのようなブロックを組み立ててプログラムを作る感じのものである。
実演していたのはGoogle blocklyをベースにしたもので、ブロックを組み上げた結果がRubyのコードとして出力できるようになっていた。逆に、出力されたRubyのコードを修正するとブロックの構成も変わる。これはすごい。
このsmalruby-editorで出力されたコードはローカルにダウンロードしてSmalrubyのライブラリ上で動かすわけなのだが、Smalrubyのライブラリのさらに低レベルレイヤがDXRubyである。最初にSmalrubyのコードを見たときに、変わったAPIだなーという印象を持ったが、ブロックの構造をそのままコードに落とすことを想定して作っていたと考えると納得。ぶっちゃけDXRubyの面影は無いが、別に問題も無い。
高尾さんはdxruby_sdlも作っていて、これはSDLにかぶせるDXRuby互換APIライブラリで、SmalrubyもWindows以外の場合はdxruby_sdlを使うように作られているようだ。ただ、SDLを使うとどうしてもフレームレートは下がってしまうから、そのあたりをどうしていくかは悩むところだろう。Ruby/SDLのSDL2.0対応誰かはよ。SDL2.0はRenderTargetオブジェクトを作れるから、DXRubyのShader以外はほとんどそのまま実装できるはずだ。

BASICとの類似点

この件については去年、土屋つかささん(@t_tutiya)がDXRubyAdventCalendar2013で書いていたが、ちょっと上に書いた選択されたポイントはおそらく昔のBASICにそのまま当てはまる。
最初に少しコード書いて動かしたときのインパクト、これは面白い、と思う初っ端の感覚は、それ以後「プログラムは面白いものだ」という意識を形成するのに重要なのではないかと思う。その意識がある人はたとえ作るものがゲームじゃなくても、プログラムそれそのものが楽しいものだと思える。かもしれない。
DXRubyを推してくれている人たちの年齢層もなんか近いものがありそうだし、その使い勝手、感覚にピコーンと来る人は、当時BASICをいじっていた人か、DXRubyでそれを感じた人かのどちらかである可能性は高そうだ。
ちなみに俺もその世代ではあるのだが、別にBASICを意識して作ったわけではない。自分で使いたいものを作っていたらこうなったのだ。ひょっとしたら当時の感覚を現代に再現したかったのかもしれん。知らんけど。

現在の状況として

Ruby合宿に参加した人が既に社会人になっている。実際、NaClの資本が入った会社にそういう取り組みの参加者がいるとのこと。そしてその人は松江Ruby会議05にも来ていた。ITで、Rubyで街起こしをしようという松江にとって、何もしなかった場合と比べてそっち方面に興味を持って進む人、何かしら関わりたいと思う人が増えるのは大変よいことだろう。
前出の高尾さんのブログにこんな記事がある。そういう感じなんだよね。何かしらの影響は与えていて、それがすごく大きな動きになるかというとわからないけども、間違いなく少しは影響が実際に出ていて、だからモチベーションを保って進めるし、県や市からも予算が出るし、市立中学校でRubyの授業をするとかいう話にも展開するし、これから先、もっと変わって行くはずだという希望も持てる。
そういう島根県松江市の動きに俺が何かしら貢献したかというと、なんというか、やった事は自分用に作ったものを公開しただけでぶっちゃけ副作用としか言いようが無いのだが、OSSってそういうもんだとも思うし、いずれ歳食ったときに松江がRubyで発展してたりしたら、「松江はわしが育てた」とか適当に爺くさいコト言ってればいいような感じで、何が言いたいのかよくわからんくなってきたのだが、まあ、俺にできることはDXRubyを作ることぐらいなので、それを活用できる人が活用してもらえると良い。
他になんか手伝えることありますか、とか聞いてみてもたぶん、いや、いつもどおりに作っててください、みたいに言われちゃうんだろうな。OSSってそういうもんだし。

おしまい

ところで、TwitterでMatzにMatsue.rbのTシャツを贈呈する写真が出ていたけど、実は俺もあとでもらった。どっかのRuby会議に参加することがあれば着て行こうかなーと。