SlideShare une entreprise Scribd logo
1  sur  41
Télécharger pour lire hors ligne
Eiwa System Management, Inc.
Agile Division
Ruby x Agile Group
Koichi ITO (@koic)
2015.12.14 (Mon)
Somewhere in Tokyo
Yamama.rb #0
Agile Software Development
Edge Rubywith
Computer programmer, guitarist.
Leader of an Agile software development team
at Eiwa System Management, Inc.
Lives in Shinjuku.
@koic photo token by @NaCl
#esm_drinkup #rubykaigi
ESM Drinkup
Sake supervisor @joker1007
WE ARE HIRING
www.wantedly.com/projects/28670
Pitch
Ruby 2.3 のリリースが近づいているこの頃、
新たに入る機能の話題を開発メンバーや地域の
Ruby コミュニティに持ち込むと新機能自体の
話題が注目される一方で、どのように情報を集
めているかといった質問を受けることがあり、
その受け答えをベースにした話をまとめてみよ
うと思ったのが今回のテーマのきっかけです。
本日お話しすること
現場
伝統の契約形態での受託開発サービス
Ruby Agile
To
 be
 continued…⋯
•#1 やる気の上がる道具を
ふだんから使おう
•#2 ソフトウェアは人が人
のために作るもの
アジェンダ
•#1 やる気の上がる道具を
ふだんから使おう
•#2 ソフトウェアは人が人
のために作るもの
アジェンダ
?
•Ruby 2.0
•Ruby 2.1
•Ruby 2.2
•Ruby 2.3-dev
あなたのやる気が上がるのはどれ?
•Ruby 2.0
•Ruby 2.1
•Ruby 2.2
•Ruby 2.3-dev
わたしのやる気が上がるのはこれ!
• 本番環境は長いこと Ruby 2.0
• オンプレによる微妙な不可侵領域
• ちょっと流れが変わってきたけれ
どそれはまた別の機会のお話に
• かといって諦めるにはまだはやい
私のプロジェクト(現実)
• 本番環境、ステージング環境と同じ
RubyのバージョンでCIを えてる
• 本番はLinuxで手元はMac OS X
とそもそもの環境が違う
• native buildとかありますし
Jenkins老という門番
ふだん使っていて
モチベーションの
上がる道具を使う
オレの考え
2.3.0-dev
16.7%
2.3.0-preview1
16.7%
2.2
33.3%
2.0
33.3%
プロジェクトメンバーのRubyバージョン
• 綺麗事だけではないわけですよ
チームでのスレ違い(現実)
チームでのスレ違い(現実)
• 手元では動くわけですよ←不穏
あれ?
$ irb
irb(main):001:0 class C; end
= nil
irb(main):002:0 module M end
= nil
irb(main):003:0 C.include M
= C
某老による裁定(現実)
• 手元だけ動いても仕方ないんですよ
XPでCIは主要プラクティス
$ irb
irb(main):001:0 RUBY_VERSION
= 2.0.0
irb(main):002:0 class C; end
= nil
irb(main):003:0 module M end
= nil
irb(main):004:0 C.include M
NoMethodError: private method `include'
called for C:Class
• そんな気にならない
じゃあ、Ruby 2.0使う?
• フルビルドは30分越え
• フィードバックの速さは重要
• CIという冗長に任せて、手元はフル
ビルドせずスポットのテストのみ流す
• バージョンの違いを意識しておけば問
題があっても解決は速い
スローテスト問題(現実)
問題ない
手元では最新の
Rubyを使おう
オレの結論
ヤル気が最大の生産性らしい
やる気の上がる道具をふだんから使おう
Ruby 2.3
•#1 やる気の上がる道具を
ふだんから使おう
•#2 ソフトウェアは人が人
のために作るもの
アジェンダ
• 基本的に問題なく開発できてる
ruby-headを使っている対象
+----------------------+-------+-------+---------+---------+-----+-------+
| Name | Lines | LOC | Classes | Methods | M/C | LOC/M |
+----------------------+-------+-------+---------+---------+-----+-------+
| Controllers | 3443 | 2656 | 72 | 337 | 4 | 5 |
| Helpers | 297 | 248 | 0 | 34 | 0 | 5 |
| Models | 5550 | 4351 | 97 | 426 | 4 | 8 |
| Mailers | 270 | 212 | 10 | 21 | 2 | 8 |
| Javascripts | 958 | 637 | 13 | 149 | 11 | 2 |
| Libraries | 244 | 195 | 6 | 11 | 1 | 15 |
| Controller specs | 2584 | 2058 | 1 | 10 | 10 | 203 |
| Decorator specs | 348 | 269 | 0 | 0 | 0 | 0 |
| Helper specs | 29 | 20 | 0 | 0 | 0 | 0 |
| Mailer specs | 246 | 196 | 0 | 0 | 0 | 0 |
| Model specs | 12802 | 9832 | 9 | 1 | 0 | 9830 |
| Request specs | 818 | 690 | 0 | 0 | 0 | 0 |
| Staging specs | 163 | 116 | 0 | 3 | 0 | 36 |
| Worker specs | 174 | 132 | 0 | 0 | 0 | 0 |
| Acceptance tests | 2656 | 2116 | 0 | 27 | 0 | 76 |
+----------------------+-------+-------+---------+---------+-----+-------+
| Total | 30582 | 23728 | 208 | 1019 | 4 | 21 |
+----------------------+-------+-------+---------+---------+-----+-------+
Code LOC: 8299 Test LOC: 15429 Code to Test Ratio: 1:1.9
• 基本的に問題がない (すごい!)
• ごく稀に踏むときは踏む
• 動かないと困るので、以前打ち合わ
せと打ち合わせの間にレポートした
• 以前動いていたタイミングに戻す
踏むときは踏む(現実)
• これでruby-core宛に報告できる
大江戸Ruby会議05での学び
http://www.a-k-r.org/pub/2015-11-08-oedo-rubykaigi-05-akr.pdf
• 自分の報告した結果が気になって
bugs.ruby-lang.orgを見るよ
うになる
• 他のチケットが気になる
• 自分の場合特に Feature チケット
Change My Life
• おれってばスゲー感
コミュニティで発表する題材ができる
http://www.slideshare.net/koic/presentations
• ruby-head で .? 動かないんで
すけど
• try! から .? へ の発表数日後
に、.? が . に変更された
• 発表すると仕様が変わりますね
スライド公開後に仕様が変わることも
https://www.instagram.com/p/-M9l6mRPLR/
• Rubyもソフトウェアであることを
より実感できる
• タイピングしている先に、開発者の
顔が見えるときがある
• この機能、nobuさんのコミット
でみたものだ
Ruby is a Software
圧倒的感謝
ソフトウェアは人が人のために作るもの
Gratitude to
Ruby committers
Christmas
2015
Ruby 2.3

Contenu connexe

Similaire à Agile Software Development with Edge Ruby

20141006 JPNAPユーザ会 計測プローブを用いた国内インターネットの構造分析
20141006 JPNAPユーザ会 計測プローブを用いた国内インターネットの構造分析20141006 JPNAPユーザ会 計測プローブを用いた国内インターネットの構造分析
20141006 JPNAPユーザ会 計測プローブを用いた国内インターネットの構造分析Satoshi KAMEI
 
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎schoowebcampus
 
Azure IoT Plug and Play, the overview and practice
Azure IoT Plug and Play, the overview and practiceAzure IoT Plug and Play, the overview and practice
Azure IoT Plug and Play, the overview and practiceAtomu Hidaka
 
IoT プラットフォーム「SORACOM」 20151202版
IoT プラットフォーム「SORACOM」 20151202版 IoT プラットフォーム「SORACOM」 20151202版
IoT プラットフォーム「SORACOM」 20151202版 SORACOM,INC
 
[DO07] マイクロサービスに必要な技術要素はすべて Spring Cloud にある
[DO07] マイクロサービスに必要な技術要素はすべて Spring Cloud にある[DO07] マイクロサービスに必要な技術要素はすべて Spring Cloud にある
[DO07] マイクロサービスに必要な技術要素はすべて Spring Cloud にあるde:code 2017
 
クラウド時代にこそ求められるIt部門の役割
クラウド時代にこそ求められるIt部門の役割クラウド時代にこそ求められるIt部門の役割
クラウド時代にこそ求められるIt部門の役割Yusuke Oi
 
Fin-JAWS 2020-12-09 - 1年を振り返る公開自己業績評価レビュー
Fin-JAWS 2020-12-09 - 1年を振り返る公開自己業績評価レビューFin-JAWS 2020-12-09 - 1年を振り返る公開自己業績評価レビュー
Fin-JAWS 2020-12-09 - 1年を振り返る公開自己業績評価レビューYutaro Ono
 
rdflintのvscode拡張の紹介とその実装方法
rdflintのvscode拡張の紹介とその実装方法rdflintのvscode拡張の紹介とその実装方法
rdflintのvscode拡張の紹介とその実装方法Takeshi Mikami
 
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可Hitachi, Ltd. OSS Solution Center.
 
今さら聞けない人のための K8s 超入門 Big Sur 対応版
今さら聞けない人のための K8s 超入門 Big Sur 対応版今さら聞けない人のための K8s 超入門 Big Sur 対応版
今さら聞けない人のための K8s 超入門 Big Sur 対応版VirtualTech Japan Inc./Begi.net Inc.
 
200527 RTM Tutorial in ROBOMECH2020
200527 RTM Tutorial in ROBOMECH2020200527 RTM Tutorial in ROBOMECH2020
200527 RTM Tutorial in ROBOMECH2020openrtm
 
八子クラウド座談会資料(当日討議メモ付き) 20180929
八子クラウド座談会資料(当日討議メモ付き) 20180929八子クラウド座談会資料(当日討議メモ付き) 20180929
八子クラウド座談会資料(当日討議メモ付き) 20180929知礼 八子
 
今さら聞けない人のためのKubernetes超入門 ニフクラエンジニアミートアップ版
今さら聞けない人のためのKubernetes超入門 ニフクラエンジニアミートアップ版今さら聞けない人のためのKubernetes超入門 ニフクラエンジニアミートアップ版
今さら聞けない人のためのKubernetes超入門 ニフクラエンジニアミートアップ版VirtualTech Japan Inc./Begi.net Inc.
 
【Interop Tokyo 2016】 Network Automationによるクラウドネットワークのあり方
【Interop Tokyo 2016】  Network Automationによるクラウドネットワークのあり方【Interop Tokyo 2016】  Network Automationによるクラウドネットワークのあり方
【Interop Tokyo 2016】 Network Automationによるクラウドネットワークのあり方Juniper Networks (日本)
 
Interop2018 ブースセッション資料
Interop2018 ブースセッション資料Interop2018 ブースセッション資料
Interop2018 ブースセッション資料一清 井上
 
ノンコーディングでここまでできる!LINE BOT を作ってみよう!
ノンコーディングでここまでできる!LINE BOT を作ってみよう!ノンコーディングでここまでできる!LINE BOT を作ってみよう!
ノンコーディングでここまでできる!LINE BOT を作ってみよう!典子 松本
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報Masahiko Sawada
 

Similaire à Agile Software Development with Edge Ruby (20)

20141006 JPNAPユーザ会 計測プローブを用いた国内インターネットの構造分析
20141006 JPNAPユーザ会 計測プローブを用いた国内インターネットの構造分析20141006 JPNAPユーザ会 計測プローブを用いた国内インターネットの構造分析
20141006 JPNAPユーザ会 計測プローブを用いた国内インターネットの構造分析
 
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎
 
Azure IoT Plug and Play, the overview and practice
Azure IoT Plug and Play, the overview and practiceAzure IoT Plug and Play, the overview and practice
Azure IoT Plug and Play, the overview and practice
 
IoT プラットフォーム「SORACOM」 20151202版
IoT プラットフォーム「SORACOM」 20151202版 IoT プラットフォーム「SORACOM」 20151202版
IoT プラットフォーム「SORACOM」 20151202版
 
[DO07] マイクロサービスに必要な技術要素はすべて Spring Cloud にある
[DO07] マイクロサービスに必要な技術要素はすべて Spring Cloud にある[DO07] マイクロサービスに必要な技術要素はすべて Spring Cloud にある
[DO07] マイクロサービスに必要な技術要素はすべて Spring Cloud にある
 
クラウド時代にこそ求められるIt部門の役割
クラウド時代にこそ求められるIt部門の役割クラウド時代にこそ求められるIt部門の役割
クラウド時代にこそ求められるIt部門の役割
 
Fin-JAWS 2020-12-09 - 1年を振り返る公開自己業績評価レビュー
Fin-JAWS 2020-12-09 - 1年を振り返る公開自己業績評価レビューFin-JAWS 2020-12-09 - 1年を振り返る公開自己業績評価レビュー
Fin-JAWS 2020-12-09 - 1年を振り返る公開自己業績評価レビュー
 
rdflintのvscode拡張の紹介とその実装方法
rdflintのvscode拡張の紹介とその実装方法rdflintのvscode拡張の紹介とその実装方法
rdflintのvscode拡張の紹介とその実装方法
 
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
 
今さら聞けない人のための K8s 超入門 Big Sur 対応版
今さら聞けない人のための K8s 超入門 Big Sur 対応版今さら聞けない人のための K8s 超入門 Big Sur 対応版
今さら聞けない人のための K8s 超入門 Big Sur 対応版
 
200527 RTM Tutorial in ROBOMECH2020
200527 RTM Tutorial in ROBOMECH2020200527 RTM Tutorial in ROBOMECH2020
200527 RTM Tutorial in ROBOMECH2020
 
八子クラウド座談会資料(当日討議メモ付き) 20180929
八子クラウド座談会資料(当日討議メモ付き) 20180929八子クラウド座談会資料(当日討議メモ付き) 20180929
八子クラウド座談会資料(当日討議メモ付き) 20180929
 
今さら聞けない人のためのK8s超入門
今さら聞けない人のためのK8s超入門今さら聞けない人のためのK8s超入門
今さら聞けない人のためのK8s超入門
 
今さら聞けない人のためのKubernetes超入門 ニフクラエンジニアミートアップ版
今さら聞けない人のためのKubernetes超入門 ニフクラエンジニアミートアップ版今さら聞けない人のためのKubernetes超入門 ニフクラエンジニアミートアップ版
今さら聞けない人のためのKubernetes超入門 ニフクラエンジニアミートアップ版
 
【Interop Tokyo 2016】 Network Automationによるクラウドネットワークのあり方
【Interop Tokyo 2016】  Network Automationによるクラウドネットワークのあり方【Interop Tokyo 2016】  Network Automationによるクラウドネットワークのあり方
【Interop Tokyo 2016】 Network Automationによるクラウドネットワークのあり方
 
Interop2018 ブースセッション資料
Interop2018 ブースセッション資料Interop2018 ブースセッション資料
Interop2018 ブースセッション資料
 
Lf intro 2020-r5
Lf intro 2020-r5Lf intro 2020-r5
Lf intro 2020-r5
 
ノンコーディングでここまでできる!LINE BOT を作ってみよう!
ノンコーディングでここまでできる!LINE BOT を作ってみよう!ノンコーディングでここまでできる!LINE BOT を作ってみよう!
ノンコーディングでここまでできる!LINE BOT を作ってみよう!
 
PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報PostgreSQL 15 開発最新情報
PostgreSQL 15 開発最新情報
 
今さら聞けない人のためのK8s超入門
今さら聞けない人のためのK8s超入門今さら聞けない人のためのK8s超入門
今さら聞けない人のためのK8s超入門
 

Plus de Koichi ITO

Bundler 2 の胎動
Bundler 2 の胎動Bundler 2 の胎動
Bundler 2 の胎動Koichi ITO
 
アプリがパッチにまみれたら
アプリがパッチにまみれたらアプリがパッチにまみれたら
アプリがパッチにまみれたらKoichi ITO
 
Stairway to The Pragmatic Rails Programmer
Stairway to The Pragmatic Rails ProgrammerStairway to The Pragmatic Rails Programmer
Stairway to The Pragmatic Rails ProgrammerKoichi ITO
 
最軽の開発手法 dX 改
最軽の開発手法 dX 改最軽の開発手法 dX 改
最軽の開発手法 dX 改Koichi ITO
 
Railsアプリケーションプロジェクトでの読み書きそろばんの1周目、2周目とそれから
Railsアプリケーションプロジェクトでの読み書きそろばんの1周目、2周目とそれからRailsアプリケーションプロジェクトでの読み書きそろばんの1周目、2周目とそれから
Railsアプリケーションプロジェクトでの読み書きそろばんの1周目、2周目とそれからKoichi ITO
 
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選Ruby 2.4 / Rails 5.0に上げた際のパッチ5選
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選Koichi ITO
 
10年生きる Ruby / Rails アプリケーションプログラマーのエコシステム
10年生きる Ruby / Rails アプリケーションプログラマーのエコシステム10年生きる Ruby / Rails アプリケーションプログラマーのエコシステム
10年生きる Ruby / Rails アプリケーションプログラマーのエコシステムKoichi ITO
 
俺の開発日誌
俺の開発日誌俺の開発日誌
俺の開発日誌Koichi ITO
 
ghq gem-src and more
ghq  gem-src and moreghq  gem-src and more
ghq gem-src and moreKoichi ITO
 
RuboCopとXPコーディング規約
RuboCopとXPコーディング規約RuboCopとXPコーディング規約
RuboCopとXPコーディング規約Koichi ITO
 
俺たちの新人教育!!
俺たちの新人教育!!俺たちの新人教育!!
俺たちの新人教育!!Koichi ITO
 
スローテスト刑事 (デカ)
スローテスト刑事 (デカ)スローテスト刑事 (デカ)
スローテスト刑事 (デカ)Koichi ITO
 
Gate of Agile Web Development
Gate of Agile Web DevelopmentGate of Agile Web Development
Gate of Agile Web DevelopmentKoichi ITO
 
RubyKaigi 2015 の Drinkup を支える技術
RubyKaigi 2015 の Drinkup を支える技術RubyKaigi 2015 の Drinkup を支える技術
RubyKaigi 2015 の Drinkup を支える技術Koichi ITO
 
開発時の探し物を楽にする習慣作り
開発時の探し物を楽にする習慣作り開発時の探し物を楽にする習慣作り
開発時の探し物を楽にする習慣作りKoichi ITO
 
Motivationware
MotivationwareMotivationware
MotivationwareKoichi ITO
 
達人プログラマーへの道
達人プログラマーへの道達人プログラマーへの道
達人プログラマーへの道Koichi ITO
 
Let's get ready for next Ruby
Let's get ready for next RubyLet's get ready for next Ruby
Let's get ready for next RubyKoichi ITO
 
プロの無職についての考察:序
プロの無職についての考察:序プロの無職についての考察:序
プロの無職についての考察:序Koichi ITO
 

Plus de Koichi ITO (20)

Bundler 2 の胎動
Bundler 2 の胎動Bundler 2 の胎動
Bundler 2 の胎動
 
アプリがパッチにまみれたら
アプリがパッチにまみれたらアプリがパッチにまみれたら
アプリがパッチにまみれたら
 
Stairway to The Pragmatic Rails Programmer
Stairway to The Pragmatic Rails ProgrammerStairway to The Pragmatic Rails Programmer
Stairway to The Pragmatic Rails Programmer
 
最軽の開発手法 dX 改
最軽の開発手法 dX 改最軽の開発手法 dX 改
最軽の開発手法 dX 改
 
Railsアプリケーションプロジェクトでの読み書きそろばんの1周目、2周目とそれから
Railsアプリケーションプロジェクトでの読み書きそろばんの1周目、2周目とそれからRailsアプリケーションプロジェクトでの読み書きそろばんの1周目、2周目とそれから
Railsアプリケーションプロジェクトでの読み書きそろばんの1周目、2周目とそれから
 
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選Ruby 2.4 / Rails 5.0に上げた際のパッチ5選
Ruby 2.4 / Rails 5.0に上げた際のパッチ5選
 
10年生きる Ruby / Rails アプリケーションプログラマーのエコシステム
10年生きる Ruby / Rails アプリケーションプログラマーのエコシステム10年生きる Ruby / Rails アプリケーションプログラマーのエコシステム
10年生きる Ruby / Rails アプリケーションプログラマーのエコシステム
 
俺の開発日誌
俺の開発日誌俺の開発日誌
俺の開発日誌
 
ghq gem-src and more
ghq  gem-src and moreghq  gem-src and more
ghq gem-src and more
 
RuboCopとXPコーディング規約
RuboCopとXPコーディング規約RuboCopとXPコーディング規約
RuboCopとXPコーディング規約
 
俺たちの新人教育!!
俺たちの新人教育!!俺たちの新人教育!!
俺たちの新人教育!!
 
スローテスト刑事 (デカ)
スローテスト刑事 (デカ)スローテスト刑事 (デカ)
スローテスト刑事 (デカ)
 
Gate of Agile Web Development
Gate of Agile Web DevelopmentGate of Agile Web Development
Gate of Agile Web Development
 
RubyKaigi 2015 の Drinkup を支える技術
RubyKaigi 2015 の Drinkup を支える技術RubyKaigi 2015 の Drinkup を支える技術
RubyKaigi 2015 の Drinkup を支える技術
 
開発時の探し物を楽にする習慣作り
開発時の探し物を楽にする習慣作り開発時の探し物を楽にする習慣作り
開発時の探し物を楽にする習慣作り
 
Motivationware
MotivationwareMotivationware
Motivationware
 
達人プログラマーへの道
達人プログラマーへの道達人プログラマーへの道
達人プログラマーへの道
 
Let's get ready for next Ruby
Let's get ready for next RubyLet's get ready for next Ruby
Let's get ready for next Ruby
 
職と人
職と人職と人
職と人
 
プロの無職についての考察:序
プロの無職についての考察:序プロの無職についての考察:序
プロの無職についての考察:序
 

Agile Software Development with Edge Ruby