radioc@?

レディオキャットハテナ

【勉強会メモ】スクラム道関西 第117回オープン・ジャム

scrumdo-kansai.connpass.com

  • 日時: 2019/02/12(火) 19:00 〜 21:00
  • 場所:株式会社ラクス 大阪オフィス

いつもお世話になっているスクラム道関西のオープンジャムを弊社にお招きすることになりました。昨年秋にオフィスが移転してイベントができるスペースができて、駅からの近くなったのでいつかこのようなイベントに使ってもらえるといいなと思っていましたが、こんなに早く実現できるとは思いませんでした。 今後もタイミングが合えば利用して頂けると嬉しいです。

今回のテーマはこちら。

f:id:radiocat:20190213015201p:plain

品質管理

  • 品質検査、カバレッジエビデンス取得など社内ルールが厳しい会社がある
    • 社内基準を満たすためにはやることが多くスプリントの枠組みで終わらせるのは難しい
  • スプリントでまとめて作ってまとめてテストしてしまうとミニウォーターフォールになってしまう
  • 出荷前に社内基準に合わせた作業を行うリリーススプリントというやり方もある
  • 出荷可能な状態を維持することを考えるとスプリントごとに社内ルールに合わせるしかない

メンバー増やす時の注意点

  • 同時に増える場合も少しずつ増える場合も9人以上は厳しい
  • 増員が頻繁にある会社でも一度に2人までにして、3ヶ月は間隔をおくようにしている
  • 増えたメンバーの立ち上げが大変
    • 1ヶ月ぐらいはリグレッションテストをやってもらう
      • 直近に参画したメンバー同士でテストのやりかたを教え合う
    • 1ヶ月ぐらいはキャパシティには含めず必ず既存メンバーとペアプロしてもらう

リファインメントで毎回同じことを話してしまう

  • 定期開催しているリファインメントで既に開発T内で合意済みのことを再度議論してしまうことがある
  • 定期的な開催をやめて日々少しずつリファインメントしてみたら良いかもしれない
  • POが議論に絡めているか?
  • 何度も議論になるなら誰かが合意事項に納得できていないのかもしれない

レビューが通らない

  • チームの熟練者から必ずレビューの差し戻しを受ける
  • 何度か差し戻されたらペアプロ、モブプロに切り替える
  • 品質に影響がない内容ならいったんレビューは通して後日モブプロでリファクタリングする
  • 熟練者の知識・知見を共有することが大事
  • 答えを教えると身につかない、何度も教えることになる
  • 自分で気づいて学ぶまで時間を与える教育法もあるが時間がかかる
    • 時間を与えても学べるとは限らない
    • 時間を与えた結果意図しない方向に学習が進むかもしれない
  • 時間を与えるよりも、何度も教えるほうが結果的には早く学習するのではないか

ドキュメントの残し方

  • 社内ルールが厳しく残さないといけないドキュメントがたくさんある
    • 監査のために必要で作らないわけにはいかない
    • 会社によってまちまちで、なるべく作らない会社もある
  • 特にルールは決めていないが知識の共有のために最低限必要なものはドキュメントを作る
  • 新しいメンバーなど、引き継ぎのためにドキュメントは必要
    • 新しいメンバーが必要なのがドキュメントなのか?知りたいことが分かればドキュメントでなくても良いかも

スクラムでやる場合の予算をどうやって見積もるか?

  • 見積もるときはウォーターフォールと同じで、開発工程をスクラムで進める
  • 準委任契約で進める
  • 過去の類似実績から見積もる
  • 見積もり内で開発が終わるように顧客と話をしてスコープを調整して収束させる

【勉強会】Scrum Masterの現場

devlove-kansai.doorkeeper.jp

  • 日時:2019-02-08(金)19:30 - 21:30
  • 場所:MonotaRO 梅田オフィス (ハービス大阪6F)

スクラムマスターをテーマにした勉強会というのは今まではあまりないテーマの気がします。アジャイルスクラムが世の中に浸透してきて関心が高まっているのを感じました。

2つのセッションとも、スクラムをやりたいという想いはあるものの、実際にやってみると様々な課題に直面し、チームをうまく巻き込みながらより良いやり方を模索してきたことが非常によく伝わってきました。また、結局はスクラムの原則にある目的を理解して正しく実践していくことが大事であることを学びとしていると感じました。

ちなみに、スクラムクイズは私たちのチームも実践していますがスクラムに取り組むチームの成熟度を上げていくには良いプラクティスだと思います。

tech-blog.rakus.co.jp

スクラムマスターとは

@yohhatu さん

導入として以下のような書籍やサイトが紹介

0から始めた!スクラム導入から今日まで~初心者スクラムマスター奮闘記~

@superSatoshiKun さん

www.slideshare.net

スクラム導入

どんな想いで広めますか?

1度目

  • 憧れ

→思いが弱く、広め方もわからず、メンバーの入れ替わりで自然消滅

2度目のきっかけ

  • 現プロセスの課題⇒ユーザーに寄り添った開発
  • ビジネス感覚を持ったソフトエンジニアを目指す⇒PDCAのCAを強化
  • 同じチームでも知らないことが多い⇒チームで成長
  • 憧れ

情熱と目的を持って広めていく⇒エバンジェリスト

どうやって詳しくなるか?

  • 本を読んでも今の自分にぴったりな答えは書かれていない
  • 経験がないと課題にも気づけない

経験豊富な方々の意見を聞きにいく⇒社外コミュニテイ

  • 同じように頑張っている人と話せることで勇気をもらえる

どんな方法で広めるか?

勉強会の開催

  • 月1開催を半年間
  • 対話しやすいように少人数
  • 内容
  • ポイント
    • 自分ごととして考えられるように
    • 参加者もアウトプットする場
    • 忙しい時間を割いていただくので感謝を忘れずに

まとめ

  • エバンジェリストとして
  • 広めるためにはフオロワーが重要
    • 社外にも目を向ける
  • 勉強して終わりにしない
    • 対話の時間を設ける
  • やろう!とはならない
  • 実験しよう→やらないとわからないことも多い

スクラム実践

  • 可能な限り忠実に
  • スモールスタート
    • ソフトウェア開発部門だけで
  • スプリントは1週間
  • GitHubのprojectで

スプリント

  • 月曜:プランニング
  • 金曜:デイリースクラム
    • スプリントレビュー
    • レトロスペクティブ
  • デイリースクラム後にリファインメント
  • スクラム以前からの定例ミーティングはなるべくそのまま

目的を理解する

スクラムクイズ

例題

  • デイリースクラムの目的は?
  • プロダクトオーナーは何に責任を持つ?
  • スクラムの3本柱は?

忘れる頃に質問することで記憶に定着⇒目的を再認識する場

  • スプリントレビューの目的は?
  • 答える
  • あれ?できていないね?どうしたらできる?

効果が出た点

  • 透明性が高まって自己組織化が進んだ
    • プランニングで作業漏れを予防
    • プランニングで認識のズレを修正
    • 負荷の偏りの把握
  • 成果物の価値について意識が高まる
  • 定量的なデータが取れる
    • ベロシティでこなせる量が把握できる

スクラムマスターの力不足だった点

  • スクラムガイドから外れた部分は問題になる
    • レビューは既存MTGで代用し正しく行われず、PDCAのCAの強化の効果はなかった
  • スクラムマスターと開発者の兼務は厳しい
  • スプリントゴールが達成できない
    • 割り込み、スケジュール遅れ、見積もりズレ

実感したこと

  • スクラム自体は何も解決しない
  • 支援は難しい
    • 色々な経験がないと支援は難しい

スクラムガイドは忠実に

  • 今のプロセスに合わないからといって一部でも変えるとそこは失敗する
  • 目的が大事

今後

  • 開発全体を巻き込んだスクラムにしたい
  • そのためにも今を徐々に良くしていく

3年間の失敗から学んで、やっとスクラムに向き合う準備ができた話

遠藤 良さん

speakerdeck.com

スクラムと出会い、「うまくいかない」を繰り返して 価値観やマインドはどう変化した?

経歴

こんな価値観

  • 計画主義
    • 計画通り終わらせる
  • リソース効率
    • 人月工数
    • 費用対効果
  • 指示に従う

Ep.1 プラクティスに出会う

  • 新しい環境への期待
  • いままでの価値観
  • はじめてのWeb業界

上長から

  • チームをまとめてみようか
  • プロジェクト計画
  • 取締役会で説明しよう
  • ふりかえりやってみたら?
  • 看板作ったら?
  • 計画は更新すればいいから

不安

  • 新しいプラクティス
  • 中途のプレッシャー
  • 新しい環境への期待

中途のプレッシャー

今までの価値観→増

  • 過去のやり方を踏襲
  • MTGの時間は増加
  • パフォーマンス低下

(うまくいかないぞ…)

銀の弾丸はなかった!

アジャイルの本にあるプラクティスをやっただけじゃダメ

(価値観を変えていかないと失敗する)

Ep.2 POもSMもいないチーム

運用チームリーダー

  • 大量の残タスク
  • 着手中タスクだらけ
  • 常に割り込み発生

上長から

  • 1週間スプリントでリズム作るといいよ
  • バックログ運用してみたら?
  • スプリントレビューは参加するよ

⇒今度こそスクラムだ!

  • PBI…SpreadSheet、Jira
  • スクラムイベント…ふりかえりを定期的に実施して改善
  • プロセス改善…現実をみた上で改善

現実

  • これ、最終誰が決めるの?
  • お客さんに言われたのでやってください
  • これはxxさんタスク

(これがアジャイル?チーム開発?)

Ep.3 学びを捨てたスクラムチーム

上長から

スクラムマスターがんばるぞ!)

  • リリースは10ヶ月先
  • POはスクラム初心者
  • 毎回スプリント完了しない

ドン勝!

  • スプリントを完了できるチームに
  • スクラム理解も深まる
  • 順調にアルファ版リリース

実際

  • POがスコープ削ってくれるでしょ?
  • やってみないとわからないけど一旦オッケー(プランニング)
  • ベータ版リリースを乗り越えよう

(まあスプリントは完了しているし…)

  • POとの対立
  • リリース直前トラブル
  • 燃え尽きるチームとPBI

現実

  • エンジニアのSMを0.5借りられない?
  • 社外コミッターの皆さんに協力してもらおう
  • 今週の土曜だけがんばりゃリカバリできそう

結果

  • 便利な人
  • SMがハンドリング
  • 毎週土曜出勤

何がまずかった?

  • リスクの先送り
  • 進捗を出すためにチームがわかっていることから着手していた
  • SMにタスクアサイ
  • リソースが足りないとSMがレビューや進捗管理
  • 納期&スコープほぼ固定

スクラムマスターがスクラムマスターの仕事をしていなかった

気づいたら開発メンバーの仕事をしていた

「チームは何を学んでいるの?」

  • 不確実性に向き合ってる?
  • 何を学んだ?
  • チームの認識あってるのかな?
  • チームはどうありたいの?

エピローグ

こんな価値観に変わった

  • 実験してみよう
    • 行動からチームが学ぶことが大切
  • ユーザー価値
    • チームの中だけに目を向けない
  • あるべき姿
    • どうありたいか?の最初の問いかけ

試してみることに失敗はない

  • デイリースクラムに集まらない⇒怒ってみる

いまやるべきことに集中するための場をつくる

チームが変わるきっかけを一緒に探す

  • 2チームに分かれてふりかえりして発表
  • 心理的安全性ゲーム

【勉強会メモ】関西Node学園 5時限目

nodejs.connpass.com

  • 日時:2019/02/01(金) 18:40 〜 21:00
  • 場所:サイボウズ株式会社 大阪オフィス

いつの間にか5時限目のNode学園。関西も回を追うごとに盛り上がっているように感じます。最近あまりこの領域の技術に関われていないので付いていくのがやっとというか、なんとか食らいついていますが、ハッシュタグ #kng5 を追いかけるだけでも、とても勉強になります。

Design Mistakes in Node & Deno

@shisama_ さん

speakerdeck.com

Node.jsの設計ミスを設計者自身が改善しようとしている

※参考

yosuke-furukawa.hatenablog.com

Deno

github.com

TypesScriptをV8で実行

  • トランスパイルする必要ない
  • TSファイルを直接実行できる
    • 実行時にDenoがビルド

ES Modulesによるモジュール解決

  • CJSではなくSDMを使ったmoduleローディング
  • package.jspn不要
  • importでインターネット上のリソースを読み込める

Secureな実行環境

  • 安全でない環境では実行できない
  • 実行オプションをつける
  • 許可しなかった場合はパーミッションエラー

Node.jsからの改善

  • Node.jsはCallbackベース
  • DenoはPromiseベース

Deno Core

  • Privilgedな領域とUnprivilegedな領域がある

3つのレイヤー

Deno for Users

  • curlでインストール
  • ライブラリも既にたくさん(deno-redis,deno-xml-parser,expressiveなど)

まだ試行段階

TypeScriptとVue

@Daikids2 さん

speakerdeck.com

  • vue-cli はdeprecatedになった→ @vue/cli を使う
  • TypeScriptとscssを選べる

TypeScriptのサポート

jp.vuejs.org

Class-Style ComponentでTypeScriptそのものの型が使える

Callbackを撲滅した後に ~ Promise化だけでは終わらない

@Ajido さん

speakerdeck.com

techblog.yahoo.co.jp

↑Promiseを撲滅した後に残った課題の話

CallbackとPromiseのインターフェースを両立させる

  • Callbackを省略した時にPromiseが返る→オススメ
    • 段階的なPromise化が可能
    • 将来的なCallbackの廃止
  • Promise型のモジュールを返す
    • ライブラリを一気にPromise化する必要がある(段階的にできない)
  • メソッドチェーンからPromiseを返す
    • .promise()
  • Suffix月の関数からPromiseを返す
    • 実装が楽
    • 互換性への対処が難しい

性能

  • パフォーマンスを計測→現時点ではCallbackが最速
  • async/awaitはPromiseよりも速くなる
    • V8 7.2以上ではawaitの仕様変更に伴う最適化
    • Node-v12に入るかも

現代的なフロー制御は高速なのか?

  • async/awaitはNodeのバージョンアップに伴い速度が向上
    • 速度はCallbackに迫りつつある
  • Promiseよりもasync/waitを
  • async/awaitを使うならメジャーバージョンアップは積極的に

ストリーム対応

Streamをフロー制御にどう組み込む?

  • Streamとフロー制御は相性が悪い
  • Streamのエラーハンドリングは独特
  • EventEmitterのエラーハンドリングは独特、ハンドリング漏れはクラッシュにつながる

AsyncIteratorを使ったStreamのフロー制御

  • ES2018の新機能
  • 統一的なエラーハンドリング

エラー処理

非同期処理のスタックトレースはどう見える?

  • 課題1
    • 呼び出し元エラーの発生箇所が特定できない
  • 課題2
    • awaitで中断した関数はマイクロスタックキューから処理

課題への対処

ブラウザで使えるnpmライブラリ

@mochiya98 さん

drive.google.com

m98.be

Asynchronous Modle Definition

  • CommonJS
    • サーバ向け
    • nodeでお馴染み
  • ES Modules
  • 従来型
    • <script>

UMD

  • 全部のせ
  • 1つのファイルでAMD、CJS、従来型として使える
  • ESMは構文だから古い環境への互換性を失う

UMD+ESMなpackage.jsonの書き方

  • 基本的にmain
  • ESMを活用するツールはmodelを見てくれる
    • mainにUMD、moduleにESMを指定
{
  "main": "hoge.umd.js",
  "module": "hoge.esm.js"
}

Managing multi-package repositories

@kamiyam さん

www.slideshare.net

Lernaについて

lernajs.io

gitとnpmを使ってマルチパッケージリポジトリを管理するワークフローを最適化するツール

※参考

qiita.com

モノレポ化

  • メリット
    • 依存関係がある複数レポジトリ管理
    • モノレポ内で共通モジュールを作成
    • packages以下の各プロジェクトをそれぞれ独立してnpm publishすることも可能
  • デメリット
    • コマンドが若干煩雑
    • ファイル構成が大きくなる
    • デプロイ(公開モジュールが複数あるなど)

始め方

$ npm install
$ lerna init

package以下にプロジェクト配置

  • packagesフォルダの下に各プロジェクト
  • その下にpackege.json

管理モード

  • 固定モード
  • 独立モード

モードの違い→packages以下の管理バージョンを固定/独立選べる

$ lerna add xxxx →基本 npm installは使わない

--scope で対象プロジェクトを絞る

各プロジェクト間の依存モジュール

$ lerna add @others --scope xxx

モジュール全体

$ lerna run xxxx

各モジュールの依存関係を解決

lerna bootstrap

たまにモジュールのロードがおかしくなる

$ lerna clean
$ lerna bootstrap
  • 導入は難しくない
  • 大規模開発環境を細かくbuild/publish

分散データの基本

@leichtgewicht さん

分散ファイルシステム - Wikipedia

Node.jsで分散ストレージ

同じデータ?

  • ハッシュする
  • 正しいファイルであることと誰が開発したかがわかる
  • Buffer.compare()

繋がりがなくなったら?

  • IDをつけたほうが良い
  • crypto.randomBytes(32)

分散する

  • bitfield
  • ブロック単位でどれを持っているかわかる
  • bitfield は3種類、メモリの使い方などが違う

すべてのブロックが揃っているかをどうやって確認する?

  • ハッシュをつける
    • 順番が確認できない
    • 前後のブロクのハッシュからハッシュを作る
    • さらにそのハッシュと次のハッシュでハッシュ→回帰的に
  • 正しい順番かどうかを確認できる
  • merkle-tree-stream

誰が情報を更新したか?

  • publickKey, privateKey
  • signatureを作る

hypercoreというモジュールがある

  • これらすべてのことができる

www.npmjs.com

※参考

datprotocol.github.io

【勉強会メモ】Mix Leap Joint 特別編 - スクラム道関西 第116回オープン・ジャム

yahoo-osaka.connpass.com

  • 日時:2019/01/29(火) 19:00 〜 21:30
  • 場所:ヤフー株式会社 大阪グランフロントオフィス

いつもお世話になっているスクラム道関西のオープン・ジャムが、これまたいつもお世話になっているYahooさんのMix Leapとの共催で行われました。 今回は参加者多数ということもありオープン・スペース・テクノロジーという方式で、参加者同士で出し合った課題を議論しました。あらかじめ参加者が出し合った複数のテーマごとにグループをつくり、参加者は好きなグループに参加してディスカッションをする方式です。

jinjibu.jp

今回は4つのグループに分けて30分×3回議論しました。

f:id:radiocat:20190129234220p:plain

私自身が議論に参加したものはメモを追加しています。

見積もりのメリットとデメリット

f:id:radiocat:20190130000826p:plain

ペアプロやろうぜ

f:id:radiocat:20190130000807p:plain

ワーキングアグリーメント作ってますか?

f:id:radiocat:20190130000653p:plain

  • チームの状況が変わってもルールが更新されず放置されている
    • チームとして大きな問題になっているわけではない
    • チームが安定しているので問題になっていないだけで、メンバーが変わると問題になるかもしれない
  • 下記のようなルールはワーキングアグリーメントではなくDoneの定義に入れている
    • PBIをリファインメントしてReadyにする手順
    • POレビュー前にするテストに関するルール
  • Doneの定義はスプリント計画のたびに見直し
  • ワーキングアグリーメントに追加することでチームが安心して仕事ができるものもある
    • 昨年の災害が多い時期に「災害で仕事に集中できない時は自己判断で作業を中断しても良い」というルールを作ったことでメンバーが安心して仕事できるようになった
  • メンバーが変わった場合、ワーキングアグリーメントを更新するのではなくゼロから作り直しても良いかもしれない

割り込みが多い!どうする?

f:id:radiocat:20190130000901p:plain

チームの技術的意欲の向上

f:id:radiocat:20190130000721p:plain

  • メンバーがすぐに質問に来て自分から学ぶ意欲があまり見られない
  • 意欲が高く知識のあるメンバーに負荷が集中
  • ふりかえりで話し合ってみる
  • 社内で勉強会をしてみても良いかも
  • ペアプロやモブプロをしてみる
  • 質問する方もある程度知識が必要で理解に繋がる場合がある

スクラムの開発メンバーの人事考課について

f:id:radiocat:20190130000926p:plain

チームに新しい人がどんどん入ってノウハウシェアが大変

f:id:radiocat:20190130000748p:plain

  • チームメンバーの入れ替えが多い
  • 古株と新人をペアにしたペアプロを行ってみる
  • モブプロも良さそう
  • 定期的にノウハウを共有するストーリーをバックログに追加してスプリントで実施する
    • チームで共有するドキュメントをメンバーに割り当てて手順を実行できるか、理解できるかを確認する
  • ドキュメントがどこにあるかわからない
    • 新しいメンバーがドキュメントを自分で探せるか、自己解決できるかも一つの判断材料

スクラムを学びたい人が少ない

f:id:radiocat:20190130001007p:plain

ほか

以下は写真を撮り忘れましたがテーマだけ紹介します。

  • 納期が決まっている場合のAgileはどうやるの?
  • リモートの供働者との付き合い方
  • スクラムを取り入れる流れ
  • どんなツール使ってますか?

次回

次回は2/12です。なんと、弊社で開催することになりました。お声がけ頂き光栄です。会場提供だけではありますが、たびたびお世話になってるので少しでも貢献できて嬉しいです。

scrumdo-kansai.connpass.com

【読書メモ】リーダー論

リーダー論 ~覚悟を持って道を示せ~

リーダー論 ~覚悟を持って道を示せ~

最近、スポーツのチームマネジメントに興味を持つようになって色々読み漁っています。野球が多いのは完全に自分の好みによるものですが。

この手の本を読むならノムさんは欠かせないだろうということで読んでみたのがこの本でした。ノムさんの書籍の中では比較的新しいということもあり、読みやすくてあっという間に読むことができました。

プロフェッショナル集団を率いるリーダーに必要なもの

ほんとうのプロフェッショナル集団を率いるリーダーに必要なのは、技術力やすでに持っている能力を超えて闘いを挑むための知恵なのである

プロフェッショナルであるなら何よりも「知力」を重視する必要があるとしています。プロフェッショナルは専門家なのでその仕事の深い知識を持っているのは当たり前であり、プロフェッショナルを束ねるリーダーは部下を圧倒するだけの知識や理論を持っていなければならないと述べています。これはエンジニアに置き換えても同様の事が言えます。プロフェッショナルとしての知識や理論を持ち、「知力」を使ってエンジニアが納得できるビジョンを示すことがエンジニアのリーダーに求められると言い換えることができるのではないでしょうか。

また、決断をするか否かが監督とコーチの根本的な違いであり、リーダーは判断力だけでなく、決断力も持たなければならないと述べています。

判断が正しかったとしても、決断しなければそれは絵に描いた餅にすぎない

決断とは一種の賭けなのである

瞬間的な決断を求められるのがチームのリーダーなのです。

一方で、チームを発展させるうえで欠かせない条件のひとつに「未来想像力」という言葉をあげています。これはチームの将来あるべき姿を明確にイメージし、具体化していく能力のことです。

チームを発展させるために行う監督の仕事を以下の3つに分類しています。

  1. チームづくり
  2. 人づくり
  3. 試合づくり

中でも「人間教育」こそが強い組織のもととなると述べています。

人間を磨かなければ、すなわち思考を変えなければ、進歩も成長もない

技術だけを磨くことには限界があります。思考は行動を決めるため、意識を変えることで日々の過ごし方や仕事に対する取り組み方が変わり、仕事の質が高まるということです。これもエンジニアに置き換えると自己組織化やメンバーとのメンタリングに繋がるマネジメント論に置き換えることができるのではないでしょうか。

ドラッカーの『マネジメント』に通じる理論

P.F.ドラッカーは『マネジメント』の中でマネジャーの役割は次の2つだと言っています。

マネジメント[エッセンシャル版] - 基本と原則

マネジメント[エッセンシャル版] - 基本と原則

  1. 投入した資源の総和よりも大きなものを生みだす生産体を創造すること
  2. あらゆる決定と行動において、ただちに必要とされているものと遠い将来に必要とされるものを調和させていくこと

ノムさんのリーダー論はドラッカーにも通じるマネジメント論であると感じました。

リーダーは「未来想像力」を持って人を遺すべし

最後は以下の一文で締めくくられています。

その人のもとからどれだけの人材が育ち、羽ばたくことができるか。その人のリーダーとしての価値は、最後はそこで決まると言ってもいいのではないだろうか

技術と知識で専門性の高い成果物を生産するのがプロフェッショナルであり、プロフェッショナルを継続的に生産する仕組みをつくるのがプロフェッショナルな組織のリーダーであると言えます。