39
レガシーなシステムに WebAPIを実装して なみだ目になったので ちょっといろいろ教えてください 2015.9.3 Enterprise APIs Hack Night #1 Isamu Suzuki Rakus Co., Ltd.

レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

Embed Size (px)

Citation preview

Page 1: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

レガシーなシステムに WebAPIを実装して なみだ目になったので ちょっといろいろ教えてください2015.9.3 Enterprise APIs Hack Night #1 Isamu Suzuki Rakus Co., Ltd.

Page 2: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

鈴木 勇

• 株式会社ラクス

• 請求書発行サービスを開発してます

• 仕事ではJava+JavaScript少し

• プライベートはJavaScriptに全力投資中

• 最近Pythonに浮気開始

Page 3: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

弊社サービスに WebAPIを実装した話

Page 4: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

使っているもの

• Seasar2 + 自社Framework

• Apache 2.2 + Tomcat 7.0

• PostgreSQL 9.1

• CentOS 6.5

Page 5: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

こんなことやりました

• Seasar2を拡張

→PUT, DELETEに対応

→RequestボディのJSONを クエリパラメタ同様に扱えるように

• HTML(JSP)ではなくJSON返すように実装

→ファイルDLとかでmime-typeを指定する要領

Page 6: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

こんなことやりました

• ビジネスロジックは既存をほぼ完全に共有

→業務要件の2重管理は死亡フラグ

• Viewは新規作成

• ViewとLogicのI/F部分も新規作成

• 主要機能のみ対応(スモールスタート的に)

Page 7: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

参考文献

apigeeさん マジ神

Page 8: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

なみだ目になったことなど

Page 9: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

こうすればいいのに

このツール良いよ

情熱的に考えてこうするだろJK

教えていただきたく(必死)

Page 10: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

ハッシュタグはこちら #entapihack

Page 11: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

その1

Page 12: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

BtoBならJSONだけじゃなく XMLも対応したほうが いいんじゃない? (社内の声)

Page 13: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

#entapihack

Page 14: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

現実 ↓

#entapihack

Page 15: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

WebAPI呼ぶ側は レスポンスを処理するから これから実装するはず

#entapihack

Page 16: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

XML扱えて JSON扱えないはずがない

#entapihack

Page 17: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

お客さんから要望来るまで 保留になりました

#entapihack

Page 18: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

その2

Page 19: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

リソース設計慣れないと イケてない設計しちゃう

Page 20: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

既存画面の設計に リソース設計が引きずられた

#entapihack

Page 21: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

各リソースの状態を 一覧する画面を

API化しようとした

#entapihack

Page 22: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

リソースの状態を 取得するAPI

#entapihack

Page 23: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

こんな設計にした GET /resources/999/state

※999はリソースID

#entapihack

Page 24: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

素直に GET /resources/999

で良かったと反省

進捗以外の状態も まとめて返せばいいだけだった

#entapihack

Page 25: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

その3

Page 26: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

ドキュメントつらたん

Page 27: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

APIには充実した ドキュメントが必要

Page 28: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

みなさんどうやってますか?

#entapihack

Page 29: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

①apigee API Management

#entapihack

Page 30: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

②SwaggerとかのOSSな マニュアルフレームワーク

#entapihack

これもapigeeさんだったり

Page 31: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください
Page 32: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください
Page 33: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

③API仕様のページを公開

#entapihack

NTT Com Developer Portalみたいな

Page 34: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

_人人人人人人人人人_ > ④Word / Excel < ‾Y^Y^Y^Y^Y^Y^Y‾

#entapihack

Page 35: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

みなさんなら どうや(ることにな)りそう

ですか?

#entapihack

Page 36: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

頑張ってみたこと

Page 37: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

HATEOAS

• WEBページのように次に参照するリソースのURIをレスポンスに含んであげること

• 初期設計が甘かったせいでGET /path/to/resources が実装されていないリソースがある

Page 38: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

最後に

Page 39: レガシーなアプリにWeb apiを実装してなみだ目になったのでちょっといろいろ教えてください

株式会社ラクスは エンジニアを募集しています

「鈴木の発表を見た」

とお問い合わせください

会社WEBページより 申し込みどうぞ