OAO

開発とかBTSとかIDEとかスクラムとか 書くかもしれないブログです たぶん

Fun! Done! Learn! で話してきました

一番好きな付箋はベン図の外に貼られた付箋です。

先日開催されたDeveloper Summit 2019とScrum Fest Osaka で話をしてきました。
といっても、私だけで出たわけではなく
Coaches Retreat OkinawaでFun! Done! Learn!を一緒に作ったチームメンバーと話しをしてきました。

デブサミ版はこれ
speakerdeck.com

SFO版はこれ
speakerdeck.com

やりかたのフォーマットは
日本語版はこちら
qiita.com

英語版はこちら
medium.com

@yattom と計画に使ってるケースの話をしたら盛り上がったので、メモついでに書いておきます。

よくやるやりかた
(Fun! Done! Learn!を一通りやったあとにやります。)

1. 一人1個磁石を持ちます。(磁石じゃなくてドットシールでもok)
2. 今回のスプリントが自分にとってどういうスプリントだったのか、ベン図のエリアに磁石を置きます。
 ここでまた話が盛り上がっても良いです。
 例1)このスプリントは学びばかりであった。。。と考えてLearn!のエリアに置く。
 例2)このスプリントはレビューでもいいフィードバックがもらえて学びと価値のデリバーができた。と考えてLearn!とDone!の重複エリアに置く。
3. 前回のボード(※後述)と見比べて、前回のふりかえり終了時と、何がどう違うのか話し合います。
4. 次のスプリントではどこに磁石を置きたいのか考えて、各自磁石を配置します。
 例1) 次のスプリントで新しいライブラリ使いそうだから学びが多そう。と考えてLearn!のエリアに置く。
 例2) 次のスプリントは目玉機能の実装に入るしリファインメントでだいたいなにやるかわかってる。と考えてFun!とDone!の重複エリアに置く。
 例3) 次のスプリントは黙々とやっつけるフィーチャーが多いのでDoneの鬼になる。と考えてDone!のエリアに置く。
 例4) 次のスプリントはレビューで超盛り上がりそうなイケてるフィーチャーが多い。と考えてDone!のエリアに置く。
※3.で見比べる前回のボードは、前スプリントのふりかえりで作った4.のボードです。

次のスプリントで自分たちがどういう狙いでいるのかを見えるようにするのが目的です。

ふりかえりのFun! Done! Learn!ではチームの中、自分たちについて考えて
この磁石の分布になるためにはどう進めていくと良いのか。磁石が前回ボードとずれる理由は何なのか。磁石が特定のエリアへかたよる理由は何なのか。
を話しながら進めていけると良さそうです。

Appium1.9.1でパラレルに実機テスト(iOS)を実行する方法

並列で実機テストを実行したいけどうまく動きません!

という質問が来たので、どうやったら実行できるのか調べてみました。

ちなみにAppiumのマニュアルはこちら。
Setup for Parallel Testing - Appium

まず、SeleniumをGridモードで立ち上げます。

> java -jar selenium-server-standalone-3.141.59.jar -role hub

今回は手元にiPadが2台あるので、2台持っているノードを作っていきます。

  • iPad-1

    • wdaLocalPort:8100
    • webkitDebugProxyPort:27753
  • iPad-2

    • wdaLocalPort:8200
    • webkitDebugProxyPort:27754

ポート番号は空いている任意なものにしてください。

設定ファイル的にはこんな感じになります。

{
  "capabilities":
  [
    {
      "platformName": "iOS",
      "platformVersion": "12.0",
      "deviceName": "iPad-1",
      "browserName": "Safari",
      "language": "ja",
      "maxInstances": 1,
      "platform": "MAC",
      "udid": "<<お手元のデバイスのUDIDに変えてください>>",
      "wdaLocalPort": 8100,
      "webkitDebugProxyPort": 27753
    },
    {
      "platformName": "iOS",
      "platformVersion": "12.0",
      "deviceName": "iPad-2",
      "browserName": "Safari",
      "language": "ja",
      "maxInstances": 1,
      "platform": "MAC",
      "udid": "<<お手元のデバイスのUDIDに変えてください>>",
      "wdaLocalPort": 8200,
      "webkitDebugProxyPort": 27754
    }
  ],
  "configuration":
  {
    "cleanUpCycle":2000,
    "timeout":30000,
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "url":"http://localhost:4723/wd/hub",
    "host": "localhost",
    "port": 4723,
    "maxSession": 10,
    "register": true,
    "registerCycle": 5000,
    "hubPort": 4444,
    "hubHost": "localhost"
  }
}

では立ち上げていきます。

>appium ---no-reset --nodeconfig node-config.json

Selenium GridのConsoleを見に行くと2台認識しているのが見えます。

f:id:inda_re:20181129120638j:plain

サーバー側が立ち上がったらAppiumのテストの実行準備をしましょう。
今回はruby + rspec + appium_libで実行します。

Desired Capabilitiesに wdaLocalPortwebkitDebugProxyPort を設定します。
並列実行する場合には、このDesired Capabilitiesを複数用意して
各ポートがそれぞれのデバイスに向いているようにします。
今回の例ですと、 8100 / 27753 と 8200 / 27754 になります。

require "rubygems"
require "appium_lib"

desired_caps = {
  caps:{
    platformName:  "iOS",
    versionNumber: "10.0",
    deviceName:    "iPad",
    udid:          "<<お手元のデバイスのUDIDに変えてください>>",
    app:           "<<お手元のアプリへのパスに変えてください>>",
    automationName: "XCUITest",
    wdaLocalPort: 8100,
    webkitDebugProxyPort: 27753
  },
  appium_lib: {
    server_url: 'http://localhost:4723/wd/hub',
    wait: 10
  }
}

RSpec.configure { |c|
  c.before(:each) {
    @driver = Appium::Driver.new(desired_caps).start_driver
    @driver.manage.timeouts.implicit_wait = 5
    Appium.promote_appium_methods Object
  }

  c.after(:each) {
    @driver.quit
  }
}

実行すれば、それぞれの端末でテストが動作します。

余談:

Desired Capabilities - Appium

このページ内にwdaLocalPortの話1個も書いていないんだよね。。。
Appium周りはこういうのがよくあってつらい。

アジャイルコーチの道具箱 – 見える化の実例集 のレビューをしました

アジャイルコーチの道具箱 – 見える化の実例集
(Jimmy Janlén著、原田騎郎・吉羽龍太郎・川口恭伸・高江洲睦・佐藤竜也訳)
のレビューをしました。

とてもおもしろい本で、挿絵もユニークです。(ここ大事)

さらっと読める量ではありますが、 1ページ1実例なのでパラパラめくって読む方が良いと思います。
また、一つ一つの実例がよく考えられており、「あ、これおもしろいやってみよう」と思えるものが多く
記載されています。


前回のエントリ(KPTをゲームにする)は、原著に触発されて生まれたものではあるわけですが
オリジナル要素のある新しい見える化を思いついた方は、是非公開していただけると
良いなーと思います。


レビュアーの個人的な感想としては永瀬美穂やばい。

吉羽さんのブログ
www.ryuzee.com


日本語訳はこちらです!
leanpub.com

原著はこちらです!
leanpub.com

KPTをもっとゲームにする方法(キルストリーク方式)

面白くKPTを回す方法を思いついたのでメモ。

KPTフレームワーク自体は特に変更はない。

達成したいこと

  • ゲーム感覚でチーム自身の成長を見える化したい。
  • 星取表とは違い、日常に起きている事を積極的に改善できるようにしたい。
  • 星取表と連携するのも悪いアイデアではないと思うが、関連性が自分では導き出せない。

(補足)キルストリークって何?

  • FPS系のゲームにはキルストリークというのがあります。
    • 敵に倒されないで、連続して敵を倒すと、倒した数に応じてスキルが使える。
    • 倒せば倒すほど効果的なスキルが使えるようになります。
    • これをKに当てはめたものです。

基本ルール

  • チームでKPTに対し以下の目標値を設定する
    • K
      • 何スプリント持続してやれていたら、「意識しなくてもやれる状態」といえるか。
    • T
      • 基本的にKに変化してからやるのが良い気がする。
      • ただし、いつまでにやる等きめたTは下記のペナルティあり方式でやるのも良いかも。
    • P
      • 何度か登場するようなPにつけると良い?(思案中)
  • 目標値は各ふりかえりで見なおしても良い気がするが、基本見直しなしが良い?
    • 目標値の半分成功できなかったら見直すと良いか。
      • 4連続が目標だけど2連続で終わる事が2回連続した等。

持続数の数え方

  • 大きく思いついてるのは下記の方式
    • 連続達成数をカウント
    • 連続達成数をカウント(ペナルティあり)
    • 三振方式

数え方について

  • 連続達成数をカウント

    • Kに振り返り何回分持続できたら、普通にやれるようになったかをカウントできるようにする。
      • チェックでもドットシールでもなんでもok。
    • このKは何回できてる状態を維持できたら、習得できたとみなすかをチームで相談する。
      • 例えば、「ペアプロの新しい相手を探して、週に1時間ペアプロする」というTに対し
      • スプリント中に2回できたら「やれた」とみなす をまず合意する。
      • 次に何スプリント持続したら「意識しなくてもやれているか」を決める。
      • この持続スプリント数は連続でなければならない。
      • たとえば、4スプリント持続したら意識しなくてもやれているよねをチームで合意し
        4スプリント目でやれなかった場合、カウントは0に戻す。
  • 連続達成数をカウント(ペナルティあり)

    • カウントをつけるところは連続達成カウント方式と同じ。
    • 専用ルール
      • できてないとカウントがマイナスされていく。
      • マイナス何ポイントになったら罰ゲーム発動するか決めておく。
        • 例:「週にペアプロを2時間やる」というKに対し
          • 5ポイント連続したら成功
          • -5ポイントに達したら失敗
          • と成功と失敗のゴールを設定する。
          • この場合の罰ゲームはチームに食事をおごる・ケーキを買ってくる等チームに対して行うものが良い。
  • 三振方式

  • たぶんKに設定する?
    • やれてないとチームが思ったスプリントでストライクが1個カウント
    • 3個貯まると、同じフロアの別チームやPOなどご近所さんに食事をおごる・ケーキを買う・ジュースを買う等する。
  • Pに設定して、nスプリント期間中に3回同じPが出てきてほしくないと思う等に設定してもいい気がする。

Keepバーンダウン?(表現は思案中)

  • 達成して自分たちのスキルにしたKeep等にポイントを振っておく(ポイント単位や数字はなんでも良い。グミでもビングミバンサーでもなんでも。)
  • 達成ポイントに応じて、チームがなにか一つご褒美がもらえる等の仕組みを用意する。

WIP制限

  • 欲張ってカウント対象のKを増やすかもしれないが、あまりに多くのKは逆に達成できないのでカウントするKは絞ったほうが良さそう。
  • はじめはチーム人数*0.8くらいがいい?(最適値はわからない)

ここはこの方が良いのでは。ここがダサい等あると思いますが、とりあえず思いついたメモです。

CSPになりました。

CSPになれました。

f:id:inda_re:20151001153436j:plain

伊藤さん(id:hageyahhoo)のCSP申請方法記事を見ながら半年くらい放置してたんですが
たまたま、スクラム道周りでCSP取得者が増えてきたので、波に乗ってみました。

取得方法は伊藤さんのHow to acquire CSP/「認定スクラムプロフェッショナル」の資格を取得する方法 - THE HIRO Saysを参照していただくとして…

手持ちのSEUは大体申請時に使ってしまったので、Regional Scrum Gathering® Tokyo に参加するなどしてまた貯めていかないとですね。

次回の埼玉道場について

おはようございます。

多忙にターボチャージャーが付いて襲われてるいんだれです。
もう一月も終わりかけてますが
次回の埼玉道場は、2月下旬辺りに予定しています。
また、決まり次第告知します。