SlideShare a Scribd company logo
カラーミー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

PDF
Deploy to Lobi
Hiroaki Nagata
 
PDF
逆説のカスタマーサクセス
Takaaki Umada
 
PDF
サイクルOJTイントロダクション
Joe_noh
 
PPTX
goa Design first API Generation
yoshinori sugiyama
 
PDF
Elixirだ 第2回
Joe_noh
 
PDF
Elixirだ 第3回
Joe_noh
 
PDF
Ruby way-openstack.keynote
Uchio Kondo
 
PDF
Elixirだ 第1回 - 基礎だ -
Joe_noh
 
Deploy to Lobi
Hiroaki Nagata
 
逆説のカスタマーサクセス
Takaaki Umada
 
サイクルOJTイントロダクション
Joe_noh
 
goa Design first API Generation
yoshinori sugiyama
 
Elixirだ 第2回
Joe_noh
 
Elixirだ 第3回
Joe_noh
 
Ruby way-openstack.keynote
Uchio Kondo
 
Elixirだ 第1回 - 基礎だ -
Joe_noh
 

Viewers also liked (19)

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

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

PDF
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
Daichi Koike
 
PDF
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
Toru Kawamura
 
PDF
Swaggerを利用した新規サービス開発
recotech
 
PDF
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
Tomoki Oyamatsu
 
PDF
SwaggerとAPIのデザイン
Kazuhiro Hara
 
PPTX
Swagger jjug ccc 2018 spring
kounan13
 
PDF
【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 について
Natsuki Yamanaka
 
PDF
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Akito Tsukahara
 
PPTX
Open APIで定義しよう! 実践編
iPride Co., Ltd.
 
PDF
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
 
PPTX
APIドキュメントの話 #sphinxjp
Takeshi Komiya
 
PPT
マッシュアップ勉強会
guestadcb01
 
PPT
マッシュアップ勉強会
seiryo
 
KEY
Mojoliciousをウェブ制作現場で使ってみてる
jamadam
 
PPTX
はじめてのApi体験記
yumi_chappy
 
PDF
第2回 人形町Techで騒がnight
Satoru Mikami
 
PDF
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Kazuya Sugimoto
 
PDF
#recotech_WIZY開発の裏側
recotech
 
PDF
Swaggerでのapi開発よもやま話
KEISUKE KONISHI
 
PDF
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Junichi Ishida
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
Daichi Koike
 
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
Toru Kawamura
 
Swaggerを利用した新規サービス開発
recotech
 
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
Tomoki Oyamatsu
 
SwaggerとAPIのデザイン
Kazuhiro Hara
 
Swagger jjug ccc 2018 spring
kounan13
 
【2018/09/11】PAYでのReact Nativeにおける APIクライアント実装 について
Natsuki Yamanaka
 
Web api開発をするなら ドキュメントは自動生成にしておこう__ph_per_kaigi2021_
Akito Tsukahara
 
Open APIで定義しよう! 実践編
iPride Co., Ltd.
 
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
 
APIドキュメントの話 #sphinxjp
Takeshi Komiya
 
マッシュアップ勉強会
guestadcb01
 
マッシュアップ勉強会
seiryo
 
Mojoliciousをウェブ制作現場で使ってみてる
jamadam
 
はじめてのApi体験記
yumi_chappy
 
第2回 人形町Techで騒がnight
Satoru Mikami
 
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Kazuya Sugimoto
 
#recotech_WIZY開発の裏側
recotech
 
Swaggerでのapi開発よもやま話
KEISUKE KONISHI
 
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
Junichi Ishida
 
Ad

More from Joe_noh (20)

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

Recently uploaded (7)

PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 

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