こんにちは、hachi8833です。
昨日はクラウドワークスさんが主催する「CrowdWorks Tech Meetup」の第2回である「Ruby on Rails Tech Meetup」というイベントに、BPS Webチーム部長のmorimorihogeさんと私で参加いたしました。
今さらですが、CloudではなくCrowdなんですね。
会場は、久方ぶりの恵比寿ガーデンプレイスの真ん中辺のビルの6Fです。
ビジネスマンらしく19:00より前に折り目正しく到着しましたがやけに人が少ない...?と思ったら、本日のプレゼンターの1人kamipoさんが急病のため開始が30分後になったそうです。ズコー。
それなら何かお腹に入れておけばよかったす。会場でいただいたこの2粒のチョコだけが頼り。おなか減ったよー。
morimorihogeさんは「だったらそれまで仕事するぜw」と、Gitのマージに悩むebiさんをリモートでサポート。
今度から夜の勉強会にはスニッカーズの一本も懐に用意してから臨むことにしましょう。マジで身を助けます。一本余分に用意しておいて隣でお腹をすかしているお嬢さんにさりげなくおすすめしたりとか。
そんなこんなで開始時間を迎え、そのときになって初めて、プレゼンターにあの@joker1007さんがいることに気が付いたのでした。
いよいよ開演(この字でいいのかな)。以下、私が割と好き勝手に書いてますので悪しからず。
当日の雰囲気は#cwmeetupで味わえます。全然関係ない大洗女子学園修学旅行とかも混じってますので適当に除けるか、Togetterまとめをどうぞ。普通Togetterにしますよね。
Twitterでの半畳はそんなにありませんでしたが、濃い内容が多かったこともあっておそらくみなさん手元のメモに忙しかっただけだと思います。実際は大いに盛り上がりました。
「Upgrade Forkwell to Rails5 the faster」(@sinsoku_listy)
Rails 5がリリースされたその日の朝、相撲の立会いのごとく社内Railsアプリの5へのアップグレードを開始し、当日中に完了させたという泣かせる話です。
インフラエンジニアの朝は早い。RCのときからコツコツとgemをアップデートし、パッチを試し、プルリク投げてその日をじっと待つという、内助の功ここに極まれりといった感があります。褒められもせず、苦にもされず、そういう人になれたらいいな。
リリース直前になるとどどっとドキュメントの更新が入るというあたり、臨場感ありますね。どれだけ周到に準備を重ねても、本番は予想どおりなにがしかのハプニングに見舞われるのですね。
「まだRailsで消耗してるの?」(@h3_poteto)
発表資料。
スライドのしょっぱなに映ってる方がGo言語のTシャツ着てるのが個人的にポイント高かったです。
最近、PhoenixというRailsにとてもよく似たフレームワークがじわっと注目を集めつつあるようです。そのPhoenixはElixirという、これまたRubyととてもよく似た言語を採用しています。Elixirの生みの親はJosé Valimで、Phoenixの開発メンバーでもあり、Railsコアコミッターを長年務めた方なので、RubyやRailsとの縁が非常に深いと言えますね。
そういえば今年のRubyKaigiの会場でもElixir本が何冊も販売されていたのを目撃しました。発音はきっと「エリクサー」なんでしょうが、私の心の中でだけ「エリクシール」とフランス語っぽく呼んでいます。ErlangもついEalangと書きそうになってしまいます。
「ところでみなさん、Railsつらくないですか?ぼくはつらいです」は定番の賑やかしですねw
庭いじりと同様、顧客のリクエストが長年に渡って降り積もって生い茂ってくるとメンテが大変になるのは、どのフレームワークも最終的には大きく変わらないのかなと思いました。
PhoenixにはSprocketsないんですってよ、奥さん。Railsの特にSprocketとかSprocketとかSprocketとかで苦労している人には耳寄りなお話かと思います。
他にも非同期処理に強いとか、syoryukenのコミッターと戦わなくて済むとか、うれしいであろうポイントが目白押しです。
Elixirはコンパイラ言語であり、Erlangという並列・並行処理にお強い仮想言語にコンパイルされてErlangの仮想マシン上で動作します。なので当然並列・並行処理を得意としています。Live Reloadも、JSやCSSのトランスパイルまで含めてやってくれるらしいです。
「何だまた仮想マシンかよ」って思っちゃいけないんですよね。
その一方、morimorihogeさんが懇談会で他の方と「RailsというかRubyはコンパイラ言語じゃないので、どんなに古くても動いてさえいればソースが必ず見えるというのが最後の拠り所ではありますねーw」というようなやりとりをしていたのも思い出しました。
本番のソースがなくなるって、もしかしてざらにあるんでしょうか?
「 The State of Sprockets 」(@_yasaichi)
発表資料。
前の発表を絶妙に受けたSprocketsの話題です。_yasaichiさんは最新のSoftware Design誌にも寄稿されたそうです。
Sprocketsがv4でSource MapsとES6をサポートなど、細かな情報が満載でした。何かと恨みを買いがちなRailsのSprocketsですが、@_yasaichiさんも「Sprockets捨てたんですか?」の質問に「いや、離れただけですw」とさらりと爆弾発言。
Railsで新し目のJavaScriptライブラリを使おうとするといらぬ苦労をさせられることが多いようで、自力で縫い付けると後で困ったことになりそうだけど、さりとてSprocketsでどこまでがんばるかというバランスも悩みどころ、みたいな印象でした。
「巨人でない我々のためのバッチ基盤」(@joker1007)
最近CTOデビューした@joker1007さんです。なぜかQiitaのプロフィールではまだ「フリーランス」となっていますが、近々更新されるでしょう。
RubyKaigi 2016@京都にもお見えになっていたのですが、当時私がjoker1007さんの素顔を知らなかったので完璧にすれちがってました。
joker1007さんがブラウザでめっちゃ大量のタブを開いているところが画面に映り、どよめきが生じました。
時間のかかる複雑なバッチ処理を書くのはどんなシステムでも悩みの種ですが、joker1007さんはJavaだのPythonだのJSONだのyamlだのではなく、そしてRakeでもなく、「Rubyで書きたいんだよぉおお、クラスが使いたいんだよぉおお」とばかりにRukawaというワークフローエンジンのgemを作ってしまいました。
なお最近ではDigdagというワークフローエンジンが有名なんだそうですが、「それがあったらこんなことしなかったYO!」だそうです。
面白かったのは、Rukawaの開発ではグラフ理論に登場するDAG(有向非巡回グラフ: Directed Acyclic Graph)を応用していた点です。
一言で言うと「一度出たら元のところには戻らない」という特徴を持つグラフ(←専門用語)です。「知は力なり」ということわざを久しぶりに思い出しました。
DAGのソートのために、Rubyのtsortというトポロジカルソートのライブラリも使ってるそうです。
Rukawaでは、並列処理などをRubyでがんばるのではなく、得意なことは得意なライブラリに振って振って振りまくる方針で開発したようです。
高級なRakeまたはシェルスクリプトのような位置づけなのかなという印象でしたが、Rubyで書きたいという一念でここまで作るあたり、joker1007さんの面目躍如たるものがありました。
参加を終えて
終了後morimorihogeさんとの雑談の中で、細かくは覚えていませんが「フロントのJS化が進むとRailsはAPIサーバー的な位置づけを模索することになるんだろうけど、RailsはAPIサーバーとしてはちょっと大げさかもね」「でも複雑なビジネスロジックを書くならRuby/Railsで書く方がgolangとかElixirとかで書くよりは楽だし、後の保守できる人の探しやすさという点でも有利なんじゃないかな」というような見解を述べていました。
個人的には、フロントがJSになると開発の分担が進み、Railsの一体感から遠ざかってしまいそうだなと思えました。フロントとAPIでリポジトリが別になるとそれはそれで面倒そうだし。
懇親会
終わった後の懇親会も大いに盛り上がりました。空きっ腹だと何を食べてもおいしいんですね。私は頑張って缶ビールは一つだけにしておきました。
BPSともお付き合いの長いイケメンコーダーの@masa_iwasakiさんもやはり会場に来ていて、morimorihogeさんらとともに盛り上がりました。
一つだけ。懇親会の途中のLightening Talkでスクリーンに高級寿司の写真がでかでかと映ったら、そりゃ寿司が出るのかと思うじゃないですか。ズコー。
食べ物写真を忘れてたので、morimorihogeさんとjoker1007さんのツーショットを代わりにどうぞ。ご快諾ありがとうございました!>joker1007さん