Slide 1

Slide 1 text

Ruby Business Users Conference 2019 SIer企業が Rubyで成⻑するWebサービスを リリースするまでの失敗と成功の道のり 株式会社システムインテグレータ 製品企画室 横⼭ 弘典

Slide 2

Slide 2 text

横⼭ 弘典 (@yokoyantech) (株)システムインテグレータ TOPSIC開発リーダー 著書 やさしいT-SQL⼊⾨ 基礎からわかる PL/SQL コミュニティ Saitama.rb 2歳の息⼦BOT作りたい 2

Slide 3

Slide 3 text

本⽇お伝えしたいこと 3

Slide 4

Slide 4 text

新ビジネスはRailsで。 会社の⽂化も⼈⽣も変わります。 4

Slide 5

Slide 5 text

(株)システムインテグレータ さいたま市 東証⼀部 創業24年⽬ 事業内容 ⾃社パッケージソフト 企画、開発 カスタマイズ WEBサービス 開発、運営 5

Slide 6

Slide 6 text

6

Slide 7

Slide 7 text

7

Slide 8

Slide 8 text

8

Slide 9

Slide 9 text

9

Slide 10

Slide 10 text

AtCoder社による問題作成 国内最⼤の競技プログラミングコンテンストの開催企業 10

Slide 11

Slide 11 text

11

Slide 12

Slide 12 text

12

Slide 13

Slide 13 text

13

Slide 14

Slide 14 text

14

Slide 15

Slide 15 text

15

Slide 16

Slide 16 text

16

Slide 17

Slide 17 text

弊社の主な技術スタック 17

Slide 18

Slide 18 text

18

Slide 19

Slide 19 text

19

Slide 20

Slide 20 text

20

Slide 21

Slide 21 text

21

Slide 22

Slide 22 text

事業部、製品で様々 22

Slide 23

Slide 23 text

Ruby採⽤のきっかけ 23

Slide 24

Slide 24 text

社員の軽い⼀⾔ 24

Slide 25

Slide 25 text

SaaS作るなら Railsでサクッとやったら︖ 25

Slide 26

Slide 26 text

採⽤ 26

Slide 27

Slide 27 text

27

Slide 28

Slide 28 text

Ruby経験者がいない 28

Slide 29

Slide 29 text

社内のRubyエンジニア数 ●⼈/150⼈ 中途採⽤も試みるものの なかなか上⼿くいかず・・・ 29

Slide 30

Slide 30 text

当社のパートナー企業さん Java/C# 新規事業であるため ずっと仕事をお願いすることが難しい (短期間の技術アドバイザーを依頼) 30

Slide 31

Slide 31 text

社内で異動 + 新卒を育成 31

Slide 32

Slide 32 text

Ruby/Railsを学ぶ 32

Slide 33

Slide 33 text

33

Slide 34

Slide 34 text

34

Slide 35

Slide 35 text

35

Slide 36

Slide 36 text

未知の⾔語Rubyでびっくりしたこと 本当に全部オブジェクト 演算⼦はメソッド呼び出しのシンタックスシュガー︕ instance method Integer#+ irb(main):001:0> 1.class => Integer # これは以下のシンタックスシュガー irb(main):002:0> 1 + 2 => 3 # 本来はこう irb(main):003:0> 1.+(2) => 3 36

Slide 37

Slide 37 text

未知の⾔語Rubyでびっくりしたこと アクセサメソッドに set_ , get_ と書かないのに違和感 セッターに = がついてる︕︕︕ メソッド呼び出し時に()が省略できる Class User # initializeなどは省略 def name=(val) @name = val end end user = User.new # 変数代入ではなく、name=メソッドの呼び出し!!! user.name = 'yokoyama' 37

Slide 38

Slide 38 text

未知の⾔語Rubyで困ったこと ⾃由 プログラマ的には楽しい 書き⽅が⾊々ある ハッシュとシンボルに慣れなかった # シンボルをキーにしたハッシュ prices = { :apple => 100, :orange => 200 } # Ruby1.9以降 prices = { apple: 100, orange: 200 } 38

Slide 39

Slide 39 text

未知の⾔語Rubyで困ったこと チーム内で⼒量差がある オブジェクト指向の秩序が乱れることも Java的に型で縛りたくなることもある 型宣⾔ interface abstract 安全性は上がるが冗⻑ ダックタイピングを理解する Ruby3に期待︕ 39

Slide 40

Slide 40 text

Ruby/Railsの 最善⼿法がわからない 40

Slide 41

Slide 41 text

はじめてのデプロイ ⼿動×サーバ数 git pull origin master 41

Slide 42

Slide 42 text

世の中を知るために コミュニティに参加 42

Slide 43

Slide 43 text

経験不⾜はツールで補う 43

Slide 44

Slide 44 text

44

Slide 45

Slide 45 text

開発⼿法がSIerあるある 45

Slide 46

Slide 46 text

ウォーターフォール 体制 少⼈数だけど分業 管理する⼈ 設計する⼈ コード書く⼈ コードを全く書かない⼈ がいるのは⾟い テスト ⼈⼒ EXCELテスト仕様書 46

Slide 47

Slide 47 text

⼈⼿が⾜りない 47

Slide 48

Slide 48 text

開発のやり⽅を変えた 48

Slide 49

Slide 49 text

変えたこと チーム全員がコードを書く フルスタック 必要最低限の管理 要件からモノを作る アジャイル開発へ レビューはプルリクで統⼀ アプリ以外もコード化 仕様、ER図、インフラ テストはRSpecへ(挑戦中) 49

Slide 50

Slide 50 text

⾊々変えた結果 継続的なサービス開発が可能に 50

Slide 51

Slide 51 text

柔軟性 & ⽣産性 要件さえあれば作れる 単純なModelの検索画⾯ 1⽇くらいでできる Javaでプロダクトを作って いた頃 検索系の機能 5⽇から10⽇ 更新系の機能 20⽇ぐらい 51

Slide 52

Slide 52 text

⽣産性が⾼い ↓ 作ってて楽しい ↓ 早く帰れる ↓ 52

Slide 53

Slide 53 text

育児できる︕ 幸せ︕ 53

Slide 54

Slide 54 text

TOPSICも 順調に成⻑中 54

Slide 55

Slide 55 text

55

Slide 56

Slide 56 text

56

Slide 57

Slide 57 text

57

Slide 58

Slide 58 text

ありがとうRuby 58

Slide 59

Slide 59 text

本⽇お伝えしたいこと 59

Slide 60

Slide 60 text

新ビジネスはRailsで。 会社の⽂化も⼈⽣も変わります。 60

Slide 61

Slide 61 text

61