2014 年 3 月 15 日 (土)、松江 Ruby 会議 05 が開催されました。毎月開催している松江 Ruby の定例会での活動成果報告がテーマです。日頃書いているプログラムのライブコーディング形式での発表でした。
昼食の際に交流を兼ねて LT 大会を行いました。
オーガナイザの吉岡氏による開会の挨拶です。今回のテーマ「ライブコーディング」について趣旨・目的などのお話がありました。
まつもとゆきひろ氏の講演です。
講演の前半では Ruby のバージョンについてのお話や、 Ruby 2.1 における新機能のお話 (有理数リテラル、複素数リテラル、 String#freeze 、 RGenGC 、メソッドキャッシュ) や Ruby 2.2 についてのお話 (シンボル GC 、 GC チューニング、 Unicode 強化) のお話をされました。
その後、(氏曰く) 珍しく Ruby のコードを交えながら、タイトルの「 Prepend 」である Module#prepend についてお話をされました。
コードの内容は、開発時にはデバッグのために Prepend した機能を使い、リリース時にはその機能を外すという「デバッグのお供」として使うというものでした。
基調講演からコードを交えてのお話をいただき、「ライブコーディング」イベントのワクワク感が一気に高まりました。
Windows 上で DirectX を Ruby から利用できるようにするライブラリ「 DXRuby 」作者の @mirichi 氏によるゲスト講演です。島根県内では Ruby 合宿や中学生 Ruby 教室など、様々な場面で幅広く利用されている DXRuby について、開発者本人による紹介と、実際に DXRuby を使ったライブコーディングを披露頂きました。「 Ruby 初心者の時にライブラリを作ったので DXRuby は自然と初心者向きになった」など、氏の DXRuby に対する熱い思いを聞くことが出来た上、講演の場でリアルタイムに DXRuby を使ってわずか 10 分少々で、しかも 58 行という短さでブロック崩しゲームを作るライブコーディングはまさに圧巻でした。
プログラミングの「楽しさ」という部分を見る人に遺憾なく伝えまくった、本当に素晴らしい講演でした。
講演のスライドは、「 DXRuby のご紹介」 ( Slideshare ) で公開されています。
橋本氏による「るりま」の更新のお話です。 更新のための準備 (環境設定) から実際の作業まで実演されました。 途中「俺が書いたんだぜ!」的な自慢が入ったり、やることが高度過ぎでポカーンとなったり、更新したはずの情報がうまくい反映されないトラブルがありつつも、発表内容の性質からは考えられないくらい盛り上がりを見せました。 また、 2008 年から 6 年間、継続して「るりま」を更新してこられた橋本氏の「るりま」を始めたきっかけなどのお話も聞けました!
iOS アプリを作成するツール「 RubyMotion 」でゼロから RSS リーダーを作るデモです。
同じメソッド名でも引数が違うと別々に定義できるという点や、 iOS アプリ開発 ( Objective-C ) での作法など、 Ruby ではなじみの薄い部分について、解説をいただきながらのコーディングでした。
質問では開発環境について質問がありました。 実は、スクリーンへの表示の関係上、本日午前中に急遽エディタ ( Sublime Text ) をインストールして対応したらしく、ご自身の開発環境では無いようでした。 それでも補完機能等がしっかりと導入できており、コードを書く環境の導入については充実してきている印象を受けました。
テーブルビューの UI が表示される最初の雛形部分を作るまでの、コーディングでしたので、 Ruby で書けて幸せという部分ではありませんが、その分、 RubyMotion に興味はあるけれども (有料だし) 導入してまで試したくは無いという人には、雰囲気を味わえる良い機会になったと思います。
前田修吾氏によるライブコーディングです。簡単なプログラムを複雑に作りますというところから会場をなごませつつ、 2.0.0 から入った機能である Module#prepend、Refinements を使って元のクラスに変更を加えずに特定のメソッドの前後に処理を挟み込む機能と、一度に複数のクラスを拡張できる機能を持つ aspect 指向的なライブラリを 30 分で見事に書き上げられました。
会場からは使い道のわからなかったメソッドについても知る事ができてよかったという意見などもありました。 Refinements のよい利用例、どのようにクラスを作るといいのかという複数の事柄に関しても限られた時間でわかりやすく伝わる素晴らしい内容でした。
当日書かれたコードは、前田修吾氏の日記にて公開されています。
師匠役の高尾氏が作成したテストを満たすように弟子役の岩石嶺君 がコードを作成するという、テストファースト形式のぶつかり稽古でした。 岩石嶺君は、小学生の時に Ruby 技術者認定試験シルバーに合格している強者で、 Matsue.rb の定例会だけでなく本年度から松江市が開催している Ruby.Jr にも参加しています。
問題は全 3 問で、(1) 加算、(2) 減算、(3) FizzBuzz でした。最初の 2 問は余裕だったようで、あえて「 if true 」といったコードを入れるなどの遊び心をのぞかせていましたが、3 問目の FizzBuzz はさすがにちょっと手こずっていたようです。ただ、途中で一度だけ高尾氏が耐えきれずに口を出したシーンがあったものの、ほぼ独力でコードを書き上げていました。
ちなみに、嶺君は出題の待ち時間に 4x4 のルービックキューブをいじっていたのですが、講演終了までにはそちらも完成させていました。すごい!
オーガナイザの吉岡氏によるクロージングの挨拶です。それぞれの発表についてのコメントと夕方の部、懇親会の説明の後に閉会となりました。
Ruby.Jr は、平成 20 年度から松江市主催で実施されている中学生 Ruby 教室の発展的な取り組みとして本年度から開催された、毎月 1 回全 7 回の中学・高校生を対象としたプログラミング教室です。
今回の発表会は第 7 回目の位置づけで、第 6 回で作成したゲームプログラムの内容やこれまでプログラミングを学んできた感想を発表してくれました。なかには、発表ぎりぎりまでプログラムのデバッグを頑張っている子も何人かいました。ゲームプログラムは、講師である高尾氏が開発している Smalruby というゲーム開発用ライブラリを用いて作成されていました。
タイピングやシンタックスエラーなどで苦労した様子がうかがえましたが、ただそれでも、総じてプログラミングは楽しいという思いを持ってくれていたようです。
Ruby.Jr は来年度も開催される予定とのことです。Smalruby は 2014 年 3 月時点で Scratch のようにコードブロックベースのビジュアルプログラミングも可能となっており、「どう作るか」ではなく「何を作るか」に比重が移ることで、来年度はより創意工夫にあふれたプログラムが期待できそうです。
参考 URL
Ruby.Jr の裏番として、懇親会 0 次会、通称「ライブコーディング大喜利」を開催しました。
松江 Ruby 会議 05 本編では、凄腕 Rubyist による華麗なライブコーディングを堪能しましたが、ここでは 4 人の「役者」がお題に対して、機転を利かせたコードを書いたり、はたまた面白コードで笑いをとったり、場の雰囲気を読まず真剣にコーディングしたり、そういった「劇場」を観客の皆様が飲み物 (アルコールを含む) を飲みながら、楽しく野次って過ごすといったゆるい感じのイベントとして開催するつ・も・りでした。
しかし実際は、 4 人のライブコーディングを映し出すシステムのトラブルによる開催の遅延や、段取り不足による進行上の不手際等もあり、「グダグダ感」満載の大喜利となってしまいました。
そういった中でも、オシムチックなお題に対して前向きにご協力頂いた慈悲深い 4 人のプログラマーと、身内だからといって容赦の無いツッコミを浴びせる仲間たち、そしてそのやり取りを笑って見てくれる観客たちの一体感を、僅かな時間でも共有できたことは成果に値するのではないかと、この企画の立案者ではなく開催のため人一倍苦労に苦労を重ねた「内部氏」が感じていたと聞いています。来年はぜひ期待して下さい。
懇親会には講演者・参加者・スタッフ、総勢 24 名にご参加いただきました。ライブコーディングイベントの懇親会らしく、コードに関する話もあり、次回のイベントについての話、飲み会らしい他愛もない話などで大いに盛り上がりました。
松江 Ruby 会議 05 実行委員長(中年)
ルービー大好き!
Ruby とサッカーをこよなく愛する中年プログラマー
Matsue.rb の非公式ゆるキャラ
プログラミング教育おじさん
松江 Ruby 会議 05 で初めてスタッフをしました
Matsue.rb の雑用係。定例会にはだいたい出席してます