SlideShare a Scribd company logo
1 of 13
2019.02.06
REJOB 山﨑大輔 (Github: @mojao)
Long life RailsApp
REJOB
Copyright (C) REJOB Co.,Ltd. All Rights Reserved.
Copyright (C) REJOB Co.,Ltd. All Rights Reserved.
スピーカー
山﨑 大輔(Github: @mojao)
Webシステム開発 / 基幹システム開発 / 各種マネジメント / 採用
2007年からRuby, Railsを触り始めました。
Ruby, Rails, RDBMS, 全文検索エンジン, JavaScript, AWS etc.. 何でも屋さんです。
フルスタックエンジニア。
Copyright (C) REJOB Co.,Ltd. All Rights Reserved.
リジョブ
https://www.wantedly.com/projects/18033
https://www.wantedly.com/projects/184051
https://www.wantedly.com/projects/36861
求人メディア事業をメインに、
リジョブを盛り上げてくれるメンバー募集中
Copyright (C) REJOB Co.,Ltd. All Rights Reserved.
Long Life RailsApps
リジョブがRailsでリプレースされてから 4年
コードを書いたエンジニア数 約60名
累計コミット数 19,000
累計プルリクエスト数 8,000
有効なコード 220,000行
求人という重いテーブルの構造を変えるというプロジェクトが進行中
を1人KPTしてみた結果
Copyright (C) REJOB Co.,Ltd. All Rights Reserved.
Keep
・リリースしたり、効果が良かったりすると事業側のメンバーから感謝される
・Githubフローをちゃんと回せている
・開発環境をDockerで構築できるようにした
・効率的にレビューをするために色々ルールを設けた
・Jenkinsを使ってデプロイやタスクの実行をできるようにした
・RspecとSeleniumが主要な機能をカバーした
・Reviewdogで自動的にコードの書き方を指摘されるのでロジックに対して議論すること
ができる
・ドキュメント管理システムを導入して非エンジニアも巻き込んだ
・プロジェクトのキックオフをすることでコアメンバーの意識を統一できた
・プロジェクト進行においてシンプルなルールだけ決めて守るようにした
・何のためのプロジェクトなのかを明確にした
・ガントチャートをすぐ更新できるように専用のツールを導入した
・Backlogは基本的にFIXした内容とスケジュールのみ記載するようにした
Copyright (C) REJOB Co.,Ltd. All Rights Reserved.
Keep
何のためのプロジェクトなのかを明確にした
2018年11月から走りだした「求人データ構造改革プロジェクト」では、
キックオフ時に「このプロジェクトは何のためのプロジェクトなのか」を明確にしました。
プロジェクトが進むにつれ、「こんな機能も必要じゃない?」という意見や、
「何のためにやっているんだっけ」といった迷いが生まれてきます。
プロジェクトマネージャーやディレクターは常に判断を求められる場面に直面していくことになりま
す。
セッション数、CVR、SEO 、顧客満足度など、様々なKPIが絡み合う中、
今回のプロジェクトは「SEO」に軸足を置き、「求人を掲載しやすいこと」をサブ目的と位置づけし
ました。
このことにより、意思決定のスピードが向上し、判断の背景が明確となりました。
背景が明確なので納得感を持って進行することができています。
Copyright (C) REJOB Co.,Ltd. All Rights Reserved.
Problem
・マルチドメイン・シングルリポジトリでカオス
・歴史が長いのに属人化がすごいので仕様変更がきつい
・テストのカバレッジが極端に低い
・当初の要件が不明なので設計が理解不能
・ドキュメントが散らかりまくり
・ドキュメントが正しいのかわからない
・暗黒期のコードが理解不能
・複数部署の思惑を加味した機能が大量にあって判断がしづらい
・決めたルールを守り、守られているかチェックする機構がない
・開発工数の内訳が全体的にふわっとしている
・新しい技術にチャレンジできる環境だがリスクがある
・エンジニアリングに対してコストを割きづらい
・開発環境の更新が自動化できていない
・ビジネスロジックに対する学習コストが高すぎる
・部分的に疎結合なアプリケーションがあったりして忘れる
・インフラエンジニアが社内にいないので怖い
・システム障害の毀損額が大きい
・品質管理体制が(まだ)整っていない
・Gemを大量に使っていて身動きが取れない
・諸事情によりRailsのバージョン上げづらい
・オフィス環境が厳しい(移転により改善予定)
Copyright (C) REJOB Co.,Ltd. All Rights Reserved.
Problem
伸び代しか無い
Copyright (C) REJOB Co.,Ltd. All Rights Reserved.
Problem
決めたルールを守り、
守られているかチェックする機構がない
要件、仕様、テスト、コーディング規約etc..
プロジェクトが肥大化してくるとRailsのフレームワークではまかないきれないルールが出てきます。
大量のドキュメントがあれば全てをカバーすることもできると思いますが、いちいち読み込む訳にも
いかずソースコード上のコメントや実装を見ながら各自が学習していくことになります。
ビジネスモデルに直結する箇所に関するルールや、直接は影響しなくとも動かなくなったら困るコー
ドなどはテストを書いていくことになりますが、肥大化したプロジェクトではテストの設計難易度が
向上したり、テストの実行コストが跳ね上がります。
リジョブではドキュメント管理ツールを導入したり、コーディング規約を設けたりしていますが、守
られているかどうかはコードレビューまで気付かない場合が多くなってきています。
こういう状況はレビュアーやテスターの責任が重くなりすぎて進行が遅くなりがちなので、なんとか
仕組みで回避したい。
Copyright (C) REJOB Co.,Ltd. All Rights Reserved.
Try
知見を集める
Copyright (C) REJOB Co.,Ltd. All Rights Reserved.
Try
どのようにルールを決め、周知を行い、
チェックしているかを教えてください
Copyright (C) REJOB Co.,Ltd. All Rights Reserved.
最後に
長生きするアプリケーションかどうかは、
誰にもわかりません。
設計は手を抜かず、全力で考えましょう。
リーダブル&テスタブルであることが超重要です。
Copyright (C) REJOB Co.,Ltd. All Rights Reserved.
最後に
ご清聴いただきありがとうございました。

More Related Content

Similar to Long Life RailsApp in the case of REJOB

【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座DIVE INTO CODE Corp.
 
Rubyによる開発プロジェクトをうまく回すには(1)
Rubyによる開発プロジェクトをうまく回すには(1)Rubyによる開発プロジェクトをうまく回すには(1)
Rubyによる開発プロジェクトをうまく回すには(1)Yasuko Ohba
 
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれからReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれからYusuke Murata
 
愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。Sho Yoshida
 
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41thrablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41thKoichiro Sumi
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版DIVE INTO CODE Corp.
 
【2017早めの夏休み自由研究】SPAとサーバーレスについて
【2017早めの夏休み自由研究】SPAとサーバーレスについて【2017早めの夏休み自由研究】SPAとサーバーレスについて
【2017早めの夏休み自由研究】SPAとサーバーレスについてkazuki matsumura
 
frozen string literal in Ruby
frozen string literal in Rubyfrozen string literal in Ruby
frozen string literal in RubyKoichi ITO
 
丸山先生レクチャーシリーズ2007-2008
丸山先生レクチャーシリーズ2007-2008丸山先生レクチャーシリーズ2007-2008
丸山先生レクチャーシリーズ2007-2008Yoichiro Tanaka
 
20130615 組込みの仕事場でRubyを使う
20130615 組込みの仕事場でRubyを使う20130615 組込みの仕事場でRubyを使う
20130615 組込みの仕事場でRubyを使うRyo Nagai
 
マーケティングテクノロジー勉強会
マーケティングテクノロジー勉強会マーケティングテクノロジー勉強会
マーケティングテクノロジー勉強会伊藤 孝
 
Railsとフロントエンドリソースの健全な共存のために
Railsとフロントエンドリソースの健全な共存のためにRailsとフロントエンドリソースの健全な共存のために
Railsとフロントエンドリソースの健全な共存のためにNarihiro Nishimura
 
そのRails Engine、 本当に必要ですか?
そのRails Engine、 本当に必要ですか?そのRails Engine、 本当に必要ですか?
そのRails Engine、 本当に必要ですか?nixiesan
 
テックリンク資料20170529
テックリンク資料20170529テックリンク資料20170529
テックリンク資料20170529yoshito funayose
 
Railsのフロントエンド開発を考える
Railsのフロントエンド開発を考えるRailsのフロントエンド開発を考える
Railsのフロントエンド開発を考えるHirata Tomoko
 
そうだApi公開しよう feat. 有志のエンジニア
そうだApi公開しよう feat. 有志のエンジニアそうだApi公開しよう feat. 有志のエンジニア
そうだApi公開しよう feat. 有志のエンジニアrecotech
 
プロが教える Rails 教え方ワンポイントとキャリア情報
プロが教える Rails 教え方ワンポイントとキャリア情報プロが教える Rails 教え方ワンポイントとキャリア情報
プロが教える Rails 教え方ワンポイントとキャリア情報DIVE INTO CODE Corp.
 
Rails5とAPIモードについての解説
Rails5とAPIモードについての解説Rails5とAPIモードについての解説
Rails5とAPIモードについての解説Fumiya Sakai
 

Similar to Long Life RailsApp in the case of REJOB (20)

【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
 
Rails あるある
Rails あるあるRails あるある
Rails あるある
 
Rubyによる開発プロジェクトをうまく回すには(1)
Rubyによる開発プロジェクトをうまく回すには(1)Rubyによる開発プロジェクトをうまく回すには(1)
Rubyによる開発プロジェクトをうまく回すには(1)
 
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれからReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
 
愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。愛せよ、さもなくば捨てよ。
愛せよ、さもなくば捨てよ。
 
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41thrablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
【2017早めの夏休み自由研究】SPAとサーバーレスについて
【2017早めの夏休み自由研究】SPAとサーバーレスについて【2017早めの夏休み自由研究】SPAとサーバーレスについて
【2017早めの夏休み自由研究】SPAとサーバーレスについて
 
frozen string literal in Ruby
frozen string literal in Rubyfrozen string literal in Ruby
frozen string literal in Ruby
 
丸山先生レクチャーシリーズ2007-2008
丸山先生レクチャーシリーズ2007-2008丸山先生レクチャーシリーズ2007-2008
丸山先生レクチャーシリーズ2007-2008
 
20130615 組込みの仕事場でRubyを使う
20130615 組込みの仕事場でRubyを使う20130615 組込みの仕事場でRubyを使う
20130615 組込みの仕事場でRubyを使う
 
マーケティングテクノロジー勉強会
マーケティングテクノロジー勉強会マーケティングテクノロジー勉強会
マーケティングテクノロジー勉強会
 
Railsとフロントエンドリソースの健全な共存のために
Railsとフロントエンドリソースの健全な共存のためにRailsとフロントエンドリソースの健全な共存のために
Railsとフロントエンドリソースの健全な共存のために
 
すこやかRails
すこやかRailsすこやかRails
すこやかRails
 
そのRails Engine、 本当に必要ですか?
そのRails Engine、 本当に必要ですか?そのRails Engine、 本当に必要ですか?
そのRails Engine、 本当に必要ですか?
 
テックリンク資料20170529
テックリンク資料20170529テックリンク資料20170529
テックリンク資料20170529
 
Railsのフロントエンド開発を考える
Railsのフロントエンド開発を考えるRailsのフロントエンド開発を考える
Railsのフロントエンド開発を考える
 
そうだApi公開しよう feat. 有志のエンジニア
そうだApi公開しよう feat. 有志のエンジニアそうだApi公開しよう feat. 有志のエンジニア
そうだApi公開しよう feat. 有志のエンジニア
 
プロが教える Rails 教え方ワンポイントとキャリア情報
プロが教える Rails 教え方ワンポイントとキャリア情報プロが教える Rails 教え方ワンポイントとキャリア情報
プロが教える Rails 教え方ワンポイントとキャリア情報
 
Rails5とAPIモードについての解説
Rails5とAPIモードについての解説Rails5とAPIモードについての解説
Rails5とAPIモードについての解説
 

Long Life RailsApp in the case of REJOB

  • 1. 2019.02.06 REJOB 山﨑大輔 (Github: @mojao) Long life RailsApp REJOB Copyright (C) REJOB Co.,Ltd. All Rights Reserved.
  • 2. Copyright (C) REJOB Co.,Ltd. All Rights Reserved. スピーカー 山﨑 大輔(Github: @mojao) Webシステム開発 / 基幹システム開発 / 各種マネジメント / 採用 2007年からRuby, Railsを触り始めました。 Ruby, Rails, RDBMS, 全文検索エンジン, JavaScript, AWS etc.. 何でも屋さんです。 フルスタックエンジニア。
  • 3. Copyright (C) REJOB Co.,Ltd. All Rights Reserved. リジョブ https://www.wantedly.com/projects/18033 https://www.wantedly.com/projects/184051 https://www.wantedly.com/projects/36861 求人メディア事業をメインに、 リジョブを盛り上げてくれるメンバー募集中
  • 4. Copyright (C) REJOB Co.,Ltd. All Rights Reserved. Long Life RailsApps リジョブがRailsでリプレースされてから 4年 コードを書いたエンジニア数 約60名 累計コミット数 19,000 累計プルリクエスト数 8,000 有効なコード 220,000行 求人という重いテーブルの構造を変えるというプロジェクトが進行中 を1人KPTしてみた結果
  • 5. Copyright (C) REJOB Co.,Ltd. All Rights Reserved. Keep ・リリースしたり、効果が良かったりすると事業側のメンバーから感謝される ・Githubフローをちゃんと回せている ・開発環境をDockerで構築できるようにした ・効率的にレビューをするために色々ルールを設けた ・Jenkinsを使ってデプロイやタスクの実行をできるようにした ・RspecとSeleniumが主要な機能をカバーした ・Reviewdogで自動的にコードの書き方を指摘されるのでロジックに対して議論すること ができる ・ドキュメント管理システムを導入して非エンジニアも巻き込んだ ・プロジェクトのキックオフをすることでコアメンバーの意識を統一できた ・プロジェクト進行においてシンプルなルールだけ決めて守るようにした ・何のためのプロジェクトなのかを明確にした ・ガントチャートをすぐ更新できるように専用のツールを導入した ・Backlogは基本的にFIXした内容とスケジュールのみ記載するようにした
  • 6. Copyright (C) REJOB Co.,Ltd. All Rights Reserved. Keep 何のためのプロジェクトなのかを明確にした 2018年11月から走りだした「求人データ構造改革プロジェクト」では、 キックオフ時に「このプロジェクトは何のためのプロジェクトなのか」を明確にしました。 プロジェクトが進むにつれ、「こんな機能も必要じゃない?」という意見や、 「何のためにやっているんだっけ」といった迷いが生まれてきます。 プロジェクトマネージャーやディレクターは常に判断を求められる場面に直面していくことになりま す。 セッション数、CVR、SEO 、顧客満足度など、様々なKPIが絡み合う中、 今回のプロジェクトは「SEO」に軸足を置き、「求人を掲載しやすいこと」をサブ目的と位置づけし ました。 このことにより、意思決定のスピードが向上し、判断の背景が明確となりました。 背景が明確なので納得感を持って進行することができています。
  • 7. Copyright (C) REJOB Co.,Ltd. All Rights Reserved. Problem ・マルチドメイン・シングルリポジトリでカオス ・歴史が長いのに属人化がすごいので仕様変更がきつい ・テストのカバレッジが極端に低い ・当初の要件が不明なので設計が理解不能 ・ドキュメントが散らかりまくり ・ドキュメントが正しいのかわからない ・暗黒期のコードが理解不能 ・複数部署の思惑を加味した機能が大量にあって判断がしづらい ・決めたルールを守り、守られているかチェックする機構がない ・開発工数の内訳が全体的にふわっとしている ・新しい技術にチャレンジできる環境だがリスクがある ・エンジニアリングに対してコストを割きづらい ・開発環境の更新が自動化できていない ・ビジネスロジックに対する学習コストが高すぎる ・部分的に疎結合なアプリケーションがあったりして忘れる ・インフラエンジニアが社内にいないので怖い ・システム障害の毀損額が大きい ・品質管理体制が(まだ)整っていない ・Gemを大量に使っていて身動きが取れない ・諸事情によりRailsのバージョン上げづらい ・オフィス環境が厳しい(移転により改善予定)
  • 8. Copyright (C) REJOB Co.,Ltd. All Rights Reserved. Problem 伸び代しか無い
  • 9. Copyright (C) REJOB Co.,Ltd. All Rights Reserved. Problem 決めたルールを守り、 守られているかチェックする機構がない 要件、仕様、テスト、コーディング規約etc.. プロジェクトが肥大化してくるとRailsのフレームワークではまかないきれないルールが出てきます。 大量のドキュメントがあれば全てをカバーすることもできると思いますが、いちいち読み込む訳にも いかずソースコード上のコメントや実装を見ながら各自が学習していくことになります。 ビジネスモデルに直結する箇所に関するルールや、直接は影響しなくとも動かなくなったら困るコー ドなどはテストを書いていくことになりますが、肥大化したプロジェクトではテストの設計難易度が 向上したり、テストの実行コストが跳ね上がります。 リジョブではドキュメント管理ツールを導入したり、コーディング規約を設けたりしていますが、守 られているかどうかはコードレビューまで気付かない場合が多くなってきています。 こういう状況はレビュアーやテスターの責任が重くなりすぎて進行が遅くなりがちなので、なんとか 仕組みで回避したい。
  • 10. Copyright (C) REJOB Co.,Ltd. All Rights Reserved. Try 知見を集める
  • 11. Copyright (C) REJOB Co.,Ltd. All Rights Reserved. Try どのようにルールを決め、周知を行い、 チェックしているかを教えてください
  • 12. Copyright (C) REJOB Co.,Ltd. All Rights Reserved. 最後に 長生きするアプリケーションかどうかは、 誰にもわかりません。 設計は手を抜かず、全力で考えましょう。 リーダブル&テスタブルであることが超重要です。
  • 13. Copyright (C) REJOB Co.,Ltd. All Rights Reserved. 最後に ご清聴いただきありがとうございました。