レガシーなシステムに
WebAPIを実装して
なみだ目になったので
ちょっといろいろ教えてください
2015.9.3 Enterprise APIs Hack Night #1
Isamu Suzuki
Rakus Co., Ltd.
鈴木 勇
• 株式会社ラクス
• 請求書発行サービスを開発してます
• 仕事ではJava+JavaScript少し
• プライベートはJavaScriptに全力投資中
• 最近Pythonに浮気開始
弊社サービスに
WebAPIを実装した話
使っているもの
• Seasar2 + 自社Framework
• Apache 2.2 + Tomcat 7.0
• PostgreSQL 9.1
• CentOS 6.5
こんなことやりました
• Seasar2を拡張

→PUT, DELETEに対応

→RequestボディのJSONを

 クエリパラメタ同様に扱えるように
• HTML(JSP)ではなくJSON返すように実装

→ファイルDLとかでmime-typeを指定する要領
こんなことやりました
• ビジネスロジックは既存をほぼ完全に共有

→業務要件の2重管理は死亡フラグ
• Viewは新規作成
• ViewとLogicのI/F部分も新規作成
• 主要機能のみ対応(スモールスタート的に)
参考文献
apigeeさん
マジ神
なみだ目になったことなど
こうすればいいのに
このツール良いよ
情熱的に考えてこうするだろJK
教えていただきたく(必死)
ハッシュタグはこちら
#entapihack
その1
BtoBならJSONだけじゃなく
XMLも対応したほうが
いいんじゃない?
(社内の声)
#entapihack
現実
↓
#entapihack
WebAPI呼ぶ側は
レスポンスを処理するから
これから実装するはず
#entapihack
XML扱えて
JSON扱えないはずがない
#entapihack
お客さんから要望来るまで
保留になりました
#entapihack
その2
リソース設計慣れないと
イケてない設計しちゃう
既存画面の設計に
リソース設計が引きずられた
#entapihack
各リソースの状態を
一覧する画面を
API化しようとした
#entapihack
リソースの状態を
取得するAPI
#entapihack
こんな設計にした
GET /resources/999/state
※999はリソースID
#entapihack
素直に
GET /resources/999


で良かったと反省
進 以外の状態も
まとめて返せばいいだけだった
#entapihack
その3
ドキュメントつらたん
APIには充実した
ドキュメントが必要
みなさんどうやってますか?
#entapihack
①apigee API Management
#entapihack
②SwaggerとかのOSSな
マニュアルフレームワーク
#entapihack
これもapigeeさんだったり
③API仕様のページを公開
#entapihack
NTT Com Developer Portalみたいな
_人人人人人人人人人_
> ④Word / Excel <
 ̄Y^Y^Y^Y^Y^Y^Y ̄
#entapihack
みなさんなら
どうや(ることにな)りそう
ですか?
#entapihack
頑張ってみたこと
HATEOAS
• WEBページのように次に参照するリソースの
URIをレスポンスに含んであげること
• 初期設計が甘かったせいで

GET /path/to/resources が実装されていない

リソースがある
最後に
株式会社ラクスは
エンジニアを募集しています
「鈴木の発表を見た」
とお問い合わせください
会社WEBページより
申し込みどうぞ

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