RubyWorld Conference 2017 (2日目)

こんにちは。いつも集合写真のタイミングでブースにいない系エンジニアの森岡です。 RubyWorld Conference 2017、2日目のレポートをさせていただきます! 2日目は教育系のセッションが非常に多く、小学生から社会人まで、様々な立場の方のRubyに関する教育内容が聞ける1日でした。

基調講演

f:id:selmertsx:20171107151722j:plain

基調講演は角谷さん(kakutani)から、Ruby Is Nice so We Are Niceというタイトルでお話しがありました。

話はまず、Rubyという言語でのプログラミングの持つ素晴らしさから始まります。Rubyは書く楽しさを最大の価値とおいて作られた言語です。Rubyは言語単体だけでなく、ライブラリやフレームワーク、ツール、アプリケーションそれぞれが、Rubyを使う人達にとってより良いものを持ちよって、より良い成果を生み出すエコシステムができています。それによってRubyという言語はより楽しく開発することができるようになっています。

そして、普通のプログラマーがRubyのナイスさを伝えるためにできることのお話しに移ります。Rubyがプログラミングの楽しさをプログラマーに伝えてくれているように、僕たちも仕事の楽しさを受け手の心に再現しましょう。野生のソフトウェアであるRubyのナイスさを、人工的な環境であるビジネスでも再現していこう。そのためのアジャイル/リーンであるというお話しになりました。

僕たちが常日頃Rubyという言語から受け取っているナイスさを、ちゃんと自分たちの仕事でも再現しようというお話が、すごく印象に残るセッションでした。

発表資料: Ruby Is Nice so We Are Nice // Speaker Deck

Rubyインタプリタ開発者養成講座

f:id:selmertsx:20171107151948j:plain

最初のセッションはクックパッド株式会社さんより、笹田 耕一(ko1)さんの発表です。 Rubyインタプリタ開発者を養成する取り組みとして、クックパッド社内で行ったHackaradeや、社外の人も呼んで開催したCookpad Ruby Hack Challengeについて、お話しされていました。 発表の中で 「初等中等でのプログラミング教育によって、今後エンジニアの母数自体は増えることが見込まれる。しかしながらシステムソフトウェア技術者になる人を増やすための方法が今のところ整備されていない。 コンピュータ業界にとってはシステムソフトウェア技術者を重要であり、そのための背中を押してあげたい」というお話しがあり、Rubyだけでなくコンピュータ業界全体を見据えたお話しをされているところが印象的でした。

発表資料: Rubyインタプリタ開発者養成講座 参考資料: GitHub - ko1/rubyhackchallenge

子供向けのプログラミング講座を1年続けたらどうなったか

f:id:selmertsx:20171107152019j:plain

続いてのセッションは株式会社シーイーシーさんより、廣田 哲也さんの発表です。

発表では、静岡県牧之原市で「親子で始めるプログラミング」という講座を始めて、1年と数ヶ月。その成果や苦労話についてお話しされていました。 現在はプログラミング教育のスタンダードが存在せず、プログラムに対する理解度も子供によって異っており、一人ひとりの理解度や希望に合わせて個別にカリキュラムを作るしかない。 また、地方においては教育に使える環境(インターネットやPCなど)も整備されていない といった、地方におけるプログラミング教育の課題についてお話しされていたのが印象的でした。

「ルビィのぼうけん」翻訳から見る子どものプログラミング教育、イメージからRubyプログラミングへの階段

f:id:selmertsx:20171107152117j:plain

3つめのセッションは、株式会社万葉さんより鳥井 雪 ( yotii23 )さんの発表です。 鳥居さんは「ルビィのぼうけん」を翻訳し、「ルビィのぼうけん」に関するワークショップも開催されてきました。 それらのご経験を元に、発表では「ルビィのぼうけん」から学べるものと、学べないもの。 プログラミング教育に必要なものと、これからの課題についてお話しされていました。 義務教育としてのプログラミング教育のあり方について、分かりやすく教えて頂けるセッションでした。

発表資料:「ルビィのぼうけん」翻訳から見る子どものプログラミング教育、イメージからRubyプログラミングへの階段 // Speaker Deck

京都女子大学でのRuby教育の取り組み

f:id:selmertsx:20171107152224j:plain

4つめのセッションは京都女子大学より、丸野由希さんと道越秀吾助教授のお二人からの発表でした。 発表では京都女子大学におけるRuby教育の取り組みと、Rails Girls Kyotoの運営についてお話しがされていました。

まず、京都女子大学におけるRuby教育について、道越秀吾さんから発表がありました。京都女子大学は理系の学科が存在していません。 それにも関わらず Rubyを講義で教えています。Ruby技術者認定試験に合格する学生も数多く、上手く教育を進めるためのノウハウについて発表されていました。

続いては、丸野由希さんから、Rails Girls Kyotoの運営に関しての発表です。 Rails Girls Kyotoは、Ruby や Railsの初心者の方と一緒にチュートリアルを通して、Railsのアプリケーションを作ってみるというイベントです。 丸野さんはこのイベントの運営を務めており、多くの人にRailsを教えてきました。発表では、運営の方法やRails Girlsによって得られた知見などについてお話しされていました。

Rubyプログラマが育つ仕組み−Rubyでの受託開発を10年回してみて

f:id:selmertsx:20171107152733j:plain

最後のセッションは、株式会社万葉さんから大場 寧子(nay)さんです。 内容は、万葉における新人研修について。これまで万葉の新人研修では、基本的にOJTが採用されており、メンターがメンティーのスキルに合わせて教育プランを考えていました。すると、アサインされたプロジェクトによってメンティーの学べる技術が変わってしまい、OJT完了後にどのようなスキルを持っているのか人によってばらつきが出てしまうという問題がありました。

そこで、有志が研修プロジェクトを一から設計しました。研修では、タスク管理を行うrailsのアプリケーションを作ります。実際の業務を踏まえて仕様はあえて曖昧にし、自分で仕様を検討して決めるプロセスも入れているとのことです。毎回同じものを作ることによって、研修終了時におけるスキルの均一化を図ります。また、副次的な効果として、先輩社員のレビューをメンティー以外の社員も見ることによって、社員全体が学習する機会となっているとのことです。先輩社員のレビュー結果を元に研修内容は毎年アップデートを重ねており、学習内容の網羅性や教材情報が集まることによって、より良い研修にするフィードバックループができているとのことです。

Closing Ceremony

f:id:selmertsx:20171107152810j:plain

RubyWorld Conferenceの2日間を締めくる Closing Ceremonyでは、2日間のRubyWorld Conferenceの来場者、 全てのスポンサーの方々を紹介、登壇者の方々の発表の概要について丁寧にまとめてお話しされていました。

今年のRubyWorld Conferenceは、過去最高の参加者数で801人になったとのことです。 RubyWorld Conference運営の皆様、スポンサーの方々、そして参加者の方々、お疲れ様でした!

Nintendo Switch 100台近く集めて Splathon#6 を開催したぞ

こんにちは、Speee でサーバサイドエンジニアをやっております id:kawakubox [@kawakubox] です。

三連休のど真ん中 2017年11月4日(土) に Splatoon2 の企業対抗戦『Splathon#6』を開催しました。

参加チーム数 24、対抗戦参加者131名(観戦含む) という過去最大規模の大会となりました。

そもそも Splathon とは…

「スプラソン」(Splathon)とは、スプラトゥーン(splatoon)とマラソン(marathon)を組み合わせた 株式会社Speee発祥の造語で、複数の参加チームが、マラソンのように、 数時間から数日間の与えられた時間を徹してSplatoonに没頭し、戦果を競い合うゲームイベントのことをいいます。

※実際は、数日間に渡る開催はまだやったことありません

過去大会の振り返り

まず、これまでの大会を振り返ってみましょう。

大会名 開催日 優勝チーム(企業)
第1回 Splathon 2015年11月29日 (日) ピクシブ株式会社*1
第2回 Splathon 2016年1月10日 (日) ドワ (株式会社ドワンゴ)
第3回 Splathon 2016年3月20日 (日) はわぁ… (NHN PlayArt 株式会社)
第4回 Splathon 2016年6月18日 (土) K/D2016 (カドカワ株式会社)
第5回 Splathon 2016年8月27日 (土) K/D2016 (カドカワ株式会社)
Splathon#6 2017年11月4日 (土)

ご覧の通り、前回から1年以上の間を空けての開催となりました。

今大会の特徴

1. Nintendo Switch

この1年間での大きなニュースと言えば

  • 2017.3.3 Nintendo Switch(以下 Switch) 発売
  • 2017.7.21 Splatoon2 発売

ですねっ。

今回は Switch × Splatoon2 を引っさげ満を持しての開催となりましたっ 👏

2. 初めての動画配信

前作では著作権絡みで動画配信に二の足を踏んでおりましたが、今作ではそのあたりがキッチリ整備されたので、大手を振って配信に踏み切ることができました。

任天堂著作物の利用に関するガイドライン‐niconico

live.nicovideo.jp

※タイムシフトは 2017/11/11(土) 23:59 までご覧いただけます(要プレミアム会員)

企業対抗戦編

参加チーム (エントリー順)

# チーム名 企業名 出場回数
1 負けたらhakuriさんGEO行って Meryeself, Donuts ほか
2 SFC ****
3 中間搾取株式会社 株式会社中間搾取 ほか 4*2
4 スパショは強い! しくみ製作所 ほか 6
5 ビズリイカ BizReach 3
6 ⒸUTA☆BL-R PROJECT BookLive 5
7 サイトオペαチーム Yahoo! JAPAN
8 4シャケ連号 Treasure Data, SQUARE ENIX, NRI, Money Forward 3
9 イカクロ インテリジェントネット, オズ
10 デカLINE LINE
11 イカネット マイネット
12 スペースイカベーダー タイトー有志の会
13 KD2016 カドカワ 3
14 コレハ小麦粉カ何カダ。〜プロコンに白い粉をまく仕事〜 日本テレビ 2
15 Splathon女子部 フリーランス, ケイブ, リクルートHD, スタートアップテクノロジー 3
16 CabinAttendantではない CyberAgent, AbemaTV 4
17 イカ部(く) ドワンゴ 6
18 夏衣(カイ)とイカ PicApp
19 すぴー塗装 Speee 6
20 スクイッ堂 **** 6
21 クマサン商会 IkaLogコントリビュータ集団
22 筋肉3.9 ピクシブ 6
23 念のため会社にはSwitchを持っていく ピクセルグリッド

上記に加えて、 チーム数を偶数にするために会場にて即席チームを結成

レギュレーション

対抗戦は以下に基づいて行いました。

予選、決勝共通

  • 各自の Switch を対戦ブースに設置したドックに挿し込んでもらう
  • コントローラは Proコン の有線接続を推奨する、ただ Joy-Con でのプレイ可
  • ブキは当日までにリリースされている全種使用可能
  • ギア、サブギアの規制は行わない
  • 事前申請したメンバー内での交代は自由

予選

  • スイスドローによる組み合わせ抽選
  • 1試合あたり2ゲーム行った結果での勝ち点方式
    • 片方がルール、もう一方がステージを決める、これを2ゲーム行う
  • 上位4チームが決勝トーナメントに進出

決勝

  • トーナメント方式
  • 1試合あたり2ゲーム行った結果での勝ち点方式
    • 片方がルール、もう一方がステージを決める、これを1ゲーム行う
    • 1勝1敗の場合は、ステージ:ランダムのナワバリ1本勝負

企業対抗戦短評

Slack コミュニティ内でのプラベで前評判が高かった 『負けたらhakuriさんGEO行って』、2連覇中の『KD2016』。

これらに加えて初出場組がどれだけ上位常連チームに食い込んでこれるかというのが焦点でした。

予選3ラウンドの結果、決勝にコマを進めたのは以下の4チーム。

準決勝は『負けたらhakuriさんGEO行って』『CabinAttendantではない』が激闘を勝ち抜き、どちらが勝っても初優勝という決勝カードになりました。

『CabinAttendantではない』が先勝、『負けたらhakuriさんGEO行って』が2戦目を取り返し、1勝1敗でむかえた運命のナワバリ1本勝負!!

勝ったのは

、、、

、、、

、、、

『負けたらhakuriさんGEO行って』でした 🎉🎉🎉

準優勝の賞品は Splatoon2 2018年カレンダー

優勝の賞品は イカ型スマートフォンケース が贈呈されました 👏👏👏

最後はみんなでパチリ

f:id:kawakubox:20171107022138j:plain

懇親会

今回は人数も多いのでケータリングを頼みました。 設営、撤収まで面倒見てくれるので、この規模になるとケータリングはおすすめです。

f:id:kawakubox:20171107023638j:plainf:id:kawakubox:20171107023651j:plain

同日に行われていた『第3回Splatoon甲子園 近畿予選*3』を会場のモニターで中継したり、有志によるLTもあったりで歓声あり、笑いありと良い雰囲気のなか会を締めくくることができました。


準備編

ここからは運営視点で、設営の話などを書いていきます。

先にも書きましたが、これまでの大会からの大きな変更点として

  1. ハードが Switch に変わった
  2. 任天堂作品の配信が公式的にOKとなった

があります。

今回の大会は Switch の良さを存分に活かしたいと思い設計しました。

Switch の良さを活かす

ギア問題

過去の大会は、ハードが WiiU だったので、各自持ってきもらうのは現実的に無理がありました。

そこで問題になるのは端末ごとにブキの取得状況や、使い慣れたギアが持ち込めない点です。

端末間での差をなくすように、大会用のギアを制限して行うといった苦肉の策を取っておりました。

得意ブキとギアの相性などもあり一部プレイヤーから不満の声もあがっていたのは確かです。

しかし、Switch は携帯機の要素を併せ持つので、ドックさえ備え付けておけば対戦ごとに端末を差し替えることが可能です。

つまり、自分のプレースタイルに合ったギアを用意することでき、本来のチカラを存分に発揮することができるようになりました。

混線問題

WiiU のころは、ひとつのフロアに16台も集めるとコントローラの混線が酷く、まともに対戦を続けることが難しいケースがたびたび発生しました。

Switch は接続方式は Bluetooth に変わったので、フロアに20台近く集めても混戦することはありませんでした。

これは、コミュニティーメンバーに声をかけて、事前に混線検証会など重ねて行い実証しました。

※大会当日は万全を期すために、できる限りコントローラも有線接続で行うようにはしました。

配信設備

弊社メンバーには日頃ゲーム実況配信を行っている者がいません。

ですので、今回の実況配信をするにあたり沢山のノウハウをお持ちの株式会社ドワンゴのメンバーに声をかけ、配信まわりの一切をお任せすることにしました。

当日のネットワーク構成

前日設営で組んだ構成はコチラです。

f:id:kawakubox:20171107040147p:plain
ネットワーク構成図

当初は無線LANを利用してインターネットに出て行う通常のプライベートマッチ(以下プラベ)も考えました。

これまでの大会でも回線落ちなどで大会進行の遅延が少なからずあったので、結局はオフラインプラベで行うようにしました。

この辺はコチラの記事が参考になると思います。

ネットワーク構成図にあるように、今回は3並列で対戦できるようにしました。

各島に9 〜 10台のNintendo Switch を配置していますがコレには理由があります。

対戦プレイヤー以外の Switch を観戦(兼プラベオーナー) とすることでプレイヤーが部屋を立てる必要がなくなり、メンバー交代の際に部屋が解散する可能性がなくなります。

このプラベオーナーを運営側で既に作っておく作戦は、スムーズな進行に貢献してくれました。

今回の構成だと、同一ネットワークに28台の Switch が存在することになります。

すべての Switch から3つのプラベ部屋が見つかることになるので、どの部屋に合流すればいいかは人手の運用にて解決することにしました。

ルーターが3つあれば、独立したネットワークにしましたが機器が足りませんでした。

4画面合成システム (通称 : はせがわシステム)

Splathon 名物の4画面合成システムも当然あります。


最後に

Switch になっていいことづくめのように書きましたが、そうでない点もあります。

大会の設計時点から分かっていたことではありますが、Switch は携帯機であるがゆえ対抗戦を行っている最中に手元で遊べてしまいます。

それが練習であったり、まったく違うゲームだったり様々ですが、対抗戦に集中してもらうためにはどういった大会設計にするのかなど考えは尽きません。

しかし、改めて思うのは Switch はとても良く設計されたハードだなということです。

任天堂さん、素晴らしいハードをありがとうございます。

次回に向けての反省点も見えてきたので、これらを踏まえて次回 Splathon をもっと良い大会にしたいと思います。

追伸1

優勝メンバーのひとりが自戦記を書いております。 とても考察に富んだ内容なのでゼヒご覧ください。

ikazuchisdiary.hatenablog.com

追伸2

今回の運営で燃え尽きたので、しばし充電期間が欲しいです。 年内の開催は多分ないと思います。

関連リンク

Splathon#6 - Togetterまとめ

第五回splathonに参加してきた。 - <y>

第4回Splathonを開催したぞ - Speee DEVELOPER BLOG

第3回 Splathon (#splathon) が開催されたじゃなイカ - Speee DEVELOPER BLOG

第二回Splathonを開催したぞ(42日ぶり2回目の #splathon ) - Speee DEVELOPER BLOG

Splathon(企業対抗スプラトゥーン大会)を開催しました - Speee DEVELOPER BLOG

*1:このときはまだチーム名を付けていなかった

*2:過去ほかチームで出場あり

*3:なんと過去のSplathon出場メンバーが決勝戦に残っていた!!

プレミアムもくもく会を開催しました!

こんにちは!SpeeeでSwiftエンジニアをしている id:Mitsuyoshi です。

Speeeでは先日プレミアムもくもく会を行いました。

もくもく会自体は普段から隔週で開催しているのですが、今回は第29回もくもく会、しかも10/29ということで、 懇親会で肉を食べるプレミアムな会としました。

いつもと少し違ったプレミアムな場にするために、以下の2つを意識して企画しました。

  • より作業が捗る場にする
    • いつもより長い時間オープンにし、作業時間を多めに確保しました。
  • 1日の成果を参加者全員がアウトプットをする
    • 知見の共有は大事なことです。せっかくなので1日の成果を発表してもらうことにしました。
    • やりきった方がお肉も美味しいはず!

内容

日程は下記の通りです☕️

9:30〜       開場
10:30〜10:45 自己紹介
10:45~      もくもく
           適宜ランチ
   〜16:30 もくもく
16:30〜18:00 成果発表
18:00~19:00 肉(懇親会)

f:id:Mitsuyoshi:20171029230747j:plain
朝ごはんはサンドイッチでした

成果発表

今回はRailsに関するもくもく会、とテーマが決まっていましたが、参加者それぞれどういった形でRailsに関わるのかは様々で、アプリケーションを作るひと、gemを実装して公開するひと、OSSに貢献するひと、起業しようとするひとなど、十人十色の発表でした。

弊社から参加した、私と@hatappiは以下の発表をしました。

f:id:Mitsuyoshi:20171029165148j:plain qiita.com

f:id:Mitsuyoshi:20171029180508j:plain
Railsテーマのもくもく会でGoを書くはたっぴさん。つよい
コンソール上で動作するポモドーロ用タイマーをつくる

※ 25分、集中してそのタスクをやったら5分休むというサイクルで作業をする手法

肉がテーマなので各種取り揃えました。 王道の和牛ローストや写真映えする鶏の丸焼き、おもしろいところでは合鴨の香草蒸しなどもありました。

f:id:Mitsuyoshi:20171029180726j:plain f:id:Mitsuyoshi:20171029180917j:plain

まとめ

台風が接近する中での開催になってしまいましたが、参加してくださった皆さんありがとうございました。 これからも色んな開発者の方に集まっていただけるような場所にしたいなと思っています。

Speeeでは月に2回ほどもくもく会を開催しています。 普段は特に使用技術の縛りはないので、朝ごはんとコーヒー目当てにラウンジに遊びに来てください。

speee.connpass.com

RubyWorld Conference 2017 速報!(1日目)

こんにちは。開発基盤の森岡です。 RubyWorld Conference 2017、1日目のレポートをさせていただきます!

オープニングセレモニーでまつもとゆきひろさん、島根県知事の溝口さん、松江市長の松浦さんの開会の挨拶からRubyWorld Conferenceが始まり、その後にまつもとゆきひろさんの基調講演になりました。

基調講演

f:id:selmertsx:20171102114512j:plain

基調講演では、まつもとゆきひろさんがRubyの開発を始めた1993年から25年目となる2018年の展望についてお話しがされていました。社会人2年目、最初は趣味として作ったRubyという言語が、2年後の1995年には200人の人々に使われました。そして2017年現在では、100万人のエンジニアに使われるようになり、大きなコミュニティを形成しました。

そこからまつもとゆきひろさんのRubyコミュニティ運営に話が変わります。コミュニティの運営と、Rubyの更新は強くつながっています。言語としての素晴らしさを優先し、後方互換性の無いバージョンアップをしてしまうと、付いてこれる人とそうでない人とでコミュニティが分断されてしまいます。しかしながら、コミュニティには人を引きつける何かが必要で、それが無ければ人が離れていってしまいます。故に、Rubyの開発においては、互換性を維持しながら変化をし続けることが必要であり、デザイン上の失敗があっても、それを抱えたまま前に進む選択をすることがあるとのことです。

「言語として後方互換性を保ったまま変化を進めていく」ということで、Rubyは速度の向上生産性の向上の2つの方向性で変化をさせていくというお話しがされました。速度の向上については、Ruby 3×3という指針を掲げて開発を進めています。これはRuby3.0はRuby2.0と比較して3倍の速度を目指すということです。MJITを使ってRubyの速度を上げるというものでして、これは既に特定のベンチマークにおいて2.8倍にまで到達しているとのことです。生産性の向上は、Duck InferenceとInteractive Typingの2つを導入することによって、ソフトウェア開発時における間違いをより早く検知し、より生産性の高いコーディングを実現しようとするものです。

最後に、「RubyWorld Conferenceには、学生、背広を着たエンジニア、ジーンズを履いたエンジニアと多種多様な人たちが来ており、そういった幅広いユーザーからこのような場で話を聞き、Rubyの開発をしていきたい。"Ruby is nice so we are nice"。我々がコミュニティに対してniceであることで、Rubyを使う人達の生産性を上げ、コミュニティをより強固にしていく。」というお話しで基調講演を締めくくりました。niceという言葉を聞いたとき、"Matz is Nice And So We Are Nice" というRubyコミュニティの標語を思い出したりしました。

質疑応答の場では、後方互換性を考慮して、これまでできなかった変更は何かあるのか?という質問に対して、Ruby3.0 ではキーワード引数直しちゃうかもというお話しが出てました。

High Performance GPU computing with Ruby

f:id:selmertsx:20171102114605j:plain

最初のセッションは、Ruby Science Foundationから、Prasun Anand(prasunanand)さんです。 GPUを利用して演算を高速に行うArrayFireのRuby Bindingを開発しているという発表がされていました。ArrayFireは既存の演算ライブラリと比較して非常に高速であり、ベンチマークにおいてはnmatrixの1000倍の速度で演算が出来ているというお話しでした。またCUDAをRubyで使えるようにするrbcudaの開発にも着手しており、こちらはArrayFireのRuby Bindingと比較しても、より早い演算ができるというお話しをされておりました。

発表資料と、ライブラリのGitHubのURLを掲載しておきます。

小型IoTデバイス向けの開発言語「mruby/c」

f:id:selmertsx:20171102114620j:plain

次のセッションは、九州工業大学の田中 和明准教授(kaz0505)と、しまねソフト研究開発センターの東 裕人さんのお二人の発表でした。最初は田中和明さんから、小型IoTデバイス向けの開発言語であるmruby/cを開発しているというお話しでした。

発表では、そもそもなぜmrubyをIoTデバイスで利用するのかというお話しから入りました。近年において、一般的なIoTデバイスの開発はソフトウェアの開発費が非常に高くなってしまっています。その理由は、IoTデバイスの開発はソフトとハードの両方の知識が求められるもので、言語にもCやC++が利用されており、非常に学習コストが高くなってしまっているとのことです。その学習コストが、開発費を高くする原因になっているとのことでした。

そこでmrubyに目をつけたとのことですが、ワンチップマイコンほどの小さいデバイスとなってくるとOSが入っていないこともあり、OSが無ければmrubyを動かすことも出来ません。そこで、mrubyの書き味を残したまま、OSが無くとも動かすことができる言語の開発に着手しました。そこで出来上がったものが mruby/cです。mruby/cはオブジェクト実装や例外処理の簡素化によって、mrubyよりもより省メモリで動作し、メモリ管理や複数管理を自身で行う機能も持っているため、OSが無くとも動くとのことでした。

次の発表はしまねソフト研究開発センターの東 裕人さんから、mruby/cを実際に利用したIoTデバイス開発のお話しでした。ここでは、CやC++が学習コストが高い理由をより詳細にお話しされていました。また、mruby/cを使ったセンシングデバイスは具体的にどのように開発されているのかというお話しもされていました。

RubyとIoTをもっと簡単にする

f:id:selmertsx:20171102114747j:plain

2つ目のセッションは、株式会社ファイブルビーさんより侯 大偉さんから、Rubyを使ったIoTのフレームワークであるTamashiiというOSS開発に関しての発表が行われました。今年のRubyKaigiに参加された方は聞いたことのあるOSSかもしれないですね!

TamashiiはWebSocketを使って、RailsのアプリケーションとIoTデバイスを接続させます。Railsアプリケーションを拡張した tamashii、IoTデバイス用のtamashii-clientなど、複数のライブラリによって構成されています。開発の裏話では、ActionCableと接続させるためにIoTデバイス上でヘッドレスfirefoxを起動していた(現在は修正済み)というお話しは、ヘッドレスブラウザにそんな使い方もあったのか!と、驚かされる内容でした。

参考資料

Rubyによるたのしいユーザー基盤再構築

f:id:selmertsx:20171102114914j:plain

3つめのセッションは、クックパッド株式会社さんより諸橋 恭介さんの発表でした。

サービス開発においては、コードを個人で書く楽しさから、チームでものを作る楽しさ、そして届ける楽しさにつなげることが大切であり、そこを繋げるためにCookpadさんで行っている取り組みについて、詳細にお話しされていました。

チーム全体で知識を経験とするためのプラクティスが沢山あって、非常にためになる発表でした!

参考資料

Rubyのテストカバレッジ測定機能の改良と展望

f:id:selmertsx:20171102114945j:plain

4つめのセッションは、クックパッド株式会社さんより遠藤 侑介さんの発表でした。

発表では、カバレッジとは何か、どのように付き合うものなのかについて、コードも交えながら分かりやすくお話しされていました。カバレッジとは「目標」ではなく、コードが適切かどうか考えるための切っ掛けであり、安易なテストでカバレッジを上げようとすると考えるためのきっかけも見失うというお話しが印象的な発表でした。

Ruby2.5からテストカバレッジ測定に関数・分岐カバレッジも導入できるようになるとのことです!

Rubyで機械学習が出来る未来を目指すRed Data Toolsの現状と今後について

5つめのセッションは、弊社Speeeより畑中悠作(hatappiの発表でした。 こちらについては、下記URLに詳細を記載しておりますので、そちらを御覧ください。

hatappi.hateblo.jp

組込みハードウェアモジュールへのmrubyアプリケーション適用試行

f:id:selmertsx:20171102115109j:plain

RubyWorld Conference最後のセッションは株式会社日立ソリューションズさんから三好秀徳(miyohide)さんの発表でした。 ESP-WROOM-32上でmrubyを使って、温度センサーやGPSを活用するというお話しをされていました。 IoTの分野においてはハードウェア毎に仕様が大きく異なるため、同じ動きでも端末毎にコーディングしなければならないようです。そこで重要となってくるのが、ハードウェアの差分を吸収してくれるフレームワークであるplatoであるとのことで、そのフレームワークのお話しもされていました。

参考資料

Ruby Prize 2017

f:id:selmertsx:20171102115157j:plain

Ruby Prize 2017 においては、kamipoさん、k0kubunさん、piotr solnicaさんの3人の方がノミネートされておりました。 そして、受賞はkamipoさんでした!!

kamipoさんは、Railsの特にActiveRecordにコミットしている方として有名な方なのですが、気になるところを直し続けて、気がついたらRailsで一番コミットしていたとのことです。受賞スピーチにおける「直し続けるということは、あるべき姿を探求し続けるということ」という言葉が印象的でした。

以上で、RubyWorld Conference 2017 の1日目のレポートを終わらせて頂きます!2日目のレポートも森岡から後日公開させて頂きます!

分散コンピューティングで人工生命を演算する

こんにちは!SpeeeでiOS/Swiftエンジニアをしている id:Mitsuyoshi です。

私は趣味で人工生命をつくっていて、先日開催したSpeeeKaigiでもその発表をしたのでここで紹介します。

tech.speee.jp

f:id:Mitsuyoshi:20170907145713g:plain

人工生命とは

人工生命とは、生命のいち側面をシミュレートすることで、我々の知る生命の理解と、ありえたかもしれない生命の探求を行なう分野です。

アプローチにはさまざまな手法がありますが、以下のような研究が有名です。

コンウェイのライフゲーム
実装の容易さと表現の多彩さで様々な研究が行われています。
ライフゲーム - Wikipedia

阪大 四方先生の進化する人工生命
自己複製するRNAを使用した化学的手法の人工生命です。
“生命”を人工的につくる - RNA複製能力の向上と膜たんぱく質の進化に成功

なぜやるか

人工生命を創ろうとしている理由は、自分が影響を与えることができるけれども、完全にコントロールできないものが好きだからです。 私は趣味で、プレイヤーが操作しないタイプの箱庭ゲームや、動植物の飼育、あるいはロボットの制作などを行ってきましたが、それらは全て、「自分がセットアップするけれども、見たことのないふるまいを見せてくれる」という面白さがありました。 生命の進化というのはその最たるもので、環境を変化させ進化を促すことはできるけれども、それがどのような結果をもたらすかはやってみないとわからず、そこに発見と観察の楽しさがあります。

f:id:Mitsuyoshi:20171003193039g:plain

どうやるか

人工生命のアプローチには大きく分けてソフトウェア、ハードウェア、ウェットウェアの3つがあり、そのうち、最も手間のかからないソフトウェアでのアプローチを行なっています。 ただし、ソフトウェアはウェットウェアと比べて計算能力が圧倒的に低いという欠点があるので、今回のはその欠点を補うコードを書きました。

f:id:Mitsuyoshi:20171012150548g:plain

今回の試行

今回はSwarmChemistryという人工化学のモデルをSwiftで実装し、それを分散コンピューティングに載せて実行できるようにしました。

github.com

スクリーンセーバーのダウンロード

参考文献

おわりに

今回はスクリーンセーバーとして実装したのですがこれが思いのほか良く、面白いパターンが生まれた時にはずっと眺めていられます。
また、毎日使うので改良案なども定期的に思いついてモチベーションの維持にもつながりました。
真に"生命"と呼べるようなパターンは出てきていませんが、続けていって少しずつ改良していくつもりです。