プラットフォーム事業部のtaki(@yuyasat)です。 今日、明日と島根で開かれているRubyWorld Conference 2018に来ています。RubyWorld Conference 2018 は、弊社もSilver Sponsorです。その関係で参加させていただきました。
午前中は移動だったため、まつもとゆきひろさんの基調講演は聞けませんでした。本記事では、午後からの講演についてまとめました。
私の理解不足により間違っている点がございましたら、コメントください。
午後のA-1、A-2、A-3は主にRubyとプログラミング教育に関する話題でした。
A-1 Railsチュートリアル×反転授業: 解説動画を用いた能動的な学びによる驚きの成果
講演者の安川さんはRailsチュートリアルを題材に大学や教育機関で講師をしている方です。2017年は一斉授業、2018年は反転授業で行い、受講生の成績に基づいた考察に関する発表でした。 一斉授業とは講師が話していく形で、講義中に知識を獲得し、講義外で課題を実践していくスタイルのことです。反転授業とはその逆で、講義外で知識を獲得し、講義中に課題を実践する授業スタイルになります。受講者は授業を受ける前にあらかじめ動画等で学んでから、授業でコードを書いて動かすなど実践を行います。 一斉授業から反転授業に切り替えた結果、ポテパンキャンプさんではメンタリングにかかる時間が減少したり、産業技術大学院大学(AIIT)では中間よりやや下の層の成績が向上したなどの成果を報告されていました。 最後に本日リリースしたRailsチュートリアル動画の法人向けのサービスを紹介して締めくくっていました。
A-2 プログラミング入門をプロジェクトでやってみた -Rubyで取り組むプログラミング実践-
フェリス女学院大学の内田先生、学生のお二人による発表でした。フェリス女学院大学は文系の大学なのですが、文系も理系も必要な技術として、プログラミング教育も行なっているそうです。 必ずしもプログラミングに慣れていない学生も多く、そうした学生が挫折しないようにした工夫について発表がありました。例えば、プログラミングを用いて絵をかくことでモチベーションを維持したり、ネイルのデザインをRuby で行うといった工夫をされていました。会場では、Rubyでつくったデザインのシールも配布していました。 その中で、Rubyはエラーがわかりやすいということも言及されていました。個人的にも他言語に比べて分かりやすいと感じているので、プログラミング教育にRubyを用いるのは良い選択だなと思いました。
A-3 スモウルビー3.0の開発とRubyを用いたプログラミング学習への活用
スモウルビー3.0というビジュアルプログラミング言語を開発されている島根大学の武本さんによる発表でした。 スモウルビー3.0では、ビジュアルプログラミングで用いられる命令ブロックとRubyプログラムの相互変換が可能で、ビジュアルで記述された言語がRubyでも出力できるという特徴があるそうです。 ビジュアルプログラミング言語として有名なScratchの完全互換を目指しており、開発はReact.jsで行なっています。その中で、命令ブロックをどうRubyに変換されるかなどを発表されてました。
A-4、A-5は重いデータベースやデータ活用の観点からの発表でした。
A-4 RubyによるDBスケーラビリティ
クックパッドの Leonard Chin さんの発表。英語での発表でした。 クックパッドは特に大きく、ユーザー数も多いRailsプロジェクトが2つあり、一つは日本向け、もう一つは海外向けのクックパッドのリポジトリだそうです。 サービスのパフォーマンスは、New Relic などで監視しているそうなのですが、これだけ多くのユーザがいると、99%は大丈夫でも残りの1%のユーザのサイトのパフォーマンスが悪くなるということが起こるそうです。NewRelicでは平均しか表示されず、検知がされにくいのです。ユーザからの問い合わせで初めて気づくことになります。こうした特定の処理が重いユーザは、よく使ってくれているユーザ、つまりvaluable なユーザであるということになります。
パフォーマンス改善について3つ挙げられていました。1つ目は、インデックスチューニング。開発環境ではデータ量の違いなどにより、explainで見た実行計画では問題がない場合でも、本番データではスロークエリになってしまうといった例が紹介されていました。 2つ目はRailsのcounter_cacheがうまく効かない話でした。あるユーザが別のユーザーをブックマークすると、ユーザテーブルが自己参照の関係となり、正しくinverse を書かないといけないという例でした。 3つ目は配列の & を上手に使うことで重いクエリを回避する方法が紹介されていました。
A-6は企業でのRubyの活用事例という形で東京ガスiネットさんとIDCフロンティアさんの発表でした。
A-6-1 東京ガスの地震防災システムにおける Ruby 活用事例の紹介
東京ガスiネットの原田さんによる、東京ガスの地震防災システムでのRubyの活用事例紹介でした。iネットさんでは、2004年から Ruby を利用しており、ハードウェアのリプレースのタイミングで Ruby を引き続き利用するか検討したが、過去の資産を利用できるなどの観点で継続利用を決定。バージョン1.8.5を使っていたが、2.4系に一気にバージョンアップしたという事例を紹介されていました。 東京ガスさんという歴史ある大企業でRubyが使われていることで、もっともっと Ruby の利用者が増え、Ruby が魅力的に進化し続けて欲しいという話で締めくくりされていました。
A-6-2 Ruby による Pub/Sub messaging - パブリッククラウドのバックエンドシステム事例
IDCフロンティアの浅沼さんによるクラウドのバックエンドRubyを利用したお話でした。 MQ (Messaging Queue)Client として、Ruby の gem である bunny を利用したインフラ構成についての発表でした。
(後日加筆・修正いたします)