Slide 1

Slide 1 text

Railsバージョンを 最新に保つ 俺たちの話 〜2重弁当添え〜

Slide 2

Slide 2 text

本日のお弁当

Slide 3

Slide 3 text

本日のお弁当 HAL YAMASHITA 東京 「虎竹」

Slide 4

Slide 4 text

本日のお弁当 ■ 海山御飯 ■ 鶏肉のローズマリー味噌漬焼 ■ 旨味煮卵 ■ いぶりがっことクリームチーズのポテトサラダ ■ 揚げ蓮根のバルサミコ風味 ■ 炊き合わせ色々 ■ など HAL YAMASHITA 東京 「虎竹」

Slide 5

Slide 5 text

本日のCDN ※Contents = お弁当

Slide 6

Slide 6 text

Railsバージョンを 最新に保つ 俺たちの話 〜2重弁当添え〜

Slide 7

Slide 7 text

今日お話すること ■ Misoca? ■ 日常と開発スタイル ■ Misocaの誕生と最新に保つ現状 ■ 試してみた話

Slide 8

Slide 8 text

今日お話すること ■ Misoca? ■ 日常と開発スタイル ■ Misocaの誕生と最新に保つ現状 ■ 試してみた話

Slide 9

Slide 9 text

■ 「請求書がめんどくさい!」を解決する ■ 自動で郵送される仕組みも提供

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

技術的な特徴

Slide 12

Slide 12 text

Rails - 最新リリースバージョン

Slide 13

Slide 13 text

Ruby - 最新リリースバージョン

Slide 14

Slide 14 text

Webpacker - 最新リリースバージョン

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

そんな「俺たち」の話をします

Slide 17

Slide 17 text

バージョンを最新にするチームって どういう日常を送ってるのか?

Slide 18

Slide 18 text

どのようにして 今のスタイルになったのか?

Slide 19

Slide 19 text

挑戦してきたこと・していること

Slide 20

Slide 20 text

今日お話すること ■ Misoca? ■ 日常と開発スタイル ■ Misocaの誕生と最新に保つ現状 ■ Misocaの試してみた話

Slide 21

Slide 21 text

東京以外から来たひと〜

Slide 22

Slide 22 text

私たちは.. 富山 岐阜 岐阜

Slide 23

Slide 23 text

リモートワークを採用してます

Slide 24

Slide 24 text

富山県民:特に今年は良かった

Slide 25

Slide 25 text

誰でもいつでも ■ 誰でもいつでもリモートワークOK ■ 申請・許可は不要

Slide 26

Slide 26 text

誰でもいつでも ■ 誰でもいつでもリモートワークOK ■ 申請・許可は不要

Slide 27

Slide 27 text

情報の共有・コミュニケーション をどうやってるか?

Slide 28

Slide 28 text

オフィス⇆リモートは相互に常時接続 ■ 互いに様子を把握できる ■ リモートの疎外感が無くなる(≠ 監視)

Slide 29

Slide 29 text

GoogleHangouts→Zoom ■ 以前はGoogleHangoutsを利用 ■ リモートの人数が増え、利用が辛くなった ■ Zoomを試したところ良かった → 乗り換えた

Slide 30

Slide 30 text

日報 毎日書いてます! (esa)

Slide 31

Slide 31 text

気持ちや意識の 共有が一番上 (正直「やったこと」は あんまり見てない) 日報

Slide 32

Slide 32 text

#now_nippou 日報通知チャンネル 「手伝いましょうか?」 のきっかけに 日報

Slide 33

Slide 33 text

朝会・Geekbot ■ 毎日朝会を実施 ■ GeekBotを使った 非同期の朝会も

Slide 34

Slide 34 text

日々の改善

Slide 35

Slide 35 text

ふりかえり ■ プロジェクトごと・全体の2種類で毎週 ■ KPT+A

Slide 36

Slide 36 text

ふりかえり ■ A = Action ■ 「やりたい」「やってみよう」だけではなく 「やる」ものを明確にしてる ■ Actionには必ず誰かがサインアップする ■ 翌週には進捗状況を皆で共有 ■ 流れが滞らないようにしてる

Slide 37

Slide 37 text

事後検証 ■ プロジェクト(1週間〜2ヶ月程度)の終わり ■ 開始〜終了をふりかえり、学びを抽出・共有

Slide 38

Slide 38 text

開発スタイル

Slide 39

Slide 39 text

ペアプロ ■ 日常的にやってます ■ もちろんリモートも!

Slide 40

Slide 40 text

ペア「プロ」だけじゃない

Slide 41

Slide 41 text

たとえば ■ 障害アラートへの対応・調査 ■ 採用時の技術面談 (候補者の方とがっつりペアプロ)

Slide 42

Slide 42 text

「ペア」プロだけじゃない

Slide 43

Slide 43 text

とあるプロジェクト ■ 悩ましい実装をしないといけない ■ 基盤的な部分 ■ 今後を考えるとメンバー全員で理解したい ■ ペアでやってから共有とか勉強会をする? ■ それはそれでコストが高いし手間だな〜

Slide 44

Slide 44 text

みんなでやればいいのでは?

Slide 45

Slide 45 text

モブプロだ!

Slide 46

Slide 46 text

やってみた ■ 全体で共有 →他のプロジェクトでもモブプロをするケースが増えた

Slide 47

Slide 47 text

作業配信専用channel ■ 専用のSlack Channelができた ■ SlackCallで配信・誰でも自由に出入り可

Slide 48

Slide 48 text

開発者ブログ - http://tech.misoca.jp/ ■ 約1記事/週 で更新してます ■ 持ち回りではない (自主的に書いてる)

Slide 49

Slide 49 text

■ 書いてきた内容もいろいろ 開発者ブログ - http://tech.misoca.jp/

Slide 50

Slide 50 text

■ 一番バズった記事 開発者ブログ - http://tech.misoca.jp/

Slide 51

Slide 51 text

色々試している / 試してきた ■ リモートワーク ■ Zoom ■ ペアプロ・モブプロ ■ 事後検証 ■ 開発者ブログ ■ など...

Slide 52

Slide 52 text

「試してみよう」 ■ Misocaで掲げている行動指針の1つ ■ やるかやらないか迷ったら、とりあえず試す

Slide 53

Slide 53 text

もちろん技術面でも!

Slide 54

Slide 54 text

今日お話すること ■ Misoca? ■ 日常と開発スタイル ■ Misocaの誕生と最新に保つ現状 ■ 試してみた話

Slide 55

Slide 55 text

自己紹介 @eitoball かたぎりえいと

Slide 56

Slide 56 text

ところで、アンケートを 1. RailsやRubyの更新に興味が ある。 2. Misocaに興味がある。 3. お弁当に興味がある。 4. 何となく。

Slide 57

Slide 57 text

誕生と現状

Slide 58

Slide 58 text

2011年06月02日創業

Slide 59

Slide 59 text

No content

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

https://www.slideshare.net/toyoshi/ruby-3100004

Slide 62

Slide 62 text

No content

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

2011年11月

Slide 65

Slide 65 text

Ruby 1.9.2 Rails 3.1.1

Slide 66

Slide 66 text

2012年 2012/06 Ruby 1.9.3 (p194) Rails 3.2.5

Slide 67

Slide 67 text

2012年 2012/06 Ruby 1.9.3 (p194) Rails 3.2.5 サービスの充実に注力していた ため、6月に1度更新(1/1)

Slide 68

Slide 68 text

2013年 Rails 3.2.13 Rails 3.2.12 Rails 3.2.11 Rails 3.2.14 Rails 3.2.15 Rails 3.2.16 2013/01 2013/02 2013/03 2013/07 2013/11 2013/12 2013年06月 Rails 4.0 リリース

Slide 69

Slide 69 text

2013年 Rails 3.2.13 Rails 3.2.12 Rails 3.2.11 Rails 3.2.14 Rails 3.2.15 Rails 3.2.16 2013/01 2013/02 2013/03 2013/07 2013/11 2013/12 2013年06月 Rails 4.0 リリース 6月にRails 4.0がリリースされた が、3.2系のままで更新(0/6)

Slide 70

Slide 70 text

2014年 Rails 3.2.17 Rails 4.1.8 2014/01 2014/02 2014/07 2014/11 2014/12 Ruby 1.9.3 (p484) 2014/04 Ruby 2.1.1 Ruby 2.1.5 2014/05 Rails 4.0.4 Rails 4.1.1 2014/06 Rails 4.1.2 Rails 4.1.4 2014/09 Rails 4.1.6 2014年04月 Rails 4.1 リリース

Slide 71

Slide 71 text

2014年 Rails 3.2.17 Rails 4.1.8 2014/01 2014/02 2014/07 2014/11 2014/12 Ruby 1.9.3 (p484) 2014/04 Ruby 2.1.1 Ruby 2.1.5 2014/05 Rails 4.0.4 Rails 4.1.1 2014/06 Rails 4.1.2 Rails 4.1.4 2014/09 Rails 4.1.6 2014年04月 Rails 4.1 リリース 4月にRuby 2に更新。5月に Rails 4.0に更新して、同月、 Rails 4.1に(3/7)

Slide 72

Slide 72 text

2015/03 2015年 Rails 4.2.4 2015/01 2015/02 2015/11 2015/12 Ruby 2.2.0 Ruby 2.3.0 2015/06 Rails 4.2.1 Rails 4.2.2 Rails 4.2.3 Rails 4.1.9 Rails 4.2.0 Rails 4.2.5 Ruby 2.2.4 Ruby 2.2.3 2015/08 2015年05月26日 「株式会社Misoca」社名変更

Slide 73

Slide 73 text

2015/03 2015年 Rails 4.2.4 2015/01 2015/02 2015/11 2015/12 Ruby 2.2.0 Ruby 2.3.0 2015/06 Rails 4.2.1 Rails 4.2.2 Rails 4.2.3 Rails 4.1.9 Rails 4.2.0 Rails 4.2.5 Ruby 2.2.4 Ruby 2.2.3 2015/08 2015年05月26日 「株式会社Misoca」社名変更 最新のリリースバージョンに更 新するようになる。Ruby 2.3 は 12月26日に更新(4/7)

Slide 74

Slide 74 text

2016/03 2016年 Rails 4.2.7.1 2016/11 2016/12 2016/07 Rails 4.2.5.2 Rails 4.2.6 Rails 4.2.7 Rails 5.0.1 Ruby 2.3.3 Ruby 2.3.1 2016/08 Ruby 2.3.2 2016/09 Rails 5.0.0.1 2016年06月 Rails 5.0 リリース

Slide 75

Slide 75 text

2016/03 2016年 Rails 4.2.7.1 2016/11 2016/12 2016/07 Rails 4.2.5.2 Rails 4.2.6 Rails 4.2.7 Rails 5.0.1 Ruby 2.3.3 Ruby 2.3.1 2016/08 Ruby 2.3.2 2016/09 Rails 5.0.0.1 2016年06月 Rails 5.0 リリース Rails 5.0への更新は少し遅れて 8月に(3/6)

Slide 76

Slide 76 text

2017/03 2017年 2016/11 2017/12 2017/06 Rails 5.0.2 Rails 5.1.0 Rails 5.1.1 Ruby 2.4.3 Ruby 2.4.1 2017/08 Ruby 2.4.2 2017/09 2017/01 Ruby 2.4.0 Ruby 2.5.0 2017/02 2017/05 Rails 5.1.2 Rails 5.1.3 Rails 5.1.4

Slide 77

Slide 77 text

2017/03 2017年 2016/11 2017/12 2017/06 Rails 5.0.2 Rails 5.1.0 Rails 5.1.1 Ruby 2.4.3 Ruby 2.4.1 2017/08 Ruby 2.4.2 2017/09 2017/01 Ruby 2.4.0 Ruby 2.5.0 2017/02 2017/05 Rails 5.1.2 Rails 5.1.3 Rails 5.1.4 ほぼ、リリース直後に更新(5/6)

Slide 78

Slide 78 text

2018年 Rails 5.1.5 2018/02 $ bundle exec rails server => Booting WEBrick => Rails 5.1.5 application starting in development on http://localhost:3000 => Run `rails server -h` for more startup options [2018-03-19 00:38:28] INFO WEBrick 1.4.2 [2018-03-19 00:38:28] INFO ruby 2.5.0 (2017-12-25) [x86_64-darwin16] [2018-03-19 00:38:28] INFO WEBrick::HTTPServer#start: pid=20184 port=3000

Slide 79

Slide 79 text

2018年 Rails 5.1.5 2018/02 $ bundle exec rails server => Booting WEBrick => Rails 5.1.5 application starting in development on http://localhost:3000 => Run `rails server -h` for more startup options [2018-03-19 00:38:28] INFO WEBrick 1.4.2 [2018-03-19 00:38:28] INFO ruby 2.5.0 (2017-12-25) [x86_64-darwin16] [2018-03-19 00:38:28] INFO WEBrick::HTTPServer#start: pid=20184 port=3000 現在まで、Rubyの更新は14回、 Railsの更新は33回。

Slide 80

Slide 80 text

更新できるようになった理由 ■ 多く更新をすることで経験を積 んだ。 ■ Misocaの成長に伴い人が増え た。

Slide 81

Slide 81 text

更新の時、問題はな かったのか?

Slide 82

Slide 82 text

更新の時、問題はなかったのか? 特に大きな問題はな かった。

Slide 83

Slide 83 text

大きな問題がなかった理由 ■ テストが充実していて、事前に変更が必 要な部分をテストで検知することができ た。 ■ 回数を多くすることでノウハウがたまっ た。 ■ (Railsの場合)更新ガイドがしっかり書か れていて、それに従った。

Slide 84

Slide 84 text

でも、困難はありました… Ruby Rubyを更新しようとして、GCの 不具合でテストが時々不可解に 失敗することがあった ■ Rubyが修正されるまでまった ■ テストフレームワークが依存しているgem に不具合があり修正PRをだした

Slide 85

Slide 85 text

でも、困難はありました… Rails Rails を更新しようとすると対応 していない gem があった ■ 一時的に対応されたブランチを使ったり、 対応するように修正PRを出したりした

Slide 86

Slide 86 text

更新する理由は?

Slide 87

Slide 87 text

更新する理由 ■ 脆弱性が対応されているから ■ 不具合が修正されているから ■ 新機能を早く試した いから

Slide 88

Slide 88 text

https://mlomnicki.com/yield-self-in-ruby-25/

Slide 89

Slide 89 text

https://medium.com/statuscode/introducing-webpacker-7136d66cddfb

Slide 90

Slide 90 text

http://rspec.info/blog/2017/05/rspec-3-6-has-been-released/

Slide 91

Slide 91 text

「試してみよう」

Slide 92

Slide 92 text

RubyやRailsの 更新手順

Slide 93

Slide 93 text

RubyやRailsの更新手順 1. バージョンを上げてみる。 2. WIPなプルリクエストを出す 3. ビルドする。 4. (ビルドが成功しない場合は)修正する。 5. ビルドが成功するまで繰り返す。 6. PRをレビューしてもらう。 7. マージする。 8. リリースする。

Slide 94

Slide 94 text

気をつけているこ と

Slide 95

Slide 95 text

更新の際、気をつけていること ■ deprecationなどの警告は全て対処する。 ■ 変更履歴やリリースノートを読む。 ■ Railsの場合は、「A Guide for Upgrading Ruby On Rails」も ■ プレビューやリリース候補のバージョンから試してみる。 ■ 可能であれば、早めに変更を取り込む。

Slide 96

Slide 96 text

GemやJSの 更新手順

Slide 97

Slide 97 text

Dependabot

Slide 98

Slide 98 text

Dependabot ● gemやJavaScriptモジュールの更新1 つにつき1PR ● Gemfile.lockやyarn.lockがコンフリク トすると自動で解消 ● PRのdescriptionにCHANGELOGの 内容やコミットログを追加

Slide 99

Slide 99 text

まとめ Misocaでは、できるだけ早く最新 のリリースバージョンのRubyと Railsを使っています。 皆さんも「試してみよう」の精神でやってみ てはいかがでしょうか?

Slide 100

Slide 100 text

今日お話すること ■ Misoca? ■ 日常と開発スタイル ■ Misocaの誕生と最新に保つ現状 ■ 試してみた話

Slide 101

Slide 101 text

Misocaの フロントエンド

Slide 102

Slide 102 text

Webpacker +

Slide 103

Slide 103 text

移行の理由 Browserifyが遅くて フルビルドで数分待たされて辛い

Slide 104

Slide 104 text

「Webpack使うと早くなりそう」

Slide 105

Slide 105 text

「Webpackerってのがあるぞ?」

Slide 106

Slide 106 text

(ついカッとなって) 試した

Slide 107

Slide 107 text

Rails Developers Meetup #4 (2017/08) 「Webpacker is installed」

Slide 108

Slide 108 text

乗り換えてよかったこと

Slide 109

Slide 109 text

フルビルド 数分 → 20秒まで短縮

Slide 110

Slide 110 text

CIも速くなって快適

Slide 111

Slide 111 text

Railswayに乗っかるので 気持ちよさがある

Slide 112

Slide 112 text

若干大変なこと

Slide 113

Slide 113 text

メジャーバージョンアッ プ早い

Slide 114

Slide 114 text

バージョン1から 付き合ってる

Slide 115

Slide 115 text

v1→v2 v1で導入実験してたら v2がリリースされる → 初回リリース時はv2

Slide 116

Slide 116 text

v2 → v3

Slide 117

Slide 117 text

v3 → v4 ? ■ 現在 Webpacker 3.3.1 ■ Webpack 4系がリリースされた ■ そのうち Webpacker 4.0?が来るよなぁ

Slide 118

Slide 118 text

メジャーバージョンアップがくる度に 「やってやるぞ!」感で盛り上がる

Slide 119

Slide 119 text

総合的にみて良かった

Slide 120

Slide 120 text

MisocaのCI

Slide 121

Slide 121 text

分散テスト rrrspec by クックパッドさん

Slide 122

Slide 122 text

Jenkins + rrrspec

Slide 123

Slide 123 text

導入した理由

Slide 124

Slide 124 text

使ってるサーバーの見 直し時期

Slide 125

Slide 125 text

「AWS使ったらいい感じに並 列実行できるのでは?」

Slide 126

Slide 126 text

「最近雑誌でrrrspecの 特集見たよ」

Slide 127

Slide 127 text

試してみよう!

Slide 128

Slide 128 text

最初は同じぐらいの パフォーマンスを狙っていた

Slide 129

Slide 129 text

20分 → 10分

Slide 130

Slide 130 text

スケールもできるように なった

Slide 131

Slide 131 text

快適にテストできるように なった 現在は9126 examples

Slide 132

Slide 132 text

そんなCI

Slide 133

Slide 133 text

使えば使うほど、切れ味は悪くなりまして

Slide 134

Slide 134 text

rrrspec移行後も 20分ぐらいかかるように

Slide 135

Slide 135 text

開発者がどんどん増えた テストもどんどん増えた 専任のメンテナーがいない

Slide 136

Slide 136 text

「開発生産性向上」 プログラムで いい感じにするぞ!!

Slide 137

Slide 137 text

キャッシュ効かせる 重いテストのリファクタリング AWSに課金

Slide 138

Slide 138 text

20分 → 5分

Slide 139

Slide 139 text

爆速 快適 気持ち良い

Slide 140

Slide 140 text

錆びた斧を 放置しないことが大事

Slide 141

Slide 141 text

Misocaの 社内勉強会

Slide 142

Slide 142 text

Rails 輪読会

Slide 143

Slide 143 text

Rails本体のコードを読む 有志ではじめた

Slide 144

Slide 144 text

どんな感じで進めてるの? ■ 昼休みに開催(12:15〜12:45) ■ その日の担当が 事前に調べて esaなど にまとめる ■ 30分 ◆ 15分で説明 ◆ 15分で深掘り・雑談 ■ 参加者は5人 + 聞き専 ◆ 勿論リモートOK

Slide 145

Slide 145 text

話した内容 最初は「ActiveRecordから読んでみるか〜」って始めた ■ 第1回:進め方を話し合った ■ 第2回:ActiveRecord::Railtie ■ 第3回:ActiveRecord::Base#save ■ 第4回:ActiveRecord::Associations::* ■ 第5回:ActiveRecord::Associations::CollectionProxy ■ 第6回:ActiveSupport Integer拡張 ■ 第7回:ActiveRecord::Associations::CollectionProxy(リベンジ) ■ 第8回:ArelでSQLが作られるまで ■ 第9回:ActiveRecord::Attributes, ActiveModel ■ 第10回:ふりかえり、今後について

Slide 146

Slide 146 text

参加者の声

Slide 147

Slide 147 text

事後検証

Slide 148

Slide 148 text

かなり好評◎

Slide 149

Slide 149 text

「楽しい!」 「ボリューム感がちょうどよい」 「継続できそう」 「もっとテクいコードかと思ってた」 「基本をおさえたコードで勉強になる」

Slide 150

Slide 150 text

「この先どうする?」

Slide 151

Slide 151 text

「PRやissueベースで見てもいいかも。」 「何が問題か?何が解決されたか?目線で見 れそう」 「三人寄れば文殊の知恵だ」 「コントリビュートしていこう」 「社内だけに留めておくのもったいない」

Slide 152

Slide 152 text

学んでいこう 貢献していこう 継続して試すぞ!

Slide 153

Slide 153 text

貢献?

Slide 154

Slide 154 text

スポンサー ■ RubyKaigi ■ Rails Developers Meetup (本日) ■ Rails Girls ■ 名古屋Ruby会議 ■ 引き続き協賛していきます!

Slide 155

Slide 155 text

採用

Slide 156

Slide 156 text

エンジニアの7割近くが 採用に何かしらの形で関わっている

Slide 157

Slide 157 text

ペアプロ ペア設計 疑似リモート体験

Slide 158

Slide 158 text

新しい職場は不安ですよね

Slide 159

Slide 159 text

入社を決める前に

Slide 160

Slide 160 text

お互いがどういう人か知るのは とてもいいこと

Slide 161

Slide 161 text

面接の過程で安心して 楽しく働けることを 実感してもらいたい

Slide 162

Slide 162 text

気づいたら みんなで採用やってた

Slide 163

Slide 163 text

応募待ってます! https://recruit.misoca.jp

Slide 164

Slide 164 text

ありがとうございました!