2019-12-13に開催された、Ruby Business Users Conference 2019の発表資料です。
https://rubyassociation.doorkeeper.jp/events/99493
Ruby Business Users Conference 2019SIer企業がRubyで成⻑するWebサービスをリリースするまでの失敗と成功の道のり株式会社システムインテグレータ製品企画室 横⼭ 弘典
View Slide
横⼭ 弘典(@yokoyantech)(株)システムインテグレータTOPSIC開発リーダー著書やさしいT-SQL⼊⾨基礎からわかる PL/SQLコミュニティSaitama.rb2歳の息⼦BOT作りたい 2
本⽇お伝えしたいこと3
新ビジネスはRailsで。会社の⽂化も⼈⽣も変わります。4
(株)システムインテグレータさいたま市東証⼀部創業24年⽬事業内容⾃社パッケージソフト企画、開発カスタマイズWEBサービス開発、運営5
6
7
8
9
AtCoder社による問題作成国内最⼤の競技プログラミングコンテンストの開催企業10
11
12
13
14
15
16
弊社の主な技術スタック17
18
19
20
21
事業部、製品で様々22
Ruby採⽤のきっかけ23
社員の軽い⼀⾔24
SaaS作るならRailsでサクッとやったら︖25
採⽤26
27
Ruby経験者がいない28
社内のRubyエンジニア数●⼈/150⼈中途採⽤も試みるもののなかなか上⼿くいかず・・・29
当社のパートナー企業さんJava/C#新規事業であるためずっと仕事をお願いすることが難しい(短期間の技術アドバイザーを依頼)30
社内で異動+新卒を育成31
Ruby/Railsを学ぶ32
33
34
35
未知の⾔語Rubyでびっくりしたこと本当に全部オブジェクト演算⼦はメソッド呼び出しのシンタックスシュガー︕instance method Integer#+irb(main):001:0> 1.class=> Integer# これは以下のシンタックスシュガーirb(main):002:0> 1 + 2=> 3# 本来はこうirb(main):003:0> 1.+(2)=> 336
未知の⾔語Rubyでびっくりしたことアクセサメソッドに set_ , get_ と書かないのに違和感セッターに = がついてる︕︕︕メソッド呼び出し時に()が省略できるClass User# initializeなどは省略def name=(val)@name = valendenduser = User.new# 変数代入ではなく、name=メソッドの呼び出し!!!user.name = 'yokoyama' 37
未知の⾔語Rubyで困ったこと⾃由プログラマ的には楽しい書き⽅が⾊々あるハッシュとシンボルに慣れなかった# シンボルをキーにしたハッシュprices = { :apple => 100, :orange => 200 }# Ruby1.9以降prices = { apple: 100, orange: 200 }38
未知の⾔語Rubyで困ったことチーム内で⼒量差があるオブジェクト指向の秩序が乱れることもJava的に型で縛りたくなることもある型宣⾔interfaceabstract安全性は上がるが冗⻑ダックタイピングを理解するRuby3に期待︕39
Ruby/Railsの最善⼿法がわからない40
はじめてのデプロイ⼿動×サーバ数git pull origin master41
世の中を知るためにコミュニティに参加42
経験不⾜はツールで補う43
44
開発⼿法がSIerあるある45
ウォーターフォール体制少⼈数だけど分業管理する⼈設計する⼈コード書く⼈コードを全く書かない⼈がいるのは⾟いテスト⼈⼒EXCELテスト仕様書 46
⼈⼿が⾜りない47
開発のやり⽅を変えた48
変えたことチーム全員がコードを書くフルスタック必要最低限の管理要件からモノを作るアジャイル開発へレビューはプルリクで統⼀アプリ以外もコード化仕様、ER図、インフラテストはRSpecへ(挑戦中)49
⾊々変えた結果継続的なサービス開発が可能に50
柔軟性 & ⽣産性要件さえあれば作れる単純なModelの検索画⾯1⽇くらいでできるJavaでプロダクトを作っていた頃検索系の機能5⽇から10⽇更新系の機能20⽇ぐらい51
⽣産性が⾼い↓作ってて楽しい↓早く帰れる↓52
育児できる︕幸せ︕53
TOPSICも 順調に成⻑中54
55
56
57
ありがとうRuby58
本⽇お伝えしたいこと59
新ビジネスはRailsで。会社の⽂化も⼈⽣も変わります。60
61