SlideShare a Scribd company logo
💪
開発スピードの減速と再加速
開発スピードの減速と再加速
開発スピードの減速と再加速

More Related Content

Viewers also liked

ちょっとしたオレオレDSLも抽象構文木っぽくしておくと後からの拡張に対応しやすいよねっていうちょっとしたお話
ちょっとしたオレオレDSLも抽象構文木っぽくしておくと後からの拡張に対応しやすいよねっていうちょっとしたお話ちょっとしたオレオレDSLも抽象構文木っぽくしておくと後からの拡張に対応しやすいよねっていうちょっとしたお話
ちょっとしたオレオレDSLも抽象構文木っぽくしておくと後からの拡張に対応しやすいよねっていうちょっとしたお話
chocolamint
 
先入観とバイアスを考慮したWebサイトパフォーマンス改善
先入観とバイアスを考慮したWebサイトパフォーマンス改善先入観とバイアスを考慮したWebサイトパフォーマンス改善
先入観とバイアスを考慮したWebサイトパフォーマンス改善
Yoichiro Takehora
 
IOS/Androidアプリの3つの大事な設計方針
IOS/Androidアプリの3つの大事な設計方針IOS/Androidアプリの3つの大事な設計方針
IOS/Androidアプリの3つの大事な設計方針Ken Morishita
 
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
dcubeio
 
Amazon Redshiftによるリアルタイム分析サービスの構築
Amazon Redshiftによるリアルタイム分析サービスの構築Amazon Redshiftによるリアルタイム分析サービスの構築
Amazon Redshiftによるリアルタイム分析サービスの構築
Minero Aoki
 
AWSスポットインスタンスの真髄
AWSスポットインスタンスの真髄AWSスポットインスタンスの真髄
AWSスポットインスタンスの真髄
外道 父
 
HR Tech x 機械学習 導入事例紹介
HR Tech x 機械学習 導入事例紹介HR Tech x 機械学習 導入事例紹介
HR Tech x 機械学習 導入事例紹介
dcubeio
 
「訴求ファースト」と「こだわり駆動開発」~教育、医療、もの書き市場で戦うプロダクトマネージャーの考え方~
「訴求ファースト」と「こだわり駆動開発」~教育、医療、もの書き市場で戦うプロダクトマネージャーの考え方~「訴求ファースト」と「こだわり駆動開発」~教育、医療、もの書き市場で戦うプロダクトマネージャーの考え方~
「訴求ファースト」と「こだわり駆動開発」~教育、医療、もの書き市場で戦うプロダクトマネージャーの考え方~
JustSystems Corporation
 
機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計
Takahiro Kubo
 
さらに上を目指すための iOS アプリ設計
さらに上を目指すための iOS アプリ設計さらに上を目指すための iOS アプリ設計
さらに上を目指すための iOS アプリ設計
Taketo Sano
 
Sprocketsを捨てたい
Sprocketsを捨てたいSprocketsを捨てたい
Sprocketsを捨てたい
Masato Noguchi
 
Scalaマクロ入門 bizr20170217
Scalaマクロ入門 bizr20170217 Scalaマクロ入門 bizr20170217
Scalaマクロ入門 bizr20170217
dcubeio
 
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷javaY Watanabe
 
AWS 初心者向けWebinar Amazon Web Services料金の見積り方法 -料金計算の考え方・見積り方法・お支払方法-
AWS 初心者向けWebinar Amazon Web Services料金の見積り方法 -料金計算の考え方・見積り方法・お支払方法-AWS 初心者向けWebinar Amazon Web Services料金の見積り方法 -料金計算の考え方・見積り方法・お支払方法-
AWS 初心者向けWebinar Amazon Web Services料金の見積り方法 -料金計算の考え方・見積り方法・お支払方法-
Amazon Web Services Japan
 
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botPython × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack bot
dcubeio
 
React.js・ReactNative・Redux入門
React.js・ReactNative・Redux入門React.js・ReactNative・Redux入門
React.js・ReactNative・Redux入門
Kazuhiro Yoshimoto
 
Api gatewayの話
Api gatewayの話Api gatewayの話
Api gatewayの話
Hiroshi Hayakawa
 
スタディサプリを支えるデータ分析基盤 ~設計の勘所と利活用事例~
スタディサプリを支えるデータ分析基盤 ~設計の勘所と利活用事例~スタディサプリを支えるデータ分析基盤 ~設計の勘所と利活用事例~
スタディサプリを支えるデータ分析基盤 ~設計の勘所と利活用事例~
Tetsuo Yamabe
 
Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)
Yohei Yasukawa
 

Viewers also liked (19)

ちょっとしたオレオレDSLも抽象構文木っぽくしておくと後からの拡張に対応しやすいよねっていうちょっとしたお話
ちょっとしたオレオレDSLも抽象構文木っぽくしておくと後からの拡張に対応しやすいよねっていうちょっとしたお話ちょっとしたオレオレDSLも抽象構文木っぽくしておくと後からの拡張に対応しやすいよねっていうちょっとしたお話
ちょっとしたオレオレDSLも抽象構文木っぽくしておくと後からの拡張に対応しやすいよねっていうちょっとしたお話
 
先入観とバイアスを考慮したWebサイトパフォーマンス改善
先入観とバイアスを考慮したWebサイトパフォーマンス改善先入観とバイアスを考慮したWebサイトパフォーマンス改善
先入観とバイアスを考慮したWebサイトパフォーマンス改善
 
IOS/Androidアプリの3つの大事な設計方針
IOS/Androidアプリの3つの大事な設計方針IOS/Androidアプリの3つの大事な設計方針
IOS/Androidアプリの3つの大事な設計方針
 
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
 
Amazon Redshiftによるリアルタイム分析サービスの構築
Amazon Redshiftによるリアルタイム分析サービスの構築Amazon Redshiftによるリアルタイム分析サービスの構築
Amazon Redshiftによるリアルタイム分析サービスの構築
 
AWSスポットインスタンスの真髄
AWSスポットインスタンスの真髄AWSスポットインスタンスの真髄
AWSスポットインスタンスの真髄
 
HR Tech x 機械学習 導入事例紹介
HR Tech x 機械学習 導入事例紹介HR Tech x 機械学習 導入事例紹介
HR Tech x 機械学習 導入事例紹介
 
「訴求ファースト」と「こだわり駆動開発」~教育、医療、もの書き市場で戦うプロダクトマネージャーの考え方~
「訴求ファースト」と「こだわり駆動開発」~教育、医療、もの書き市場で戦うプロダクトマネージャーの考え方~「訴求ファースト」と「こだわり駆動開発」~教育、医療、もの書き市場で戦うプロダクトマネージャーの考え方~
「訴求ファースト」と「こだわり駆動開発」~教育、医療、もの書き市場で戦うプロダクトマネージャーの考え方~
 
機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計機械学習で泣かないためのコード設計
機械学習で泣かないためのコード設計
 
さらに上を目指すための iOS アプリ設計
さらに上を目指すための iOS アプリ設計さらに上を目指すための iOS アプリ設計
さらに上を目指すための iOS アプリ設計
 
Sprocketsを捨てたい
Sprocketsを捨てたいSprocketsを捨てたい
Sprocketsを捨てたい
 
Scalaマクロ入門 bizr20170217
Scalaマクロ入門 bizr20170217 Scalaマクロ入門 bizr20170217
Scalaマクロ入門 bizr20170217
 
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
 
AWS 初心者向けWebinar Amazon Web Services料金の見積り方法 -料金計算の考え方・見積り方法・お支払方法-
AWS 初心者向けWebinar Amazon Web Services料金の見積り方法 -料金計算の考え方・見積り方法・お支払方法-AWS 初心者向けWebinar Amazon Web Services料金の見積り方法 -料金計算の考え方・見積り方法・お支払方法-
AWS 初心者向けWebinar Amazon Web Services料金の見積り方法 -料金計算の考え方・見積り方法・お支払方法-
 
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botPython × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack bot
 
React.js・ReactNative・Redux入門
React.js・ReactNative・Redux入門React.js・ReactNative・Redux入門
React.js・ReactNative・Redux入門
 
Api gatewayの話
Api gatewayの話Api gatewayの話
Api gatewayの話
 
スタディサプリを支えるデータ分析基盤 ~設計の勘所と利活用事例~
スタディサプリを支えるデータ分析基盤 ~設計の勘所と利活用事例~スタディサプリを支えるデータ分析基盤 ~設計の勘所と利活用事例~
スタディサプリを支えるデータ分析基盤 ~設計の勘所と利活用事例~
 
Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)Railsチュートリアルの歩き方 (第4版)
Railsチュートリアルの歩き方 (第4版)
 

Recently uploaded

LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
Toru Tamaki
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
Takayuki Nakayama
 

Recently uploaded (8)

LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
 

開発スピードの減速と再加速

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29. 💪

Editor's Notes

  1. 今日は寒い中、勉強会に参加してくれてありがとうございますm(_ _)m 「開発スピードの減速と再加速」というタイトルで話させてもらいたいと思います。
  2. 工藤ともうします。 こんななりですが、一応結婚してて、結婚式は楽しんだクチ。 アイコンの通りでねこ好きで通っております。 みんなのウェディングもだいぶ長くなりまして、はや7年。 なんだか知らないうちに、社員番号が前から五番目になってしまいました。
  3. ginza.rbという地域Rubyコミュニティもやってたりします。 Railsセキュリティチェックリストについて、2/21にみんなのウェディングのオフィスで 頼りない自分を心配してくれてか、いっしょにやっているwillnet氏やy-yagi氏も顔を出してくれてたり、勉強会に足を運んでくれた方もたくさん。 大変ありがたいことですm(_ _)m 発表とか全然慣れていないんですが、少しリラックスして話せるかもしれません。
  4. 弊社はみんなのウェディングという、結婚式場紹介口コミサイトを運営しています。
  5. 結婚式、披露宴は一度に多くの人数を呼ぶので、人数分の飲み物食べ物はもちろん、招待客が入れる場所、出し物の準備をするバックヤードがあったり、準備を円滑にしたり当日招待客のみなさんがゆっくりできるようにするスタッフが必要なので、思った以上にお金がかかるし、やりなおしも効きません。 そんな結婚式披露宴ですが、思ったほど身の回りに経験者がいないと思いませんか? みんなのウェディングでは結婚式場での実際の口コミを経験者からあつめて提供し、これから行う花嫁花婿の結婚式当日をより大切な日にしてもらうためのサービスです。 もちろん、結婚式の関係者の結婚式場等のクライアントにも参画してもらい、それぞれの式場の情報を提供してもらったりしています。
  6. 2008年にDeNAの社内ベンチャーとしてサービスを開始してから、2010年に分社化、おかげさまで2016年9月は460万ユニークブラウザに到達しています。 厚生労働省の平成28年度(2016)の「婚姻に関する統計」によれば、平成27年は今件数は63万5千組。なにかしらの形で見てもらえているサービスになっていると思います。
  7. DeNA生まれのみんなのウェディング。モバゲーを支えていたケータイサイト向けのWebアプリケーションフレームワークのMobaSiFを使って開発が始まりました。ケータイ3キャリアの機種でよろしくページを表示できたりします。みんなのウェディングでは2015年12月までケータイをサポートしていたので、大変お世話になりました。 MobaSiFはPerlと若干のCで書かれていて、 ApacheとMySQLをあわせて使います。当時のデファクトスタンダードでした。 Mobasif表示させることのみにフォーカスしており、それ以外の機能は持っていないので、イマドキのフレームワークに比べて非常に薄く、見通しが良いです。 SourceForgeで公開されているMobaSiFのサンプルのように、MobaSiFを利用するには、フレームワークを設置したディレクトリにそのままアプリケーションを構築していきます。
  8. そのような感じなので、フレームワークとアプリケーションの境界が薄いです。フレームワークのコードにサービス独自の処理を記述し、アプリケーション化していきます。 例えば、ログイン処理とか計測の処理とか…。 アプリケーション化してしまったフレームワーク、バージョンアップをどうしましょう? 新バージョンのフレームワークと、アプリケーションの融合しているフレームワークの差分をどうやって反映するには、新バージョンのフレームワークの変更の意味をわかった挙句、それを手作業でアプリケーションに反映していかなくてはいけないはずです…。 よほど強い動機がないとできそうにありません…。
  9. フレームワークとして推奨しているディレクトリ構成はほとんどありません。非常にPerlっぽいかと…。 MobaSiFはオープンソースとして公開されましたが、それほどメジャーにまではなりませんでした。なので暗黙の流儀のようなものもあまり生まれなかったと思います。ですので社内の大雑把なルールしか最初はありませんでした。 それから、当時は仕事のスタイルとして一人一案件としてまるっと任されることが多かったです。 ユーザに便利に使ってほしいとの気持ちから、各案件ごとに便利になるように考え抜いて、結果的に案件ごとに少しずつ違うものを作ってきました。
  10. サービスを大きくしてユーザによりよく使ってもらおうと、次々にいろいろなことをやってきました。 あれやって、これやって…。 短時間で作り、コードの整理をする間もなく、すぐ次の施策に取り掛かる。 各ページで少しずつ違う仕様は、コピペを促して…。 その後、他ページへその仕様を反映するには、テストがないので影響が測れず調査に時間がかかる。「今回はこれでいいか…」が積り易いのは…書いていてお腹が痛いです。 コードのメンテナンスはユーザの便利さや売上そのものに直接反映されないので、うまく説明できずちゃんと交渉できなかったことが悔やまれます…。
  11. 徐々に真綿で首を締められるように苦しくなってきました。 ちょっとずつ違うコードがあちこちに散らばっているので、改修や機能追加をするたびにあちこちgrep。 修正漏れがないかいつも不安でリリースが怖い…。
  12. さすがに辛くなってきたので、状況を改善すべくいろいろ試してきました。 テスト。seleniumとかcasperを試したけれど、各人の準備が大変なことと、強く推奨するまでしなかったので、普及には至りませんでした。 コーディング規約。レビューのときに人力でチェックしてました。違反してても見逃すとそのままマージされちゃいます。 モデル。基本的なdbアクセスをコードを書かないでできるようにしたりする社内ライブラリが作られ、新規機能で利用され始めました。 sass。今まで素のcssで書いていましたが、パーツの共通化をしていきたくて導入しました。gulpによってある程度の自動化がサポートされています。
  13. いろいろなことを試しはしましたが、微妙に手作業が残ったり、そもそも難しかったりで、大幅な改善までには至りませんでした。 …思い切って、フレームワークの変更を行ってしまおう。そんなふうになりました。
  14. Railsはみんな知っての通りですよね。 Rubyで書かれたWebアプリケーションフレームワークで、フルスタックで… テストとかSassとか、気の利いたものがひとつになっています。 一番大きいのは、利用者数が多く、日本語でも情報が得やすいところでしょうか。
  15. 移行するのは決めたけれど、さまざまな不安が…。 みんなのウェディングにはびっくりするくらいページがあります。どれくらいかかるんだろう? もし移行を始めたら、機能追加や改修は続けられないのでしょうか? というか、そもそもRails開発経験者が少ない…。 Railsはデータベースの作り方が全然違うじゃない…。 Railsは設定より規約。規約にまちがいなく沿ってないんだけど大丈夫なのか…。
  16. どれくらいかかるかは始めてみないとわからないので、ひとまず置いておいて…。 1ページずつできれば、Rails移行と同時にできるのでは…。 …ということで、前にreverse proxyとしてnginxを置き、Railsで表示できるようになったものだけRails側のサーバ、基本的にはMobasifのサーバに向けるようにしています。 こうすることで、指定したURLだけ、Rails側のページが表示されるようになりました。
  17. 社内で、Railsを使った開発をしたことのあるメンバーが3人しかいません…。
  18. サービスの成長自体は必須なので、最初はRails経験者達でRails移行チームを編成、ほとんどのメンバーはそのままPerlで開発していました。 いくつかのページを移行し終えて、ノウハウがたまり、開発の基盤が固まってきたころに、全エンジニアがPerl/Railsを問わず対応するようにしました。
  19. データベースの作り方が全然違う件については…。 普通にRailsが対応していて、命名ルールの上書きができ、テーブル名やプライマリキーをよろしく設定できました。
  20. ということで始めてみたんですが…。 先のほうで問題にしていた、似ているけど少しずつ違うコードがいっぱい。 どのコードが正しいかわかんないし、全部調べてまわるのにとても時間がかかっていました。
  21. 進捗が思った以上に悪く、悩んでいたのですが…。 あまり歴史を紐解くのに時間が掛かる場合には、開き直って、正しいと思うように作って、識者に確認してもらうようにしました。
  22. 昔と違って今は、テストを支援するツールがたくさんあります。 大きなWebアプリケーションであるのはわかりきっているので、何かしら変更したらどこに影響が出るか不安になることは多々ありそうです。 なので、移行するものについては必ずテストは書くようにしています。
  23. また、テストは書くだけではなく、ちゃんと使っていっています。 githubを使っているのですが、githubへプルリクエストを作ったり、プッシュしたりしたときには自動でテストが回るようになっています。当然、失敗だったときにはマージできません。 プルリクエストを誰かにレビューしてもらって、かつテストがOKだったらマージします。 masterにマージしたとき、やはり同様に自動でテストが行われ、OKだったらステージング環境に自動でリリースされます。 テストが万が一NGになっていると、ステージングへのリリースはできなくなります。 本番へのリリースは、ステージング環境へリリースされたリビジョンを指定して行います。 強制力を多少持たせているために、テストは常にグリーンを保つようになっていると思います。
  24. テストを揃えながら移行作業が進んできました。 Railsのコードが大きくなってきて、テストも順調に増えてきて、テスト完了に時間が掛かるようになってきました。10分を超えるくらい。
  25. テストがやりにくくてテストが疎かになってはあまり意味がありません…。 テスト実行を並列化させて、完了時間を早くしました。 (基盤のチームに感謝です…。)
  26. そのうちに、デザイナ・エンジニア全員がRailsでコードを書くようになり…。 テスト実行のために行列になることが多々起きるようになりました。 下手をすると、一時間以上待つことも…。
  27. テストがやりにくくてテストが疎かになってはあまり意味がありません…。 テスト実行を2系統に変えました。 テスト完了までの時間は掛かるようになりましたが、テスト実行を待つことがほとんどなくなったので、最終的に早くなりました。 ただ、これは少し問題があって、マージ後にテストが通ったらステージング環境にリリースされるのですが、タイミングによって順番が前後することがあります。 とはいえ、ほとんど起きないので、今はこのまま。 次の人がマージされるのを待つか、テストの再実行でしのいでいます。
  28. アプリケーションの移行の道筋は立ち、ぼちぼち進んでいるのですが… まだ問題は残っています。 採番テーブル。高負荷ケータイゲーム向けのノウハウでできていたので、複数DBでうまく動くようになのかな…? みんなのウェディングはそこまで高負荷になったりもしないので、余計な機構は取り除きたいと思っています。 データベースの文字コードがShift JISです。 ケータイの絵文字があったから…。今後はUTF-8に変えたいと思っていますが、まだ波乱がありそう…。
  29. 青がMobaSiFの追加行数、緑が削除行数です。 2015年から登場している黄色とオレンジはRailsの追加行数と削除行数です。 MobaSiFのほうは追加に比べて削除行数がだいぶ少ないですね…。継ぎ足しでコードを書いてる感が見えてきます。 Railsのほうは2016年は追加に対して削除が半分程度と、追加だけでなく削除も多くの割合で行なっていけていることが見えます。コード行数もだいぶ少なくなってそうで、効率的に書けるようになったとも言えそうです。
  30. このグラフはコミット回数です。青がMobaSiF、緑がRailsです。 2016年のコミット回数は2015年より2016年のほうが総じて増えています。 コード行数もだいぶ少なくなってそうで、効率的に書けるようになったとも言えそうです。
  31. コードの追加行数がコミット数との比べると、だいぶ減りました。しかもここにはテストのコード行数も入っています。 総コミット数が増えたので、すぐ作れるすぐ直せるようになったといってもいいですよね。 追加行数と削除行数の比率を見ると、Railsに移行している部分に関しては2:1くらいでした。 削除しやすくなっていそうです。
  32. 先に出てきた、利用者数のグラフです。 折れ線は移動平均です。 グラフ下の線で、青色のものはMobaSiF、赤色のものはRailsのシステムが存在している期間です。 2014年9月くらいまで、よいぐあいに上がってきてましたが、その後、伸びが少し緩やかになり…。 2015年9月くらいから少し傾きが出てきた感じにみえませんか。 社内全体で変わろうとし始めた時期で、ちょうどそのあたりからRails化を始めています。 再加速したと言わせてもらってもかまわないでしょうか? それから、もうひとつ。 300万ユニークブラウザまでのひとに使ってもらえるようにサービスを支えてきたのは、MobaSiFの上に作られたシステムです。 レガシーレガシーだとつい思ってしまいがち、コードを覗けば、過去の自分のコードで苦い顔をしたくなるものもたくさんあります…。 ですが、過去を思いかえせば、そのとき持てる道具とそのときのメンバーで精一杯やりました。 なるべく早く、笑顔で送ってやりたいと思います。
  33. すみません。少し感傷にふけってしまいましたが…。 サービスが当たって、ユーザに使ってもらえるようになると、長い時間サービスを継続することになります。 長い時間サービスを運用していると、サービスで利用できていないけど、サービスを支えるために使えそうな周辺技術も進化してきます。 どこかで開発が遅くなってきたな楽しくないなと感じたら、ちょっと腰を据えて周りを見渡してもいいかもしれません。 突飛な技術ではなく既存のメジャーな技術だけでも、困っていることを解決していけることが多いです。 ユーザに支持されていて、自分も好きなサービスを、自分の好きなメンバーとともに楽しく開発しつづけられるよう、努めていけたらな、と思っています。