去る2017-03-20、Fablic社員数名で、大江戸Ruby会議06に参加してきました!
今回は、Rubyの地域コミュニティ中でも最高レベルに重鎮が集うこの大江戸Ruby会議06参加レポートをお送りします。
- 大江戸Ruby会議とは
- 午前の部
- 昼食
- 午後の部
- 多相型、推論、Ruby / 松本宗太郎 @soutaro
- esaとRubyistと私(仮)/ 赤塚 妙子 @ken_c_lo
- Rationalを(もうちょっと)最適化してみた / 斎藤ただし @tad
- フルタイム コミッター大戦 / 中田伸悦 @n0kada Urabe Shyouhei @shyouhei 笹田耕一 @ko1 Kenta Murata @mrkn
- 高濃度雑談 / Tatsuhiro Ujihisa @ujm
- Ruby 2.4 Internals / 笹田耕一 @ko1
- 如何にして若き天才コミッタは生まれるのか / Sho Kusano @rosylilly
- Keynote / Sorah Fukumori @sora_h
- おまけ: 懇親会の様子
- FablicでのRuby
文責: id:ujihisa and 岸
大江戸Ruby会議とは
浅草で毎週開催しているRubyコミュニティAsakusa.rb の 生活発表会の場 としてのRegional RubyKaigi、それが大江戸Ruby会議です。 前回の大江戸Ruby会議は、2015-11-08に開催されましたが、この時のLT発表者 11名 全員 がRubyコミッタであったことでも有名です。 *1
午前の部
今回は御茶ノ水にあるソラシティカンファレンスセンターにて開催されました。id:ujihisaはママチャリで訪問しました。
主催者のa_matsudaさんによる開催のあいさつ
Docker時代の分散RSpec環境の作り方 / 橋立友宏 @joker1007
DockerとAWSと便利gemで、CIコスト(工数・費用)を削減するという話でした。
結論だけピックアップするとこういうことでしょう。
| コスト削減 | コンテナ化のメリット |
|---|---|
当社もCircleCIのキューが日中は詰まり気味だったりCIの時間が伸びているので、近い将来必ず対処しないといけない問題です。大変参考になりました。
発表内容かいつまみ
joker1007さんのRepro, incではRailsアプリとCircleCIでCI
- CIが30分かかるプロジェクトもあり、もう我慢の限界だったので高速化に踏み切った。
Dockerを利用することで、RSpecの分散実行による高速化がラクにできる
- 環境をdockerに閉じ込め、ファイル構成・使えるコマンド・開いてるポートなじのいろいろを仮定できるため、Railsアプリ側の設定をシンプルに保てる
Railsコンテナ化tipsのページは経験に裏打ちされた血文字感があるAmazon ECS(EC2インスタンスをバックエンドにしたコンテナサービス)が相性良すぎる
Amazonスポットインスタンスをこれで使う場合スポットフリートの出番
- (途中CircleCIとAWSを実際に開いてデモしてた。CircleCIの中の人がきてたのと、AWSで500エラーがでてで、かなり会場が盛り上がってたw)
JUnit形式のレポートをS3/GCSに吐き出すことでカバレッジやテストレポートのビジュアライズができる。
- joker1007さん謹製のjoker1007/rspec-storage, reproio/wrapboxを利用する
My Open Source Journey / Juanito Fatas @JuanitoFatas
オープンソースプロジェクトに参加するなり自分のプロジェクトを作るなりで関わっていくと良いことがあるよ、というお話でした。 優秀な人材に出会うことができるのが具体的なメリットです。
- オープンソースプロジェクトに関わり始めて、メンテナになるまでの道のりを紹介。
- 自分が関わるあらゆるドキュメント(スタイルガイドなど)を読み、母国語に翻訳する。
- どこかに貢献を始める
- 初心者:セットアップや、バグの再現を初めてみる
- 初めての貢献:小さめのPRから送ったりドキュメントを書いたりする
- コミッタ:ISSUEのトリアージする
- メンテナ:PRをマージする
- マージはログを汚すので有害 という考えもあるようです
- さらに極めると、オープンソースプロジェクトの会社を立ち上げる
メンテナの域に達すると、コミュニティに貢献しやすい空気作りにも気を配るなど高貴な心遣いを身につけるよう、というお話が印象的でした。 いちコントリビュータとは違い、コミュニティをコントロールする側になるという立脚点の変遷をうかがい知ることができました。
Text Editing in Ruby / 前田修吾 @shugomaeda
https://github.com/shugo/oedo06/blob/master/textbringer.md
(自作プレゼンツールshugo/textbringer-presentationで描画)
Vimのif_rubyの作者としても有名なshugoさんが、はるばる島根から来られました。
Ruby製テキストエディタを作ったというお話で、このエディタの名前「textbringer」はファンタジー小説「ストームブリンガー」から命名したそうです。
VimとEmacs、善と悪、法と混沌など、物語とエディタを交えた独特の話の展開でした。 *2
話は自作エディタtextbringerの内部のバッファの内部表現の話題に及び(ここでこの話題にfocusするあたり大江戸Rubyらしい)、 各エンコーディングごとの文字列操作の計算量の差異についてもお話されていました。 *3
余談ではありますが、途中でRubyistの聴衆が使っているエディタ(Emacs/Vim/それ以外)のアンケートをとっていましたが、過半数がVimmerでした。 *4 Vim界隈でも活動しているid:ujihisaにとっては、Fablic社を会場として開催する予定のFablic.vimの機運が高まる一幕でした。それについてはまた後日!
招待講演 / Ruby考古学II 1993-1997 / 石塚圭樹 @keiju_ishitsuka
Rubyの協同開発者、Rubyの名付け親、irbの開発者というゴッドファーザー的存在の方の講演でした。
Ruby言語の開発者まつもとゆきひろ氏と同僚時代の1993年にRuby開発を始め、1997年*5に至るまでの軌跡の話。
個人的には、命名の経緯を当時のIRCのチャット内容を(今のLINE風に)振り返りながらご本人の口から聞けたというのは貴重な経験だったなと感じます。
Ruby は1993年2月24日に生まれ、1995年12月にfj上で発表された。名称の Ruby は、プログラミング言語 Perl が6月の誕生石である Pearl(真珠)と同じ発音をすることから、まつもとの同僚の誕生石(7月)のルビーを取って名付けられた。 Ruby - Wikipedia
今とぜんぜん違う初期の言語仕様からの変遷や res q ueという綴り間違いなど、普段は意識することもできないバックグラウンドを 開発者の方に語ってもらうこと自体が、Rubyismを育む価値があったように思えます(しみじみ)。
昼食
id:ujihisaは昼食後に発表を控えており、当日は朝から心臓バクバクでした。
余裕をもって発表に集中するためにも時間は必要なので、 事前にリサーチした丸亀製麺への最短経路をつつがなく歩き、つつがなくうどんをおいしく食して英気を養いました。
午後の部
多相型、推論、Ruby / 松本宗太郎 @soutaro
Ruby書いてて「動かさなくても補完とかエラー検知してほしいよね」 と思ったことがあると思いますが、それを実現するための考察話でした。
Ruby3の 型 にむけての仕様案の考察で、いずれもこれだと思えるものはなくRuby業界人みんな頭をひねって考えている状態が伺えました。
- パラメータ多相
- 構造的な部分型多相
- 完全な型推論
を実現したRubyにするには、 Rubyの今までの機能を捨てないといけない という非現実的な解になり、 別の提案としてインターフェース定義用のファイルを導入してやればそこそこ良くなるのではないか、という建設的な流れでした。 *6
しかし、最後に再掲された 「型は絶対書きたくない」 というMatzの言葉は強烈なオチとして強く印象に残りました。 結果は如何にせよ、Ruby利用者が総合的にメリットのある解決方法にたどり着いて欲しいなと思います。
esaとRubyistと私(仮)/ 赤塚 妙子 @ken_c_lo
デザイナの方から見たRubyコミュニティという視点のお話です。
自分でサービスを作りたくて、p4d(programming for designers)というコミュニティでソフトウェアエンジニアにRuby/Railsを教えてもらい、 夢中で趣味のサービスを作っていたらいつの間にかそれが仕事になったという、今風に言うと「エモい」お話でした。 (なお、冒頭では最近Rubyistの方とご結婚されたという発表をされていて、エモいなぁと思いました。)
「サービス作りとRubyコミュニティは似ている」
- 命が吹き込まれたプロダクトは、そのエコシステムそのものがプロダクト全体の個性保ってを成長させる
- 例えば、自然発生した街が、誰の指示もなくボトムアップで「らしさ」を維持して成長するような
- Rubyコミュニティも同じで、Rubyist各々がRubyを愛し「らしさ」を維持して良くなっている
自分を育ててくれたコミュニティへの恩返しのため、esaは勉強会やソフトウェアエンジニアコミュニティに無償提供しているとのことです。
Rubyによって生まれたプロダクトが、Ruby(に関わらずソフトウェアエンジニア)のコミュニティを活性化させるってとてもいい話ですね!
Rationalを(もうちょっと)最適化してみた / 斎藤ただし @tad
Rational(有理数)クラスの計算を高速化したというお話でした。
ベンチマークで悪化がほとんどみられてないのは意外にないので良い改善例でした*7
フルタイム コミッター大戦 / 中田伸悦 @n0kada Urabe Shyouhei @shyouhei 笹田耕一 @ko1 Kenta Murata @mrkn
- 何名かはRubyのソースの問題は流石に全然分からなかったようですが、コミッター同士がお互いに出し合うRubyクイズは、見る側にとってとても勉強になっていたようです。
- Nintendo Switchのコントローラが早押しボタンでChromeに連携していたのがちょっとおもしろかったです!(どういう仕組なんだろう)
高濃度雑談 / Tatsuhiro Ujihisa @ujm
いよいよ当社Fablicから id:ujihisaによる発表。 会場で発表する方も見守る方も、またTwitter上で見守りSlackで応援する他の社員も胸を高鳴らせる瞬間でした。
軽いノリで大江戸Ruby会議での発表を快諾したid:ujihisaでしたが、準備は必死に行いました。 真面目に練習したので、聴衆からは「すごかった」「ギャグセンスと勢いが最も冴えていた」「目まぐるしく変遷する展開に会場中が翻弄された」 など会場に大きなインパクトを与えられたのかなと思います。 (Fablicの宣伝までたどり着くかヒヤヒヤしましたが、いちおう見えてたのでセーフ笑)
Fablic社には id:shoby night という社内LTが毎週行われており、 そこで実際に毎週発表をしているid:ujihisaがその内容を濃縮還元で提供したようなものでした。
壇上から見た大江戸Ruby会議の様子
Ruby 2.4 Internals / 笹田耕一 @ko1
Ruby 2.4で行われた修正の1つを解説いただきました。 「GCに通ずる人じゃないとできない修正」とおっしゃっていたのが貫禄充分でした。
如何にして若き天才コミッタは生まれるのか / Sho Kusano @rosylilly
弊社でもお世話になっている zengin-code を作ったメンバーの一人。
今回の大江戸Ruby会議のキーノート、言ってしまえば主役である @sora_h さんとの出会いから10余年の懐古話。
14歳でRubyのコミッタとなった @sora_h さんを誰もが認める「天才」と認める一方で 才能がある人が それを高い次元で活かせる状態になってこそ意味がある という教育にまつわるお話でした。
中学生の時に海外生活から帰って、日本語がおぼつかないままRubyコミュニティに飛び込んできた @sora_h さんを Ruby業界に迎え、興味の赴く分野でのびのび活動してもらうことで才能が大きく花開いたと語っていました。 「そこにはサポートしてくれるRubyコミュニティがあったからこそ」と語り、Rubyコミュニティへの感謝も滲ませていました。
Keynote / Sorah Fukumori @sora_h
これは6年も前の記事ですが、この衝撃の人物が20歳になった今年、基調講演を行っていただく運びになったそうです。
1つ前の @rosylilly さんのプレゼンがプロローグのような役目を果たしており、 開花した才能がここ5年程でさらに多くの知識を求めて、スキルセットを拡大していった軌跡を 「生活発表」していました。
インフラ・ネットワーク・インターネットの基礎にのめり込むあまり 毎月5万円のサーバ・ネットワーク機器維持費用を投資して学習機会を創出している姿勢は ソフトウェアエンジニアだけにかかわらず、すべてのエンジニアがお手本とすべき姿かもしれません。
@rosylilly さんの発表も通してまとめると
- 同僚に『〜も知らないの?』と煽られる
- 知らないということが学ぶモチベーション( 強迫観念 )となる
- それによってあらゆることを吸収するようになった
ということのようで、 Twitterの #oedo06 タイムラインにはちょっとした「強迫観念」ブームが巻き起こりました。
アメとムチ−−彼にとってはムチが動機づけとなったということでしょうか。*8
成人したばかりの若いソフトウェアエンジニアの常人離れした成長のスピードに、会場中が圧巻された基調講演でした。
おまけ: 懇親会の様子
ソラシティカンファレンスセンターから移動して、飲食店に移動しました。
濃厚で活発な議論が懇親会でも継続して行われました。
発酵された食品を含む、おいしい料理やドリンクとともに。
FablicでのRuby
FablicはFRILを運営している会社で、FRILのバックエンドはRuby on Railsで動いています。今回の大江戸Ruby会議では一番手のjoker1007さんによる Docker時代の分散RSpec環境の作り方 がまさに直接的に役立つ話であり、この知見を適用する日が非常に近そうです。また、ko1さんによるRuby 2.4の話により、いまだRuby 2.3系で動いているシステムをRuby 2.4.1にアップデートする機運が大幅に向上しました。今やるしかない。
最後のrosylillyさんの発表と、それに後続する基調講演のsora_hさんの発表により、参加したujihisaと岸(kisshy)に強迫観念が生まれました。これから毎日、XXXが分からないと死ぬ、みたいな気持ちになってやっていくことになり、また、この呪いは社内の同僚にも感染していくのでありました。
Fablic社内には、前述したshobynightというシステムというか文化が存在します。記事執筆日である2017年3月時点では、毎週金曜日の夜にカジュアルなLTとして、技術的またはそうでない話を希望者が行うシステムとなっています。なお、発案者のid:shobyは毎週必ず発表することを義務づけているようです。
Fablicに入社することで、実質無料でshobynightを視聴することができ、また、いまならなんと、発表する側に立つことができる権利も得ることができ、非常に便利です。
文責: id:ujihisa and 岸
*1:id:ujihisaは当時カナダのバンクーバー在住だったのですが、ちょうどその一週間後に来日していた。参加の機会を逃したのは非常にもったいなかったです…。
*2:id:ujihisaのスライドで当初「体系的」「網羅的」とあった部分をあとでこれに置き換えたのは秘密です。
*3:他の参加者との会話によると、実際はキャッシュの関係でさらに複雑らしいです
*4:ただし、錯視の関係で、登壇している発表者からはEmacs使いが過半数に見えるとのことでした。
*5:1997年は今回の主役 @sora_h さんの誕生年です
*6:Vimプラグインを作る側としても、補完には非常に有用で助かります。
*7:ちなみにid:ujihisaは昔 @tad 氏のメンター業をやっていたこともあり、感慨深かったです
*8:@sora_hさんが中1くらいのときにVimコミュニティで煽った人のひとりが同僚のid:ujihisaです