SlideShare a Scribd company logo
1 of 17
Download to read offline
カラーミーAPIドキュメントの今後
@Joe_noh / 第1回 EC事業部 TechMTG
本日のお話
● 話すこと
○ 現状と問題点
○ 解決案
○ 決めないといけないこと
● ゴール
○ 今後の構成についてカラーミー開発者の同意を得る
現状の開発手順
1. APIを実装する
2. interpolのYAMLを書く
3. APIをデプロイする
4. wwwにあるドキュメントを直す
5. wwwをデプロイする
name: show_shop
route: /v1/shop.json
method: GET
definitions:
- message_type: request
versions: ["1.0"]
path_params: {}
query_params: {}
schema: {}
examples: []
- message_type: response
versions: ["1.0"]
status_codes: ["200"]
schema:
type: object
properties:
shop:
type: object
課題と解決策
● 課題
○ ドキュメントを手で書いている
○ API開発とドキュメント更新とプルリク2回出している
○ デプロイも2回やっている
○ Interpolがもうメンテナンスされてない
● 解決策
○ Interpolをやめて別の仕様に則ってAPI仕様を書く
○ その仕様からドキュメントを自動生成する
APIドキュメント界隈
● 仕様たち
○ OpenAPI(Swagger)
○ API Blueprint
○ RAML
● どれがいいの?
○ できることはそれほど変わらない
■ ドキュメント生成
■ コード(クライアントライブラリ、モックサーバ)生成
○ 一番コミュニティが大きいOpenAPIに乗ります
OpenAPI
● 概要
○ RESTful APIを記述するための仕様
○ Swagger 2.0ベース
○ 3.0.0-RC.0が最新
● 周辺ツール
○ Swagger Editor
○ Swagger Codegen
○ Swagger UI
○ など
OpenAPIの例
:
paths:
/pets:
get:
description: ...
operationId: findPets
parameters:
- name: limit
in: query
description: ...
type: integer
format: int32
responses:
"200":
description: pet response
schema:
type: array
items:
$ref: '#/definitions/Pet'
default:
description: unexpected error
schema:
$ref: '#/definitions/Error'
swagger: "2.0"
info:
version: 1.0.0
title: Swagger Petstore
description: ...
termsOfService: http://swagger.io/terms/
contact:
name: Swagger API Team
email: foo@example.com
url: http://example.com
license:
name: MIT
url: http://github.com/.../LICENSE-MIT
host: petstore.swagger.io
basePath: /api
schemes:
- http
consumes:
- application/json
produces:
- application/json
:
その他の例は github.com/OAI/OpenAPI-Specification で
やるべきこと
● OpenAPIに則ってYAMLかJSONを書く
● HTTP越しに取得できるようにする
● ドキュメントに変換して公開する
OpenAPIに則ってYAMLかJSONを書く
● YAMLかJSONに仕様を書く
○ YAMLの方が書きやすいのでYAMLで
● 最終的に1ファイルにする
○ 書くときは複数に分割していてもOK
○ デプロイのときに1ファイルにまとめて公開する
■ https://github.com/Joe-noh/yaml_ref_resolver
○ 公開するファイルはJSON
■ YAMLを配っている人たちはあまりいない
HTTP越しに取得できるようにする
● なぜに
○ URL指定を前提としたツールが多い
○ 社外公開できるものは公開しておくと可能性が広がる
● どこで
○ 例えば https://api.shop-pro.jp/v1/spec.json
○ APIに自分を説明させる
ドキュメントに変換して公開する
● 既存ツールに頼る
○ swagger-ui
○ swagger-codegen
○ ReDoc
○ など
ドキュメント生成ツール
● swagger-ui
○ インタラクティブなドキュメントを生成する
■ http://developer.marvel.com/docs
■ https://usdigitalregistry.digitalgov.gov/
● swagger-codegen
○ モックサーバなどのコードを生成する
○ HTML用のテンプレが2つある
ドキュメント生成ツール
● ReDoc
○ 動的にドキュメントを描画するAngularアプリケーション
○ カスタマイズはまだあまりできない
■ ロードマップには入っている
■ 将来的にある程度できるようになりそう
○ 利用例
■ https://rebilly.github.io/RebillyAPI/
■ https://docs.docker.com/engine/api/v1.26/
まずはこれでいいんじゃないか感があります
まずは ReDoc でいいんじゃないか感
● 工数は抑えたい
● ちょっとならカスタマイズできそう
○ ロゴと色をいじるくらい
○ どうしても満足できないときは自作も視野に入れる
■ 突き詰めるとJSONを取ってきてテンプレに当てはめるだけ
● 他のツールへ乗り換えが難しくない
○ OpenAPIのYAMLは書き直さなくていい
クライアント
図
カラーミーAPI
New →
② /v1/spec.jsonを取得① ReDocなど含んだ
HTML一式を取得
現状 → 今後
1. APIを実装する
2. interpolのYAMLを書く
3. APIをデプロイする
4. wwwにあるドキュメントを直す
5. wwwをデプロイする
1. APIを実装する
2. OpenAPIのYAMLを書く
3. APIをデプロイする
→ spec.jsonが更新される
→ ドキュメントも更新される
決めないといけないこと
● リポジトリの名前
○ ReDocを含んだHTML一式を管理する場所
● OpenAPI JSONのURL
○ https://api.shop-pro.jp/v1/spec.json
○ https://api.shop-pro.jp/v1/swagger.json
○ https://api.shop-pro.jp/v1/openapi.json
● 新ドキュメントのURL
○ https://shop-pro.jp/?mode=api_interface
○ https://api.shop-pro.jp/v1/docs
○ https://api-doc.shop-pro.jp/v1

More Related Content

Viewers also liked

アジャイルアンチパターン 〜私がアジャイルの1周目で学んだこととXPの次の10年〜
アジャイルアンチパターン 〜私がアジャイルの1周目で学んだこととXPの次の10年〜アジャイルアンチパターン 〜私がアジャイルの1周目で学んだこととXPの次の10年〜
アジャイルアンチパターン 〜私がアジャイルの1周目で学んだこととXPの次の10年〜
Fumihiko Kinoshita
 

Viewers also liked (19)

pixivのインフラになって2ヶ月がたった - NSEG feat. 高専カンファレンス
pixivのインフラになって2ヶ月がたった - NSEG feat. 高専カンファレンスpixivのインフラになって2ヶ月がたった - NSEG feat. 高専カンファレンス
pixivのインフラになって2ヶ月がたった - NSEG feat. 高専カンファレンス
 
Railsアプリのモジュールはどこに置くべきか問題 (公開版)
Railsアプリのモジュールはどこに置くべきか問題 (公開版)Railsアプリのモジュールはどこに置くべきか問題 (公開版)
Railsアプリのモジュールはどこに置くべきか問題 (公開版)
 
Vue.jsコンポーネントのススメ
Vue.jsコンポーネントのススメVue.jsコンポーネントのススメ
Vue.jsコンポーネントのススメ
 
企業向けクラウドサービスの開発・運用 悩みどころのパターンと対策
企業向けクラウドサービスの開発・運用 悩みどころのパターンと対策企業向けクラウドサービスの開発・運用 悩みどころのパターンと対策
企業向けクラウドサービスの開発・運用 悩みどころのパターンと対策
 
初心者のためのWeb標準技術
初心者のためのWeb標準技術初心者のためのWeb標準技術
初心者のためのWeb標準技術
 
CS Young Meetup Vol.2(コードキャンプ株式会社 藤本大輔)
CS Young Meetup Vol.2(コードキャンプ株式会社  藤本大輔)CS Young Meetup Vol.2(コードキャンプ株式会社  藤本大輔)
CS Young Meetup Vol.2(コードキャンプ株式会社 藤本大輔)
 
コードレビューのススメ
コードレビューのススメコードレビューのススメ
コードレビューのススメ
 
20150326 ピクト図解 ビジネスモデルキャンバス入門_v1.1(eLV様主催)
20150326 ピクト図解 ビジネスモデルキャンバス入門_v1.1(eLV様主催)20150326 ピクト図解 ビジネスモデルキャンバス入門_v1.1(eLV様主催)
20150326 ピクト図解 ビジネスモデルキャンバス入門_v1.1(eLV様主催)
 
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
 
Mercari ogawa cs_youngmeetup_20170123_今年の抱負
Mercari ogawa cs_youngmeetup_20170123_今年の抱負Mercari ogawa cs_youngmeetup_20170123_今年の抱負
Mercari ogawa cs_youngmeetup_20170123_今年の抱負
 
sqldf for pandas
sqldf for pandassqldf for pandas
sqldf for pandas
 
BACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発についてBACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発について
 
CS Young Meetup Vol.2(GMOペパボ株式会社 吉林美貴)
CS Young Meetup Vol.2(GMOペパボ株式会社 吉林美貴)CS Young Meetup Vol.2(GMOペパボ株式会社 吉林美貴)
CS Young Meetup Vol.2(GMOペパボ株式会社 吉林美貴)
 
You Should Attend Rubykaigi2010
You Should Attend Rubykaigi2010You Should Attend Rubykaigi2010
You Should Attend Rubykaigi2010
 
ユーザーストーリー・マッピング
ユーザーストーリー・マッピングユーザーストーリー・マッピング
ユーザーストーリー・マッピング
 
CS Young Meetup Vol.2(さくらインターネット株式会社 小林なつ美)
CS Young Meetup Vol.2(さくらインターネット株式会社 小林なつ美)CS Young Meetup Vol.2(さくらインターネット株式会社 小林なつ美)
CS Young Meetup Vol.2(さくらインターネット株式会社 小林なつ美)
 
pandasによるデータ加工時の注意点やライブラリの話
pandasによるデータ加工時の注意点やライブラリの話pandasによるデータ加工時の注意点やライブラリの話
pandasによるデータ加工時の注意点やライブラリの話
 
アジャイルアンチパターン 〜私がアジャイルの1周目で学んだこととXPの次の10年〜
アジャイルアンチパターン 〜私がアジャイルの1周目で学んだこととXPの次の10年〜アジャイルアンチパターン 〜私がアジャイルの1周目で学んだこととXPの次の10年〜
アジャイルアンチパターン 〜私がアジャイルの1周目で学んだこととXPの次の10年〜
 
Panel discussion Nonaka with Hiranabe At Scrum Gathering Tokyo 2013
Panel discussion Nonaka with Hiranabe At Scrum Gathering Tokyo 2013Panel discussion Nonaka with Hiranabe At Scrum Gathering Tokyo 2013
Panel discussion Nonaka with Hiranabe At Scrum Gathering Tokyo 2013
 

Similar to カラーミーAPIドキュメントの今後

50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック
miso- soup3
 
Webエンジニアによるスマートフォンアプリ開発
Webエンジニアによるスマートフォンアプリ開発Webエンジニアによるスマートフォンアプリ開発
Webエンジニアによるスマートフォンアプリ開発
takeuchi-tk
 
The story of forguncy ~インストール型ソフトウェアで実践するリーンスタートアップ~
The story of forguncy ~インストール型ソフトウェアで実践するリーンスタートアップ~The story of forguncy ~インストール型ソフトウェアで実践するリーンスタートアップ~
The story of forguncy ~インストール型ソフトウェアで実践するリーンスタートアップ~
フォーガンシー
 
130329 04
130329 04130329 04
130329 04
openrtm
 
20130329 rtm4
20130329 rtm420130329 rtm4
20130329 rtm4
openrtm
 

Similar to カラーミーAPIドキュメントの今後 (20)

UnicastWS vol.2
UnicastWS vol.2UnicastWS vol.2
UnicastWS vol.2
 
日本市場における最新のDrupalビジネス動向 20160901v4
日本市場における最新のDrupalビジネス動向 20160901v4日本市場における最新のDrupalビジネス動向 20160901v4
日本市場における最新のDrupalビジネス動向 20160901v4
 
50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック
 
PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化
 
Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装
 
Angularreflex20141210
Angularreflex20141210Angularreflex20141210
Angularreflex20141210
 
Webエンジニアによるスマートフォンアプリ開発
Webエンジニアによるスマートフォンアプリ開発Webエンジニアによるスマートフォンアプリ開発
Webエンジニアによるスマートフォンアプリ開発
 
関西FirefoxOS勉強会6thGiG「アプリ間通信」
関西FirefoxOS勉強会6thGiG「アプリ間通信」関西FirefoxOS勉強会6thGiG「アプリ間通信」
関西FirefoxOS勉強会6thGiG「アプリ間通信」
 
The story of forguncy ~インストール型ソフトウェアで実践するリーンスタートアップ~
The story of forguncy ~インストール型ソフトウェアで実践するリーンスタートアップ~The story of forguncy ~インストール型ソフトウェアで実践するリーンスタートアップ~
The story of forguncy ~インストール型ソフトウェアで実践するリーンスタートアップ~
 
Lightning Experience 時代のプロセス開発
Lightning Experience 時代のプロセス開発Lightning Experience 時代のプロセス開発
Lightning Experience 時代のプロセス開発
 
130329 04
130329 04130329 04
130329 04
 
20130329 rtm4
20130329 rtm420130329 rtm4
20130329 rtm4
 
[日本語・Japanese] Creative Technical Content for Better Developer Experience
[日本語・Japanese] Creative Technical Content for Better Developer Experience[日本語・Japanese] Creative Technical Content for Better Developer Experience
[日本語・Japanese] Creative Technical Content for Better Developer Experience
 
Web Worker +α - HTML5/JavaScript and Service Worker API
Web Worker +α - HTML5/JavaScript and Service Worker APIWeb Worker +α - HTML5/JavaScript and Service Worker API
Web Worker +α - HTML5/JavaScript and Service Worker API
 
オープンソースCMSにみる、現場で使えるjava scriptライブラリ
オープンソースCMSにみる、現場で使えるjava scriptライブラリオープンソースCMSにみる、現場で使えるjava scriptライブラリ
オープンソースCMSにみる、現場で使えるjava scriptライブラリ
 
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料
 
Force.com開発基礎
Force.com開発基礎Force.com開発基礎
Force.com開発基礎
 
Webteko 20090925
Webteko 20090925Webteko 20090925
Webteko 20090925
 
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイドXPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
XPagesDay2014 A-4 XPages with jQueryMobile BADプラクティスガイド
 

More from Joe_noh

やってみた -URL外形監視-
やってみた -URL外形監視-やってみた -URL外形監視-
やってみた -URL外形監視-
Joe_noh
 

More from Joe_noh (20)

パフォーマンス改善のためにやったこと・やらなかったこと
パフォーマンス改善のためにやったこと・やらなかったことパフォーマンス改善のためにやったこと・やらなかったこと
パフォーマンス改善のためにやったこと・やらなかったこと
 
Vue.jsのユニットテスト
Vue.jsのユニットテストVue.jsのユニットテスト
Vue.jsのユニットテスト
 
Vuexと入力フォーム
Vuexと入力フォームVuexと入力フォーム
Vuexと入力フォーム
 
お産ウィークイントロダクション
お産ウィークイントロダクションお産ウィークイントロダクション
お産ウィークイントロダクション
 
モバイルアプリ研修イントロダクション
モバイルアプリ研修イントロダクションモバイルアプリ研修イントロダクション
モバイルアプリ研修イントロダクション
 
Webオペレーション研修イントロダクション
Webオペレーション研修イントロダクションWebオペレーション研修イントロダクション
Webオペレーション研修イントロダクション
 
Web開発研修イントロダクション
Web開発研修イントロダクションWeb開発研修イントロダクション
Web開発研修イントロダクション
 
リーンキャンバス
リーンキャンバスリーンキャンバス
リーンキャンバス
 
もっとgit
もっとgitもっとgit
もっとgit
 
できないことはPortで外注
できないことはPortで外注できないことはPortで外注
できないことはPortで外注
 
DBにseedするライブラリつくった
DBにseedするライブラリつくったDBにseedするライブラリつくった
DBにseedするライブラリつくった
 
やってみた -URL外形監視-
やってみた -URL外形監視-やってみた -URL外形監視-
やってみた -URL外形監視-
 
Elixirだ 第6回
Elixirだ 第6回Elixirだ 第6回
Elixirだ 第6回
 
Elixirだ 第5回
Elixirだ 第5回Elixirだ 第5回
Elixirだ 第5回
 
Elixirだ 第4回
Elixirだ 第4回Elixirだ 第4回
Elixirだ 第4回
 
Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半
 
Elixirだ 第1回強化版 前半
Elixirだ 第1回強化版 前半Elixirだ 第1回強化版 前半
Elixirだ 第1回強化版 前半
 
Declaimerっていうやつつくった(つくってる)
Declaimerっていうやつつくった(つくってる)Declaimerっていうやつつくった(つくってる)
Declaimerっていうやつつくった(つくってる)
 
いつかどこかで使えそうな英語
いつかどこかで使えそうな英語いつかどこかで使えそうな英語
いつかどこかで使えそうな英語
 
NUTハッカソン2014成果報告
NUTハッカソン2014成果報告NUTハッカソン2014成果報告
NUTハッカソン2014成果報告
 

Recently uploaded

Recently uploaded (12)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

カラーミーAPIドキュメントの今後