テスト設計コンテスト チュートリアルに参加しました

はじめに

10月26日に【U-30クラス】テスト設計コンテスト'19 北海道チュートリアルに参加しました。 aster.connpass.com

 

目的

コンテストに参加する予定はありませんでしたが、テスト設計を体系的に学んだ事がなかったので良い機会だと思ったのと、先週に行ったイベント で社外に出てみたいという雰囲気が他メンバーにあったので、このタイミングで連れ出そう!という事で参加しました。

 

内容

下記の内容を説明した「【U-30クラス】テスト設計コンテスト'19 東京チュートリアル」のビデオ上映で行われました。

http://aster.or.jp/business/contest/doc/2019_U-30_V1.0.0%20.pdf http://aster.or.jp/business/contest/doc/2019_U-30_V1.0.0%20.pdf

感想

これまで、社内等で体系立ててテスト設計について学ぶ機会がなかったので、非常に参考になりとても有意義な勉強会でした。

特に自分の中で有意義だったポイント

  • どんなテストをするのかを利害関係者とコンセンサスを得ることが重要。そのためにはテストを説明できる必要がある。 → 社内ではバグ0を目指すとか言われていましたがそれは無理。。でもなぜ無理なのか、どうするべきなのかがこの話しを聞きイメージできた。

  • テストは情報提供が価値 → どこまでをテストして、どういう価値基準でそのテストを行ったのかまでを含めて情報提供をすることが大事だと改めて意識できた。

  • テストを開発する → テスト設計についても開発と同様に捉える。今まで考えてもいなかったことだったので衝撃だった。

  • よく知られているテスト技法を考えるまでに行うことは沢山ある → これまで無意識的にやっていたテストの分類の仕方などにきちんと名前をつけられており、比較的理解しやすかった。

全体を通して

これまである意味適当に行っていたテスト設計の奥深さを知ることができた勉強会でした。

若干、要求設計・アーキテクチャ設計・詳細設計・テスト実施 という流れがウォーターフォールに近い感じがするので、アジャイルで1週間単位のスプリントなどをやろうとした場合には少し重すぎる印象はありましたが、 知っていて損はない内容だと感じました。

特に、テストの粒度をあらかじめ定義しお客さんと合意をしておく必要があるというのはとても参考になりました。

テスト設計についてはこれまで、あまり意識的に勉強をしてこなかった分野ですが、自分が知っていた内容と大きく変わっていることを知ることができ非常に楽しく、また奥深さを学ぶことができたので、今後意識して学習していこうと思える勉強会でした。

その他

勉強会の開催を前日に知ったので、社内での告知が遅くなりましたが、優秀な後輩を一人、初社外勉強会に連れ出せたので別の意味で参加してよかったです(笑)

社内カイゼンジャーニー読書会 クロージングイベント

はじめに

10/19(金)に社内カイゼンジャーニー読書会 クロージングイベントを開催しました。

このイベントではカイゼン・ジャーニー著者の一人である市谷さんを、札幌の弊社オフィスにお招きし講演を行って頂きました。

カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで

カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで

自分の想い

カイゼン・ジャーニーの読書会を社内で始めようと思った時から、著者の方々をお招きしようと考えていました*1

その考えは、カイゼン・ジャーニーで石神さんを招いてのイベントとダブらせたかったということもありましたが、

  • 社外の勉強会に参加したことががない人達に、行動すれば著者にも会えることを知ってもらいたい
  • 本を出すような方の熱いパワーに触れることが出来る
  • 著者と会い話しをすることで、本の内容を一段深く理解することが出来る

と考えていたからです。

特に、自分自身が経験した「札幌にいても、本を書くような雲の上の人と会うことが出来る」という感動を社内の人にも知ってもらいたいというのが一番の想いでした。

終わってみて

自分が他の人に「何か伝えることができれば」と思って読書会からクロージングイベントを企画・開催しましたが、終わってみると自分自身が得るものが非常に多かったです。

ゼロから1を作るのに自分の力だけでは敵わないという学び、自分の拙い企画に賛同してくれる人達の心強さ、一緒に作り上げた感動、などなど・・・

今回のイベントが自分にとっての新たな節目になりそうな、そんな日でした。

参加してくれた人達もきっと何か得るものがあったはず。

やってよかった!

*1:自分の力不足で新井さんをお招きすることができなかったことだけが非常に悔やまれます。。

社内カイゼンジャーニー読書会 読了

はじめに

社内の読書会で無事、カイゼン・ジャーニーを読了しました。

カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで

カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで

上司から快諾を得られ(※)、業務時間で読書会に参加していない人たちも含めてのクロージングイベントを行うため、 まだ完全に終わったわけではないのですが、一通り読み終えることができた勢いに任せて、いまの気持ちを書いておきます。

※因みにその上司との会話

考察

これまで何度か社内の読書会を開催していましたが、業務が忙しくなるに伴い失速してしまい最後まで完全に終えることができていませんでした。   今回はメンバーにも恵まれたところもあると思いますが、なぜ読書会をやり切ることができたのかをちょっと考えて見ます。

なぜ最後までできたのか

自分の完全に主観でしかないですが、以下の点で今回はうまく出来たと考えています

  • 普段、技術書などを読む習慣のない人でもカイゼン・ジャーニーは読みやすい
  • お昼ご飯を食べながらにしたので、業務が忙しくても参加しやすかった
  • 読書会の告知や司会進行などを積極的にメンバーに一緒にやってもらい、自分たちの読書会という雰囲気を作れた
  • クロージングイベントの企画でメンバーのモチベーションが保たれた

今後

クロージングイベントに向けて、あと2回ほどで読書会全体のふりかえりをやる予定です。 その際にメンバーからどうして最後までできたのか、何がよかったかなど感想を聞いてみたいと思います。

最後に

いやー、一先ず読書会で1冊読み切ることができて一安心しました。
これもカイゼン・ジャーニーが非常に魅力的な著書だったことが何よりだったと思います。(これをきっかけに読書会が継続してできると嬉しいな!)

社内読書会をこれからやってみようと思う人がいれば、ぜひこの本を最初にやって見ることをオススメします(笑)

社内カイゼン・ジャーニー読書会で学んだインセプションデッキ の素振りをしてみた

はじめに

9/13に社内でカイゼン・ジャーニーの読書会の実践編ということで、インセプションデッキ の素振りをしました。

今回は前回の感想にも書いたように、参加者からぜひ読書会で学んだプラクティスを実践してみたいという提案を受けやることになったものです。

準備

普段通り、昼休みにご飯を食べながら行いました。 今回も10名強の人に集まってもらい、10分くらいでチーム分けと進め方を今回の発案者である後輩から説明してもらいました。

進め方は、時間があまり無いので、 「われわれはなぜここにいるのか」を作成するAチームと「エレベーターピッチ」を作成するBチームの2つに別け それぞれチームで30分程度で上記を作成。残り時間で作成したものを公開。という形。

テーマ

インセプションデッキ のテーマはメンバーで一番やりやすいということで、今やっている読書会についてにしました。

作成中

写真が載せられないのが残念ですが、各チーム全員で議論を繰り広げていました。 中にはご飯を食べ忘れて議論に集中している人も(笑)

作り方はチームごとに違い、Aチームは付箋を使い壁に貼りながら議論。Bチームは発案者が事前に準備した「エレベーターピッチ」のテンプレートに書き込みをしながら議論という形でした。

結果

時間がやはり足りなかったようで、もう少し詰めたいと言った感じもありましたが一応、発表できる形になりました。

「われわれはなぜここにいるのか」

  • 業務を超えて意見交換をしたい
  • ほかの人(社内+本の登場人物)の課題解決方法を知りたい
  • 仕事に活かしたい → ほかの人の課題解決方法を知り、仕事に活かす

「エレベーターピッチ」

知識をつけてカイゼン したい
自分たち・一緒に仕事している人 向けの
カイゼン・ジャーニー読書会 というプロダクトは、
働き方をカイゼンし実践につなげるための勉強会である。
これは、複数人で1冊の本を読み進め議論することができ、
一人で本を読むのとは違って、
情報共有し、即実践できる環境が備わっている。

感想

初めてにしては、まあまあ良くできた感じになったと参加者からの感想や、やって見てよかったとの感想もありました。
やはり素振りは大事ですね。

第4、5回 社内カイゼンジャーニー読書会

はじめに

8/24、8/31に、社内でカイゼン・ジャーニーの読書会を行いました。

カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで

カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで

全員で読書会を行なっている感じを出したく、司会進行等もメンバーにやってもらうようにしていますが、思惑通りになってきて嬉しい限りです。

それぞれ持ち寄ったキーワード

第4回

  • 第13話 お互いの期待を明らかにする

    • 期待のギャップ
    • 「チームにおける期待」を合わせる
    • 互いの期待が合ってるチームがパフォーマンスを引き出し合える
    • ドラッカー風エクササイズ
    • コードを書ける人にコードを書かせる
  • 第14話 問題はありませんという問題

    • 「問題がない」が問題
    • 「問題は必ずある」という前提
    • ファイブフィンガー
    • がんばれば、やれるから、困ってない
    • こなし仕事
  • 第15話 チームとプロダクトオーナーの境界

    • 相手の仕事を理解
    • 全員で向き合うスプリントレビュー
    • 目的はユーザに価値を届けること
    • あらゆる品質が同程度に重要なのではない
    • 0-100ルール
    • 狩野モデル
    • リファインメント
  • 第16話 チームとリーダーの境界

    • ふりかえりとむきなおりの違い
    • むきなおりは進むべき先を捉えて現在を正す
    • 変わってしまったゴールを可視化

全体での議論を聞きながら個人的にメモした内容

  • どこのチームも期待マネジメントはできていなさそう
  • ドラッカー風エクササイズで自分ができることを言えないとは?
  • ファイブフィンガーをやってみたいという人は多そう
  • PO的な役割の人とチームにはなっていない
  • むきなおりは大事だと思っている人もいる
  • 合宿はみんなやって見たそうだけど敷居が高いイメージがある

第5回

  • 第17話 チームと新しいメンバーの境界

    • スキルマップ(星取表)

    • モブプログラミング(モブワーク、全員でコードを書く)

    • 育成力を向上

    • 育成する周囲の工数はあまり見込まれていない

    • 三種の神器

  • 第18話 チームのやり方を変える

    • カンバン
    • バリューストリームマップ
    • ECRS
    • 一人のヒーローはいらない。ヒーローはチーム。
  • 第19話 チームの解散

    • タイムラインの振り返り

    • 感謝のアクティビティ

    • 見える化が改善への第1歩

    • タックマン

    • くす玉

全体での議論を聞きながら個人的にメモした内容

  • 参加者がはじめて触れるプラクティスが多い印象
  • ペアプロがうまくいかなかった人が多い
  • モブプロはみんんやって見たい
  • メンバー育成は社内でうまくできていない印象をみんな持っている
  • 決まっているやり方をやめるということに驚きがあるようだ(決めたことは変えてはいけないと思っている?)
  • アジャイルをよく知らない人たちも本を読むことでイメージができているようだ
  • KPT以外のふりかえり手法があるのを知らなかった人は割と多い
  • 学んだプラクティスをやってみたいという気持ちが感じられる

感想

読書会の回数を重ねるにつれて、参加者それぞれが慣れてきたこともあり時間配分もだいぶうまくできるようになってきた感じがあります。

2章までを終え、プラクティスを知ることはできていますが、「難しそう」とか「ちょっとやって見たけどうまくできなかった」と言ったプラクティスもいろいろ出てきており 学ぶだけでなくやってみることは大事だなと感じています。

そんな中、参加者からもプラクティスをぜひ読書会の中でやってみようと声が上がり次回でやってみることになりました!

こういう意見を大事にしながらカイゼンジャーニーを読み切り、その後も読書会を継続的にできたるようにファシリテートして行こうと思いました。

Ruby on Rails チュートリアル 環境構築

背景

仕事では .net C# を主戦場にしていますが、他言語も学習してみよう! ということで Ruby を選択。 ついでに .net MVC が影響を受けている rails も一緒に学習してみることにしました。

Rubyの学習については、「プロを目指す人のためのRuby入門」を一通り終えている状態です。

https://railstutorial.jp/images/layout/logo.png?1304201481

目標

Ruby on Rails チュートリアルを一通りやって見るのを目標にします。

railstutorial.jp

今回の範囲

チュートリアルではCloud9を使用して開発していますが、今回は自分のPC(MacOS)に環境を構築し進めていきます。 また、巷ではRubyRailsをプロジェクト毎にバージョン管理する方が多いようなので、それもやって見ます。*1

環境構築

前提環境

rbenv

複数バージョンのrubyを簡単に切り替える環境を提供してくれるツールです。

参考サイト

rbenv を利用した Ruby 環境の構築 | DevelopersIO

rbenvとは?(rbenvを利用したRubyのインストール) - Qiita

rbenv + ruby-build はどうやって動いているのか - takatoshiono's blog

rbenvでrehashがいらなくなった – bgbgbg

rbenvインストール後、Rubyのインストール・切り替えを行います。

Rubyインストール

  • インストール可能なRubyのバージョンを調べる

「rbenv install --list」

rbenv install --list
Available versions:
      ・
      ・
  2.4.2
  2.4.3
  2.4.4
  2.5.0-dev
  2.5.0-preview1
  2.5.0-rc1
  2.5.0
  2.5.1
  • Rubyをインストール

「rbenv install <バージョン>」

rbenv install 2.4.4
  • 環境全体のRubyバージョン指定

「rbenv global <インストール済みバージョン>」

rbenv global 2.5.0
ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin17]
$ cd rails-tutorial
$ ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin17]
$ rbenv local 2.4.4
$ rbenv version                                                                                                                                                                                                                                                       
2.4.4 (set by /Users/user/Projects/ruby/study/rails-tutorial/.ruby-version)
$ ruby -v                                                                                                                                                                                                                                                             
ruby 2.4.4p296 (2018-03-28 revision 63013) [x86_64-darwin17]

bundler

Railsをプロジェクト毎にインストールするため、先にbundlerをインストールします。 rbenvを使っているのでコマンドは「rbenv exec gem install bundler」を実行。

※ bundlerは全体で使うのでグローバルインストール

$ rbenv exec gem install bundler                                                                                                                                                                                                                                      
Fetching: bundler-1.16.3.gem (100%)
Successfully installed bundler-1.16.3
Parsing documentation for bundler-1.16.3
Installing ri documentation for bundler-1.16.3
Done installing documentation for bundler after 4 seconds
1 gem installed

現在のrubyにインストールされたgemの一覧を調べる

$ rbenv exec gem list                                                                                                                                                                                                                                                 

*** LOCAL GEMS ***

bigdecimal (default: 1.3.2)
bundler (1.16.3)
io-console (default: 0.4.6)
json (default: 2.0.4)
openssl (default: 2.0.7)
psych (default: 2.2.2)
rdoc (default: 5.0.0)

参考サイト

Rails開発環境の構築(rbenvでRuby導入からBundler、Rails導入まで)(Macport編) - Qiita

Railsのローカルインストール

Railsをカレントディレクトリにインストールする まずはGemfileの作成と編集

$ cd rails-tutorial
$ bundle init
Writing new Gemfile to /Users/user/Projects/ruby/study/rails-tutorial/Gemfile
$ vim Gemfile
$ cat Gemfile                                                                                                                                                                                                                                                         
# frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

gem "rails", "5.1.4"  # ← ローカルに5.1.4(チュートリアルで使用しているバージョン)を指定

railsを vender/bundle ディレクトリ以下にインストール ( ls でGemfile.lock とvendorディレクトリが作成されたのを確認)

$ bundle install --path vendor/bundle
$ ls                                                                                                                                                                                                                                                                  
Gemfile      Gemfile.lock vendor

hello_app プロジェクトを作成

ようやくチュートリアルの「1.3 最初のアプリケーション」で使用するhello_appプロジェクトを作成します。 上記でインストールしたrailsを使用してプロジェクトを作成するため「bundle exec rails new」を実行します。 また「--skip-bundle」を指定してrails new 時に bundle install が発動しないようにします。

$ bundle exec rails new hello_app --skip-bundle
$ ls                                                                                                                                                                                                                                                                  
Gemfile      Gemfile.lock hello_app    vendor
$ cd hello_app
$ ls
Gemfile      README.md    Rakefile     app          bin          config       config.ru    db           lib          log          package.json public       test         tmp          vendor

最後に作成したプロジェクト内でgemのインストールを行います。
この時も「--path vendor/bundle」を付けてプロジェクト専用にgemをインストールします。
(この bundle install --path vendor/bundle で、再びrails(及び関連Gem)が今度はRailsプロジェクトの vender/bundle ディレクトリ以下にインストールされる)

$ bundle install --path vendor/bundle

rails server

bundle でrails をインストールしたので rails server は以下のコマンドで実行します。

$ bundle exec rails server

Heroku セットアップ

1.5 からデプロイ先として使用するHerokuの環境構築を行います。

$ brew install heroku/brew/heroku
$ heroku --version                                                                                                                                                                                                                                            [16:08:37]
heroku/7.7.10 darwin-x64 node-v10.7.0

以上

*1:結果としてこれが一番大変でした。

第2、3回 社内カイゼンジャーニー読書会

はじめに

8/3、8/10に、社内でカイゼン・ジャーニーの読書会を行いました。

カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで

カイゼン・ジャーニー たった1人からはじめて、「越境」するチームをつくるまで

第1回目を始めてから今のところ予定通り毎週行うことができています。 また、毎週10名強の方々に参加してもらえているので、はじめてよかったなと思います。

それぞれ持ち寄ったキーワード

第2、3回とも1回目と同じくたくさんキーワードを出してもらえました。

第2回

  • 第5話 明日を味方につける

    • 句点を一つ増やして申し訳なさを表現
    • 1to1
    • スプリントゴール
    • 朝会がなくなった
    • 今日やるべきことが認識できていない
    • 1日の最初に1日の計画を立てる
    • タスク再計画
    • ふりかえりの効果
    • 明日を味方に
    • 今日のタスクマネジメントは明日のタスクマネジメント
    • 何を明日に回しても良いかという判断ができる
  • 第6話 境目を行き来する

    • タスクの見える化
    • タスクボード
    • TODOには一定期間分のタスクのみ
    • ParkingLot
    • スイッチングコスト
    • 複数のタスクは同時にやると作業の切り替えに負荷がかかり効率を落とす
    • WIP制限
    • 他人に渡したタスクも僕のタスク
  • 第7話 二人ならもっと変えられる

    • 行動を始めるべきだと気づいたその時が、その人にとっての最速のタイミング
    • 変化は1人から始められる
    • 自分で何かをしない限り自分の場所が変わることはない
    • 1人から2人へ
    • 二人になったらもっとできることが増える
    • チームでの仕事を上手くやれるようになればきっと仕事は面白くなる
    • どこの現場だって似たような問題を抱えている
    • 工数と効率化しか口にしなくなる
    • デスマーチ
  • 第8話 二人から越境する

    • 外にとびだしてみる
    • そのまま自分の持ち場に持ち込むのはやめる
    • タスクマネジメント
    • 新しいことを始めるには小さく試みることからスタートすることが大切
    • 小さく試みることからスタート
    • リズムを大きく崩さないように仕事を進めていこう
    • 今日やることを決めるということは、逆に今日やらないことを決めているんだ
    • 一人で始めた見える化が周囲を巻き込む
    • 氷山モデル
    • 著名な人を呼ぶ
    • それぞれの持ち場で

全体での議論を聞きながら個人的にメモした内容

  • 本を通じて一人からでも始められることにいろいろ気付けている
  • 朝会ではなく帰り際にやるという発想が出て面白い
  • ふりかえりのファシリテーションは難しいと感じている人が多そう
  • スイッチングコストについてこの本を通じて理解できた人もいてよかった
  • タスク管理について若手が意識し始めたことは嬉しい
  • カイゼンを一人でもはじめて見るという意識が出てきたかも?
  • 新しいことをはじめて見るのにどのくらいの期間試したら良い?という質問 → ベテランから「気がすむまで」という回答。 こういう議論ができるのは良い
  • 一人で始めたことに手助けしてくれる仲間ができるのはとても心強い

第3回

  • 第9話

  • 第10話

    • つくるモノのイメージがあいまい
    • 完成のイメージ
    • プロダクトオーナーと会話を通じて理解する
    • メンバー全員がプロダクトの完成に対して共通の理解を持つ完成の定義
    • チーム全員で共同で思案し、計画策定していく
    • 8時間を越えるタスクは粒度が大きすぎる
  • 第11話

    • インセプションデッキ
    • デッキはチーム全員の頭で考えなければならない
    • 10の問い
    • トレードオフスライダー
    • やらないことリスト
    • ゴールデンサークル
    • Start With Why(目的から始めよ)
  • 第12話

    • 成功の循環モデル
    • Working Agreement
    • ルールは具体的で誰もが同じ見解で判断できるようなもの
    • 関係の質から始める
    • 結果の質からスタートしない
    • ミーティングが長すぎる

全体での議論を聞きながら個人的にメモした内容

  • スクラムに興味を持っている人が多数いる気がする
  • 今までのやり方(ウォーターフォール)以外の選択肢が増えるのは良い
  • カイゼンジャーニーをプロジェクトの必読書にするという意見はいいな
  • 事前に決められたことに疑問を持たないで仕事をしている人が多いとみんなが気づくことができている
  • Whyからはじめることの重要性
  • インセプションデッキに興味を持っている人が多い

感想

2回目、3回目と回を重ねるにつれ、皆が慣れてきた感じで議論もいい雰囲気で行えている気がします。 また、議論の発表時に他のグループからだんだん質問も出るようになり良い読書会になっています。ただ、時間が足りなくなってしまいせっかくの議論を泣く泣く途中で打ち切ることもありこの辺は課題だなぁと。。 しかし、「プラクティスを知る」と「アジャイルに興味を持ってもらう」がそもそもの目標なのであまり多くは望まず、まずは最後まで本を読み切ることができるように進めて行きたいと思います。