（株）SHIFT資料

若手が自律的に育つ環境とは-１年半で自動化アーキテクトになれた訳
2017.02.04

株式会社SHIFT目次
1. 自己紹介

2. 本公演のポイントと道筋
3. 自動化アーキテクトとしての仕事
4. 成長の歩み
5. 成長要因の分析
6. 最後に1自己紹介 名前：山下 裕晃

 所属：株式会社SHIFT 技術開発部
 入社：2015年新卒入社（２年目）

 出身：山口県（本籍：鹿児島）
 大学：慶應義塾大学商学部• 専門は商品開発論（文化論、社会学的）• 大学時代は他大学の先生のカバン持ち
2

本公演のポイントと道筋本公演のポイント• 成長の流れ• モチベーションの維持• 具体的な勉強法• 助けられた経験・良かった環境

4

本公演の道筋

今

自動化アーキテクトとしての仕事

昔未経験からの成長の歩み

分析

自律的に成長出来た要因

自動化アーキテクトとしての仕事まず自動化アーキテクトって何を指しているの？

君は名乗れるの？

成長段階
シニアアーキテクトアーキテクトアーキテクト
補佐
スクリプター

1
年
半

トレーニー

未経験
8

自動化アーキテクトとしての仕事 – 定義

自動化アーキテクトの定義
基盤

技術
テスト自動化

案件管理
マネージメント
顧客折衝
9顧客の課題を洗い出し技術によって解決出来ること

自動化アーキテクトとしての仕事 – 前提

顧客と課題
顧客
• 旅行予約サービスを運営• 毎年着実に成長。合わせて開発チームも拡大• 一方で、レガシーな環境や仕組みで開発を継続
課題• B to C サービスのため止まった際の機会損失が大きい• 手動かつ属人化した作業により品質維持に懸念• レガシー環境や手動作業により開発効率が低下
11自動化アーキテクトとしての仕事 – 前提

複雑に絡み合った問題が存在• 一つの開発環境で全員が作業

品質懸念• ブランチが切られていない• テストは開発環境に対して実施• 回帰テストまで手が回らない• テスト環境へのデプロイは手動

開発効率の低下• テスト環境でのテストは開発側で簡単な動作確認のみ

12

自動化アーキテクトとしての仕事 – 解決策

継続的デリバリー環境の構築による抜本的改善
GUI品質懸念自動テスト
API

開発効率の低下

CD環境の構築

自動デプロイ
周辺ツール

13

構築内容の概念図
継続的デリバリー環境
1: 自動デプロイ
ローカル開発環境

開発環境

テスト環境

2: 静的解析
3: API自動テスト

4: GUI自動テスト

14

本番環境

自動化アーキテクトとしての仕事 – 自動デプロイ

自動デプロイにより工数圧縮と脱属人化
具体策 : 1• Gitの導入に合わせてブランチ戦略を導入• EC２やLambdaへのデプロイをAWS CLIで自動化• 上記の処理をJenkinsを構築し、テストと合わせて実行、集計、Slackへの通知を実施

ミスが混入せず、誰でも高速なデプロイが出来、常に最新のテスト環境が用意可能に
15

自動化アーキテクトとしての仕事 – 静的解析

不具合の作り込みを未然に防ぐ
具体策 : 2
• 低コストかつ早期の不具合原因の発見するため
SonarQubeを利用した静的解析の仕組みを導入• Jenkinsを利用し、CD環境に組み込み不具合発生率の低減とコード品質への意識を浸透

16

自動化アーキテクトとしての仕事 – API自動テスト

継続的デリバリーを支えるAPIテスト
具体策 : 3
• GUIテストよりも短時間でかつ網羅的なテストが出来るAPIテストを自動化（Frisbyを使用）• 自動化スクリプト自体を書くのではなく、yamlファ

イルで記述すると自動生成する仕組みを構築

サービスの基盤であるAPIの品質を幅広くカバー
17自動化アーキテクトとしての仕事 – GUI自動テスト

売上に直結する機能の品質を担保
具体策 : 4• SeleniumやAppiumを使って回帰テストを自動化• 毎日実行し、バグの早期発見を行える体制を構築• クロスブラウザ・プラットフォームに対応

重要機能（予約）の品質を担保
手戻り工数とリードタイムの短縮
18

自動化アーキテクトとしての仕事 – まとめ

複雑に絡み合った問題にメスを入れた

品質懸念• 個人の開発環境が整備• ブランチ戦略が導入• テスト環境へのデプロイは自動化• テスト環境でテストを実施

開発効率の低下• 毎日、回帰テストが実施

19

今後の展開自動化アーキテクトとしての仕事 – 今後の展開

DevOpsの実現
IaC（インフラのコード化）の導入
 本番環境までのCD環境を拡張
 Blue/Greenデプロイメントの実現• A/Bテストの実施やFBスピードの向上によりサービス価値の底上げに貢献

 技術的なプラクティス以外の導入• Scrumやかんばんなど

21

成長の歩み成長段階
シニアアーキテクトアーキテクトアーキテクト補佐
スクリプター

1
年
半

トレーニー

未経験
23

成長の歩み - 未経験

配属前の状態サービスってどうやって動いているの？
プログラミングすれば動くの？

先輩の言っていることが日本語なのに聞き取れない

そもそもプログラミングって何？

一先ず、テスト設計・実行から一歩ずつ頑張ろう

24

成長の歩み - 未経験

突然の配属
山下君、宜しく配属メール見た？

技術開発部！？

なんのこと？

25

成長の歩み - トレーニー

驚くほど分からず、進む場所すら見えない
業務内容• スクリプトエンジニアとして働ける様に研修• Javaやテストフレームワークの勉強• IDEやGitなど基本的なツールに慣れるぶつかった壁• 言っていることすら分からない状態• あまりに膨大な前提知識に心が折れそうになる• どうやったら出来るようになるかが分からない26

成長の歩み - トレーニー

帆を張る
解決策
• まず一冊仕上げて、前提・基礎を理解する• 教わったことは項目別にメモし、分類考えていたこと• 受け取れる情報を増やすために、浅く広く勉強• どんなに分厚くても、必ず最後は終わらせられる。
27

成長の歩み - スクリプター

作業者として参画
業務内容• アーキテクト共に案件に入りテストスクリプト作成• 準閉鎖環境で前任者が書いたコードを読みとく• 自動化用のテスト設計書の作成ぶつかった壁• 上司が解決する際の考えているフローが分からない• パーツを積み上げても全体が理解出来る気がしない• 頼りのコードが読めない＋単純な量産活動
28

成長の歩み - スクリプター

限られた状況でもやれることはある
解決策• 上司の仕事を分解し、影響範囲が大きい順から勉強• 営業や常駐業務に同行し実施内容から全体像を理解• 生産性を上げるためにツールに習熟• 他人のコードは読んだ後に、自分なりに見ずに書く考えていたこと• 必要なのはアーキテクトであって作業者ではない• 限られた環境でもやれることはある。
29

成長の歩み - 番外編

初めてのマネージャー業務に大混乱
業務内容• 手動テストチームを担当し、総合・受入テストを実施• 案件管理や顧客折衝を実施• 同時に設計も実施ぶつかった壁
• 短納期かつチームでの業務のため、前行程が止まることで全体が一気に混乱し、管理者にしわ寄せ• 考える仕事と管理する仕事を並行出来ない• 上司も先輩もいなくなり自分しかいないという状況
30

成長の歩み - 番外編

裁量＋責任で自分事として捉える
解決策• どのタスクが今クリティカルかを考える• きちんと情報を共有し最初から関係者を巻き込む• どんどん他の人が出来ることは任せる考えていたこと• 面倒でも前提を共有した方が楽• 段取りの重要性を身を持って知る。

• 俺が最後の砦だという意識
31

成長の歩み - アーキテクト補佐

責任者になった興奮から一転して転落
業務内容• 上司の支援を得ながら、自動テストを一から組む• 基盤構築なども少しずつ着手• 新しい技術を自分で調べて導入ぶつかった壁• 労力に対し、自動テストの効果が部分的な事に失望• 同時にキャリア的にも悩み始め、モチベーションが⬇︎

32

成長の歩み - アーキテクト補佐

自分の手で道を切り開く
解決策• 勉強会＋本で新しい考えを取り入れる（DevOps等）• アメリカの求人票で世界のトレンドを把握する• お客様に提案、勉強会に行ってCTOに提案考えていたこと• 部分最適を幾らやっても全体最適にはならない• 本質的な価値は、顧客に届く価値 = スループット• スループットを最大化するものに注力しよう33

成長の歩み - アーキテクト

点からフローへの挑戦
業務内容• 開発環境の改善に着手• 継続的デリバリー環境の構築ぶつかった壁• 見積もれないタスクの数々• 度重なる予見外のトラブル（技術的、PJ的）• 関係者の拡大による調整業務の増大• 期待値を勝手に高くし、1人で頑張り潰れそうになる。
34

成長の歩み - アーキテクト

思いを形にするのは自分。でも抱え込まない
解決策• 素直に事情を伝え、調整してもらう。

• 自分がやるべきところに集中する• ベース部分は先取りして準備する考えていたこと• 提案を実現するのは自分。責任を持ってやりきる• ただ、一人相撲では解決しない• 目の前の問題解決だけにのめり込むと悪循環に陥る
35

成長要因の分析

内的要因
外的要因

内的要因

1. 時期にあった適切な自己目標の設定

2. 自分にあった勉強方法の確立
3. ブレない、曲げない、諦めない

38

外的要因

1. 必要なのはスポンサー

2. 見習う人達がいるということ
3. 挑戦してもいいという安心感

39

共通項

内発的動機よくある思い込み
高い給料やポジションがあれば、人はやる気を出す
失敗した時には責任を明確化することで、当事者意識を持たせる
仕事には緊張感が大事。プレッシャーを掛けて緊張感を持たせる

短期的な効果

業務中のみ
42

22%

業務時間は実は僅かしかない

240d 8h´= 22%
360d 24h44内発的動機こそが自律性と持続力の源泉
興味関心や、自分自身が楽しい嬉しいと思う事• 自分の• 感謝されるのが嬉しい• 新しいこと考えたり学んだりするのが楽しい• 自分で仕事をグリップ出来ていると実感すると楽しい

自ら長期的に業務以外でも取り組む
45内的要因の分析

内的要因

1. 時期にあった適切な自己目標の設定
2. 自分にあった勉強方法の確立

3. ブレない、曲げない、諦めない

47

目標設定の概念図?

?
中期目標（1~3年）
短期目標（~3ヶ月）

短期目標

短期目標

?

• 長期目標は決めない• 中期目標のを軸に複数の短期目標の設定• 目標は新しく設定するのではなく「改善」する

内的要因 – 1. 自己目標設定 – 長期目標

長期目標は敢えて明確化しない
 Planned Happen Stance Theory• 計画された偶然性理論• キャリア的に成功する人の多くはキャリア的跳躍がある 前提の崩壊• 産業構造の変化による業界自体の消滅• 技術革新によるスキルの陳腐化• 自らの嗜好の変化

積み上げ式の崩壊
49内的要因 – 1. 自己目標設定 – 中期目標

自らの志向と貢献度をリンクさせる志向ベースの目標

ワクワクする目標を立てる

貢献度で判別顧客や会社に本質的に貢献するのか？

事実ベースの情報を集める
顧客や上司に提案、FBを得る

検証50内的要因 – 1. 自己目標設定 – 中期目標

自分がどうなっていたいか
1. テスト自動化アーキテクトになる（今まで）自動化するために必要な業務を一気通貫で出来る様になり、自分の担当を持つ

2. DevOpsエンジニアになる（これから）引き続き、コアとなるテスト自動化のスキルを高めながら開発フロー全体を改善し、サービス価値向上に貢献する

51

内的要因 – 1. 自己目標設定 – 短期目標

中期目標を分解し、二軸で整理
重要度：高要素

中期目標

要素
緊急度：高必要要素

必要要素

必要要素

緊急度：低要素
重要度：低52

内的要因 – 1. 自己目標設定 – 短期目標

終了条件が明確にして達成感を得る
1. テスト自動化アーキテクト• ProgateやDotinstallの◯◯の講座を終わらせる• LinuxでWebサーバーを立て、WordPressを動かす• テストの概念を根拠を持って説明出来る様にJSTQBを取る

2. DevOpsエンジニア• DevOpsやAgileの概念を理解するために1冊ずつ読む• Ansibleで簡単な開発環境（WEB+DB）を作成する• 開発側を理解するためにチュートリアルでサービスを作る
53

内的要因 – 1. 自己目標設定 – 改善

状況の変化に合わせて随時目標を変更

❌

非連続

◯

連続的な変化

「改善」
54

内的要因

1. 時期にあった適切な自己目標の設定

2. 自分にあった勉強方法の確立
3. ブレない、曲げない、諦めない55

内的要因 – 2. 勉強方法の確立

自分のことを理解する
モチベーション
• 目標とその理由が必要

アレンジ• やらされ感もNG

理解の仕方• 全体像が見えないと理解度⬇︎

全体理解• 並列しての勉強は集中度⬇︎

達成感

56

内的要因 – 2. 勉強方法の確立 – 具体的な勉強法

段階別に分類し、個別に対策
概要

基礎応用

• ネット情報を中心に勉強• どういった技術・スキルか他の技術や思想との関連を把握• 薄いが全体を理解出来る本を一冊• dotinstallやprogateなど、サイトで学習• 本格的な本を実際に手を動かして勉強• 関連技術もさらう感じで勉強
57

Linuxの場合

sed & awk
58

内的要因

1. 時期にあった適切な自己目標の設定

2. 自分にあった勉強方法の確立

3. ブレない、曲げない、諦めない59

内的要因 – 3. 一度決めたら、ブレない。曲げない。諦めない

無理をしない、でも粘り強く愚直にやる 自分と合わない目標・考えや勉強法は根性では乗り越えられないと知る 完璧な環境なんてない
諦めずに少しでも近づけていく 凄そうな人も自分も、どちらも人間決めたら、後は愚直にやるのみ60

55 + 20 =75 冊

まとめ

ワクワク＋貢献出来る目標を自分にあった勉強法で達成に邁進する外的要因の分析

外的要因

1. 必要なのはスポンサー
2. 見習う人達がいるということ

3. 挑戦してもいいという安心感

64

外的要因 – 1. 必要なのはスポンサー

理解し、チャンスも与えられる人が必要◯ 悩みや希望を聞いてあげる◎

悩みの解決や希望に繋がる環境を与える

1. 自律的に動ける環境

1. 多様な環境
65

1. 自律的に動ける環境
1. 多様な環境

外的要因 – 1-1. 自律的に動ける環境

都合よくはいかない
あれやれ
これやれ

やらされ感

つべこべ
言うな

なんでやるの？

頭使って自分から動けどこまでやっていいの？

67外的要因 – 1-1. 自律的に動ける環境

判断軸と試行錯誤の場を与える
自律的に動ける環境
これは自分の仕事だ！

全体目標・目的
環境・裁量
それなら次はこれをやろう！

68

1. 自律的に動ける環境

1. 多様な環境

外的要因 – 1-2. 多様な環境狙った様に成長するわけではない
体験・暗黙知ABCDが必要
DをやらそうDって何？
必要なの？

何がうれしいの？

こうするといいよ！

多様な環境 → 暗黙知の共有
なるほど！

70

確かに！

外的要因 – 2. 見習う人達がいるということ

今まで経験した環境
1. 自動化案件★： 他部署と関連• 大手 ★
• WEB

2. QA業務 ★
• 設計・実行• 案件管理3. プリセールス ★
4. 全社イベント
5. 採用 ★
71

外的要因

1. 必要なのはスポンサー

2. 見習う人達がいるということ
3. 挑戦してもいいという安心感

72

外的要因 – 2. 見習う人達がいるということ

若手は先輩達の背中を見て育つ
そんなやり方が！
そんな考えが！

異質な現場を複数体験させる
73

外的要因 – 2. 見習う人達がいるということ

今までの出会い
Seleniumデザインパターン 監修など
営業・案件管理・アーキテクト何でもこなす
直接の上司で仕事の根本から教わる

システムテスト自動化 標準ガイド 監修
実践Appium 監訳など 他多数
強いプロ意識＋勉強の鬼
コアテクノロジーBU G2 グループ長
理論的かつ情緒的。強いエンパワーメント

74

外的要因

1. 必要なのはスポンサー

2. 見習う人達がいるということ

3. 挑戦してもいいという安心感

75

外的要因 – 3. 挑戦してもいいという安心感

若手はいつも不安
そんなことも出来ないのかだからお前は言わん
こっちゃない行動・結果

次は失敗しない様にしよう

今まで通りのやり方をしよう

76

外的要因 – 3. 挑戦してもいいという安心感

周りのこともよく見ています。
前と言ってることが違う
あんな風になりたい！

そうなるのか止めとこう77

外的要因 – 3.挑戦してもいいという安心感

安心感こそ最高のガソリン
安心感の熟成何故？

疑問

かくかくしかじかどうでしょう？

提案いいね！面白い！

助けて下さい窮地

仕方ないなぁ78

まとめ

判断軸となる全体目標と目的を与えた上で、自律的に動ける多様な環境を用意し、見守る

最後に

本公演のポイント• 成長の流れ• モチベーションの維持• 具体的な勉強法• 助けられた経験・良かった環境

81新しい挑戦をされる皆様
ご自身の中でワクワクすることは？

マネージャーの皆様
部下は、ふとした言葉に影響を受けていますご清聴ありがとうございました