SlideShare uma empresa Scribd logo
1 de 47
JSUG
API時代の仮説検証開発の提言とツール
~API編~
株式会社ビッグツリーテクノロジー&コンサルティング
SI事業部 アーキテクチャG
音森 一輝
2Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
自己紹介
3Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
音森 一輝
(株)ビッグツリーテクノロジー&コンサルティング
(BTC)
新卒2年目
早稲田でくまさんを作る
およいで
うたって
おさけをのむ
自己紹介
4Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
従来の開発
5Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
従来の開発
開発あるある
要件定義 設計 開発 テスト 運用・保守
クライアント
ベンダ
試しに画面
レイアウト
作ってみま
した!
ここの
イメージは
ちょっと
違う…
こんな感じ
で設計して
みました!
ユーザ属性
が1つ抜け
てた…
実装の都合
上、設計を
変えさせて
ください!
検証環境で
触ってみた
いんだけど
バグ要望バ
グバグ要望
要望バグバ
グバグ要望
序盤で漏れなく検討する必要がある
6Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
まず
プロジェクトのあるある
7Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
それから
ちょっと未来の開発手法
8Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
実例
9Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
2つの粒度のプロジェクト
実例
粗 粒度 細
10Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
実例1
11Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
プロジェクト概要
• 半年間設計/プロト開発、一年間本開発
• 複数ベンダのAPIと連携する
• フロントとAPIの開発
実例1
フロント
API
API ベンダA ベンダB
データ
細かいところまで仕様が決定している
12Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
並行開発 システムの特徴 既存
なし 設計書 あり
本番も叩ける 環境 検証も叩けない
読める ソースコード 読めない
実例1
ベンダA ベンダB
全く性質の異なるAPI
13Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
設計書
環境
ソースコード
実例1
コミュニケーションレイヤ
クライアント(APIを使う人)
ベンダ(APIを作る人)
どの層で議論するかは重要
14Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
ベンダA 「返戻値で成功したか判定してください」
私 「なんだか挙動がおかしいです」
ベンダA 「返戻の形式を変えてしまいました」
私 「修正が必要ですね…」
実例1
ベンダA・並行開発
実環境は叩けるけど、変更が生じる
15Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
私(APIを使う人)
ベンダA・並行開発(APIを作る人)
実例1
何が起こったか?
設計書
環境
ソースコード
環境を叩きな
がら開発を進
めていた
ソースを変
更して環境
に反映した
環境から返戻さ
れる値が異なる
ことに気づいた
16Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
設計書
環境
ソースコード
私(APIを使う人)
ベンダA・並行開発(APIを作る人)
実例1
どうすべきだったか?
ソースを変更し
たので確認して
おいてください
環境に反映した
ので確認してお
いてください
設計書に反映し
たので確認して
おいてください
変更について即時伝達すべき
17Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
ベンダB・既存
ベンダB 「設計書を見て開発してください」
私 「検証環境はいつから叩けますか?」
ベンダB 「8月からでお願いします」
私 「総合テスト(9月)直前ですね…」
実例1
設計書はあるけど、正しいかわからない
18Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
設計書
環境
ソースコード
私(APIを使う人)
ベンダB・既存(APIを作る人)
実例1
何が起こったか?
設計書を見な
がら開発を進
めていた 環境を叩き
ながら開発
したかった
ソースコード
と設計書の乖
離があった
連携テスト
で確認
19Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
設計書
環境
ソースコード
私(APIを使う人)
実例1
どうすべきだったか?
ソース
コードを
公開
環境を
用意して
公開
設計書の
整備を
確実に
設計書の信頼性を担保すべき
ベンダB・既存(APIを作る人)
20Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
実例2
21Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
実例2
コミュニケーション齟齬の危険性
• クライアントが遠方
• 対面で説明できない
• 要望はなんとなくしか決まっていない
• API仕様はBTCが検討
クライアント
22Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
実例からの課題点
仕様の粒度を細かくしたいクライアント
ベンダA
ベンダB
変更について即時伝達したい
設計書の信頼性を担保したい
粒度が荒い
粒度が細かい
ちょっと未来の開発手法
23Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
仮説検証開発
24Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
仮説検証開発
仮説
仮実装
入出力設計検証
仮説検証とは?
• クライアントの要望が正しいかどうか
• 仕様が正しいかどうか
• 動いてるシステムが正しいかどうか
正しいものに近付ける
万能ソリューション
25Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
仮説検証開発
仮説
仮実装
入出力設計検証
使う人
作る人
どんなシステム
にしたいか
イメージはあり
ますか?
完璧には具
体化できて
ない…
26Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
仮説検証開発
仮説
仮実装
入出力設計検証 使う人作る人
試しにAPI
仕様書を
作ってみま
した!
この構造だ
とここの
項目が足り
ない…
27Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
仮説検証開発
仮説
仮実装
入出力設計検証
使う人
作る人
項目を加え
て実装しま
した!
実際に叩い
てみても
いいかな?
28Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
仮説検証開発
仮説
仮実装
入出力設計検証 使う人 作る人
検証環境にあ
げました!
おお!
イメージ
どおり!
仮説検証を繰り返し
齟齬をなくしていく手法
29Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
仮説検証開発を適用
仕様の粒度を細かくしたいクライアント
ベンダA
ベンダB
変更について即時伝達したい
設計書の信頼性を担保したい
①早い段階で検証する
③ドキュメントの乖離をなくす
②検証のサイクルを回し続ける
30Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
それらを支援するツール
あります
31Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
仮説検証開発を適用
①早い段階で検証するクライアント
• REST APIを記述するためのオープンフレームワーク
• ymlファイルで管理(JSONも使用可)
• Swagger EditorでSpecificationを編集
• Specificationからコードを自動生成
Swagger
32Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
設計書
環境
ソースコード
遠方のクライアント(APIを使う人)
仮説検証開発を適用
何をしたか?
Swaggerを使
用してエンド
ポイントや入
出力を整理
仕様が荒い段階から仮説検証を繰り返す
BTC(APIを作る人)
実際に叩いて入
出力を検討
開発
デプロイ
検証
33Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
Swagger デモ
34Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
• メリット
 実際に叩ける
 ymlファイルをgitで構成管理できる
• デメリット
 ソースコードと連携していない
 リビジョンへの対応が必要
Swagger
35Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
仮説検証開発を適用
②検証のサイクルを回し続けるベンダA
• Springのソースコードから仕様書を自動生成できる
ツール
• アノテーションを付与して設定
• Swagger UIでクライアント画面を作成
• CIツールと組み合わせることで即時通知可能
SpringFox
36Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
設計書
環境
ソースコード
私(APIを使う人)
ベンダA・並行開発(APIを作る人)
仮説検証開発を適用
どうすべきだったか?(再掲)
ソースを変更し
たので確認して
おいてください
環境に反映した
ので確認してお
いてください
設計書に反映し
たので確認して
おいてください
変更について即時伝達すべき
37Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
SpringFox デモ
38Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
SpringFox
• メリット
 ソースコードと結びついた仕様書を自動生成
• デメリット
 動くコードかは保証できない
39Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
仮説検証開発を適用
③ドキュメントの乖離をなくすベンダB
• Springのテストコードから仕様書を自動生成できる
ツール
• テストに成功した結果をドキュメントとして出力
Spring
REST Docs
40Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
設計書
環境
ソースコード
私(APIを使う人)
仮説検証開発を適用
どうすべきだったか?(再掲)
ソース
コードを
公開
環境を
用意して
公開
設計書の
整備を
確実に
設計書の信頼性を担保すべき
ベンダB・既存(APIを作る人)
41Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
Spring REST Docs デモ
42Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
Spring REST Docs
• メリット
 テストに成功した結果なので信頼性が担保
• デメリット
 設計ドキュメントには向いていない
43Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
設計書
環境
ソースコード
まとめ
3つのツールの関係
クライアント(APIを使う人)
Swagger
SpringFox
Spring
REST Docs
ベンダ(APIを作る人)
ソースコードから
ドキュメントを生成
モックやスタブの
生成が可能
ローカルでも
動かせる
実行すると
画面から
叩ける
テストコードから
ドキュメントを生成
44Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
まとめ
Swagger SpringFox
Spring
REST Docs
実装コスト
※ 小 中 大
即時性 × ○ ○
信頼性 × △ ○
※仕様の粒度が荒い場合
3つのツールを比較
45Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
まとめ
• 仕様が曖昧な、正解がわからない開発には
仮説検証開発
• 設計書、環境、ソースコードの各レイヤで
最大限効果を発揮するツールを選択
• プロジェクトのリソース(工数)や規模、
スピード感とのバランスを保つことも重要
46Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
仮説検証開発という仮説
47Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved.
ありがとうございました

Mais conteúdo relacionado

Mais procurados

リクルートにおけるデータのインフラ化への取組
リクルートにおけるデータのインフラ化への取組リクルートにおけるデータのインフラ化への取組
リクルートにおけるデータのインフラ化への取組Recruit Technologies
 
Ques12「AIのテスト~誤検知と検出漏れ~」
Ques12「AIのテスト~誤検知と検出漏れ~」Ques12「AIのテスト~誤検知と検出漏れ~」
Ques12「AIのテスト~誤検知と検出漏れ~」hirokazuoishi
 
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例リクルートにおけるマルチモーダル Deep Learning Web API 開発事例
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例Recruit Technologies
 
3万人が利用するリクルートのワイヤレス環境 ~リアクティブからプロアクティブへ~
3万人が利用するリクルートのワイヤレス環境 ~リアクティブからプロアクティブへ~3万人が利用するリクルートのワイヤレス環境 ~リアクティブからプロアクティブへ~
3万人が利用するリクルートのワイヤレス環境 ~リアクティブからプロアクティブへ~Recruit Technologies
 
リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介Recruit Technologies
 
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアルリクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアルRecruit Technologies
 
Case study of DevOps for Hadoop in Recruit.
Case study of DevOps for Hadoop in Recruit.Case study of DevOps for Hadoop in Recruit.
Case study of DevOps for Hadoop in Recruit.Recruit Technologies
 
[Track4-3] AI・ディープラーニングを駆使して、「G検定合格者アンケートのフリーコメント欄」を分析してみた
[Track4-3] AI・ディープラーニングを駆使して、「G検定合格者アンケートのフリーコメント欄」を分析してみた[Track4-3] AI・ディープラーニングを駆使して、「G検定合格者アンケートのフリーコメント欄」を分析してみた
[Track4-3] AI・ディープラーニングを駆使して、「G検定合格者アンケートのフリーコメント欄」を分析してみたDeep Learning Lab(ディープラーニング・ラボ)
 
機械学習システムの品質保証に向けた課題とコンソーシアム活動
機械学習システムの品質保証に向けた課題とコンソーシアム活動機械学習システムの品質保証に向けた課題とコンソーシアム活動
機械学習システムの品質保証に向けた課題とコンソーシアム活動Hideto Ogawa
 
機械学習品質管理・保証の動向と取り組み
機械学習品質管理・保証の動向と取り組み機械学習品質管理・保証の動向と取り組み
機械学習品質管理・保証の動向と取り組みShintaro Fukushima
 
オーバーエンジニアリングって何? #devsumi #devsumiA
オーバーエンジニアリングって何? #devsumi #devsumiAオーバーエンジニアリングって何? #devsumi #devsumiA
オーバーエンジニアリングって何? #devsumi #devsumiAOre Product
 
求職サービスの検索ログを用いたクエリのカテゴリ推定とその活用事例の紹介
求職サービスの検索ログを用いたクエリのカテゴリ推定とその活用事例の紹介求職サービスの検索ログを用いたクエリのカテゴリ推定とその活用事例の紹介
求職サービスの検索ログを用いたクエリのカテゴリ推定とその活用事例の紹介Recruit Technologies
 
UXDの職能要件とキャリアパスについて
UXDの職能要件とキャリアパスについてUXDの職能要件とキャリアパスについて
UXDの職能要件とキャリアパスについてRecruit Technologies
 
リクルートにおけるセキュリティ施策方針とCSIRT組織運営のポイント
リクルートにおけるセキュリティ施策方針とCSIRT組織運営のポイントリクルートにおけるセキュリティ施策方針とCSIRT組織運営のポイント
リクルートにおけるセキュリティ施策方針とCSIRT組織運営のポイントRecruit Technologies
 
[GTC 2018] GTCテクニカルセッション_0913 Ridge-i発表資料
[GTC 2018] GTCテクニカルセッション_0913 Ridge-i発表資料[GTC 2018] GTCテクニカルセッション_0913 Ridge-i発表資料
[GTC 2018] GTCテクニカルセッション_0913 Ridge-i発表資料Ridge-i
 
リクルートにおける画像解析事例紹介
リクルートにおける画像解析事例紹介リクルートにおける画像解析事例紹介
リクルートにおける画像解析事例紹介Recruit Technologies
 
俺プロ オーバーエンジニアリング
俺プロ オーバーエンジニアリング俺プロ オーバーエンジニアリング
俺プロ オーバーエンジニアリングOre Product
 
リクルート式ビッグデータ活用術
リクルート式ビッグデータ活用術リクルート式ビッグデータ活用術
リクルート式ビッグデータ活用術Recruit Technologies
 

Mais procurados (20)

リクルートにおけるデータのインフラ化への取組
リクルートにおけるデータのインフラ化への取組リクルートにおけるデータのインフラ化への取組
リクルートにおけるデータのインフラ化への取組
 
Ques12「AIのテスト~誤検知と検出漏れ~」
Ques12「AIのテスト~誤検知と検出漏れ~」Ques12「AIのテスト~誤検知と検出漏れ~」
Ques12「AIのテスト~誤検知と検出漏れ~」
 
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例リクルートにおけるマルチモーダル Deep Learning Web API 開発事例
リクルートにおけるマルチモーダル Deep Learning Web API 開発事例
 
3万人が利用するリクルートのワイヤレス環境 ~リアクティブからプロアクティブへ~
3万人が利用するリクルートのワイヤレス環境 ~リアクティブからプロアクティブへ~3万人が利用するリクルートのワイヤレス環境 ~リアクティブからプロアクティブへ~
3万人が利用するリクルートのワイヤレス環境 ~リアクティブからプロアクティブへ~
 
リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介リクルート式 自然言語処理技術の適応事例紹介
リクルート式 自然言語処理技術の適応事例紹介
 
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアルリクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
リクルートテクノロジーズが語る 企業における、「AI/ディープラーニング」活用のリアル
 
Case study of DevOps for Hadoop in Recruit.
Case study of DevOps for Hadoop in Recruit.Case study of DevOps for Hadoop in Recruit.
Case study of DevOps for Hadoop in Recruit.
 
[Track4-3] AI・ディープラーニングを駆使して、「G検定合格者アンケートのフリーコメント欄」を分析してみた
[Track4-3] AI・ディープラーニングを駆使して、「G検定合格者アンケートのフリーコメント欄」を分析してみた[Track4-3] AI・ディープラーニングを駆使して、「G検定合格者アンケートのフリーコメント欄」を分析してみた
[Track4-3] AI・ディープラーニングを駆使して、「G検定合格者アンケートのフリーコメント欄」を分析してみた
 
機械学習システムの品質保証に向けた課題とコンソーシアム活動
機械学習システムの品質保証に向けた課題とコンソーシアム活動機械学習システムの品質保証に向けた課題とコンソーシアム活動
機械学習システムの品質保証に向けた課題とコンソーシアム活動
 
機械学習品質管理・保証の動向と取り組み
機械学習品質管理・保証の動向と取り組み機械学習品質管理・保証の動向と取り組み
機械学習品質管理・保証の動向と取り組み
 
オーバーエンジニアリングって何? #devsumi #devsumiA
オーバーエンジニアリングって何? #devsumi #devsumiAオーバーエンジニアリングって何? #devsumi #devsumiA
オーバーエンジニアリングって何? #devsumi #devsumiA
 
求職サービスの検索ログを用いたクエリのカテゴリ推定とその活用事例の紹介
求職サービスの検索ログを用いたクエリのカテゴリ推定とその活用事例の紹介求職サービスの検索ログを用いたクエリのカテゴリ推定とその活用事例の紹介
求職サービスの検索ログを用いたクエリのカテゴリ推定とその活用事例の紹介
 
UXDの職能要件とキャリアパスについて
UXDの職能要件とキャリアパスについてUXDの職能要件とキャリアパスについて
UXDの職能要件とキャリアパスについて
 
リクルートにおけるセキュリティ施策方針とCSIRT組織運営のポイント
リクルートにおけるセキュリティ施策方針とCSIRT組織運営のポイントリクルートにおけるセキュリティ施策方針とCSIRT組織運営のポイント
リクルートにおけるセキュリティ施策方針とCSIRT組織運営のポイント
 
[GTC 2018] GTCテクニカルセッション_0913 Ridge-i発表資料
[GTC 2018] GTCテクニカルセッション_0913 Ridge-i発表資料[GTC 2018] GTCテクニカルセッション_0913 Ridge-i発表資料
[GTC 2018] GTCテクニカルセッション_0913 Ridge-i発表資料
 
リクルートにおける画像解析事例紹介
リクルートにおける画像解析事例紹介リクルートにおける画像解析事例紹介
リクルートにおける画像解析事例紹介
 
LT(自由)
LT(自由)LT(自由)
LT(自由)
 
[Track1-5] 製造業における最新AI適用事例のご紹介
[Track1-5] 製造業における最新AI適用事例のご紹介[Track1-5] 製造業における最新AI適用事例のご紹介
[Track1-5] 製造業における最新AI適用事例のご紹介
 
俺プロ オーバーエンジニアリング
俺プロ オーバーエンジニアリング俺プロ オーバーエンジニアリング
俺プロ オーバーエンジニアリング
 
リクルート式ビッグデータ活用術
リクルート式ビッグデータ活用術リクルート式ビッグデータ活用術
リクルート式ビッグデータ活用術
 

Semelhante a JSUG 2018 BTC

私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
私たち企業がアクセシビリティに取り組む理由(2018年) #accfesYahoo!デベロッパーネットワーク
 
ISID IIoT Forum_180628
ISID  IIoT Forum_180628ISID  IIoT Forum_180628
ISID IIoT Forum_180628知礼 八子
 
2018年12月15日 AITC女子会 顔認識を活用したセミナー参加者の満足度分析
2018年12月15日 AITC女子会 顔認識を活用したセミナー参加者の満足度分析2018年12月15日 AITC女子会 顔認識を活用したセミナー参加者の満足度分析
2018年12月15日 AITC女子会 顔認識を活用したセミナー参加者の満足度分析aitc_jp
 
ソフトウェアジャパン2018 ITフォーラムセッション(3)
ソフトウェアジャパン2018 ITフォーラムセッション(3)ソフトウェアジャパン2018 ITフォーラムセッション(3)
ソフトウェアジャパン2018 ITフォーラムセッション(3)aitc_jp
 
Struggling with BIGDATA -リクルートおけるデータサイエンス/エンジニアリング-
Struggling with BIGDATA -リクルートおけるデータサイエンス/エンジニアリング-Struggling with BIGDATA -リクルートおけるデータサイエンス/エンジニアリング-
Struggling with BIGDATA -リクルートおけるデータサイエンス/エンジニアリング-Recruit Technologies
 
誰でもできるGoogleアシスタント開発
誰でもできるGoogleアシスタント開発誰でもできるGoogleアシスタント開発
誰でもできるGoogleアシスタント開発Namito Satoyama
 
モデリングの彼方に未来を見た
モデリングの彼方に未来を見たモデリングの彼方に未来を見た
モデリングの彼方に未来を見たHagimoto Junzo
 
AIビジネス推進人材育成プログラムのご紹介
AIビジネス推進人材育成プログラムのご紹介AIビジネス推進人材育成プログラムのご紹介
AIビジネス推進人材育成プログラムのご紹介munjapan
 
Api meet up online#6 session1 ginco
Api meet up online#6 session1 gincoApi meet up online#6 session1 ginco
Api meet up online#6 session1 gincoNihei Tsukasa
 
GitLab で実現する Ansible コードの管理
GitLab で実現する Ansible コードの管理GitLab で実現する Ansible コードの管理
GitLab で実現する Ansible コードの管理裕貴 荒井
 
Wg for ai_dev_ops_20180713
Wg for ai_dev_ops_20180713Wg for ai_dev_ops_20180713
Wg for ai_dev_ops_20180713Yutaka Terasawa
 
塹壕にいるすべての同朋へ
塹壕にいるすべての同朋へ塹壕にいるすべての同朋へ
塹壕にいるすべての同朋へtoshihiro ichitani
 
Amazon SageMakerを使った機械学習モデル管理運用システム構築事例
Amazon SageMakerを使った機械学習モデル管理運用システム構築事例Amazon SageMakerを使った機械学習モデル管理運用システム構築事例
Amazon SageMakerを使った機械学習モデル管理運用システム構築事例Seongduk Cheon
 
AITCオープンラボ 2018年5月度(2)
AITCオープンラボ 2018年5月度(2)AITCオープンラボ 2018年5月度(2)
AITCオープンラボ 2018年5月度(2)aitc_jp
 
AI開発支援サービス
AI開発支援サービスAI開発支援サービス
AI開発支援サービスmunjapan
 

Semelhante a JSUG 2018 BTC (20)

私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
私たち企業がアクセシビリティに取り組む理由(2018年) #accfes
 
React vtecx20171025
React vtecx20171025React vtecx20171025
React vtecx20171025
 
ISID IIoT Forum_180628
ISID  IIoT Forum_180628ISID  IIoT Forum_180628
ISID IIoT Forum_180628
 
React vtecx20171129
React vtecx20171129React vtecx20171129
React vtecx20171129
 
Googleアシスタントアプリ実際のところ
Googleアシスタントアプリ実際のところ Googleアシスタントアプリ実際のところ
Googleアシスタントアプリ実際のところ
 
Smfl20201001
Smfl20201001Smfl20201001
Smfl20201001
 
2018年12月15日 AITC女子会 顔認識を活用したセミナー参加者の満足度分析
2018年12月15日 AITC女子会 顔認識を活用したセミナー参加者の満足度分析2018年12月15日 AITC女子会 顔認識を活用したセミナー参加者の満足度分析
2018年12月15日 AITC女子会 顔認識を活用したセミナー参加者の満足度分析
 
ソフトウェアジャパン2018 ITフォーラムセッション(3)
ソフトウェアジャパン2018 ITフォーラムセッション(3)ソフトウェアジャパン2018 ITフォーラムセッション(3)
ソフトウェアジャパン2018 ITフォーラムセッション(3)
 
Struggling with BIGDATA -リクルートおけるデータサイエンス/エンジニアリング-
Struggling with BIGDATA -リクルートおけるデータサイエンス/エンジニアリング-Struggling with BIGDATA -リクルートおけるデータサイエンス/エンジニアリング-
Struggling with BIGDATA -リクルートおけるデータサイエンス/エンジニアリング-
 
誰でもできるGoogleアシスタント開発
誰でもできるGoogleアシスタント開発誰でもできるGoogleアシスタント開発
誰でもできるGoogleアシスタント開発
 
モデリングの彼方に未来を見た
モデリングの彼方に未来を見たモデリングの彼方に未来を見た
モデリングの彼方に未来を見た
 
AIビジネス推進人材育成プログラムのご紹介
AIビジネス推進人材育成プログラムのご紹介AIビジネス推進人材育成プログラムのご紹介
AIビジネス推進人材育成プログラムのご紹介
 
Api meet up online#6 session1 ginco
Api meet up online#6 session1 gincoApi meet up online#6 session1 ginco
Api meet up online#6 session1 ginco
 
GitLab で実現する Ansible コードの管理
GitLab で実現する Ansible コードの管理GitLab で実現する Ansible コードの管理
GitLab で実現する Ansible コードの管理
 
Wg for ai_dev_ops_20180713
Wg for ai_dev_ops_20180713Wg for ai_dev_ops_20180713
Wg for ai_dev_ops_20180713
 
アプリのプロダクトマネージャーからみるScrum開発
アプリのプロダクトマネージャーからみるScrum開発アプリのプロダクトマネージャーからみるScrum開発
アプリのプロダクトマネージャーからみるScrum開発
 
塹壕にいるすべての同朋へ
塹壕にいるすべての同朋へ塹壕にいるすべての同朋へ
塹壕にいるすべての同朋へ
 
Amazon SageMakerを使った機械学習モデル管理運用システム構築事例
Amazon SageMakerを使った機械学習モデル管理運用システム構築事例Amazon SageMakerを使った機械学習モデル管理運用システム構築事例
Amazon SageMakerを使った機械学習モデル管理運用システム構築事例
 
AITCオープンラボ 2018年5月度(2)
AITCオープンラボ 2018年5月度(2)AITCオープンラボ 2018年5月度(2)
AITCオープンラボ 2018年5月度(2)
 
AI開発支援サービス
AI開発支援サービスAI開発支援サービス
AI開発支援サービス
 

JSUG 2018 BTC

  • 2. 2Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 自己紹介
  • 3. 3Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 音森 一輝 (株)ビッグツリーテクノロジー&コンサルティング (BTC) 新卒2年目 早稲田でくまさんを作る およいで うたって おさけをのむ 自己紹介
  • 4. 4Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 従来の開発
  • 5. 5Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 従来の開発 開発あるある 要件定義 設計 開発 テスト 運用・保守 クライアント ベンダ 試しに画面 レイアウト 作ってみま した! ここの イメージは ちょっと 違う… こんな感じ で設計して みました! ユーザ属性 が1つ抜け てた… 実装の都合 上、設計を 変えさせて ください! 検証環境で 触ってみた いんだけど バグ要望バ グバグ要望 要望バグバ グバグ要望 序盤で漏れなく検討する必要がある
  • 6. 6Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. まず プロジェクトのあるある
  • 7. 7Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. それから ちょっと未来の開発手法
  • 8. 8Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 実例
  • 9. 9Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 2つの粒度のプロジェクト 実例 粗 粒度 細
  • 10. 10Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 実例1
  • 11. 11Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. プロジェクト概要 • 半年間設計/プロト開発、一年間本開発 • 複数ベンダのAPIと連携する • フロントとAPIの開発 実例1 フロント API API ベンダA ベンダB データ 細かいところまで仕様が決定している
  • 12. 12Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 並行開発 システムの特徴 既存 なし 設計書 あり 本番も叩ける 環境 検証も叩けない 読める ソースコード 読めない 実例1 ベンダA ベンダB 全く性質の異なるAPI
  • 13. 13Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 設計書 環境 ソースコード 実例1 コミュニケーションレイヤ クライアント(APIを使う人) ベンダ(APIを作る人) どの層で議論するかは重要
  • 14. 14Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. ベンダA 「返戻値で成功したか判定してください」 私 「なんだか挙動がおかしいです」 ベンダA 「返戻の形式を変えてしまいました」 私 「修正が必要ですね…」 実例1 ベンダA・並行開発 実環境は叩けるけど、変更が生じる
  • 15. 15Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 私(APIを使う人) ベンダA・並行開発(APIを作る人) 実例1 何が起こったか? 設計書 環境 ソースコード 環境を叩きな がら開発を進 めていた ソースを変 更して環境 に反映した 環境から返戻さ れる値が異なる ことに気づいた
  • 16. 16Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 設計書 環境 ソースコード 私(APIを使う人) ベンダA・並行開発(APIを作る人) 実例1 どうすべきだったか? ソースを変更し たので確認して おいてください 環境に反映した ので確認してお いてください 設計書に反映し たので確認して おいてください 変更について即時伝達すべき
  • 17. 17Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. ベンダB・既存 ベンダB 「設計書を見て開発してください」 私 「検証環境はいつから叩けますか?」 ベンダB 「8月からでお願いします」 私 「総合テスト(9月)直前ですね…」 実例1 設計書はあるけど、正しいかわからない
  • 18. 18Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 設計書 環境 ソースコード 私(APIを使う人) ベンダB・既存(APIを作る人) 実例1 何が起こったか? 設計書を見な がら開発を進 めていた 環境を叩き ながら開発 したかった ソースコード と設計書の乖 離があった 連携テスト で確認
  • 19. 19Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 設計書 環境 ソースコード 私(APIを使う人) 実例1 どうすべきだったか? ソース コードを 公開 環境を 用意して 公開 設計書の 整備を 確実に 設計書の信頼性を担保すべき ベンダB・既存(APIを作る人)
  • 20. 20Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 実例2
  • 21. 21Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 実例2 コミュニケーション齟齬の危険性 • クライアントが遠方 • 対面で説明できない • 要望はなんとなくしか決まっていない • API仕様はBTCが検討 クライアント
  • 22. 22Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 実例からの課題点 仕様の粒度を細かくしたいクライアント ベンダA ベンダB 変更について即時伝達したい 設計書の信頼性を担保したい 粒度が荒い 粒度が細かい ちょっと未来の開発手法
  • 23. 23Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 仮説検証開発
  • 24. 24Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 仮説検証開発 仮説 仮実装 入出力設計検証 仮説検証とは? • クライアントの要望が正しいかどうか • 仕様が正しいかどうか • 動いてるシステムが正しいかどうか 正しいものに近付ける 万能ソリューション
  • 25. 25Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 仮説検証開発 仮説 仮実装 入出力設計検証 使う人 作る人 どんなシステム にしたいか イメージはあり ますか? 完璧には具 体化できて ない…
  • 26. 26Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 仮説検証開発 仮説 仮実装 入出力設計検証 使う人作る人 試しにAPI 仕様書を 作ってみま した! この構造だ とここの 項目が足り ない…
  • 27. 27Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 仮説検証開発 仮説 仮実装 入出力設計検証 使う人 作る人 項目を加え て実装しま した! 実際に叩い てみても いいかな?
  • 28. 28Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 仮説検証開発 仮説 仮実装 入出力設計検証 使う人 作る人 検証環境にあ げました! おお! イメージ どおり! 仮説検証を繰り返し 齟齬をなくしていく手法
  • 29. 29Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 仮説検証開発を適用 仕様の粒度を細かくしたいクライアント ベンダA ベンダB 変更について即時伝達したい 設計書の信頼性を担保したい ①早い段階で検証する ③ドキュメントの乖離をなくす ②検証のサイクルを回し続ける
  • 30. 30Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. それらを支援するツール あります
  • 31. 31Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 仮説検証開発を適用 ①早い段階で検証するクライアント • REST APIを記述するためのオープンフレームワーク • ymlファイルで管理(JSONも使用可) • Swagger EditorでSpecificationを編集 • Specificationからコードを自動生成 Swagger
  • 32. 32Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 設計書 環境 ソースコード 遠方のクライアント(APIを使う人) 仮説検証開発を適用 何をしたか? Swaggerを使 用してエンド ポイントや入 出力を整理 仕様が荒い段階から仮説検証を繰り返す BTC(APIを作る人) 実際に叩いて入 出力を検討 開発 デプロイ 検証
  • 33. 33Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. Swagger デモ
  • 34. 34Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. • メリット  実際に叩ける  ymlファイルをgitで構成管理できる • デメリット  ソースコードと連携していない  リビジョンへの対応が必要 Swagger
  • 35. 35Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 仮説検証開発を適用 ②検証のサイクルを回し続けるベンダA • Springのソースコードから仕様書を自動生成できる ツール • アノテーションを付与して設定 • Swagger UIでクライアント画面を作成 • CIツールと組み合わせることで即時通知可能 SpringFox
  • 36. 36Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 設計書 環境 ソースコード 私(APIを使う人) ベンダA・並行開発(APIを作る人) 仮説検証開発を適用 どうすべきだったか?(再掲) ソースを変更し たので確認して おいてください 環境に反映した ので確認してお いてください 設計書に反映し たので確認して おいてください 変更について即時伝達すべき
  • 37. 37Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. SpringFox デモ
  • 38. 38Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. SpringFox • メリット  ソースコードと結びついた仕様書を自動生成 • デメリット  動くコードかは保証できない
  • 39. 39Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 仮説検証開発を適用 ③ドキュメントの乖離をなくすベンダB • Springのテストコードから仕様書を自動生成できる ツール • テストに成功した結果をドキュメントとして出力 Spring REST Docs
  • 40. 40Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 設計書 環境 ソースコード 私(APIを使う人) 仮説検証開発を適用 どうすべきだったか?(再掲) ソース コードを 公開 環境を 用意して 公開 設計書の 整備を 確実に 設計書の信頼性を担保すべき ベンダB・既存(APIを作る人)
  • 41. 41Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. Spring REST Docs デモ
  • 42. 42Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. Spring REST Docs • メリット  テストに成功した結果なので信頼性が担保 • デメリット  設計ドキュメントには向いていない
  • 43. 43Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 設計書 環境 ソースコード まとめ 3つのツールの関係 クライアント(APIを使う人) Swagger SpringFox Spring REST Docs ベンダ(APIを作る人) ソースコードから ドキュメントを生成 モックやスタブの 生成が可能 ローカルでも 動かせる 実行すると 画面から 叩ける テストコードから ドキュメントを生成
  • 44. 44Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. まとめ Swagger SpringFox Spring REST Docs 実装コスト ※ 小 中 大 即時性 × ○ ○ 信頼性 × △ ○ ※仕様の粒度が荒い場合 3つのツールを比較
  • 45. 45Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. まとめ • 仕様が曖昧な、正解がわからない開発には 仮説検証開発 • 設計書、環境、ソースコードの各レイヤで 最大限効果を発揮するツールを選択 • プロジェクトのリソース(工数)や規模、 スピード感とのバランスを保つことも重要
  • 46. 46Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. 仮説検証開発という仮説
  • 47. 47Copyright © 2018 Bigtree Technology&Consulting Ltd. All Rights Reserved. ありがとうございました