NTTドコモビゞネスのブログ - TECH PLAY

TECH PLAY

NTTドコモビゞネス

NTTドコモビゞネス の技術ブログ

å…š632ä»¶

SwaggerフォヌマットOpen API SpecificationでAPIドキュメントを䜜成するずどんなメリットがあるのか玹介したす。䞀぀のフォヌマットから倚圩な展開ができるようになっおいるず、開発工数を䜎枛や品質向䞊に倧きく寄䞎するはずです。 ドキュメント Swaggerを䜿っおドキュメントを生成するのは基本ず蚀えたす。倚くの方がSwaggerをAPIドキュメントのために䜿っおいるのではないでしょうか。Swagger UIのようなツヌルを䜿うず、その堎でAPIをコヌルできる機胜が付いたドキュメントが生成できたす。 珟状の問題はあたりフレキシブルな機胜をもったドキュメント生成ツヌルが倚くないこずでしょう。Swagger UIにもテヌマはありたすが、ただあたり倚くありたせん。そのため、Swagger UI補のドキュメントはどれも䌌た雰囲気になっおしたっおいたす。 コヌド Swagger UIを䜿ったコヌド生成ツヌルずしおSwagger Editorが挙げられたす。クラむアント/サヌバサむドのコヌドを生成可胜で、倚くのプログラミング蚀語に察応しおいたす。自動生成なので䜿い勝手がずおも良いコヌドではないこずもありたすが、それをベヌスにラッピングしお䜿いやすいSDKに仕䞊げるこずもできるでしょう。 さらにか぀おのWSDLのようにスケルトンコヌドの生成機胜をもったラむブラリもありたす。そうしたツヌルを䜿うこずで、APIファヌストであったりAPIの远加に䌎うラむブラリメンテナンスコストの削枛が実珟できるようになりたす。 モックサヌバ SwaggerのベヌスであるJSON/YAMLファむルはサヌバの動䜜を芏定したファむルになりたす。そこで開発甚のモックアップサヌバずしお䜿える゜フトりェアがありたす。あくたでもモックではありたすが、クラむアントアプリケヌションの開発に圹立ちたす。 サヌバずクラむアントサむドの開発が分かれおいる堎合、APIが敎っおいない状態ではクラむアント偎の開発が行えずに遅延しおしたうこずが倚々ありたす。ドキュメントを先に敎備するこずでクラむアント偎の開発がスムヌズになるでしょう。 バリデヌション JSON SchemaのようにSwaggerを䜿っおバリデヌションを行うこずが可胜です。バリデヌションは耇数パタヌン考えられたす。 クラむアントサむドのリク゚スト怜蚌 クラむアントサむドでデヌタを送信する前に怜蚌したす。これによりUXを向䞊させたり、サヌバ偎のアクセスを枛らすこずができたす。さらにJavaScriptによるバリデヌションのコヌドを曞かなくお良くなるのでコヌドの重耇、メンテナンスコストを軜枛できたす。 サヌバサむドのリク゚スト怜蚌 クラむアント偎ず同様にサヌバ偎も送られおきたデヌタの怜蚌ができるようになりたす。これが倧倚数の目的になるでしょう。サヌバ偎でも入力倀の怜蚌を行うのは面倒なので、Swagger内で定矩されおいる内容を元に怜蚌できるず手軜です。 クラむアントサむドのレスポンス怜蚌 さらにクラむアントサむドではサヌバから送られおきたレスポンスに぀いお怜蚌を行うこずもできたす。倚くの堎合、サヌバレスポンスは無条件に信甚しおしたいがちですが、デヌタが欠損しおたり仕様ず異なるこずはよくありたす。 テストケヌス Swaggerを䜿ったテストずしおはAPIサヌバの実装が正しく行われおいるかどうかの怜蚌が倧きな目的になるでしょう。これはドキュメント/テストファヌストで実装した時に圹立ちたす。たた、定期的に実行するこずで実装が倉わっおいないこずの怜蚌も可胜です。 テストケヌスを生成する゜フトりェアの堎合、倚くは正垞系のテストになるようです。そのため、異垞系のテストを行う際には倚少のメンテナンスが必芁になるので泚意しおください。 Swaggerのドキュメントを敎備するこずで倚くの利甚が可胜になりたす。APIドキュメントファヌストずも蚀える駆動型開発で効率的な開発を行っおください。
前回はxTechに぀いお玹介したしたが、今回は䞻なxTechの皮類を玹介したす。自分に近い垂堎があるか、ぜひご芧ください。 なお、各名称に぀いおは確定しおいないずころもあり、呌び方が異なる堎合がありたす。 FinTech 蚀わずず知れた金融×テクノロゞヌです。ここ1、2幎ほど銀行を䞭心に盛り䞊がっおきおいたす。APIの開瀺には個別の契玄が必芁な堎合が倚く、FinTech参加䌁業による゚コノミヌが構築されおきおいたす。 RetailTech 物流、倉庫などを䞻䜓ずした流通に関する分野です。物流業界は効率的な配送や再配達システムなど、元々高床なテクノロゞヌが䜿われおいたす。さらにそのビッグデヌタを掻甚するこずで新しいサヌビスが生たれる可胜性があるでしょう。 MarTech マヌケティング×テクノロゞヌです。特に匷いのがSalesforceで、CRMを軞に独自のAPI゚コノミヌ、パヌトナヌシップが構築されおいたす。 他にもEメヌルマヌケティングであったり、オヌトメヌション、効果枬定などの分野においおテクノロゞヌ利甚が広がっおいたす。 EdTech 教育分野になりたす。元々かなりむンタヌネット利甚が遅れおいる分野ではありたすが、タブレットによる電子教科曞など埐々に進められおいたす。 MedTech 医療分野です。法埋的な芏制が厳しい分野ではありたすが、ここ数幎技術革新が進んでいたす。遠隔地医療であったり、A.Iを䜿った簡易蚺断など医療が十分に提䟛されおいない地域においお泚目が集たっおいたす。 HRTech 人事×テクノロゞヌの分野になりたす。教育や医療ず同じく、人が積極的に関わっおいく分野ではアナログが䜜業がただただ倚くなっおいたす。人材掻甚などにおいおデヌタをもずに数倀化する動きが高たっおいたす。 LegalTech 法埋分野になりたす。グロヌバルなビゞネスが増えおいく䞭で、各囜の法埋を遵守し぀぀も高速な察応が求められるようになっおいたす。たた、仕業や䌁業法務などをクラりド化する䞊でも泚目されおいたす。 HealthTech 健康分野は垞に泚目の高い分野です。センサヌを䜿っお個人の状態をモニタリングし、倉化するステヌタスに合わせお適切なアドバむスを行うずいったこずが考えられたす。 AgriTech 蟲業分野もITテクノロゞヌがなかなか普及しおいない分野でしたが、IoTのセンサヌず組み合わせた掻甚によっお、これたで感芚でしか分からなかった情報が可芖化されたり、省力化が実珟しおいたす。 FoodTech 衣食䜏の䞀぀でもある食に察する取り組みです。宅配のようなものであったり、完党栄逊食ず呌ばれる食べ物の開発など倚圩な展開が行われおいたす。 SportTech スポヌツにおいおはバンドを぀けお個人の掻動量を枬定したり、個人の掻動をシェアするずいった利甚が行われおいたす。プロにおいおもパフォヌマンスを数倀化する䞊でテクノロゞヌが掻甚されおいたす。 FashTech ファッション分野においおは新玠材の開発やセンサヌを぀けた掋服、感情によっお色が倉化する玠材など未来的な詊みが数倚く実斜されおいたす。 GovTech 政府関係のテクノロゞヌ掻甚です。䞻にオヌプンデヌタ系の掻動で䜿われたす。たた、政府が出しおいる゜フトりェアを改善、啓蒙するような掻動も行われおいたす。 AdTech 蚀わずず知れた広告系のテクノロゞヌ掻甚です。広告分野はリスティング広告の登堎以降、䞀気にテクノロゞヌ䞻䜓になっおいたす。 RETech 䞍動産×テクノロゞヌずいう分野です。䜏宅ロヌン、䞭叀売買、賃貞などを自動化したす。金融系ず密着したサヌビス展開が倚いようです。 他にもxTech分野は増えおいくず思われたす。旧態䟝然ずした垂堎に察しおテクノロゞヌがどう倉革を起こせるか、xTechは楜しみな動きず蚀えるでしょう。
私たち、APIチヌムが提唱しおいこうずしおいるのがxTech゚クステックず蚀うキヌワヌドです。今回はその抂芁を玹介したす。 xTechずは 最近話題になっおいるFinTechずいうキヌワヌドがありたす。Finance金融×Technology技術ずいう二぀のキヌワヌドを合わせた造語です。同様に、Agriculture蟲業×TechnologyのAgriTechアグリテック、Education教育×TechnologyのEdTech゚ドテック、Advertisement広告×TechnologyのAdTechアドテックなどがよく知られおいたす。そんな○○×Techずいう名称を総称しおxTech゚クステックず呌んでいたす。 xTechずAPIの関係ずは ではxTechにおいおAPIはどう䜿われおいるのでしょうか。ほがすべおの斜策においお、技術的基盀になっおいるのがAPIず蚀えたす。䌁業間連携はもちろん、耇数の䌁業が提䟛するデヌタを合わせたり、自瀟のサヌビスにコンテンツを付䞎するずいった堎合もAPIを䜿っおいたす。そういった䜜業が自動化されなければ、コストが増倧しおしたっお付加䟡倀ずしおの意味がなくなっおしたうでしょう。 あえおAPIずいう単語をあげるたでもなく、xTechにおいおAPIの存圚は圓たり前のものずしお浞透しおいたす。 なぜ今xTechなのか FinTech、Agritech、EdTechなど、なぜ倚くのxTechキヌワヌドが生み出されおいるのでしょうか。それはテクノロゞヌの発展ず、スマヌトフォンの普及によっおむンタヌネットが垞時存圚する生掻が圓たり前になっおいるこずが䞀぀のポむントになっおくるず考えられたす。たた、IoTも合わせおスマヌトフォンずずもにセンサヌデバむスが数倚く存圚したす。私たちが日々生掻するだけで、そうしたスマヌトフォンやWebブラりザの操䜜、センサヌデバむスから刻々ずデヌタが生成されるようになっおいるず蚀えたす。 そうしお集たったデヌタを旧来の垂堎にぶ぀けるこずで新しい付加䟡倀を生み出せるようになっおきたず蚀えるでしょう。AdTechのように元々テクノロゞヌ䞻䜓だった分野はもちろん、蟲業や教育、医療などむンタヌネット技術ずは瞁遠かった分野においおも掻かせるデバむス、センサヌが登堎しおきおいたす。 私たちは䜕をすべきか xTechぞの取り組みは䞻に2぀考えられたす。䞀぀はテクノロゞヌ分野にいる人たちです。テクノロゞヌ分野にいる人たちは他の垂堎ぞ働きかけるこずでAPI開発、他䌁業ずの連携など倧きなチャンスを掎める可胜性がありたす。ただし他の垂堎においおはテクノロゞヌぞの投資金額が倧きくないこずもあり、スクラッチで開発するよりもAPIマネヌゞメントサヌビスを䜿った玠早い実装、スモヌルスタヌトな実蚌実隓が求められるでしょう。たた、他垂堎ぞの知識が圧倒的に䞍足しおいるため、たずその垂堎の孊習ず理解が必須になりたす。 もう䞀面は蟲業、教育、医療などの分野に携わっおいる䌁業です。こうした䌁業では埓来のワヌクフロヌでビゞネスが回っおしたっおいるこずが倚く、それをさらに改善、拡倧したい、新しい収益構造を生み出したいずいう匷い欲求が必芁になりたす。ただしテクノロゞヌぞの知識が䞍足しおいるため、たず地堎のシステムむンテグレヌタなどに盞談しおみるのが良いでしょう。その際には䌁業の倧小ではなく、先進的取り組みを積極的に行っおいるか、xTechぞの知識があるかずいった点がポむントになるでしょう。 xTechは去幎くらいからの動きになりたす。ただただはじたったばかりで、今幎や来幎は新しいサヌビスや事䟋が登堎しおくるこずでしょう。ぜひこの動きに远埓し、取り組んでみおください。
今回はAPIのバヌゞョン管理に぀いお䞻なパタヌンず、既存の゜フトりェアで䜿われるバヌゞョン管理ずの盞違点に぀いお玹介したす。 パス もっずもオヌ゜ドックスな方法ず蚀えたす。倚くの堎合、次のようになりたす。 /v1/users たたはバヌゞョン番号を日付で行っおいるケヌスもありたす。 /2016-06-01/users バヌゞョン番号を持たせるケヌスの堎合、䜕をもっおv2にするかが問題になりたす。日付の堎合、リリヌスしたタむミングその日付を䜿うので数字の付け方に悩むこずはないでしょう。 ただし、これらの方法の堎合、 䜕をもっおバヌゞョンを䞊げるか ずいう問題が垞に付きたずいたす。既存の修正なのか、バヌゞョンアップなのかの区別が刀断しづらいずいうこずです。できればリリヌス前にバヌゞョンの付け方をルヌル化しおおくのがいいでしょう。 たた、v2を䜜った堎合にすべおのAPIがむンタフェヌスを倉える蚳ではないずいう問題がありたす。usersは倉えたずしおも、productsやその他のむンタフェヌスはそのたたで良いずいうケヌスがほずんどでしょう。そうした時に、あるAPIは垞に叀い日付であったり、逆に曎新されおいないけれどもバヌゞョンが䞊がっおしたうAPIが出るこずになりたす。 HTTPヘッダヌ バヌゞョンをHTTPヘッダヌに含めるケヌスがありたす。このメリットずしおは、パスのように アクセス先を倉えないで枈む ずいうこずです。゚ンドポむントはAPIのバヌゞョンが䞊がったずしおも倉わりたせん。利甚者ずしおは垞に同じURLで䜿えるずいうのはメリットがありたす。 デメリットずしおは倚くの堎合、HTTPアクセス郚分は共通化しお䜜られるため、usersはv2、productsはv1ずいった具合に切り替えるのは簡単ではないずいうこずです。特にHTTPヘッダヌのような情報は共通化した䞊で、v1たたはv2ずいう文字列で固定されおしたっおいる可胜性がありたす。 SDKやラむブラリです隠蔜する方法も考えられたすが、それでもバヌゞョンを指定しおもらうずいうのは䜙蚈な手間を増やしおしたうためあたり良いず方法ずは蚀えないでしょう。 ク゚リヌ ク゚リヌ文字列の䞭でバヌゞョンを指定する方法もありたす。こちらはHTTPヘッダヌず同じで゚ンドポむントは垞に同じです。そしおURIのク゚リヌの䞭でバヌゞョンを指定したす。HTTPヘッダヌよりは倉えやすい印象です。 この堎合、バヌゞョンを固定しおおけば返っおくる情報は垞に同じずいう安心感がありたす。パスで指定するケヌスに比べお、管理単䜍が现くなる印象です。 // パスでの指定 /v1/users /v1/products /v2/users // v1ずは別なレスポンス /v2/products // v1ず同じレスポンス // ク゚リヌでの指定 /users?v=1 /users?v=2 /products?v=1 ク゚リヌでの指定の堎合、v=2は存圚しないこずになりたす。開発者ずしおは新しいデヌタ取埗法を䜿いたい堎合はv=2を指定し、そうでない堎合はv=1を指定するこずになりたす。 デメリットずしおは共通したアクセスになるので、ク゚リヌでの指定を芋おレスポンスを返す分、゜ヌスコヌドの分岐が増えおしたいたす。埐々に゜ヌスコヌドが汚くなるかも知れたせん。 case params[:v] when '1' // バヌゞョン1を指定した堎合 when '2' // バヌゞョン2を指定した堎合 end もちろん最初からバヌゞョンアップする前提で䜜られおいる堎合は綺麗に蚭蚈もできるのですが、倚くの堎合バヌゞョン番号は甚意しおいおも䜿うための仕組みはないケヌスが殆どです。 䞀般的バヌゞョン管理ずの盞違 パスにバヌゞョン情報を入れた堎合、印象ずしおはSubversionのような党䜓でバヌゞョン番号を持ったバヌゞョン管理に近い印象になりたす。もちろん、曎新されおいない /v2/productsに察しおアクセスがあったら/v1/productsを呌び出すずいった圢にできたすが、利甚者ずしおは v1 ず v2 で䜕が違うのかず疑問に思っおしたうこずでしょう。ドキュメントにその説明を茉せるのも面倒です。 か぀おあったCVSの堎合、バヌゞョン管理はファむル単䜍になりたす。ク゚リを䜿った方法はこれに近いものになるでしょう。アクセス先単䜍でバヌゞョン番号を指定するのはあたり筋が良いずは思いたせんが、珟実的かも知れたせん。この堎合、アクセス先単䜍でドキュメントに v1、v2の盞違に぀いお掲茉できるようになりたす。 Gitのような分散型バヌゞョン管理の考え方をAPIのバヌゞョン管理に適甚した堎合はどうなるでしょうか。これは2぀の考え方ができたす。 タグを䜿った党䜓の制埡 たず倧きなリリヌス単䜍によっおタグを䜿いたす。このタグはパスに含めるのが良いでしょう。v1、v2盞圓になりたす。 アクセス先単䜍での现かい指定 さらに现かく動䜜を指定したい堎合はク゚リ文字列を䜿っお蚭定できるようにしたす。これは次のタグに至るたでの现かいバヌゞョン番号ず蚀えたす。基本的にはタグを䜿ったものだけで十分でしょう。 APIのバヌゞョン管理はあたりうたくいっおいないケヌスが倚い印象がありたす。どのタむミングでバヌゞョンを䞊げるか、埌方互換性をどう維持するか、修正ず機胜远加の違いは䜕かずいった具合です。 これらは既存の゜フトりェアのバヌゞョン管理が参考になるず蚀えたす。メゞャヌ、マむナヌアップデヌトなどの考え方、APIの開発蚈画に合わせおバヌゞョン曎新を考えおいくのが良いでしょう。倚くの堎合、䞀床目のバヌゞョンアップを躊躇しおしたうためにずっず同じバヌゞョン番号で曎新を重ねおしたうようです。最初のバヌゞョンアップは事前の蚈画に沿っお進めおいくのが良いでしょう。
Swaggerはオヌプン゜ヌス・゜フトりェア、オヌプンなフォヌマットず蚀うこずもあり、関連するラむブラリが幟぀か存圚したす。OpenAPI Initiativeが蚭立されたこずもあり、業界暙準ずなっおいけばさらに登堎しおくるのではないでしょうか。 今回はそんなSwaggerによる開発を補助する゜フトりェアを玹介したす。 Swagger2Markup/swagger2markup SwaggerファむルをベヌスにMarkdownファむルを生成する゜フトりェアです。若干癖のあるツヌルですが、MarkdownファむルであればPDFをはじめずしお他のドキュメントフォヌマットにも展開しやすくなりたす。 Markdownフォヌマットは他の倚くのドキュメントシステムでも䜿われおいたすので、そういったシステム向けにドキュメントをコンバヌトする際にも䟿利です。 BigstickCarpet/swagger-server: Get your REST API up-and-running FAST with Swagger and Express Swaggerファむルを䜿っおRESTfulなモックサヌバを立おるシステムです。本番環境䞋ですべおのサヌビスが揃っおいない状態でもクラむアント管理がはじめられるようになりたす。 たた、クラりド系サヌビスにおいおSwaggerファむルを提䟛するこずで開発者の環境においおロヌカルで動䜜するモックサヌバを提䟛できるようになりたす。 Swagger UI – Swagger Swagger UIはSwaggerファむルをHTMLで衚瀺するシステムです。HTML䞊からCRUD操䜜を実際に行えるのが特城です。ただしOAuth2トヌクンなどが必芁であったり、認蚌などを芁する堎合は䜜り蟌みが発生したす。 SwaggerファむルをHTMLずしお衚瀺したい時にはこのSwagger UIが最も倚く䜿われるようです。 Swagger Editor – Swagger Swaggerファむルの䜜成、線集を行うのがSwagger Editorです。入力内容の怜蚌ツヌルも組み蟌たれおいるので、ミスしたずしおも改善しやすいはずです。ツリヌ構造の折りたたみ機胜もあり、倧きなAPIドキュメントでも効率的に線集できたす。 Swaggerのフォヌマットに粟通しおいないず、テキスト゚ディタで曞いた埌に怜蚌するず倚数の゚ラヌが出るはずです。最初からSwagger Editorを䜿うこずで手戻りを枛らしたしょう。 Swagger Codegen – Swagger Swaggerでは倚数のプログラミング蚀語に察応した゜ヌコヌドスケルトンコヌドが生成できたす。クラむアント/サヌバサむドの入力倀怜蚌であったり、API利甚を簡䟿化したす。 蚀語によっおは゜ヌスコヌドのレベルが高くありたせんが、生成されたコヌドをラッピングしお䜿っおも良いでしょう。ドキュメントさえメンテナンスすればラむブラリが曎新されお最新の状態を保おるずいうのが理想です。 ReDoc Swagger UIずは別なドキュメントゞェネレヌタです。デヌタ構造が瞊に衚瀺されるのが特城ずなっおいたす。今の時点ではSwaggerのファむルを読み蟌んで動的にコンテンツを生成したす。今埌の予定ずしおSEO察策のために静的ファむル生成に察応するようです。 画面構成は3ペむンで、䞀番右偎にコヌドサンプルが衚瀺できたす。 moongift/cURLtoSwagger: Convert from cURL command to YAML format. Compatible with Swagger. 筆者が䜜っおいるツヌルがcURLtoSwaggerです。cURLコマンドずそのレスポンスを䜿っおSwagger甚のドキュメントを生成したす。cURLコマンドはGoogle Chromeの開発者ツヌルで取埗できたす。 Swaggerはサヌビス提䟛偎が蚘述する堎合もあれば、すでにできあがっおいるAPIからドキュメントだけ曞き起こす堎合もあるでしょう。cURLtoSwaggerは埌者向けのツヌルになりたす。 SwaggerOpenAPI Specificationに関連したツヌルは今埌増えおいくず予想されたす。そうするこずでSwaggerの゚コシステムはさらに広がっおいくこずでしょう。API/ドキュメントファヌストの開発においおSwaggerは芋逃せない存圚になるはずです。
JSON has been increasingly adopted as a Web API format. While JSON can be handled easily in light description languages, the trouble it has with assuring data content is viewed as problematic. For this reason, JSON Schema, which defines the structure of JSON, has attracted attention. By providing types and meta-information to JSON data, rules for formatting are added. JSON Schema is currently being developed as a specification. You can check the details at JSON Schema and Hyper-Schema . We’d like to think about what possibilities adopting JSON Schema can bring. 1. Validation The primary one that comes to mind is validation. This can be done for both clients and servers. JSON Schema enables you to verify data before sending and automatically validate data you obtain. If the verification results produce errors, you should probably return them as they are. As usage of data structures and types is assured after verification, you can feel secure when writing code. 2. Create Libraries that Handle Data This is similar to how "Web Service" often automatically generate code from a schema like WSDL. It will automatically generate skeleton code if it’s for Java or .NET, and it will automatically create methods for script languages such as Ruby, PHP, and Python. JSON is often handled with hash and associative array after parsing. However, by generating code in advance, you’ll be able to use it as easy-to-handle data. 3. Generate Documents In addition, since JSON Schema explains parameters and also handles descriptions for data structures and URLs, it can be used for generating API documents, too. Although consistency must be maintained due to separation from the actual code, you can maintain the latest state by combining JSON with testing structures, which will be mentioned later on this page. As there are many developers who refer to API documents, such output should motivate you to properly maintain JSON Schema. 4. Dummy Server JSON Schema can be used as a base for library test servers that handle Web APIs. Although the logic parts of the server cannot be assured, having a dummy server makes local development and operation in a test environment easy. However, while you can check requirements and types of input values on dummy servers, it doesn’t allow you to check logic, such as token validity. Note that it’s better to use it as an auxiliary tool during development. 5. Automating Test Also, JSON Schema can be used for operating tests for a Web API itself. Post the pre-defined values, and you can verify whether the expected results will be produced. Systems that previously used Web APIs may suddenly stop working, for instance, when new required fields are added to extend the Web API. Also, in such circumstances, it is important for JSON Schema to manage versions and check whether it’s continuously operating with all versions. After software that uses a Web API is complete, the software often enters an automatic operation phase. In order to ensure results even in such circumstances, JSON Schema can be useful. 6, Error Check During Development With IDEs and such, adopting JSON Schema enables you to display advance warnings. The JSON structure has low readability when kept in text form, and it is often read incorrectly. JSON Schema could be useful to prevent these mistakes. Although JSON Schema has several merits, because it was originally developed to stay away from the complexity and nuisances of WSDL and such, it has not been widely adopted. However, it will turn into an important element, as Web APIs will be used more and more often at the enterprise companies. Rather than just being something that you should do, I believe JSON Schema will be used more if it can improve development productivity and reduce burden, for example, by automatically creating documents using JSON Schema.
When you will mash up APIs and create a new service, you have to first find an API providing the data that you need. In this installment, I summarize services offering directories of APIs. PublicAPIs As of this writing, this indexing service lets you search 5,330 APIs. You can find out APIs, and also register new APIs in the system. PublicAPIs | Directory of public APIs for web and mobile API For That APIs are indexed across approximately twenty categories that include social networks, finance, and more. There are close to three hundred categories. API For That | An API Directory Zapier The service functions like an enterprise version of IFTTT. Users link two services to trigger actions. The Explore menu lets you access a wide range of APIs (limited to those supporting Zapier). The best apps. Better together. - Zapier ProgrammableWeb This site provides API directory information and news. Over 13,000 APIs are offered. While there are few Japanese APIs, if you plan to search APIs worldwide, this site is the best. ProgrammableWeb - APIs, Mashups and the Web as Platform Mashup Awards You are seeking a Japanese API, check the Mashup Awards API list page for a comprehensive list. You will also find overseas APIs, with close to 250 APIs indexed. APIリスト | MA【゚ム・゚ヌ】 by Mashup Awards When you want to poll GPS information like weather or hotel information, you will get better fidelity by using an API from the target country. At the same time, linking two APIs may yield unexpected potential and results. Settling on what you want to build before searching for APIs is one technique, but you could also go in reverse, looking at these lists and getting inspiration from what you find.
What are the challenges and advantages of enterprise API utilization? In order to get a grasp of the situation, we conducted an interview with Mr. Kato, an API gateway developer. The interviewer is Nakatsugawa from MOONGIFT. What are the API gateways you planned from 3 years back? With 10 years having passed since the popularization of Web APIs (hereinafter referred to as “APIs”), there has been a movement in these past few years among businesses to increase the competitiveness and utilization rates of services by making APIs open. We at NTT Communications have also API-tized our services and are trying to promote their use. Rather than creating a separate API for each service, API gateways refer to attempts to provide an easy-to-use API that standardizes them and unifies management. A number of similar services have become available in these past one or two years. We planned it about 3 years ago when we carried out a technical verification and launched the project, and it became an officially released service from April this year. The actual development period was only about 6 months as we had made some progress beforehand on technical verification. API management services already starting overseas Carriers such as AT&T and Verizon are already starting. There are three primary reasons why carriers are making progress. They have a wide range of services Customer loyalty is improved by providing these services through a common interface It serves as a technical cushion for a wide range of sectors As an example of problems that can arise when there is no API management mechanism – although this was not APIs – there was a period at NTT Communications during which each department developed smartphone applications freely without any company standards. As a result, there was no sense of uniformity among interfaces and overall quality, which was confusing for users. In order to prevent similar problems from occurring with APIs, we thought of 2 measures. API gateways API checklists API checklists define how APIs are to be develop, rather than just develop them. APIs can be made so long as you have the technical capabilities. However, how to best make them is where differences of opinion arise among the people involved. It is for this reason that we created an API checklist as a unified standard for things such as interface, security, data format, etc.. One point that we were particularly careful about was to use JSON Schema that enables automation or JSON format schema check, a lightweight format based on REST API rather than SOAP. By sticking to these guidelines, we believe that we can create APIs that our clients have no problems with. ※ Please refer to the following article for more on API checklists (Japanese articles). Things that should be kept in mind in order to design a proper API: Interface Data format Version control, synchronously or asynchronously Security API provision with regard to enterprise can be thought of as the opening up of in-house systems. As there are user limitations in conventional business systems, it is not too much of a problem even when services were temporarily suspended for things such as maintenance. However, as API-tization of these systems means they will be used for automation from outside, things such as down time and information freshness can become a problem. Taking these points into consideration, and as it needed to be system development, we felt that there was a need to change our way of thinking through a fixed framework. Public was not enough. What was the next step after that? Although many APIs have been made over the past 10 years, there are many cases in which they were simply made and abandoned. In order to prevent this, we believe there is a need for: A presentation of a mash-up example using third-party API Applications, tools, and sample codes that use API We are currently thinking of enhancing libraries and mechanisms that support such developments. One thing we often hear from developers who are trying to develop using APIs in reality is that they find it difficult to get a sense of scale. The reality is that the sense of scale varies with the application being made, therefore, we want engineers to train their senses by first writing small lines of code using APIs. Our model is that, instead of trying to tackle a large project from the start, it is best to start off small and slowly work your way up to larger projects. What is the model you aim for with API gateways? First of all, the API-tization of NTT Communications's services is only the first step. For the next step, we are thinking of API-tizing the services of our client companies and engaging in their management and operation. However, as we are now at the stage where we are promoting API-tization in regard to networks and cloud, all in all, we are still at 20%-30%. Additionally, we are also focusing on the IoT market. For example, we believe that API gateways can serve as hubs that stand between IoT devices and developers. Data, threshold values, etc. gathered from devices will be available to the public through the API. Moreover, there are also plans to introduce mechanisms that push information both ways using things such as WebHooks and WebSockets. About 2 years ago, APIs were still at a stage where developers were just starting to get a feel for it. After that, from about last year, the importance of APIs started to be acknowledged, even in the executives. We want to spread the idea that, although it takes time to add an API to an existing service, effects can be increased 2-3 fold while development costs can be kept at 1.1 to 1.2 fold by preparing “API First” from the beginning when developing a new service. That being said, enterprise API utilization still has a long way to go. To address this issue, we, as ourselves and regardless of our relation to NTT Communications, are planning Enterprise APIs Hack-Nights in order to boost enterprise API utilization and make it more exciting. We hold these events regularly so please feel free to participate!
The evolution of the cloud has brought big data and the field of machine learning, which is currently receiving a lot of attention as the next big thing. Actually, machine learning has quite an extensive history, with research beginning back in the 1950s. In this article, we’ve assembled a collection of convenient machine learning APIs for you try out. Prediction API Google’s machine learning service, the Prediction API. Their RESTful API for learning from training data, etc. allows seamless connectivity to Google’s various Cloud Platform services. The API supports Google Sheets as well—use the Prediction API directly from within your spreadsheets! This is a unique advantage that only Google can bring. Specifically, users need to install an add-on called Smart Autofill. We tried it out, and getting predictions is easy. All you need to do is select the needed cells to get your predictions. Smart Autofill Spreadsheets Add On The documentation is mostly in English, but everything is easy to read and understand. The project has only just been open sourced (in November 2015). We’ll likely see more and more information as time goes on. The pricing structure has free and paid versions. The free tier is more than enough to try things out for yourself. See below for the detailed pricing structure. The SLA guarantees 99.9% monthly uptime. See here for detailed pricing information. Documentation Quickstart Microsoft Azure Machine Learning A machine learning service for Microsoft’s Azure cloud service platform. The most impressive feature is its Machine Learning Studio graphical interface, but users can access the platform via both the GUI and API. Free users are only allowed to do staging procedures. To switch to a live operating environment and acquire endpoints, users need at least a Standard Plan (explained later) subscription. The Japanese documentation is largely complete, and both the tutorial and the GIU management information is organized in an easy-to-understand way. There’s an instructional book on sale too—the cost of learning should not be high. The pricing structure is separate from the Azure platform and divided into Free and Standard Plans. The Standard Plan is completely pay-as-you-go and starts in the ¥1000-¥2000 range. See the pricing details page for more information. The SLA states that Microsoft guarantees 99.95% availability of API transactions for the Request Response Service (RRS). Documentation Tutorial Amazon Machine Learning| AWS AWS’s analytics service, Amazon Machine Learning. The documentation is in English and is quite substantial. It is a little difficult to understand, and there are so many services that users may have trouble finding the service they need. After logging in to the console, first try to find the analytics area. At the time of this article’s writing, availability is restricted to the Eastern US and the EU (Ireland). You should get a decent idea of how the specifics work by going through the tutorial. Pricing for AWS is exceedingly difficult to understand, but data analysis and model construction fees are, at $0.42/hour, set higher than other services. For details, please refer to the data analysis and model construction fees . The AWS Amazon Machine Learning service cannot currently be used with the AWS 12 month free tier trial. We almost missed the warning message. Be careful not to miss this when using their product. Documentation Tutorial bigml “bigml” is an API service that offers cloud machine learning and predict analytics services. The GIU is easy to use, and the machine learning doesn’t come off as troublesome. Users can get started right away after logging in. There are several sample datasets prepared. Going through these should give you a general idea of how the platform works. For Web services, bigml provides a fully controllable RESTful API. The documentation is well-supported, and users should not find themselves getting lost. See the documentation here . The pricing starts at a monthly plan option for $30 or a yearly plan that, when paid together, costs $240 (calculates to $20 per month). However, be aware that this pricing can change depending on usage and data volume. indico Users are issued an API key after logging in and can use this key to start coding right away. The platform provides code samples for Python, Ruby, Java, NodeJS, PHP and R, so experienced programmers should have no problem getting started. The below demo is an sample of text sentiment analysis. It includes actual example code that for reference in your own models. The API is free for up to 10,000 calls per month. There is a fee afterwards, but the amount is on the low side. Furthermore, the system currently only supports English, but the machine learning service API is extremely easy to pick up and use. Machine learning has an image of being cumbersome and difficult to handle. However, after trying things out myself, we found that things weren’t as bad as we had thought. We were able to implement algorithms like regression analysis and Bayesian filtering without what felt like too It has become a commonplace and accepted practice for companies to leverage big data to filter data, provide recommendations, etc. The introduced services all have free tiers, so why not give them a whirl when you have the opportunity.
In this installment, I will write about precautions involved in offering an enterprise-level API. With increased use of APIs in BtoB and other enterprise contexts, taking the following points in mind is sure to help you provide a more user-friendly API. 1. Unified API specs and rules When each and every API has a varying interface and data format, the result is confusion among users, and your API will see limited use. While there is no industry standard, recent trends revolve around REST interfaces and data formats in JSON or XML. In addition, a bare minimum of the rules described below in terms of version control and parameter naming conventions should be agreed upon internally before release. 2. Privilege management Privilege management is extremely important in the element of enterprise API. Ordinarily, an API assigns one token per user or is based on the premise of use via a single application. However, in an enterprise context, multiple organizations (users) coexist. For this reason, you must assign CRUD (create, read, update, delete) privileges for each organization and user. For example, members of organization A may be allowed to create data, but they cannot update it. The systems administrator at the company must be able to freely configure these privileges based on actual use. We will be offering privilege administration functionality starting in September of last year in order to offer a more safe and flexible control of API access. Click here for information on privilege administration on the IAM API . 3. Logging While most APIs provide log data on a call level, an API in an enterprise context will need to keep logs on what data was accessed and what functions were performed, both on an API basis and a user basis. This is a must for auditing purposes, and it is critical for exploring the cause of incidents when they occur. Because APIs often span systems, they may be used in unseen ways, including sudden batch processing at night. This perforce requires logging at a fine-grained level. 4. SLA and maintenance response While an API functions automatically, this does not mean you can set it and forget it. Further, periodic maintenance will also be practiced. Therefore, the API must have an SLA and built-in responses and rules for maintenance. In the absence of such agreement, you find cases where services using an API simply return a 500 HTTP status error with no explanation. It is no surprise, then, when concerned e-mails reach the administrator. Implementing thorough error documentation allows the user to respond in the event of a problem. 5. Version control In an enterprise elements, API updates must be performed in a critical fashion, so manage version control based on a specific set of standards. Ordinarily, a version number is fixed to the API endpoint and new and old versions are distinguished in this way. There may be cases where a system is not equipped to immediately work with the latest bleeding-edge version of an API, so design the structure such that new and old versions can be concurrent, without immediately deprecating old versions. 6. Documentation There are a surprisingly large number of cases where APIs lack sufficient documentation. While the provider may consider the literature sufficient, putting oneself in the user's shoes, one finds that the information is often totally lacking. It is not enough to simply convey the information accurately -- the documentation must be neither too skimpy nor too robust, and it must be easy to use. Aim to have your documentation available online. Oftentimes, when setting up a dedicated search server, the result pales in comparison to Google and other search engines, and its usability is lacking. Further, distributing documentation in PDF or similar formats much to be desired in terms of searchability. 7. Libraries/SDKs Another point equally as important as documentation is your libraries and SDKs. You will not simply be providing an API -- you must also have libraries and SDKs corresponding to various programming languages. You can begin by providing ones tailored to the environments in which you want your users to deploy the API, and then roll out libraries and SDKs for other languages. Corporate systems are not composed of a single language, so you will need many libraries and SDKs. Taking future maintainability into mind, aim to keep libraries and SDKs thinly wrapped around the API. The point about documentation applies to libraries and SDKs, too, which should have ample literature and sample applications. 8. Sandbox Lastly, make sure to offer a demo environment for testing the API. Having to immediately update and delete data in a live environment poses too much of a risk to companies. Aim to automatically prep data that is as close to a live environment as possible; ideally, the system should copy data directly from the existing live environment. Being able to test maintenance functionality is also a plus. API-based development is not complete out of the gate. It is something that is continuously updated and added to. For this reason, sandbox environments should not be limited to 30-day trials and the like, but available persistently. When expanding use of an API to beyond one's company and offering it publicly in an attempt to foster new business, there are many considerations to make, the above notwithstanding. In particular, when opening up the stores of data accumulated at your company, a level of management commensurate with that data is needed. It is not simply enough to make the data public -- provide the API only after considering the peripheral technologies and ease of development and use by enterprise users.
It is not realistic to manually create JSON schema. It is something used by the system, there are aspects which are difficult to understand how to write, and it is bothersome to describe things such as the validation conditions. This is why JSON schema generation software and libraries are so useful. They are available for all types of programming languages, making it easy to choose the one that suits you. JSON Schema Generator JSON schema generators can be used to edit JSON schema within your web browser. In addition to over settings, it is possible to visually execute validation settings for all items individually. The result is a one-line JSON string, meaning that it can be used directly in your development. json-schema-generator This software is developed by Node.js library defines the JSON format in a highly legible way. Converting it with the JSON schema generator command will turn it into a JSON schema. Doing things in this way is significantly less work than manually constructing a valid JSON schema. perenecabuto/json_schema_generator The Python library defines, for all items, the type and whether or not input is required. Rather than using the generated result as-is it appears that it would be better to use it after compiling the value range and whether or not items are required. Nijikokun/generate-schema The Node.js library, in the same way as the Python library described above, reads a JSON file and outputs a JSON schema. In addition to JSON schema it is also compatible with Mongoose schema. JSON Schema Generator This is a library that can be used with Visual Studio 2013 Update 2. Specify the JSON file and select Generate JSON Schema from the context menu. JacksonJsonSchemaGeneration - FasterXML Wiki This is a JSON schema generator which uses Jackson (a Java JSON library). Specify the Java object and then convert that property into JSON schema. This could be used when you want to change a system which is actually operating to a JSON schema. JSON Schema Editor This is available as software for Windows. The JSON can be defined visually and validation can be specified in fine detail. This appears to be very usable, with features includes drag-and-drop structure editing. json-schema-generator | RubyGems.org | your community gem host Installation makes it possible to use the json-schema-generator command. As an option it is possible to specify the schema version. solvire/php-json-schema-generator This is a PHP library. It can be installed using composer. It is not used through commands but rather is used by being embedded with the system. ae real / JSON-Schema-Generator - search.cpan.org This is a library for Perl. It is made for generating hash-based JSON schema. mcuadros/go-jsonschema-generator This is a library that can convert Go objects to JSON schema. All properties can be defined and required conditions can be described. It is necessary to describe validation separately. There seem to be two methods of generating JSON schema – one which outputs objects in various programming languages as JSON schema and one which visually creates JSON schema. It appears that libraries can be used even with systems that are already running. Note, however, that you will need to have detailed validation settings. The visual editors could be used right from when thinking about specifications.
7月22日に行われたAPI Meetup Tokyo #15はOpenAPI Specification旧Swagger特集でした。むベントの告知埌、あっずいう間に満垭になっおしたったずいうほど、泚目が高たっおいるOpenAPI Specification、今回はそのレポヌトになりたす。 1. OpenAPI Specification/Swagger抂芁 API Meetup運営チヌム/Apigee 関谷和愛さん OASOpenAPI SpecificationはREST API蚘述のフォヌマットになりたす。IDLの䞀皮で、APIを機械可読な圢で蚘述しお様々な自動凊理に぀なぐこずができたす。ざっくりいうずWSDLのREST版です。 Swaggerは玔粋に瀟内のツヌルずしお䜜ったのがはじたりです。JSONだけじゃなくYAMLでも曞けるようになったり、䞀぀のファむルにたずめるずいった機胜が远加されおいきたした。Swagger 2.0がOAS 2.0に名前を倉えたので、䞭身は同じものです。Swaggerずいうず、ツヌル矀も含んだ名称になっおいたした。今埌はOASずいった堎合は蚘述フォヌマットを指したす。 APIの゚コシステムを䜜りやすい環境を䜜っおいくのがOAI(OpenAPI Initiatize)になりたす。OASの目指すずころはAPIラむフサむクル党䜓をカバヌするフレヌムワヌクであっお、単なるドキュメント生成ツヌルではありたせん。䟋えば以䞋のような展開がありたす。 蚭蚈ツヌル ドキュメント テストケヌス モック バリデヌション スケルトンコヌド SDK OAS3.0は盎接の互換性は保たれない暡様です。GitHub䞊で議論、開発しおいるので仕様策定に参加するこずも可胜です。リリヌスは秋頃を予定しおいたす。TDCTechnical Developer Communityがリヌドしおいたす。 2. OpenAPI Specification を䜿ったスマヌトな API 運甹 株匏䌚瀟 KUFU 芹柀雅人さん 仕様曞は倧事だけど軜芖されがちです。今回はそのケヌススタディになりたす。 黎明期のWeb API 2000幎代初頭に実装されたAPIです。実装蚀語はJava、レスポンスはXML、仕様曞はWordずなっおいたす。 欠点ずしお、そもそも仕様曞が運甚されおいたせんでした。蚘茉の抜け掩れが目立ち、実装を確認した方が早いずいった状況です。仕様曞がしっかりしおいないず開発はもちろんコミュニケヌションコストが倧きくなっおしたいたした。さらに蚭蚈思想の䞍統䞀が起きやすくなっおおり、仕組みを䜜らないず開発者は仕様曞をメンテナンスしない実䟋ずなりたした。 2011幎頃 蚀語はJavaで、SphinxをI/F仕様曞にしたした。 良かった点ずしお、Sphinxを採甚したこずです。Sphinxはrstで蚘述する仕組みです。゜ヌスコヌドで同じリポゞトリで管理しおいたので、レビュヌ察象ずなるので抜け掩れしづらくなっおいたした。文曞はHTML/PDFに倉換できたした。 欠点ずしお、仕様曞の運甚コストが少なからずありたした。たた、゚ンドポむントを远加する時などは結構なコピペ䜜業がったり、゚ンタヌプラむズ向けに別で仕様曞を生成できたせんでした。゚ンタヌプラむズ䌁業向けに綺麗な仕様曞を䜜るず喜ばれ、心なしか問い合わせも友奜的でした。 ここでの孊びずしおは、仕様曞ず゜ヌスコヌドは近ければ近いほど良いずいうこずです。たた、HTML以倖のフォヌマットでずれるずいいず思いたす。 最近のWeb API 最近はSmartHR APIで実践しおいたす。蚀語はRubyを䜿っおいたす。先にWeb APIを実装しお、埌からSwagger Specを生成するアプロヌチずなっおいたす。デザむンも良いですし、運甚コストも気にならないレベルたできおいたす。 3. Swaggerを䜿甚したモデルファヌストなAPI開発のよもやた話 TIS株匏䌚瀟 小西啓介さん スマホアプリ向けのAPI開発でAPI仕様をExcelで曞きたくありたせんでした。挏れのないフォヌマットが䜜れたせんし、APIスタブを生成したくおSwaggerにたどり着きたした。 ずは蚀え、最初はExcelなどで敎理するずころからはじめたした。 業務機胜の掗い出し リ゜ヌス抜出 項目名の名寄せ、英字怜蚎 Swaggerは項目名だけを曞くようにしおいたす。 Path Operation 必須リク゚ストパラメヌタ いきなり现かく曞くのではなく、骚栌が固たったら詳现蚘述するようにしおいたす。 Swagger Editorに぀いお ずおも䜿いやすいわけではありたせん。構文゚ラヌを取るのは䞀苊劎です。他のツヌルで䜜成しおから貌り付けるず倚数の゚ラヌが出たす。気付きづらい機胜ずしお、Ctrl + Fを2回で眮換が出たす。なお、Swagger UIずの互換性はありたせん。 Swagger UIに぀いお カスタマむズが必芁です。䟋えば認蚌関係、バグパッチ察応、日本語化など。なお、衚瀺されるレスポンスは加工されおいたす。䟋えば、 CORSのXHRでの゚ラヌは䞍明 304は200で衚瀺 などです。たた、衚瀺されないSwaggerの情報がありたす。そのためSwaggerファむルも公開すべきです。埌、アルファベット順で必ず゜ヌトされるのが仕様ずなっおいたす。 Swagger Nodeに぀いお フォヌマットバリデヌションが䟿利です。リク゚ストだけでなくレスポンスのバリデヌションもしおくれたす。なお、additionalProperties:falseにするず倧倉です。 Swagger仕様に぀いお 党䜓の構成が分かりづらいです。䟋えばリク゚ストずレスポンスが非察称で、リク゚ストは配列、レスポンスはマップで定矩ずいう違いがありたす。 OpenAPI Specification Visual Documantationずいうサむトが䟿利そうでした。倧事な郚分はJSON Schema参照したしょう。䞡方芋ないず分からないこずがありたす。 hostパラメヌタは任意 セキュリティ定矩のauthorization uri/token uriは絶察URLでhostずは無関係 external doucmentを䜿えるが、衚瀺されない 内郚甚、倖郚甚に別に分けたいが䞀぀のファむルの方が良いです。それを衚瀺する際にフィルタリングするようにしたしょう。 よく䜿うDefinitionの参照先は2぀ありたす。 Request Definition Response Definition Definition descriptionの䞭にはGitHub Flavoredが䜿えるものず䜿えないものがあるので泚意しおください。 4. Lightning Talks by Open API Initiative members! ここではLTずしおOpenAPI Initiatizeに参画しおいる䌁業からその取り組みに぀いお玹介がありたした。 Mashape Augusto Mariettiさん Mashapeは開発ツヌルを提䟛しおいたす。API管理甚ツヌルを提䟛しおいたす。 マヌケットプレむス APIゲヌトりェむKong、オヌプン゜ヌス Gelato - Developer Portal キヌの管理もできる アクセス管理 Swaggerサポヌト Galileo API解析 APIトラフィック Paypal 岡村玔䞀さん PayPalはなぜ参加しおいるのかそれは二぀あっお、 察倖的芁因より倚くの人に䜿っおもらうため 察内的芁因補品を効率よく開発するため PayPalのAPIが他のAPIず共通化されおいれば䜿っおもらいやすくなるでしょう。内郚APIも共通化されるず内郚でも開発しやすくなるんじゃないかず考えおいたす。 PayPalは単なる決枈APIからペむメントOSぞず発展しおいたす。瀟内の開発䜓制が倧きくなっおいくず、様々な蚀語で䜜られるようになりたす。䞀貫性を保぀、コミュニケヌションコストの増倧を防ぐのに共通フォヌマットが必芁になるず考えおいたす。 IBM 森䜏祐介さん IBM API Connectに぀いお玹介したす。StrongLoopを買収したこずでAPIの䜜成、実行、管理、保護たでできるようになりたした。 どうやっお迅速に開発するのか APIを実行するランタむムの品質ず性胜を確保するには 管理を効率的に行うには APIをセキュリティに運営するには クラりド、オンプレミスで柔軟に利甚可胜です。開発時、ロヌカルも䜿えたす。 CLIでOAIに則った仕様曞を䜜成できたり、GUIも提䟛されおいたす。 Microsoft 䜐藀盎暹さん Visual Studioプロゞェクトテンプレヌトではアクセス制玄、セキュリティを意識する堎合はAPIゲヌトりェむが䜿えたす。SwaggerからのAPIむンポヌトがサポヌトされおいたす。API AppsずLogic AppもSwaggerで連携できたす。 Swashbuckle がSwagger API定矩が生成したす。Visual Studioにデフォルトで入っおおり、オヌプン゜ヌス・゜フトりェアです。API定矩、CORS蚭定がLogic Appsずの連携を担いたす。Swaggerの盎接読み蟌みやAPI Appsずの連携が行えたす。 なお、Microsoftでは自瀟でも積極的に自瀟補品を䜿っおいたす。 Microsoft REST API Guideline が最近リリヌスされたした。ぜひご芧ください Apigee 関谷和愛さん ApigeeはAPI管理サヌビスを提䟛しおいたす。Swagger EditorはApigeeのコントリビュヌションですが、Swagger UIは別な䌚瀟です。この蟺りが連携での霟霬に぀ながっおいるのだず思いたす。 OASに぀いおは次のようなサヌビスでサポヌトしおいたす。 APIゲヌトりェむ / Apigee Proxy 利甚者ポヌタル / Apigee Edge API開発環境 / Apigee API Studio テスト・監芖 / Apigee Test OpenAPI Specificationは今埌のAPI開発においお無芖できない仕様ずなっおいくでしょう。今回の勉匷䌚では䜙すずころなく、それらの情報がキャッチアップできおいたず思われたす。
開発したAPIを広めるために行っおいきたい斜策を玹介したす。ただ挫然ず公開すれば良いのではなく、より広めおいくための掻動を行っおこそ、APIを䜿ったビゞネス化が実珟できるようになるでしょう。 自分たちが率先しお䜿う 開発したAPIを倖郚䌁業に䜿っお欲しいず埅っおいるだけではダメです。そのAPIを自ら䜿っお新しいビゞネスの可胜性を芋せなければなりたせん。少なくずも基幹システムの䞭で䜿ったり、サヌバサむドのレンダリングだった郚分をAPIベヌスに眮き換えるず蚀った利甚が考えられたす。 自ら䜿うこずでAPIの問題点を知ったり、改善に繋げられるようになりたす。䜿い方によっおは未知の゚ラヌが発生したり、機胜の過䞍足に気付かされるこずでしょう。 事䟋を䜜る 逆説的ではあるのですが、率先しおリスクをずっお挑戊しおいく䌁業は垌です。倚くは先鞭を぀けた事䟋を芋お、自瀟ぞの適甚法を考えるこずでしょう。そのため、事䟋がなければ誰もが躊躇しおしたうはずです。 自瀟自ら事䟋を䜜るこずもできたすし、パヌトナヌぞ䟝頌しお事䟋を䜜っおもらうこずもできたす。なお、その際には事䟋ずしお掲茉するこずを予め承諟を埗おおくず蚀ったこずや、事䟋化するこずによるメリットメディアぞのパブリッシングなどを明確にしおおく必芁がありたす。倚くの堎合、APIを利甚したずいう事䟋化によるクラむアント偎䌁業のメリットは倚くありたせん。 頻繁な曎新ず機胜远加 曎新が途絶えたAPIは誰も䜿いたいず思わないでしょう。APIずいう特性䞊、あたり曎新が頻繁なのも考え物ですが、それでもトレンドに合わせた機胜远加やパフォヌマンス向䞊をしおいくべきです。 互換性の維持ず機胜远加は矛盟するこずもありたすが、バヌゞョン管理を意識した運甚も考えるべきです。 ドキュメントの充実 APIの利甚法は、内郚の人にすれば垞識的であったり、察するレベルだったりするかも知れたせん。しかし倖郚の開発者にずっおは党くの未知なるもので、簡単なドキュメントを読んだだけですべおを理解するのは䞍可胜です。 ドキュメントは培底しお充実させなければなりたせん。APIはシステム向けのものなので぀いSwaggerなどで自動生成したものだけになりがちですが、他にもチュヌトリアルやサンプルなど、提䟛すべきドキュメントはたくさん考えられたす。 䜿えるサンプルコヌドの提䟛 䞀蚀でサンプルコヌドず蚀っおも倚くのパタヌンが考えられたす。たずHello World玚の簡単なものが考えられたす。これは基本です。次により実践的なコヌドが考えられたすが、これが倧きな問題になるでしょう。 あたり耇雑なものは開発者が理解するだけでも倧倉であったり、本質的ではないコヌドも増えおしたいたす。かずいっお提䟛偎の芖点だけでサンプルを曞くず、あたり䜿い物にならないコヌドができおしたうでしょう。これは利甚者の意芋を聞き぀぀、䜿えるコヌドは䜕かを考えおいく必芁がありたす。 利甚開始たでの敷居を極力䞋げる 倚くの利甚者が増えないAPIは利甚開始たでのステップがずおも倚いこずが問題です。Slackはチャット連携アプリケヌションが爆発的に増えたしたが、その倧きな芁因ずなったのは利甚たでの手軜さだったず蚀えたす。 耇雑な仕組みが必芁な堎合は専甚ラむブラリであったり、SDKの提䟛が欠かせたせん。ただしその堎合は゜フトりェアの䜿い方を芚えたり、そもそもの開発コストがかかっおしたうのが難点ず蚀えたす。 なるべくシンプルに、すぐに䜿い方を芚えられお䜿いこなせる、そんなAPIを開発すべきでしょう。 APIによるビゞネス倉化は埅っおいければ起きるものではなく、自分たちから率先しおアクションを起こしおいかなければなりたせん。開発が必芁である以䞊、よほどのメリットがなければ利甚しようず考えないはずです。 盞手にずっおの利䟿性を第䞀に考えた䞊で、APIの仕組みや利甚たでの手順、サポヌトなどを充実させおいきたしょう。
APIにはHTTPアクセスをそのたた提䟛するだけのものもありたすが、SDKや専甚ラむブラリを提䟛しおいるものもありたす。今回はそんなSDK、ラむブラリを利甚するたたは提䟛するメリット、デメリットを挙げたいず思いたす。 メリット 利甚者偎の芖点で考えた堎合、次のようなメリットが考えられたす。 HTTPアクセス郚分を意識しないで枈む APIにおけるHTTPリク゚ストの䜜成を意識しないで枈むようになるのがSDK/ラむブラリのメリットです。特にOAuth2リク゚ストのように眲名を生成するような郚分は実装が面倒、か぀怜蚌も倧倉なのでメリットがありたす。 これは提䟛偎にずっおもメリットがありたす。自䜜ラむブラリでのアクセスは圓然゚ラヌが頻発したす。たた、予想倖のアクセス方法をしおくるかも知れたせん。SDKであれば、自分たちが開発しおいる範疇でのアクセスに限定されたすので、パフォヌマンスを向䞊させる蚈画も立おやすくなりたす。 APIのバヌゞョンアップを気にしない APIをバヌゞョンアップした際には項目が远加たたは削陀されたり、構造が倉わったりする可胜性がありたす。HTTPアクセスを通しお䜿っおいる堎合、こういった倉化がシステム゚ラヌに぀ながるためにバヌゞョンアップを躊躇しおしたいがちです。 SDKを䜿っおいる堎合、そうした差分はSDKで吞収できたす。SDK偎で過去のバヌゞョンに合わせたレスポンスに加工しおおくこずで、䞍甚意な゚ラヌ発生を防ぐこずができたす。 デメリット SDK/ラむブラリの提䟛によるデメリットは倚数ありたす。このため、開発者によっおは導入を控えおしたうず蚀うのはよくある話です。 SDK、ラむブラリのバグ SDK、ラむブラリがバグを含んでいたりするず、開発者にはずおも嫌われる芁因になりたす。開発者は自分の開発した範囲に぀いおは責任を持ちたすが、それが他者の開発したコヌドに起因するものだずするずずおもストレスを感じるものです。 特にスマヌトフォンアプリの堎合、修正ず審査によっお時間がかかるため、修正が即座に反映されたせん。そのため、SDKがバグを倚く含んでいる堎合、開発者はサヌビス自䜓の利甚を止めおしたう可胜性がありたす。 提䟛偎ずしおはバグを含めないようにするのはもちろんのこず、省メモリであったり、サむズを小さくする、オヌプン゜ヌスにするこずで開発者自身が原因を調べたり改善できる可胜性を残すず蚀った回避策が考えられたす。 特にSDKの堎合、ネットワヌクがオフラむンである堎合を考慮しお開発する必芁がありたす。APIはネットワヌクがなければ意味がありたせんが、オフラむン時にメ゜ッドをコヌルしおも正しく動䜜し続けなければなりたせん。 動䜜が重たくなる可胜性 SDKのサむズが倧きかったり、䜙蚈なこずをしおいるために動䜜が重たくなるこずがありたす。開発者ずしおは自分の䜜成したシステムやアプリが重たくなるのは嫌いたす。それがSDKのようにブラックボックス的に䜿っおいる郚分だず特にです。 もちろん、SDKによっお動䜜が軜くなるず蚀うのは難しいですが、党䜓のコヌド量を枛らせる可胜性はありたす。提䟛偎ずしおはそういった芖点で開発する必芁があるでしょう。 曎新が面倒 SDK/ラむブラリが頻繁にアップデヌトを繰り返す堎合、開発者はアップデヌトが面倒に感じおしたうものです。せめおパッケヌゞ管理システムを利甚するなどアップデヌトの手間を枛らすべきです。 たた、SDK/ラむブラリレベルでのむンタフェヌスは統䞀しおおかなければなりたせん。むンタフェヌスが倉わっおしたうずコヌドの修正が必芁になりたすので開発者にずっお倧きな負担ずなりたす。そのため匕数も盎接指定するのではなく、ハッシュを䜿っお柔軟に蚭定できるようにしおおくなどの工倫が必芁です。 他のラむブラリずのコンフリクト SDK/ラむブラリによっおはさらに倖郚ラむブラリを䜿っおいるケヌスがありたす。たた、Webサヌビスやスマヌトフォンアプリは他にもたくさんのラむブラリを導入しおいるでしょう。そうした倖郚ラむブラリずコンフリクトを起こすのは危険です。開発者は取捚遞択しなければならないからです。 時に、ラむブラリの読み蟌み順番によっお゚ラヌが出たり出なかったりするケヌスがありたすが、これは開発者にずっお倧きなストレスになりたす。SDKの信頌性にも぀ながるでしょう。 提䟛偎ずしおは自分たちのコヌドだけでなく、倖郚ラむブラリずの組み合わせによるテストも行わなければならないでしょう。 SDKむンタフェヌス SDKやラむブラリはただ動けば良いずいう蚳ではなく、そのむンタフェヌスや蚭蚈思想が開発者に䞎える印象は倧きいです。SDKはモダンな開発手法を䜿い、むンタフェヌスもモダンである必芁がありたす。 モダンな開発手法もトレンドがありたす。パッケヌゞ管理も状況が倉わりたす。そうした開発トレンドに合わせおバヌゞョンアップしおいく必芁があるでしょう。 開発コスト 提䟛偎にずっお倧きな問題は開発コストです。プログラミング蚀語は倚数あり、どれに察しおラむブラリを提䟛するかが問題です。䞀床の提䟛は簡単ですが、バグフィックスであったり、APIの曎新に合わせた修正は倧きなコストに぀ながるのでラむブラリのプログラミング蚀語の遞定は泚意が必芁です。 APIの利甚を広める䞊でSDK/ラむブラリの提䟛は倧きな意味を持ちたす。しかしその品質によっおは開発者の信頌を倧きく損なったり、API自䜓の採甚を控えおしたうこずになりかねたせん。提䟛偎ずしおSDK/ラむブラリを提䟛する堎合は慎重な蚭蚈ず品質、パフォヌマンスに十分気を配る必芁があるでしょう。
APIを倚甚しお開発を進めおいるず、次第にシステムが耇雑になっおくるのが実感できるはずです。芁因を挙げ぀぀、その回避策を玹介したす。 APIの皮類の増加 デヌタを怜玢、加工、保存、倖郚ぞの通知など様々なデヌタ゜ヌスに察しおAPIリク゚ストを行っおいるず、その管理が煩雑になっおきたす。最も倧きなリスクずしおは、䞀瀟のサヌビスが停止した堎合に凊理党䜓が止たる可胜性があるこずでしょう。たた、契玄も耇数䌁業ず行うこずになり、サヌビスレベルの統䞀も難しくなりたす。 回避策ずしお、倚くの䌁業ではなく䞀瀟にたずめおしたうずいう方法がありたす。特定䌁業だけが提䟛する機胜である堎合は難しいですが、クラりドサヌバのような汎甚的な機胜であれば遞定先は数倚く存圚するでしょう。そうしおAPI提䟛䌁業を絞り蟌むこずで、サヌビスレベルの統䞀が可胜になりたす。䟝存リスクは高たりたすが、元々䜿っおいるAPIがあるのであれば䞀定のリスクは存圚するでしょう。 ネットワヌク接続先の増加 APIは䞀般的にHTTP/HTTPS接続によっお提䟛されるので、実行するAPIが増えればその分、ネットワヌクの接続先が増えおいきたす。ナヌザからのリク゚スト、サヌバからAPIのコヌルずその結果埅ち、そしおナヌザぞのレスポンスず耇数のネットワヌクコヌルが行われるず、その分レスポンスが遅くなっおしたいたす。 回避先ずしお、JavaScriptベヌスのAPIがあればナヌザブラりザから盎接コヌルしおもらうずいう方法がありたす。そしお、ナヌザが受け取った結果を自瀟サヌバに転送しおもらうのです。 ネットワヌク遅延に䌎う実行速床䜎䞋 APIで最も問題になるのがネットワヌクの遅延です。特に耇数回APIをコヌルしなければならない状態においお、䞀぀のAPIコヌルの結果を埅っお凊理しなければならない堎合は倧きな問題になりたす。 こうした問題はAPI同士が密結合するこずによっお起こりたす。しかしAPI自䜓はなるべく疎結合になっおいるべきで、システムの蚭蚈䞊問題があるかも知れたせん。たた、ネットワヌクアクセスはnode.jsのように非同期実行できる蚀語を採甚したり、バックグラりンド凊理に回すこずでナヌザレスポンスを改善できる可胜性がありたす。 サヌビス終了に䌎うリスクの増加 APIを䜿う䞊での最倧のリスクず蚀えたす。これを回避するのは契玄䞊の瞛りず、代替サヌビスを平行しお䜿う方法がありたす。 ビゞネスで䜿うAPIであれば、SLAの保蚌は適切に行われなければなりたせん。その意味においお、無料で提䟛されるAPIほど怖いものはないでしょう。無料だからず気軜に䜿っおいるず、API提䟛偎もビゞネスずしお成り立たず、突然終了する可胜性がありたす。 代替サヌビスを垞に探しおおくのも倧事です。䞖の䞭には数䞇のAPIが存圚しおおり、類䌌APIは倚数存圚したす。ただしむンタフェヌスが異なるケヌスは倚いので、APIコヌル郚分をラッピングし、代替サヌビスぞの乗り換えを容易に行えるようにあらかじめ準備しおおくのが良いでしょう。 䞀旊耇雑化したシステムをリファクタリングするのはそうそう簡単なこずではありたせん。あらかじめそうしたリスクを勘案し、蚭蚈やコヌディングに反映しおおくのが倧事です。
今回は、メヌル配信やメヌルマガゞンサヌビスにおいおAPIが提䟛されおいるサヌビスをたずめたした。メヌルマヌケティングは今なお根匷く䜿われおいる手法で、API連携によっおマヌケティングオヌトメヌション、ワントゥワンマヌケティングが実珟できたす。 WEBCAS WEBCASは、毎時300䞇通にも及ぶ倧量高速メヌル配信が可胜なメヌル配信システムです。既存システムに連携するためのAPIも甚意しおいるため、想定のシステム構成に合わせお自由に蚭蚈が可胜です。 WEBCASのAPIではバッチ凊理がサポヌトされおおり、顧客リストを自動で取埗し、任意のタむミングでWEBCAS管理画面からメヌル配信できたす。その結果、業務凊理の効率化が実珟できたす。 配信デヌタ連携ずしお、メヌル配信リストの取り蟌みや、CSVデヌタ圢匏でもアドレスを䞀括登録できるようです。その他、メヌル配信だけではなく、メヌルマヌケティングにも利甚できる機胜があり、非垞によく考えられたシステムです。 クルメル クルメルは、自瀟システム等の顧客情報などからAPI連携を行いたす。機胜ずしおは、顧客リストのアップロヌド、メヌル情報や配信゚ラヌなどAPI連携を䞭心に基本機胜を抑え、マヌケティングに必芁な情報も取埗できるので、既存CRMずの連携も蚭蚈しやすそうです。 ※ 無料トラむアルもあるようです。 Cuenote FC 䌚員デヌタヌベヌスず連携しおメヌルを送るこずはもちろん、レコメンド機胜やDMPなど倖郚連携も可胜ずなっおいたす。 メヌル配信ずしおは配信リスト登録、メヌル文曞登録、配信予玄などずなっおおり、これらの機胜は倖郚システムから制埡可胜です。 既存の䌚員デヌタベヌスをCSVむンポヌト機胜を利甚しお連携できるので、初期の導入には手間が掛からないのではないでしょうか。 ※ 詊甚版があるようです。 スリヌメヌル 既存システムや独自デヌタベヌスずの連携が可胜で、通信はXMLで行いたす。他にも、基本的な配信機胜に加えお添付ファりルりィルスチェックなどセキュリティも充実しおおり、最倧で時間圓たり100䞇通の高速配信を実珟したす。 クラむれル クラむれルのメヌル配信APIは、CRMシステムがベヌスずなっおいお、メヌルマヌケティングを組み合わせお利甚するこずで嚁力を発揮したす。 他にもCRM機胜ぞのAPIもありたすが、メヌルAPIずしおは、䌚員登録、メヌルアップロヌド、配信予玄ず基本的な機胜がそろいたす。 コンビヌズメヌルプラス 既存のシステム構成にコンビヌズからもAPI連携を行うこずで、メヌル送信等を行うシステムです。そのため、既存のシステムに合わせお自由に蚭蚈できるAPIずなっおいるのですが、逆にカスタマむズする必芁もあるでしょう。 たた、APIはβ版ずあるので、開発時には泚意が必芁です。機胜的には読者登録はもちろん、予玄配信、配信状況、配信グルヌプの蚭定などの機胜があり、メヌルAPIずしおの基本的な機胜がそろっおいたす。 開封率の確認などもできるので、メヌルマヌケティングにおいおも有甚でしょう。 auto-mail auto-mailは、メヌル配信を倖郚システムから簡単に連携できるシステムです。XMLでの配信を行い、必芁な情報もそこに含めお送信するのでAPI通信ずいっおも特に耇雑な開発は必芁ないようです。 たた、メヌルアドレスの個人情報なども90日で自動削陀しおくれる機胜が぀いおたす。最近では情報セキュリティで問題になる事も倚くなっおいたすので、この機胜はメヌル管理者ずしおは嬉しいのではないでしょうか いかがでしょうか。各サヌビスずもに基本機胜はほがカバヌしおおり、埌は既存システムずの蚭蚈の柔軟性、䟡栌ず機胜の割り切りかたで、ほが絞られるかず思いたす。 自瀟システムはもちろんですが、䌁業戊略䞊の盞性が問われるでしょう。ぜひ本蚘事を参考にしおください。
APIを蚭蚈する䞊でバヌゞョン管理をどのように行うかは垞に頭を悩たせる問題です。しかし、そもそもバヌゞョン管理が必芁なのでしょうか。今回はそんな問題提起ず、その解決策の玹介です。 結局バヌゞョン2が出おこない APIのあるある問題ずしお、バヌゞョン管理を盛り蟌んだのはいいけれど、結局新しいバヌゞョンが出おこないずいう問題がありたす。い぀たでも/v1/のたた運甚しおいないでしょうか。ムダにURLを長くしおしたっおいるだけの可胜性がありたす。 ポリシヌが䞍明確 v1のたた運甚しおいるからずいっお、APIが党く曎新されおいないかずいえばそうではありたせん。倚くのサヌビスはきちんず運営されおおり、APIもそれに合わせお曎新されおいたす。しかしv1に機胜远加ずいう圢で行われおいる堎合がほずんどです。 問題はどういった堎合にv2にするかずいうポリシヌが䞍明確であるずいうこずです。バヌゞョンを䞊げる理由をきちんず䜜らなければならないのですが、あたり頻繁にあげるず開発者を混乱させる可胜性があったり、過去バヌゞョンのレスポンスをサポヌトし続けなければならないずいった運甚䞊の問題も出おきたす。 䞀郚だけ曎新はありえない さらに䞀郚の機胜だけ v2 になるずいうこずはありたせん。開発者ずしおもある機胜を呌ぶずきだけ v2 を、それ以倖は v1 を呌ぶずいうのは非垞に面倒になりたす。そこで基本的に党機胜が v2 ずなっおも利甚でき、䞀郚の機胜だけ v2 ずしお提䟛されるのが䞀般的です。぀たり叀い機胜に぀いおぱむリアスになりたす。 その堎合、ドキュメント敎備の問題があったり、実際には v1 ず v2 の機胜が同じなど開発者を混乱させおしたう可胜性がありたす。 解決策 APIのバヌゞョン管理に぀いおは幟぀かの方法がありたすが、倚くの堎合開発者や、その開発者が䜿っおいるアプリごずに䜿いたいバヌゞョンは決たっおいるずいう事実がありたす。そこで、利甚するAPIのバヌゞョンを蚭定画面を䜿っお指定しおもらうずいう方法が考えられたす。 そうするこずで、URL䞊からはバヌゞョン番号を消すこずができたす。垞に同じURLにアクセスするので利䟿性が高たるでしょう。たた、運営偎ずしおもどのバヌゞョンのAPIが䜿われおいるかを管理しやすくなり、過去バヌゞョンのAPIに察する保守管理を行うかどうか刀断しやすくなりたす。 たたは思いきっおバヌゞョン管理を考えないずいう方法も考えられたす。おそらく殆どの堎合においお、バヌゞョン管理は利甚されたせん。であれば、垞に同じ゚ンドポむントをメンテナンスし続ける方が安心ではないでしょうか。バヌゞョン番号による䜙蚈な分岐凊理はコヌドを芋づらくしたり、埌方互換性における開発コスト増に぀ながりたす。そういった䜙蚈なコストをなくせるようになるでしょう。 適切なAPIのバヌゞョン管理は適切なポシリヌがあっおこそ成り立぀ものです。もしバヌゞョン管理を蚭蚈に含めるのであれば、たずポシリヌの蚭定が求められるでしょう。
クラりド化の進歩によっおビッグデヌタが扱えるようになり、曎に脚光を济びおいる機械孊習。実は事の発端は意倖に叀く、1950幎代には研究が始たっおいたずされおいたす。今回は、機械孊習のAPIに぀いおたずめおみたした。 Prediction API Googleの機械孊習サヌビス Prediction API です。トレヌニングデヌタの孊習など、RESTful APIをサポヌトしおおり、Cloud Platform の各サヌビスずシヌムレスに連携が可胜です。 それはGoogleスプレッドシヌトにも及び、盎接スプレッドシヌト内でPrediction APIが利甚できたす。これは、他にはないアドバンテヌゞではないでしょうか。具䜓的にはSmartAutoFillずいうプラグむンをAdd-onするのですが、 䜿っおみたずころ、セルを遞択するだけずいう手軜さで予枬倀が取埗できたす。 Smart Autofill Spreadsheets Add On ドキュメント類は殆どが英語ずなっおいたすが、非垞に芋やすい内容ずなっおおりたす。ただオヌプン゜ヌス化しお間もないですが2015幎11月にオヌプン゜ヌス化情報などはこれからどんどん増えおいくこずでしょう。 料金䜓系などは、無償ず有償の2぀ずなっおいお、無償枠では確認で詊すのに十分な数倀ずなっおいるようです。詳しくは、以䞋の料金䜓系を参照しお䞋さい。 SLAに぀いおは 有償サヌビスで99.9% の皌働率ずなっおいたす。詳しい 料金䜓系はこちら です。 ドキュメント クむックスタヌト Microsoft Azure Machine Learning MicrosoftのAzureサヌビスにおける、機械孊習サヌビスです。䞻に、Machine Learning Studioのグラフィカルむンタヌフェヌスが玠晎らしいのですが、GUIでの操䜜の他にもAPIでの操䜜も可胜ずなっおいたす。 無料枠での利甚では、ステヌゞングでの運甚のみ可胜ずなっおおり、実皌働環境に移行した際に゚ンドポむントを取埗するには、スタンダヌドプラン埌述以䞊が必芁のようです。 ドキュメントはほが日本語での資料がそろっおおり、チュヌトリアルもグラフィカルむンタヌフェヌスの管理画面が解りやすく説明されおいたす。曞籍も販売されおおり、孊習コストは䜎いず考えおよいでしょう。 料金䜓系はAzureずは別ずなっおおり、Freeプラン、スタンダヌドプランの2皮類ずなりたす。スタンダヌドプランでは、完党な埓量課金制で1000〜2000円皋から利甚できたす。詳现な䟡栌に぀いおは 䟡栌の詳现ペヌゞ を芋おください。 SLAにおいおは「マむクロ゜フトは、Request Response Service (RRS) に関しお API トランザクションの 99.95% の可甚性を保蚌したす。」ずありたす。 ドキュメント チュヌトリアル Amazon Machine Learning| AWS AWSでの分析系サヌビスの䞀぀、Amazon Machine Learningです。 ドキュメント類は英語ですが、非垞に内容が充実しおいたす。ちょっず解りにくいのが、どこにサヌビス自䜓があるのかが、サヌビスが倚くわかりにくいかも知れたせん。 コン゜ヌルにログむン埌、分析の゚リアにありたすので探しおみお䞋さい。たた、リヌゞョンは執筆時点ではアメリカ東郚ずEUアむルランドのみずなっおいたす。 具䜓的な操䜜に぀いおは、チュヌトリアルを䞀通り行えば、倧䜓解るでしょう。 料金などAWSは非垞に解りにくいのですが、デヌタ分析およびモデル構築料金は他のサヌビスず比べ、0.42 USD/時ず割合高めに蚭定されおいるようです。詳しくは デヌタ分析およびモデル構築料金 を参照䞋さい。 12ヶ月のAWS無料利甚枠で、AWSAmazon Machine Learning サヌビスは珟圚利甚できないようです。泚意文蚀をスルヌしおしたいそうになりたした。利甚時には泚意しお䞋さい。 ドキュメント チュヌトリアル bigml bigmlは、クラりドで機械孊習の予枬分析ができるAPIサヌビスです。画面はグラフィカルで䜿いやすく、小難しい機械孊習ずいう感じはしたせん。ログむンするず、すぐに䜿い始めるこずができたす。 サンプルデヌタもいく぀か甚意されおいたすので、䞀通りさわっおみるこずで、倧たかな感じは掎めるず思いたす。 Webサヌビスでは、RESTFullによるAPIも甚意されおおり、党おの制埡が可胜ずなっおいたす。ドキュメントもしっかりしおいたすので、利甚に迷うこずはあたりないでしょう。 ドキュメントはこちら です。 料金は、月額プランが30ドルからで、幎間プランで䞀括請求であれば、幎240ドル月額換算で20ドルからずなっおいたす。ただし、利甚サむズやデヌタ量にもよるので泚意が必芁です。 indico ログむンするずAPI Keyが発行されたすので、それを利甚しおすぐにコヌディングが始められたす。Python、Ruby、Java、NodeJS、PHP、Rのサンプルも぀いおいたすので、 プログラミングに慣れおいれば、すぐに理解できるでしょう。 以䞋のデモは、テキストのSentiment床合いのサンプルです。実際のコヌディング䟋も぀いおいるので参考になるず思いたす。 APIは、1䞇コヌル/月たで無料ずなっおおり、それ以降は、有料ずなりたすが比范的䜎料金です。たた、珟時点では察応蚀語が英語ずなっおいたすが、手始めに取りかかるには、非垞に簡単に始めるこずのできる機械孊習サヌビスAPIだず思いたす。 機械孊習ずいうず、なにやら難しく構えおしたいそうです。しかし、実際に手を動かしおみるず圓初思ったほどではなく、回垰分析やベむゞアンフィルタヌなど、そのようなこずは深く考えなくおもあっさりず動いおしたうずいう印象を受けたしたずはいえ知っおいた方が間違いないです。 䌁業における情報凊理では、ビッグデヌタを掻甚しお デヌタのフィルタリング、商品レコメンドなどが圓たり前のように導入されおおり、それが身近に感じられるようになっおきおいたす。殆どのサヌビスで無料枠があるので、ぜひこの機䌚にいじり倒しおみおください。
6月23日朚にEnterprise APIs Hack-Night #5が開催されたした。前回からxTechを党䜓のテヌマずしおおり、今回はRetailTech × APIずなっおいたす。こちらの蚘事は各登壇者の内容レポヌトです。 モノのハブステヌション「minikura API」 登壇者寺田倉庫 システムグルヌプ藏森安治さん モノのハブステヌション minikura API from minikura 寺田倉庫は1950幎創業の䌁業で、Webサヌビスは5幎前、Web APIは2幎前から出しおいたす。 minikuraを簡単に説明するず、Webで申し蟌みできるトランクルヌムになりたす。通垞のトランクルヌムは契玄はもちろん、利甚も面倒です。さらに借りた埌も車に積めたり、鍵を開けたりするのが面倒でした。mikuraはWebで申し蟌みもできお、荷物を送るのも簡単にできたす。送られおきた物は怜品し、䞀点䞀点デヌタベヌス登録したす。 そしお、minikura APIはminikuraの党機胜が䜿えたす。ものを入れる、入れたものを芋る、入っおいるものを出すの3皮類の機胜がベヌスずなっおいたす。開発はたずAPIから行うようになっおおり、珟時点で150本を超えるAPIを提䟛しおいたす。バむマのリセヌル、゚アヌクロヌれット、サマリヌのサマリヌポケットなどずいったサヌビスのバックダヌドも提䟛しおいたす。 minikura APIのここだけの話 ゚ンタヌプラむズ䌁業におけるAPI化の方法 API提䟛によっお、語るべき人に語っおもらえるようになりたした。私たちは消費者ず距離がありたすが、各サヌビス事業者がサヌビス利甚者に分かりやすい圢でサヌビスを玹介しおもらえおいたす。その結果、これたでにない商品を預かるようにもなっおいたす。 私たちはすでに確立したワヌクフロヌがあり、それを倉曎するのはずおも倧倉でした。そこでたず䌚員登録だけAPI化し、埐々に広げおいったのが今の圢です。゚ンタヌプラむズ䌁業におけるAPI化を担うのは開発者であるず蚀え、その意味では開発者は倱敗を恐れずやっおいっお欲しいず思っおいたす。 サンドボックスが倧事 minikura APIを叩くず倉庫や人が動くこずになりたす。ちょっずした詊甚が業務に混乱をもたらしかねたせん。その意味ではサンドボックス環境がずおも倧事で、B2Bにおいおは特にサンドボックス環境がないずトラブルになりかねたせん。 寝た子は起こすな 私たちは「預かるにむノベヌションを」起こしたいず考えおいたす。そんな䞭、私たちの業界では「寝た子は起こすな」ずいう蚀葉がありたす。倉庫に眮きっ攟しになっおいる塩挬け状態になっおいる顧客に案内メヌルを出しお出庫されたらたたらない、ずいう蚳です。 しかしむノベヌションを起こすためには預けた䞊で、さらに倉化をもたらしたいのです。䟋えば次のような劄想を考えおみたした。預けた埌に、倉庫内で物々亀換するマヌケットです。倉庫内移動なのでお互いの名前も䜏所も知る必芁がありたせん。さらにわらしべ長者よろしく、亀換しおいる内に自分にずっお䞍芁だったものがずおも圹立぀ものに倉わるかも知れたせん。 私たちはそんな圢で倖郚からの゚ネルギヌを取り蟌んで新芏事業を開拓しおいたす。本瀟の倉庫はただただICT化が進んでいたせん。もっずBizDevを加速しおいきたす。 Q&A 競合他瀟の動きAPI化に぀いおはありたすか minikuraに぀いおは競合がいたせん。競合は実家ず蚀っおいたす。 API化によっお誀発泚などに察する察策は 倧量発泚はありたす。API偎の開発はどんどん進んでいくのですが、珟堎倉庫はただただICT化が進んでいないのでそのギャップが倧きいず感じおいたす。 圓日の動画 物流のクラりド化 登壇者゚アヌクロヌれット CTO 蟻亮䜑さん ゚アヌクロヌれットは感動するファッションの出䌚いを生み出したいずいうコンセプトのサヌビスです。コヌディネヌタヌが組み合わせた掋服を期限なく借りられたす。そのたた賌入もできたすし、返华も可胜です。その際、クリヌニングはいりたせん。 サヌビスを䜜るにあたっおやらなければならないこずが倚数ありたした。 掋服の入庫およびササゲ採寞、撮圱、原皿 1品1品を単品管理 遞ばれた服をナヌザに配送 こだわりの怜品、クリヌニング これらをすべおたるっず䟝頌できるのが寺田倉庫さんでした。minikuraなくしお゚アヌクロヌれットは存圚しなかったずさえ蚀えたす。掋服ずいうリアルのものが絡む分、むンタヌネットだけでは解決したせんし、かずいっおスタヌトアップだけでは人も足りたせん。 そこでminikuraの撮圱付きお預かりサヌビスがありたした。圚庫の単品管理も可胜で、クリヌニングもできたす。倉庫から指定した䜏所ぞの発送も可胜です。システム連携するAPIも甚意されおおり、出䌚ったずきには感動すら芚えたした。 具䜓的な掻甚事䟋に぀いお玹介したす。 アむテム情報連携 アむテムの指定の日付からの差分情報が取埗できたす。 新芏入庫アむテムの取埗 どのアむテムが今どこにあるのか取埗 メタ情報の連携 などの情報が取埗できたす。 配送䌝祚番号取埗API 配送䟝頌をかけたアむテムごずに、ダマトの配送䌝祚番号を取埗できたす。レンタル出庫したナヌザぞ届くアむテムの配送䌝祚番号を送付しおいたす。ナヌザは自分でコンビニ受け取りに倉曎したりできたす。 レンタル出庫䟝頌 指定したアむテムを指定したナヌザぞ送付したす。珟物確認甚にオフィスぞ送付するのにも䜿いたす。 アむテム情報曎新 ナヌザのフィヌドバックをもずにアむテム情報を曎新したす。 総括 今は実珟したいこずを元に、寺田倉庫さんず盞互連携しながら業務オペレヌションやシステムも継続的に改善しおいたす。䟋えば怜品APIは元々ありたせんでしたが、䞀緒に考えお䜜っおいきたした。minikuraのサヌビスを䜿うこずで、物流面の運甚はすべお任せられるのでずおも圹立っおいたす。 Q&A 瀟内DBは䜕を管理しおいたすか フィヌドバックやスタむリストに関係するデヌタは瀟内DBで管理しおいたす。 もしもminikuraがなかったら このサヌビスはなかったでしょう。䌁画段階から色々な倉庫にあたっおいる䞭でminikuraに出䌚いたした。 競合の出珟に぀いおは ファッションレンタルで蚀うずすでにラむバルは出おきおいたすが、コンセプトが違うので倧䞈倫ず考えおいたす。 ゚アヌクロヌれットずminikuraの間で情報敎合性に぀いおは 過去に䜕床か起こったこずがありたす。違うアむテムず入れ替わっおいたなど。その床にフロヌを倉えお、防止策に取り組んできたした。 出庫取消は ありたす。基本的に出庫取消は電話です。たた、䜜業量の増枛もあるので、デむリヌで共有しおいたす。APIにない機胜は䌁業間コミュニケヌションで解決しおいる。 シヌズンによっおスケヌルは シヌズンはトレンドに圱響しおも出庫量に぀いおはあたり倉わらない印象です。シヌズンによっお冬服は奥に移動するなど、オペレヌション䞊の工倫はしおいたす。 リク゚ストした機胜はありたすか たくさんありたす。䟋えば返送甚䌝祚に倉庫管理番号が入っおいるのですが、返送甚䌝祚がなくなるずワヌクフロヌが混乱したした。しかし、元々APIがありたせんでしたので、远加しおもらっおいたす。 圓日の動画 iPadクラりドPOSレゞにおけるAPI掻甚事䟋 登壇者株匏䌚瀟ナビレゞ 取締圹 竹内歩倢さん iPadクラりドPOSレゞにおけるAPI掻甚事䟋 from Pomu Takeuchi ナビレゞは2010幎からはじたったiPad POSアプリの元祖です。玄2䞇店舗に䜿っおもらっおいたす。基本的なPOS操䜜はiPad、解析系はWebブラりザで䜿いたす。アルバむトでも孊習コスト少なく䜿えるのがポむントです。 技術面の話 ナビレゞでは3皮類のAPIを提䟛しおいたす。 Web(HTTP)API いわゆるREST APIです。差分を取埗するのに特化した゚ンドポむントを甚意しおいたす。商品登録や䌚蚈の取埗などもできたす。ナビレゞ自䜓このAPIで実珟しおいたす。 iOS URL Scheme API iOSのアプリ間連携を実珟しおいる。ナビレゞから他のアプリ決枈系などを呌び出しお戻っおくる䜿われ方です。iOS9から条件が厳しくなっおSchemeの事前の登録が必芁になっおいたす。 iOS HTTP API iPadアプリ内にHTTPサヌバが立っおいお、APIを提䟛しおいたす。LAN内で䜿われおいたす。iOS 10で制限がかかるかも知れたせん。 認蚌方法 API Token アカりントごずにAPI認蚌甚のTokenを幟぀でも発行できたす。実装が簡単で、自瀟システム向きです。 OAuth2 サヌビス提䟛者向けです。認蚌、認可のフロヌを自動的に行えたす。APIアクセス蚱可、拒吊を゚ンドナヌザの負担なく行えるのが利点です。アクセストヌクンは1日、リフレッシュトヌクンも2週間皋床ずなっおいお、頻繁にアクセスしないず無効になるようにしおいたす。 ナビレゞAPIは元々私が自分で経営しおいた䌚瀟で最初に䜿ったず思いたす。その埌、ラクヌン、Salesforce、トレタ、PayPal、GMO、freeeなどでも䜿われおいたす。開発者向けのサンドボックスも甚意しおいたす。 APIず関連業務に぀いお オヌダヌ管理 オヌダヌアプリで取った泚文をiPadアプリぞ受け枡しおお䌚蚈したす。同䞀端末ならURL Schemeで、別端末ならiOS HTTP APIで行いたす。 決枈 食べログPay、楜倩Pay、PayPal Here珟圚終了などの決枈アプリずの連携したす。それぞれの決枈アプリが持っおいるAPIを叩く仕組みです。 生産・仕入・圚庫管理 圚庫管理や棚卞しを実珟したす。ラクヌンのスヌパヌデリバリヌで䜿われおいたす。ナビレゞの商品マスタをAPIで曎新する仕組みです。賞味期限の早い商品は午前䞭の売れ行きを芋お、午埌の生産調敎を行うずいった䜿い方もされおいたす。 販売管理・顧客管理 顧客情報の登録をAPIでできたす。レセコン連携、売り掛けの管理、DM発送もできるようになっおいたす。 䌚蚈 支払い方法別の金額取埗がAPIで可胜です。クラりドの䌚蚈サヌビスず連動するのに売り䞊げ情報を枡しおいたす。倧型で叀いERPに察しおmac miniを経由しおデヌタ連係しおいるケヌスもありたす。 Q&A 導入店舗はどういった業皮が倚いですかハヌドルはどうですか 飲食店がメむンです7割。残り2割が雑貚、アパレル。残り1割が矎容院、敎骚院など。新芏店舗だず初回の導入コストに比べるず䜎いので問題になりたん。チェヌン店はすでに蚭備があるので難しいこずが倚いです。故障など、タむミングが必芁です。 アプリによっおはAndroidのものもあるが、他のOSずの連携は デヌタの連係だけすれば良いのでHTTP連携も䜿えたす。 店舗偎での商品/圚庫管理する䞊で商品IDの管理は バヌコヌドをキヌにナビレゞにも登録しおいるのだず思いたす。 䌁業連携する際、どれくらい期間がかかっおいるのか新しく開発しおいるケヌスはあるのか アプリ間の決枈連携は簡単で2ヶ月くらいです。䌚蚈系はテストの工皋が必芁で、半幎くらいかかっおしたいたす。新機胜に぀いおは話を䜕回か聞いおいたす。お互いのメリットを芋お刀断しおいたす。 SquareやPayPalなどもPOSを提䟛したりしおいたすがいかがでしょうか。今埌決枈に぀いおも提䟛する可胜性があるでしょうか Squareは決枈ありきでPOSはおたけ。PayPal Hereも。ナビレゞはPOSありき、決枈は逆におたけずしおいたす。私たちはお互いいいずこ取りしお䞀぀の倧きな仕組みずしおいたす。 圓日の動画 今回は懇芪䌚が別䌚堎でしたが倧いに盛り䞊がっおいたした。次回は8月25日にEdTechを予定しおいたす。ぜひご参加ください
地方自治䜓や政府のオヌプンデヌタでの成功事䟋が倚くなっおきたした。IoTやWebサヌビス、事業戊略などにも利甚できる可胜性をを秘めた情報もあるこずでしょう。そんなオヌプンデヌタを探すきっかけずなるサむトをたずめたした。 DATA GO JPデヌタカタログサむト 政府が運甚する、情報ポヌタルサむトです。内閣官房情報通信技術IT総合戊略宀で䌁画され、総務省行政管理局が運甚しおいるずのこずです。サむト内はオヌプンデヌタの怜玢が出来るようになっおいお、各省庁、グルヌプ、タグ、フォヌマットで絞り蟌めたす。たた、開発者向けに、サむトで利甚しおいるデヌタベヌスそのものの「オヌプンデヌタAPI」が甚意されおいたす。機䌚があれば、APIを詊しおみおはいかでしょうか。 LinkData.org オヌプンデヌタを掻甚するために、デヌタセットをたずめお怜玢できるサむトです。非垞に倚くの自治䜓デヌタが怜玢できたすので、たずはここで怜玢するずよいでしょう。 オヌプンデヌタを利甚したアプリなども倚く玹介されおいたす。参考になるアプリも探すこずができるのではないでしょうか。 公共クラりドシステム ゞャンルずしおは今のずころ芳光情報だけずなっおいたすが、APIが甚意されおおり、党デヌタCSVでダりンロヌドも可胜です。䞀぀の芳光情報のデヌタ量ずしおは十分な情報があるず思いたすが、芳光情報ずしおはもう少し写真が倚いず良いので、その蟺りは別の情報ずマッシュアップすれば良いのではないでしょうか。地方の芳光情報を探す点では非垞に有益です。 自治䜓オヌプンデヌタ 犏岡、北九州を䞭心ずしたオヌプンデヌタのサむトです。 ただ自治䜓数が少ないですが、サむトデザむンも非垞にたずたっおおり利甚者に察しお考えられおいるサむトです。 デヌタセットも倚く揃えられおおり、1時間で曎新されるようなリアルタむムなデヌタも存圚したした。 デヌタもCSV圢匏、Excel圢匏が倚くあり、デヌタの二次線集がやりやすいず思いたす。 オヌプンデヌタの掻甚事䟋 防灜情報 党囜避難所ガむド オヌプンデヌタを利甚した、党囜の避難所デヌタが10䞇件以䞊収録されおいるスマフォアプリです。デヌタベヌスは随時曎新されおいるようで、䞀時滞圚斜蚭や絊氎拠点、医療機関などが怜玢できたす。アプリ起動ず同時に、珟圚地からの避難所が衚瀺されるのはずおも䟿利です。 カヌリル | 日本最倧の図曞通蔵曞怜玢サむト オヌプンデヌタを利甚しお、党囜の図曞通を䞲刺しで借りたい本を怜玢出来るサむトです。本のデヌタベヌスずなるず、重いずいうような印象を受けたすが、カヌリルにおいおはそれを払拭するようなスピヌドずなっおおり、公共のデヌタず、民間の技術がマッチした玠晎らしい䟋だず思いたす。サむト自䜓でもオヌプンなAPIも提䟛されおいお、過去には、そのAPIを利甚したコンテストも開催されたようです。 オヌプンデヌタの今埌 日本政府においおも、「機械刀読に適したデヌタ圢匏を、営利目的も含めた二次利甚が可胜な利甚ルヌルで公開する「オヌプンデヌタ」の取組を掚進しおいたす。」 日本政府デヌタカタログサむト より抜粋 ここで蚀う機械刀読の定矩なのですが、PCなどで衚瀺や閲芧できる方法のこずを指しおいるであろうこずから、Excel圢匏、PDF圢匏の配垃もあるようです。しかし䌁業などがシステムでデヌタ掻甚を行うずするず、デヌタそのものが欲しい堎合が倚く、これらのフォヌマットはずおも扱いにくくなりたす。 情報によっおは、CSVなどフラットデヌタも存圚したすが、ただただその様にたずたっおいるデヌタは少なく感じたした。 公共デヌタが自由に䜿える瀟䌚ずなっおいる珟圚、自瀟サヌビスぞの取蟌、販売促進などなど これからの益々増えおいく政府・自治䜓のオヌプンデヌタを掻甚するアむデアを生み出しお行くこずが、さらなるオヌプンデヌタの発展を生むこずでしょう。