五倍 RubyKaigi 之旅

五倍紅寶石 身為一間專門做 Ruby 的公司,員工旅遊就去 RubyKaigi 朝聖囉,我們選在 RubyKaigi 前兩天的晚上飛過去

第一天晚上一到就在附近晃晃,我們就住在廣島和平公園的旁邊,想說去看一下原爆點,雖然晚上去實在有點毛毛的

後來就晃到一蘭拉麵,在台灣據說要排隊不容易吃到的樣子,在這邊排一下對就進去了,用餐的環境很特別,麵也很合我的口味,不會像其他日本拉麵超級濃

第二天我揪了一些人去大和博物館看 1/10 大小的戰艦,當然也展出了很多二戰的歷史...人類當時為了打仗真的是造出了很可怕的戰爭機器,不過美國更聰明就是了,用一堆飛機就讓這個龐然大物沈到海底

可是當時泰利颱風到達台灣之前直接北轉,除了沒辦法放颱風假 (?) 之外,也讓我們得快點回飯店,要不然我很想慢慢地逛一整天呢,博物館外面還有一比一大小的 1/4 大和甲板可以驚滔駭浪一下

第一次參加國外研討會 - RubyKaigi 2017

參加國內的研討會好幾年了,也差不多是時候出國見見世面,在會前去官網查了一下 schedule,發現都是 Ruby 這個語言本身相關的議程, Rails 以及應用相關的議程不太多,說實話我對應用比較有興趣,在看議程的時候就覺得吸引到我的議程不是很多...不過我想研討會就是要拿出新的東西, Ruby 應用級的生態已經相當成熟了,自然就沒什麼應用相關的議程吧,不過我們老闆說本來 RubyKaigi 上面講 Rails 的東西本來就不會上就是了,是為了避免跟其他 Conf 搶議程嗎?

入場用的 badge ,在日本 Ruby 圈用 twitter 的人比較多,所以就寫上我的 twitter 帳號,並附上這個網站的連結!

RubyKaigi 2017 官網
話說我很喜歡這個官網的設計,下面水波紋的設計的感覺很讚

有些議程是日文,有些是英文,日文議程會有即時口譯,不過效果有限就是了...

Goby - a ruby-syntaxed language using golang

啥?又一個程式語言?我當時看到這個的時候這樣想,仔細看了一下,的確是一個新的程式語言『用 Golang 寫的一個語法跟 Ruby 非常像的程式語言』
Gihub repo of Goby
看起來這個議程會在這裡出現應該是因為 Goby 用上了 Golang 的 goroutine 東西,雖然不知道為啥,我一直以來對 concurrency, asynchronous 相關的東西有點興趣,讓他某種程度的解決 Ruby 寫多執行緒的時候的困難,不過說到底其實是因為講者是來自台灣的 Stan,他也常常出現在五倍,當然要去支持一下囉

這場議程的內容除了跟會眾介紹 Goby 之外,我覺得有蠻大一部分是在跟大家講心路歷程,為何會想要自創語言、在這個過程中學到甚麼之類的,Stan 也說自己現在的職稱是 "Junior Language Developer",我個人聽完之後覺得介紹預言 feature 的部分有點少...,如果可以的話應該來 demo 一下使用 Plugin 功能直接用 Golang 函式庫啟動一個 http 伺服器、做些資料庫操作,然後再來火力展示一下 Channel 跟 thread 的功能應該會吸引到更多的人~

如果 Goby 未來可以擴增成 Ruby 的一種實作,可以跑 Gem 的話感覺會更有趣,可能這個請求太過遙遠吧哈

Presentation intro on RubyKaigi 2017

Ruby => Opal / Webassmebly? => Javascript on browser

DXOpal as example

我一直覺得 web 這個平台擁有無窮的潛力,這個潛力來自於瀏覽器的普遍性,而世界上幾乎所有擁有 GUI 的裝置都會安裝這個軟體,而且他也提供了一個通用的應用層,這個議程講者跟大家講了 Webassembly 是否能夠讓 Ruby 在 web 平台上有更好的發展空間,他也寫了一個 DXOpal 遊戲引擎(應該是吧?)來做各種測試,我大概整個 RubyKaigi 最有興趣的就是這場了,第一場 Matz 講完我就跑來聽這場

Opal 幫你把 Ruby code 轉換成 Javascript 在瀏覽器上跑,聽起來很神奇,但據說完成度很高;而 DXRuby 是一個串接 DirectX API 進而讓你可以用 Ruby 寫遊戲的 gem 。講者為了要在瀏覽器上用 Ruby 寫遊戲而寫了 DXOpal,這個東西是用 Ruby 寫的,它把 matter.js 串接成 DXRuby 的 API,然後用 Opal 轉成 dxopal.js / dxopal.min.js ,最後你自己遊戲本身邏輯當然就用 Ruby 寫一寫然後丟到 Opal 編成 js 在瀏覽器上執行

DXOpal 的一些 Demo
基本上 DXOpal 應該只是實驗玩樂性質寫的,有些 DXRuby 上的 API 也沒全部實作出來,因為遊戲多少會對效能有一定的要求,Opal 想當然爾不會很快,講者 show 了一小段 ruby code:
cx = (x1 + x2 + x3) / 3
編成 javascript 就變成:
cx = $rb_divide(($rb_plus($rb_plus(x1, x2), x3)), 3);
$rb_plus 還要考慮輸入是字串的狀況,所以自然就不是很快,這在遊戲的碰撞演算法上就會是一個瓶頸...

這時候就開始講各種可能的加速方法,然後進入主要的主題 - Webassembly ,講者分別用 Opal / JS / wasm from c 進行碰撞測試的效能比較,wasm 確實比 Opal 快很多,但是其實就只是跟 native javascript 差不多...要注意現在這個 wasm 原本是 C 寫的,可見 javascript 可以自行優化, wasm 其實就沒有這麼有優勢了
把 Ruby code 轉成 wasm 呢?目前沒有這樣的工具,而且我覺得未來可能也不會有,Ruby 太過動態了;那用 Crystal 或是那把整個 Ruby 的 C source 編譯成 wasm 呢?雖然目前可以 C 轉換成 wasm,但是 wasm 對於記憶體有限制會不能 GC ,所以還是無解...
大概就是看 wasm 未來能不能有方法讓 GC 變的可行

所以 Webassembly 對「 Ruby 跑在瀏覽器上」來說有啥幫助嗎?

簡單來說,現在真的沒啥幫助...除非有一個不容易 porting 的 C lib 想要用 Ruby 來呼叫,這時就把 C lib 轉換成 wasm 、Ruby code 用 Opal 轉成 JS ,最後想辦法在瀏覽器上整合起來跑...
聽完這個議程,目前要讓 Ruby 在瀏覽器上跑得有效率還沒啥希望,雖然如此,能夠透過這個議程了解到目前在瀏覽器上跑 Ruby 的可行性以及限制也算是蠻有收穫的,而且也看到了 DXRuby / DXOpal 這兩個有趣的東西

Presentation intro on RubyKaigi 2017

Tamashii

一套讓 IOT 裝置可以簡單地透過 Ruby 操作的 framework

由五倍自行研發的 framework ,這場由 Henry 帶來的議程當然要來支持一下的,不過我一直對 IOT 一直都沒有啥研究,大學的時候就拿 AND OR 閘插電路弄成加法器之類無用的電路而已,玩 Arduino 也從沒弄出啥有用的東西

Official Site
我覺得 Tamashii 有趣的地方是把每個 IOT 裝置高度抽象化,從 Rails 裡頭呼叫就像是 ActiveRecord 做資料操作一樣,讓商業邏輯就是商業邏輯,目前有在 Conf 作為報到系統使用,而且公司內每天上班都可以用悠遊卡刷一下證明你有來上班~

Presentation intro on RubyKaigi 2017

在 RubyKaigi 中我發現我自己有蠻多時候聽一下台上的人講一點,查了一下他講的東西,然後就顧著看自己的筆電了...絕對不是因為我聽不懂日文口音的英文,不過我覺得這樣說不定也不錯,平常在公司上班就是顧著專案內的東西,可以出來接觸一下新東西充充電也很不錯,我也透過這個機會啟動一些我自己的專案,隨便寫一些平常不會寫的東西
根據 Kaigi 總召 Akira Matsuda 表示, RubyKaigi 要在日本各地旅遊,讓大家玩遍日本三景,上次在京都(天橋立)、而這次在廣島(嚴/宮島神社),所以下次就在最後一個 - 仙台(松島) ,而且為了挑一個不會熱死、冷死或是遇到颱風的日子,就決定在明年五月了,好快啊!

台灣都被貼到看不到了

贊助商給贈品毫不手軟,拿了超多 Github 貼紙~

研討會中有很大一部分是去認識朋友,朝聖一下,在 RubyKaigi 每天晚上都有 Party 可以跟大大們聊天,而且也提供非常多贊助商提供的酒精飲料以及餐點,我很喜歡第一天晚上的 Party 的安排,一些圓桌,旁邊放 Buffet 跟自己取用的各種酒,然後完全沒有椅子,大家自由走動跟別人聊天,我也不知不覺把明年要在台灣辦的 Ruby Elixir Conf 的名片發完了,雖然也有遇到一聽到英文就躲起來的日本人...
第二天晚上我有跟 Noah 聊到 Webassembly 竟然只跟 JS 差不多快的事情,我就發現我們兩個關注的點完全不一樣,我只是覺得能在瀏覽器上跑 Ruby 很有趣,他則是覺得 JS V8 引擎超快,說不定可以拿來當成 Ruby3x3 效能改進的一種方法

↑ 大概 Kaigi 第二天晚上棒球隊贏球的樣子,據說他們好幾十年沒贏球,所以晚上整個城市都樂翻了,我也被一個喝醉的路人拉來一起「耶~」歡呼一下,然後把啤酒灑在我身上,我嚇到XDD

← Kaigi 中午休息的時候都在和平公園裡頭晃晃,這是當年原子彈後的紀念碑...

Kaigi 結束之後隔天有人約早上殺去嚴島,讓颱風知道我們意志的堅定,所以公司一群人一大早就殺去看日本三景之一 - 嚴島

看到這個就覺得早起一切都值得了,我就坐在岸邊的石頭上靜靜地看著這壯觀的景幾十分鐘...

走在這座水上神社,有徐徐的海風,真希望可以晃久一點,可惜我們只能停留半個早上,中午就得搭新幹線殺到福岡

在福岡的第一個行程是參訪 Nulab,參觀一下他們的工作環境,感覺他們的空間好大...
頂樓的 Party 空間也很猛,然後我桌球已經完全忘記怎麼打了

晚上是五倍自己的大酒會!在大偉哥的帶領下氣氛很嗨,一年來大家辛苦了!
(我年資是還沒滿一年啦)
(沒想到我有留這麼有意境的一張照片...)

接下來三天就是真正的自由行了!在九州地區自由的晃,有人每天都跑超遠,感覺我應該要這麼做才對,大概第二天最充實,早起去買 switch 然後作新幹線在熊本晃到半夜回飯店

看來因為棒球贏球的關係,出現原價的 switch 了
於是我們排隊,同事們就這樣買了七台...
大家買來打 MH,我比較邊緣拿來打薩爾達,連我妹都愛玩,有值得啦

在熊本到處都可以看見的呆熊,其中中間右邊那張還是他的辦公室哩,我們更為了買這隻呆熊到處奔波呢

因為之前熊本大地震,熊本城目前只能遠觀,但是日本人還是很有效的利用地震讓這個觀光服務以最低方式運作,他們規畫了一個路線並且沿途介紹被地震破壞的各個景點

最後一天徒步走過海の中道到志賀島,吹吹海風,參拜一下島上的神社,這種在島嶼上的神社更有古老清幽的感覺

很感謝公司安排這樣的員工旅遊,第一次參加員旅回憶起來竟然可以讓我打這麼多字,寫了好幾天都寫不完哈,真的是收穫滿滿呢!

Back to posts | Back to index