2016 五倍紅寶石 京阪 暨 RubyKaigi 之旅

今年九月份,有幸獲得公司贊助到日本京阪地區參加為期九日的員工之旅,期間除了參加 Rubyist 的年度進香盛典 RubyKaigi 研討會外,也安排了很多和當地的社群、Rubyist 、使用 Ruby 的日本企業交流的機會。

對於初次出國跟日文程度幾乎完全為零的我來說,這是一個充實又充滿各種驚喜的旅程,下面簡單記錄一下此次日本行印象深刻之處。


啟程

09 /03 (週六) 一早五點半,坐上了提前預訂的計程車前往桃園機場搭乘虎航前往關西空港。因為完全沒有出過境、加上我其實是不能任意出入國境的未服役役男,即便所有手續都已經提前辦理好,還是很擔心會有什麼突發狀況發生,好險過程中他只要求我出示「在學緩徵役男網路申請出境核准證明」就放我過關了。

Photo Credit: 自拍狂人 Sabrina

因為當天天氣、跑到調度的緣故,飛機 Delay 了一個小時才抵達關西空港,加上過程中發生了一些「有驚無險的插曲」(Eg. 把錢包忘在海關查驗處)、還有安排了各種初心者訓練任務,實際抵達飯店的時候已經接近傍晚了。

By the way 過關的時候因為跟著同事一起在隊伍中排隊,就被檢查人員招手要我們一起過去,完全沒被查驗行李、只簡單瞄了一些入關登記表格就放我們通行了。雖然我是個孤僻不喜歡太多人一起旅行的人 …(爆),但是團體旅行真的可以省下不少麻煩 XD

這次旅行前在閱讀皓姐幫我們寫的行前需知前,就發現我們京阪住宿的飯店都在黃金地段。但放好行李出去覓食的時候,還是不免讚嘆一下,隔壁就是道頓崛,完全就是一個被商店街結界包圍、沒有破產不讓你離開的概念。

這天晚餐吃了傳說中的一蘭拉麵,不得不說日本對於一個人用餐這件事情真的是各種友善,我相當喜歡這種單人座位、甚至也不需要跟師傅相看兩討厭的設計。食物當然是好吃的沒話說,回台至今仍然念念不忘。

吃飽喝足後,我們到了梅田去喝麒麟啤酒冰沙,順便到附近的「空中花園」去看夜景,站在高點看城市的夜景整個就是一件舒壓的事。

大阪環球影城

第二天唯一的行程就是大阪環球影城,我們一路從早上玩到觀園才依依不捨的離開。不過懶惰又膽小的我,將手上四項免排卷玩完之後,下午幾乎呈現一個四處逛街、找地方下午茶的概念,不過我對樂園的東西有一定的免疫程度,還好沒有在環球影城的結界中就把錢都噴完 www

整個環球影城中我最喜歡的就是復刻的「活米村」,甚至還有奶油啤酒、奧利凡德的魔杖店。不過很可惜的是在看奧利凡德魔杖店的表演時,不是「The Chosen One」…(咬牙)。值得一提的是整場表演居然是英日雙軌,就連我這不會日文的麻瓜也能理解,是哈利波特迷絕對不能錯過的經典表演。

在環球影城遇到 Shrek & Fiona

參訪 ANKH Systems 社 & 京都女子大學

ANKH Systems

第三天一早跟皓姐一起去參訪 ANKH 社,路上還聽皓姐解釋了日本「與眾不同的地址劃分方式」 (身為路癡的我實在不便亂在文中解釋這種事,還是請大家點連結看《The News Lens 關鍵評論》的專題報導),身為臉盲又路癡的我,只好頻頻點頭稱是並默默開啟「自動跟隨模式」。

一到 ANKH Systems 就被站在門口相當眼熟的機器人嚇到 (後來 ANKH Systems 有在簡報中提到那是 Pepper),他不但會詢問你來訪的目的自動通報、還會突然轉頭「癡癡的望著你」,相當 Creepy 又相當討人喜歡,覺得想要敗一台回家玩玩。

ANKH Systems 向我們介紹了他們公司日常運用 Ruby 在哪些專案上面、Ruby 專案遇到的有趣問題,以及日本 Ruby 生態圈的發展;同時五倍紅寶石也由 Alan 以英文向他們分享臺灣 Ruby 生態圈的現況。

比較令我驚訝的是日本也有類似台灣「程式教育向下紮根」的計畫,並且在 Matz 的故鄉,他們有在學校教育中推行 Ruby 的計畫。。

京都女子大學

下午透過社群好友的幫忙,我們有機會到京都女子大學參訪,由我們社員向他們分享 Ruby語言有趣的特性、RSpec 及 前端開發;他們與我們他們在學校中教授 Ruby 的情況、以及學生使用 Ruby 的心得分享。

分享會後,他們準備了京都當地的茶點供我們享用、並藉這個機會和大家交流。在這天第一次喝到了煎茶後,突然意識到從前不認識煎茶的人生都白活了 …(有沒有這麼戲劇化),所以我日本行的後面幾日都是呈現一個狂喝各種煎茶的狀態。

在京都女子大學的交流過程中,第一次體會到日本人對於英文的懼怕。難得可以遇到跟我一樣仍在學生身份中掙扎的同儕 …(只有你在掙扎,快醒醒),於是就決定鼓起勇氣上前用英文聊聊天,問問他們學校是怎麼教授 Ruby 的、有沒有一些課堂的 Side Project … 一開始他們只是傻笑,在我不死心的又一次追問下,終於露出靦腆的笑容告訴我「Sorry … No English…」,讓我瞬間被凍結 (果然出國前該惡補一些日文的 QwQ)

幸好最後英文比較好 @namekoko 同學幫我們翻譯,才漸漸聊起來,在問到他們有沒有畢業專題的時候,@namekoko 告訴我的他的專題是 「Machine Learning 相關研究」 (不過是使用 Python)、剛剛那位害羞比較不敢講英文的同學做的是「使用網路爬蟲做 Amazon 電商分析」,因為自己先前在別的工作上也有使用過網路爬蟲來自動化擷取資料,所以就進一步的問了她用的是 Nokogiri 嗎?沒想到她突然就放下戒心 …(?) 聊起了她的畢業專題,果然 Ruby 才是大家真正的共通語言。

京都 / 嵐山

第四天我們從大阪移動到京都,在飯店寄放好行李後就到嵐山去晃晃。中途參觀了天龍寺、御髮神社等地方。這天下午下了太陽雨 (據同行友人說這背後有個狐狸嫁女兒的民間傳說故事),所以從天龍寺主殿望向山頭的景色十分醉人,一個不小心就坐在那放空了近半小時。

傍晚大哥大姐們決定要團體去泡嵐山似乎相當著名的大眾湯,但我實在對於大眾湯有各種複雜的心理障礙,所以我就到附近的嵐山車站泡了足湯、看看 Kindle、順便喝了杯啤酒。

金閣寺、伏見稻荷 自由行

原訂第五天要跟同事一起去姬路城,但我實在是有點厭倦了趕路的日子,加上實在是放不下對狐狸的執念,所以決定第五天試著自己行動看看。

出發前問了同事 Okay 姊姊有關於京都公車相關的搭乘方法,Okay 姊姊就很大方地把一日卷怎麼買、我該到哪裡搭車、行程應該怎麼安排才順暢都很耐心的跟我過了一次,還給了我相當厲害、一目瞭然的京都公車圖。

出發前其實很擔心身為路癡的我會不會一個不小心迷路、加上自己又不會日文,要問路也不是那麼簡單的事,還緊張的拿了飯店的名片,打算要是迷路就自己搭車回來。沒想到我完全是自己嚇自己,京都公車的電視牆上面都是漢字,即使是我也很清楚方向對不對、什麼時候該下車,一路上也遇到很多好心的上班族用英文幫我指路。

到金閣的天氣特別好,還遇到了日本小學生戶外教學,也順利求到了「中吉」的籤。

下午在伏見稻荷神社順利買到了朝思暮想的可愛狐狸布偶,也去傳說中的「千鳥居」,不過我往上走了約一個多小時就放棄了,下次有機會再次造訪的話再來試著挑戰攻頂。

朝思暮想的狐狸布偶

RubyKaigi

RubyKaigi 當然是整趟旅程的重頭戲,本次 RubyKaigi 舉辦地點是相當有歷史意義的《京都議定書》的簽訂地點。為了國外會眾,主辦單位於兩軌的場次都相當貼心的設置了同步口譯的服務,因爲是國際會議場地的緣故,所以場地本身就備妥了同步口譯需要的收發設備,與臺灣場地大都透過網路串流不同,不論是清晰或是穩定度都相當足夠,讓我這個完全不會日文的外國人也能輕鬆參與。

華麗的會場 (雖然我手拙沒有拍出豪氣的效果)

可惜的是因為完全不會 C 語言的緣故,中間有許多議程我都只能了解整個實作背後的 Idea 跟精神,後面講解 C 語言的部分我完全呈現「鴨子聽雷」的狀況。

以下簡單挑幾場我印象深刻、特別的 Speech 簡單說一下自己的心得:

主辦單位已把錄影、投影片都上傳至官方網站,有興趣的人可以直接點標題進去查看。

Ruby3 Typing

第一場 Keynote 毫無懸念的由 Ruby 之父 Matz 開場,這場的講解重點其實是在「展望未來」。身為一個只想寫 Ruby 的攻城獅,常常貼受到其他語言愛好者對於 Ruby 一些特性的嘲笑與質疑,Duck Typing 常常是被質疑的重點之一,身為一個不是很硬底子的 Programmer,以往在這類論戰中我常常對於爭論的點似懂非懂。

在這場演講中 Matz 簡單地帶出當時採用 Duck Typing 的原因以及未來 Ruby 3.0 希望能夠帶入怎麼樣的設計來增進。

在寫這邊的文章時簡單查了一下,發現自 2014 年起這個主題就有不少討論,期望 Ruby 3.0 Release 的時候能夠為所有的 Rubyist 帶來全新的「世界觀」。

Isomorphic web programming in Ruby

這場演講的講者是 youchan ,也許是講者本身受歡迎的程度很高、加上主題又相當有趣,這一場在 Room D 的演講會眾完全直接滿到走道上。

這一場的講題是如何在不寫 Javascript 的情況之下,透過 opal implement 出使用 Ruby 操作 Virtual DOM 的做法 (概念出自於 React)。

這一場後半段幾乎全部是使用 Live Demo 的方式進行,因為都是 Ruby Code 所以我可以理解的程度相當高。不過這種敢在多人 Speech 的場合進行如此大量 Live Demo 的行徑本身就很令人讚嘆,想必事前做足了相當充足的準備,除了小小的 Typo 之外一切都進行得相當順暢。

身為一個一直都不是很喜歡 Javascript 的工程師,這場演講讓我覺得相當有共鳴,內容不但點出了許多工程師共同的痛點,更自行 Implement 初一個解法,是一場充滿熱情、又有啟發性的演講。

Ups and Downs of Ruby Internationalization

這場演講被許多人評為「冷知識」。事實上演講內容的確也真的是屬於一般人比較不會注意到的部分。

整場演講主要講的是以往 Ruby 的 `upcase`、`downcase` 方法只對英文的 26 個字母有效,當今天遇到了多國語言的時候,就會產生一些奇異的有趣現象。

日耳曼語系中有許多字母的跟英文的 26 個字母有重疊,對於這些句子執行 `upcase`、`downcase`,會造成僅有那些重疊的字母被處理,而呈現一個奇怪的有趣現象。

這場演講主要講的是講者發現這個問題後,如何透過各種不同的方式去修正問題、以及還有哪些特殊的情形尚待解決。

雖然因為我功力淺薄的關係 …(汗),許多較技術的內容我只是看看熱鬧,但是可以聽到講者解決問題的全盤過程,我認為這是一場相當有啟發性的演講。

Fearlessly Refactoring Legacy Ruby

第二天的 Keynote 是 searls 帶來的演講,這場演講應該算是我個人私心最喜歡的演講。

我們常常在專案進行一陣子、或是接手一個相當有歷史的專案後,發現有某些地方的 Code 實在是複雜到難以看懂、偏偏這些程式碼又會造成某些令人摸不著頭緒的問題,因為實在不是很了解這段程式碼的用途、甚至沒有測試 …(抖),我們直好在這段程式碼旁邊上很多的 Patch 來暫時繞過問題,我之前參與的某個專案到後題就有類似的問題,某段 Code 常常有問題,但是因為架構太龐大或是寫得太髒,沒有人願意去修改他 …(跪)。

這場的講者 searls 提出了一個方式讓你可以 “Gradually improving our design”,並且“Refactoring legacy code without fear”。同時他也 Implement 了 suture 來解決問題,有興趣的話真的大推可以看一下這場演講的錄影。

這場演講有一個有趣的特色是整份簡報充滿了 Emoji,我個人覺得相當親切。

各種 Party

來日本前就一直被老闆們叮嚀,來 Kaigi 最重要的除了聽議程,好好在各式各樣的交流活動上認識新的 Rubyist 也是重點之一。

為了加速拋棄羞恥心、盡快進展到四處找人聊天的狀況,到了會場當然是迅速地先來幾杯清酒 …(咦)

有帶名片果然是對的,見面就先簡單的交換名片,用英文 / 日文自我介紹過後,就可以開始閒聊。默默覺得我們公司的外套跟 T-shirt 相當好用,常常走著走著就被搭訕:「咦,我對你們有印象,上次在那個 XXX 也有看過你們公司的人,你們公司的 XXX 上次 …」。

不過大家也出其的友善跟好聊,除了一開始的尷尬之外,聊到時間到了還有點意猶未盡的感覺,在會場門口閒聊還被去年的總召說可以去下一場繼續聊,果然 Rubyist 對於二次會都有深深的執念 …(汗)。

和本年度我最喜歡的主持人 Jonan 合照

Ruby Karaoke

Party 中最特別的活動大概是 Ruby Karaoke,這也是我們公司老闆慕凡哥此次的重點行,雖然是五音不全的音癡,但是在大家的慫恿下還是決定一起去玩玩。

有點驚訝的是,慕凡哥唱歌意外的好聽 …(逃)。不過因為其實聽完一整天議程、加上已經在 Party 上面先喝過一點酒,我們大概近十二點就先行離開。據說慕凡哥吃完還去吃了宵夜,四點才回到飯店,我果然是屬於老人的那個 Group …(換位子)

最後

第一次出國就是去日本京都參加 RubyKaigi 研討會,實在是相當幸運,過程中除了體會到 Alan 先前一直告誡的:「出國花的錢,感覺不是錢」這句話的可怕之處外 XD;也認識了很多 Rubyist、被很多精彩的 Speech 啟發。

最後當然是要好好感謝公司老闆們:龍哥、慕凡哥、皓姊的贊助,尤其是特別感謝皓姐超用心的規劃行程、製作各種詳盡的行前須知,讓第一次出國的我也能盡情享受出國的樂趣。

謎之音:公司福利很好、還有貓,可以密切注意官網職缺喔!

[同場加映] 那些我腦波弱的時刻

日本是個充滿結界的國度,唯一能夠突破結界的方式就是好好把你口袋裡面的每一分錢、每一張卡都掏出來,所以此次日本行:

我買了:

  • Sony MDR-100ABN h.ear on 無線降噪耳機 一只 (還不小心燒到澤清哥)
  • FILCO Majestouch MINILA Air 67 Keys 英語配列 (老師說:「Filco 我有三隻」,我只有兩隻)
  • Phillips 音波牙刷 一只 (懶人都一定要有的)
  • 一隻狐狸布偶
  • 各種奇怪文具
  • 一件防水外套
  • 一件毛衣
  • 各種紀念品、伴手禮

我吃了:

  • 各種不同口味的拉麵
  • 大阪燒
  • 串燒
  • 寅太郎的豆腐鍋 (店員平均顏值超高,東西好吃,推)
  • 近江和牛
  • 各種不記得的牛部位 (生的、熟的、烤的、煎的)
  • 很多牛舌
  • 很多烤魚、炸魚

雖然不知道是原話是誰說的,但是最近聽到很有道理的《腦波弱小格言》:

買ってからの後悔は、3日で忘れるが、
買わなかった後悔は、三年は続く。

意思大概是:

後悔手滑買了東西,這種後悔 3 天就忘記了
後悔沒買什麼東西,這種後悔會持續 3 年

以上 XD