株式会社クイックのWebサービス開発blog

HAPPYなサービスプランナー・エンジニア・デザイナーのブログです。

【Laravel】Middlewareでルートパラメータチェックする時のテクニック

こんにちは、最近ロードバイクにはまっているぱふゅーむです。
現在チームでは、ロードバイクがブームでこの半年で4人が購入しています。
ただの置物にしちゃっているメンバーが1名いますが笑(たまに座って満足しているそうです、怖いですね。。)

ということで今回はロードバイクのすすめ・・・ではなく LaravelのMiddlewareを使ったちょっとしたテクニックを紹介したいと思います。

Middlewareについて

Middlewareの詳細な説明は今回は割愛します。
詳細を確認したい方はこちらをご覧ください。=> Laravel - ウェブ職人のためのPHPフレームワーク Middleware

ルートパラメータチェックをMiddlewareで行い、ついでに取得した値をリクエストに内包する

ルートパラメータで取得したidが存在するかMiddlewareでチェックしたいケースなどに使えるテクニックです。
Middleware内でfind()したモデルをリクエストに内包することで、 Controllerに渡した後、再度取得する処理を省略することができます。

以下のようなルーティングを設定していたとします。

Route::get('/{hogeId}', 'HogeController@detail')->middleware('ValidatePkMiddleware')
Route::get('/{fugaId}', 'FugaController@detail')->middleware('ValidatePkMiddleware')

Middleware内でidの存在をチェックしたいModelを、配列で定義します。

<php

class ValidatePkMiddleware
{
    /**
     * routeで指定したidの存在を確認し、検索結果をrequestに含める(Controllerで使用可能にする)
     * Controller での参照は xxxId の場合は 「$request->xxx」(Idを取り除いた形式) となる
     * ※ 存在確認が主目的なので、結合などは考慮しない
     *
     * @var array [ routeで指定したKey => 対象Model ]
     */
    private static $validateList = [
        'hogeId' => Hoge::class,
        'fugaId' => Fuga::class,
    ];


上記で定義した配列を使用し、以下のようにルートパラメーターを取得、存在をチェックします。
この例では存在しなかった場合404を投げるようにしています。

存在チェックにexists()を使用せず、find()しているところがミソです。
存在した場合、リクエストに内包し、Controller以下の処理で値を参照できるようにしています。
このようにすることで、各処理でfind()を省略することができます。

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        foreach (self::$validateList as $routeKey => $modelClass) {
            $key = $request->route($routeKey);
            if ($key === null) {
                continue;
            }
            $model = (new $modelClass())->find((int) $key);
            if ($model === null) {
                abort(404, trans('messages.not_found'));
            }
            $requestKey = str_replace('Id', '', $routeKey);
            $request->merge([
                'fromDb' => (object) [$requestKey => $model],
            ]);
        }

        return $next($request);
    }
}

単純ですが、こういったちょっとした工夫の積み重ねで、後の実装が楽になりますよね!


\\『明日のはたらくを創る』仲間を募集中です!! //
919.jp

採用業務はエンジニアリング力を強化する!

最近Netflixオリジナルの『ラブ、デス&ロボット』に
ハマっているhamanokamiです。

そろそろクイック歴も7年目に突入しそうな私なのですが、 去年11月ごろからソフトウェアエンジニアの採用に 本格的に力を割いていました。

やっていたことは、

  • 求人票作成
  • スカウト
  • 面談・面接

です。

やってみての感想ですが、他エンジニアと本業で差をつけたいのであれば、 いちメンバーでも、関われる範囲で積極的に採用業務に携わったほうが 良いと感じました。

エンジニアリングをメインに業務してきた私が、 そう思った理由を書いていきます。

目次

  • なぜ採用業務に携わった方が良いか
  • なぜ採用業務がエンジニアリングに関係があるか
  • まとめ

なぜ採用業務に携わった方が良いか

細かいところを上げるとたくさんあるのですが、 今回は採用業務に携わったほうが良いと思う1番の理由 ひとつに絞りました。

それは、
「採用業務は、事業やプロダクトのことをより知り、考えるきっかけになり、 より適切なエンジニアリングができることにつながる」
からです。

私達エンジニアは、事業・プロダクトの継続的な価値提供の最大化のために、 要件定義、設計、コーディング等を行います。

そのためには、事業・プロダクトを知ることは必須です。

その事業の目的・目標から、 どのようにそれをいつまでに成し遂げるのか、 等を知ることで、 適切なエンジニアリングができます。

事業の目的・目標等を知らないでエンジニアリングをするということは、 個人的には本物のエンジニアではないと思っています。
(自分がそれをできているかと問われると、「うっ」っとなりますが。。。

もちろん時代の流れは早いため、 計画通りにいかないことはわかっていますが、 ざっくりでも構想のないままエンジニアリングをしてしまうと、 どうしてもツギハギのシステムになるため、 継続的に価値の最大化をしようとすると、 足かせになることは目に見えています。

現時点での最適解ではなく、 今後を見通した解を選択することは、 完全ではないにしろ比較的柔軟な設計になる可能性は高くなります。

なぜ採用業務がエンジニアリングに関係があるか

ではなぜ適切なエンジニアリングをするために採用業務が関係してくるのかというと、 採用業務*1は現状の事業課題や今後の展望を考えて業務をするため、 必然的に「事業やプロダクトのことをより知り、考える」ことを やらなければいけないからです。

例えば、スカウトをうつときには、 相手がイメージできる具体的な課題を提示し、 それを解決するためにうちに来てほしいと メッセージを送ります。

その「イメージできる具体的な課題」は、 現状の事業課題や今後の展望を、 相手に伝わるように表現をしないといけないため、 それらを正しく理解する必要があります。
その過程で「事業やプロダクトのことをより知り、考える」ため、 意識をしなくとも習慣に組み込まれます。


また、技術選定と採用は密接に結びついています。

その技術が解決したい課題に対して適切かだけでなく、
「現状その技術を使用できる人は市場にどれくらいいるか」
「今後はどうなりそうなのか」
「自社にその技術を扱えるエンジニアを採用できる強み(魅力)はあるか」
「なければ強みはつくれるのか」
など、継続的に価値の最大化をしていくには、 採用も視野に入れて技術選定をする必要があります。

よって、適切にエンジニアリングをするには、 採用は必要不可欠な要素なのです。

まとめ

一見採用業務はエンジニアのメイン業務とは関係ないように見えますが、 採用業務は、事業・プロダクトをつくっていくための一貫なので、 その業務で行ったことはすべてメイン業務に還元されます。

むしろ採用業務を行うことで、視野が広がり、 より良いエンジニアリングを行うことができます。

なのでエンジニアリングレベルを上げたいエンジニアは、 どんどん採用業務に関わってみてはどうでしょうか?


それでは良いエンジニアリングライフを!


\\『明日のはたらくを創る』仲間を募集中です!! //
919.jp

*1:採用は人事戦略の一部なので、本来は人事戦略からの採用戦略ですが、採用はメンバーレベルでも関わりやすいところなので採用を対象としています

【Googleスプレッドシート】GASでオリジナルのフィルタを作る方法

令和最初のブログ更新を担当します!sanamekoです!

突然ですが、職場内や仲間内でGoogleスプレッドシートを使っているときに、フィルタリテラシーで困ったこと、ありませんか??

フィルタリテラシー問題

Googleスプレッドシートでは、同時に複数人が閲覧・編集をすることができますが、迂闊にフィルターをかけると、ほかの人の表示画面にもフィルタがかかってしまいます。

そんなときのために、Googleスプレッドシートには「フィルタ表示」という便利な機能が用意されています。
ご存知の方も多いと思いますが、個人用フィルタを作成することで、ほかの人の表示に影響を与えずに済む・・・という優れものです。

但し、今までExcelをメインで使ってきた方に「これからはフィルタ表示機能を使ってね」と案内しても、なかなかこの機能を理解してくれなかったりします。
だいたい2パターンに分かれます。

  1. よく分からずやっぱり通常のフィルタを使うひと
    • フィルタを解除しないままシートを閉じる
    • 次に使うひとがちょっとイラッとしながらフィルターを解除する
  2. よく分からないけどフィルタ表示機能を使ってみるひと
    • ほかの人が設定したフィルタを無自覚に編集しちゃう
    • 個人用フィルタを設定したひとが発狂する

2のパターンが多いときは、被害が拡大する前に、フィルタ表示機能を使ってもらうのを早々に諦めたほうがいいかもしれません。
Googleスプレッドシートが浸透し、フィルタリテラシーが向上するまで待ちましょう。

フィルタ表示機能を使わない場合、通常のフィルタ機能を使ってもらうことになります。
そんなときに、次に使うひとのイライラを少しだけなくす(かもしれない)、GASでオリジナルフィルタを作る方法をご紹介します。

GASでオリジナルのフィルタを作る

具体的には、スプレッドシートに「フィルタ」というメニューを新しく追加し、特定の条件のフィルターを作成する、という方法です。
ほかの人が無造作にかけたフィルタをワンクリックで全て解除したりできます。

f:id:aimstogeek:20190508110425j:plain
こんな感じです

サンプルとして、お客様アンケートの回答をGoogleスプレッドシートにまとめたデータを準備しました。

f:id:aimstogeek:20190508110427j:plain
お客様アンケートの回答一覧

このスプレッドシートに、2つのフィルタ条件を作成します。

  • F列の満足度(満足/やや満足/普通/やや不満/不満)を、「不満」と「やや不満」のみに絞る。
  • 全フィルターを解除する

作り方

まず、メニューより、ツール > スクリプトエディタ を押下。
メニュー「フィルタ」を追加し、そのメニューに各条件を作成するスクリプトを記述します。

function onOpen() {
  var ui = SpreadsheetApp.getUi();          
  var menu = ui.createMenu('フィルタ');  // 追加したいメニュー名を記述
  menu.addItem('不満/やや不満のみ', 'onClickItem1');   // 追加したいアイテム名を記述
  menu.addItem('全フィルタ解除', 'onClickItem2');   // 追加したいアイテム名を記述
  menu.addToUi(); 
}

続いて、各アイテム(条件)をクリックしたときの動きを記述します。
※「○○のみに絞る」という条件は設定できないため、「不満/やや不満に絞る」ではなく「満足/やや満足/普通を除く」という設定をします。

/*F列から「満足/やや満足/普通」を除く)*/
function onClickItem1() {
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var sh = ss.getActiveSheet(); 
  var criteria = SpreadsheetApp.newFilterCriteria()
    .setHiddenValues(['満足','やや満足','普通'])
    .build();
  sh.getFilter().setColumnFilterCriteria(6, criteria);
}

/*全ての列のフィルタを解除する*/
function onClickItem2() {
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var sh = ss.getActiveSheet(); 
  sh.getFilter().removeColumnFilterCriteria(2);  // B列のフィルタを解除
  sh.getFilter().removeColumnFilterCriteria(3);  // C列のフィルタを解除
  sh.getFilter().removeColumnFilterCriteria(4);  // D列のフィルタを解除
  sh.getFilter().removeColumnFilterCriteria(5);  // E列のフィルタを解除
  sh.getFilter().removeColumnFilterCriteria(6);  // F列のフィルタを解除
}

これで完了です。
スクリプトを保存してスプレッドシートを開きなおすと、メニューに「フィルタ」が追加されているので、アイテムをクリックして、動作を確認してみてください。

最後に

フィルタ全解除を設定しておけば、ぐちゃぐちゃとフィルタがかかっていてもワンクリックで解除できますし、
よく使う条件を設定しておけば、毎回複数列のフィルタをかける手間を省くことができます。

フィルタリテラシー問題の根本解決は難しいですが、この方法で少しでも快適なスプシライフになれば幸いです!


\\『明日のはたらくを創る』仲間を募集中です!! //
919.jp

全員にリーダーシップを求めたい!~チームのパフォーマンスを最大化するために~

平成最後のブログ更新を担当します!"持っている"nakayanです!

シニアマネージャーとしてチームビルディングについてずーっと考えているので、今回は「リーダーシップ」を中心に自分の考えや思いを書いてみたいと思います。

リーダーシップとは

「チームの目的・目標を達成するために周りに影響を与える力」だと思っています。
つまり、チームが目的達成へと前進することに対して自発的に行動しているのであれば、それはリーダーシップです。

本当はほとんどの人がリーダーシップを持っているんじゃないかなと思っています。
ただなぜか、「自分はリーダータイプではない、リーダーシップはない」と決めつけている気がします。
必ずしもみんなをグイグイ引っ張って「俺について来い!」みたいなものだけがリーダーシップではないのに。なにかイメージがついてしまっているんでしょうか。

気をつけたいのは、自発的に行動している人であっても、チームのためではなく自分のために行動しているのであれば、それはリーダーシップではありません。
ひとりで何かをやっている場合は別に問題ないんですけどね。当たり前ですが。

ということは、「チーム」という状態においてリーダーシップが重要だということになります。
では、「チーム」って一体何なんでしょうか?

チームとは

普段から「チーム」とか「チームワーク」とよく言いますが、本当の意味での「チーム」を改めて確認してみます。
※「チームビルディング」とは言うけれど、「グループビルディング」は聞いたことないんですよね。

チームとグループの違い

それぞれの意味を辞書で調べてみると・・・ (出典:デジタル大辞泉

チーム

ある目的のために協力して行動するグループ。組。スポーツや共同作業についていわれる。

グループ

1 仲間。集団。
2 共通の性質で分類した、人や物の一団。群。
3 同系列に属する組織。

とあります。

チームの説明の中に「グループ」って言葉が入っちゃってますが(笑)、大きな違いは "目的" があるかどうかです。 グループは、似た性質や共通点によって人が集まっている状態ですね。 一方でチームは、目的達成のために協力して行動する人の集まりです。

ではチームのパフォーマンス向上のために何が必要かというと、その大きな要素の一つがここ数年で一気に浸透した「心理的安全性」ですね。

心理的安全性とは

チームメンバーひとり一人が、チームに対して「安心して発言できる」、「自分自身をさらけ出せる」、と感じられる状態や雰囲気のことです。 jinjibu.jp

ただし、「心理的安全性が担保されている」=「仲良しこよし」ではないということをしっかりと認識していないといけません。
もちろん仲が良いに越したことはないのですが、雰囲気を壊さないために衝突せず、「いいこと」「楽しいこと」のみ共有して、厳しい指摘や意見のぶつけ合いがないというのはただの「ぬるま湯」です。
これは心理的安全性とは似て非なるものです。

なぜなら、チームとは目的を達成するためにあるので、厳しいことを言わないといけない場面や、意見が衝突することもあるはずです。
それができる状態というのは、お互いを認め合って、信頼しリスペクトしている状態だと思います。
これによって、チームのパフォーマンスが向上していきます。

伝え方に配慮は必要だと思いますが、チームとして成果を上げるために正しいと思ったのであれば、意見を言う(ぶつける)ことに遠慮は必要ないと思っています。

メンバー全員にリーダーシップを持っていて欲しい

では、こういうチームのメンバーに求められるものが何かというと、冒頭で書いた「リーダーシップ」だと考えています。

目的を達成するために、チームの中で「今自分に何ができるか」を主体的に考えて自発的に行動する。
そして、心理的安全性の本質と重要性を理解し、体現する。
そんなメンバーの集まりであるために、全員にリーダーシップを持っていて欲しいです。

また、リーダーシップに対してフォロワーシップやメンバーシップといった言葉もありますが、個人的には、リーダーシップを持っている人がフォロワーとしてもメンバーとしても良いパフォーマンスを発揮すると思っています。
これは、その時々で「役割・立場としてのリーダー」が変わって自分がメンバーになったとしても、リーダーをサポートするのはどういうことなのかを考えて行動できるからです。 (参考:フォロワーシップ - Wikipedia

例えば、飲み会とかイベントの幹事をやったことがある人はその大変さを理解しているので、参加者側になったときにはちゃんと出欠の連絡はするし、簡単にドタキャンなんてしないはずです。
そこには、参加者としての当事者意識(リーダーシップ)があると捉えています。

リーダーシップを身につけたいなら飲み会の幹事をやればいいと思います。(笑)
新人が幹事をやらなければいけないとかは思わないですが、リーダーシップを身につけるための経験という意味では積極的に幹事をやるべきです。

リーダーシップは、本を読んだり勉強したりして身につくものではないので、どれだけ経験を積めるかで決まります。
学生時代から何かしらのリーダー経験をしてきた人は、自然とリーダーシップ・フォロワーシップ・メンバーシップが身についていると思います。

これについては、いろいろな方がとてもわかりやすくまとめてくださっているので、ぜひそれぞれの記事を読んでいただければと思います。 tunag.jp chikirin.hatenablog.com scienceshift.jp

まとめ

  • チームとは、目的達成のために協力して行動する人の集まりである。
  • チームのパフォーマンスを向上させるためには「心理的安全性」が重要。
  • 心理的安全性とは、ただの "仲良しグループ" 、"ぬるま湯" な状態ではない。
  • 心理的安全性を担保できるチームは、全員にリーダーシップが必要(だと思う)。
  • リーダーシップを身につけるには、読書や勉強ではなくリーダー体験を通して学ぶしかない。

全員がリーダーシップを持ち、チームの目的達成に向けて個人とチームが成長しながらパフォーマンスを最大化させる、そんな最高のチームをつくりたい!! です!!!!

一緒にチームビルディングやっていきたい!っていう方、お待ちしています!!


\\『明日のはたらくを創る』仲間を募集中です!! //
919.jp

GASを使って、ChatworkにGoogle Analyticsのレポートを送信する

はじめてGASに挑戦したsatopiです、こんにちは!

自分が運用に関わっているDybe!というメディアサイトの記事を社内のみんなに見てほしくて、Chatworkのbotに月間PVランキングをつぶやかせるようにしました。

1. スプレッドシートGoogle Analyticsアドオンでレポートを作成する

スプレッドシートを作成するアカウントにGoogle Analyticsの「表示と分析」権限を付与しないとレポートは作成できません。

f:id:aimstogeek:20190416164703j:plain
Google Analyticsアドオン

Google Analyticsアドオンをインストールしたら、アドオンメニューから「Create new report」をクリック。

f:id:aimstogeek:20190416165848p:plain

レポート出力設定ウィンドウが表示されます。

f:id:aimstogeek:20190416165212p:plain

Metrics(指標)に「Pageviews」、Dimensions(分析軸)に「Page Title」「Page」を指定します。 (Pageはページのルート相対パスが取得できます)

2. 出力される内容を調整する

  1. Orderで降順にするため、-ga:pageviews を指定
  2. Filterで記事詳細のみに絞り込む

Dybe!の記事URLは、 https://ten-navi.com/dybe/記事ID/ となっているので、正規表現で絞り込みます。

f:id:aimstogeek:20190416165708p:plain
出力内容を調整したReport Configurationシート

アドオンメニューから「Run Reports」をクリックすると、別シートに結果が出力されます。

f:id:aimstogeek:20190417151503p:plain
結果が出力されたシート

3. 毎月1日にレポートを更新する

アドオンメニューから「Schedule reports」をクリックし、実施日時を設定します。

f:id:aimstogeek:20190416184041p:plain
毎月1日、9〜10時の間に実施させる設定例

4. GASにChatworkのライブラリを追加する

スプレッドシートからスクリプトエディタを開き、「ChatWorkClient」のライブラリを追加します。

f:id:aimstogeek:20190416182813p:plain
追加したら、最新バージョンの選択を忘れないようにしましょう

5. GASを書く

スクリプトはこんな感じに。

function sampleAction() {
  var currentFile = SpreadsheetApp.getActiveSpreadsheet();
  // シート名は「Run report」で生成されたほうを指定する
  var monthlyRanking = currentFile.getSheetByName("シート名");

  // チャットワークにメッセージを送る
  var RoomId = xxxxxxxxx; // ChatworkのルームID
  var client = ChatWorkClient.factory({
    token: "ChatworkのAPIトークン"
  });
  var Body = "[info][title]Dybe! 月間PVランキング[/title]";

  for (var i = 1; i <= 6; i++) {
    Body =
      Body +
      "[" + i + "] " + monthlyRanking.getRange(i + 15, 2).getValue() +
      ":PV " + monthlyRanking.getRange(i + 15, 3).getValue() + "\n" +
      " https://ten-navi.com" + monthlyRanking.getRange(i + 15, 1).getValue() +
      "[hr]";
  }

  Body += "ご意見・ご感想などがあれば、Dybe!運営メンバーまでお願いします(bow)[/info]";

  client.sendMessage({
    room_id: RoomId,
    body: Body
  });
}

スクリプトを書いたらメニューのトリガーアイコンをクリック。

イベントのソース「時間主導型」を選択し、実行日時を設定します。

f:id:aimstogeek:20190416190211p:plain
毎月1日 午前10〜11時の間に実行するようにトリガーを設定した例

※レポートの更新後にスクリプトが実施されるようにしてください。

完成

f:id:aimstogeek:20190416162721p:plain
Dybe!の月間PVランキングをつぶやく社内botのBob

まだDybe!の記事を読んだことがない方は、これを機に是非ご覧ください!٩( ᐛ )و

ten-navi.com


\\『明日のはたらくを創る』仲間を募集中です!! //
919.jp

merge commitのrevert commitをrevertしてたけど気持ち悪いからやめました。

こんにちは。mikkiです。
今回はGit運用でずっと気持ち悪いと思っていた、revertのrevertをやめる方法を見つけたので、こちらに記載したいと思います。
(もしかしたらこんなことしてたの私だけかもしれない。。。)

Gitの説明は省くので、勉強されたい方は詳しく説明の載っている外部サイトをご覧ください。
サルでもわかるGit入門 〜バージョン管理を使いこなそう〜【プロジェクト管理ツールBacklog】



どんな時にrevertのrevertをしていたのか

developブランチから複数のfeatureを切り、developにmergeし動作確認を行っているとします。 追い越しリリースやバグが見つかった場合、対象featureブランチのmergeコミットをなかったことにしたいのでrevertします。 リリースが終わった後developに対象featureブランチのmergeコミットを復活させたいので、ここでもう一度revertをしていました。
これが今回やめようと思ったrevertのrevertです。

f:id:aimstogeek:20190411191632p:plain
revert commitのrevertをしている図

revertのrevertをしなくてもfeatureブランチをmergeしなおせばいいのでは、と考えたこともありました。 ですがdevelopブランチでは打ち消しコミットが入っているので、featureブランチを再度mergeしようとするとconflictしちゃうんです。 あるいはmerge時点より前のcommitがなかったことになってしまいます。
そのため、気持ち悪いけどrevertのrevertを行っていました。

f:id:aimstogeek:20190411190544p:plain
revert commitが有効な状態を示す図

今までrevertすることがほぼなかったので我慢していましたが、必要になると管理が大変なことに気がつきました。 それにバグが含まれていることが理由でrevertした場合、もう一度revertしてdevelopにバグを混入するのって気持ち悪いですよね?
運用を変更したい理由が二つも思い浮かんだら、変える他ないと思い、revertをrevertせずにmergeコミットの復活方法がないか検証しました。

revertのrevertをせずに修正を加える方法

結論から言うとcherry-pickを使います。

cherry-pick自体の説明は冒頭でご紹介したサイトをご覧ください。
4. cherry-pick【チュートリアル3 コミットを書き換えよう!】 | サルでもわかるGit入門【プロジェクト管理ツールBacklog】

手順

  1. developからmergeコミットをrevert
  2. 最新のdevelopをfeatureに取り込む
  3. featureの戻したい時点のコミットをcherry-pickする
  4. 修正したい場合はここで修正を加える
  5. マジリク投げる
  6. mergeする

f:id:aimstogeek:20190411191417p:plain
渾身のcherry-pick

これでrevertのrevertをすることなく、綺麗に修正を加えることができました!!!

最後に

実は今回、クイックのスクラムマスターことフルーツパーラーさんに相談して手順を確立しました。
チャットで相談したところ「えぇ⤴︎なんすか!なんすか!」と面白そうに、一緒になって事象の検証から手順の確立まで行ってくださいました!
別プロジェクトで忙しいのに、ラフに相談に乗ってくださるフルーツパーラーさんはじめみんなにいつも助けられてます。感謝感謝です。

最後までこの記事を読んでくださった画面の前のあなた!ありがとうございます。
他の手段やもっといいアイディアがあれば、ぜひコメントください。お待ちしております。


\\『明日のはたらくを創る』仲間を募集中です!! // 919.jp

新米スクラムマスターに届け!今だから伝えられる7つの事

4月いい季節ですよね。
何かを始めようと思い筋トレを掲げるのですが、
何故か身体の変化はありません。フルーツパーラーです。

スクラムを実践し学ぶ中で、新たな気付きや考える事が多々ありました。

本記事は、新米スクラムマスター(過去の自分)に対しての内容です。
スクラムマスターに向けた資料は少なく、悩まれている方の参考になれば幸いです。

弊社のスクラム開発についてはこちら

aimstogeek.hatenablog.com

お話の対象としている方

スクラムマスターをしている(新米)
スクラムを学んでいる

スクラムマスターとは?

一言で言うと
(対象者の)目的を達成する確率を最大化する

スライドの目次

気になる内容がありましたら是非内容を御覧ください。 スライドの最後にスクラムマスターに必要なスキルと学ぶ領域についても記載しています。

1. スクラムが課題を解決すると思わない
2. スクラムが出来ていると思わない
3. イベントをスキップしない
4. なぜスクラムを行っているか忘れない
5. スクラムを変えようと考えない
6. 自分自身の改善を忘れない
7. スクラムマスターがフィードバックを受ける事はない

スライドの紹介

speakerdeck.com

参考:改善を繰り返す進め方について

もしイメージがつかない方は是非こちらをご覧下さい。 www.ted.com

まとめ

実践を始めた頃は何に向かって進めばよいのか、どういうスキルが必要になるのか?出来ているのか?という悩みを持ち続けていました。

これから実践する方の入り口の一つとして見ていただけると嬉しいです。

必要なスキルはとても高く不足している部分が多いです。 しかし、すでに高いレベルでスキルを持った方々が組織内にいますので、アドバイスを頂きながらスキルを身につけて行こうと思います。

弊社では、チームを盛り上げ『明日のはたらくを創る』仲間を募集しています。



\\『明日のはたらくを創る』仲間を募集中です!! // 919.jp