Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
APIについて
Search
MiyakeMito
April 16, 2022
Technology
1.7k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
APIについて
MiyakeMito
April 16, 2022
More Decks by MiyakeMito
See All by MiyakeMito
Power Automateアップデート情報
miyakemito
0
360
マルチステージとAI承認について
miyakemito
0
180
Copilot Studioについて
miyakemito
7
10k
Dataverseの検索列について
miyakemito
2
2k
AI Builder について
miyakemito
3
1.2k
Microsoft Copilot Studio についてざっくり説明
miyakemito
2
1.9k
Power Automateのデータ操作(Data Operation)について (Ver.モダンデザイナー)
miyakemito
5
4.2k
JSON攻略法.pdf
miyakemito
13
7.3k
ガンダムBotを1分でつくってみせろよ
miyakemito
1
930
Other Decks in Technology
See All in Technology
DEFCON_CHV_CTF_Write-up.pdf
bata_24
0
150
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
9
990
空間オーディオで過去の 自分(ゴースト)と競うランニング 〜HealthKitのルートを足音に変える実装〜
nao_randd
0
230
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
370
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
850
AIに任せた品質は、誰が見立てるのか - AI時代のテストマネジメント
nakanao
3
2k
30座EKS, 180次升級淬煉的EKS Upgrade Skill 的歷程
eric8230
0
170
あけおめLINE 傾向とその対策
nasa9084
0
120
人間はどの意思決定を手放せるのか
kawasima
15
7.2k
Reactの設計論
uhyo
24
13k
Azure Serverless 2026:Production-ready な AI エージェント基盤 / Azure Serverless 2026: Production-Ready AI Agent Platform
miyake
2
170
株式会社シーエーシー エンジニア向け会社紹介資料
cac
0
57k
Featured
See All Featured
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.2k
A Modern Web Designer's Workflow
chriscoyier
699
190k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
550
How to Talk to Developers About Accessibility
jct
2
550
Are puppies a ranking factor?
jonoalderson
2
3.9k
Code Reviewing Like a Champion
maltzj
528
40k
HDC tutorial
michielstock
2
870
How GitHub (no longer) Works
holman
316
150k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Transcript
API について 気ままに勉強会 #14
今日の目標 API を理解しよう
アジェンダ API とは REST API とは API のセキュリティ Power Automate
での API
Miyake Mito https://www.icsoft.jp/ @MiTo60448639 https://qiita.com/MiyakeMito
Power Automate と Power Virtual Agents で ゲームを作ってます ⚫ オセロ
⚫ 神経衰弱 ⚫ どうぶつしょうぎ ⚫ WORDL
本日の参考サイト ▪ Microsoft Graph APIってなに?(りなたむさん) https://speakerdeck.com/rnakamuramartiny/microsoft-graphtutenani ▪ Yahoo! デベロッパーネットワーク https://developer.yahoo.co.jp/
▪ 【連載】世界一わかりみの深いOAuth入門 〜 その1:OAuthってなに? 〜 https://tech-lab.sios.jp/archives/25470
API とは
APIとは ① ◼ 「Application Programming Interface」 ◼ 「アプリケーション」と「プラグラム」を「つなぐ」もの ◼ 異なるアプリやソフトウェアが、APIを通じて外部のアプリ
やソフトウェアを呼び出し、その機能を利用する仕組み API API提供者 API利用者 WEBサービスを普及 サービスの流通 利便性・生産性向上 開発の効率化 セキュリティ向上 ソフトウェアの機能を 共有できる仕組み
APIとは ② API API API API API API API API
API みんなAPIでつながる
APIとは ③ ◼ Web 上で API のやり取りを可能としたもの ⇒ Web API
◼ Web API のメリット • ネットワークがつながればどこからでもアクセスができる • ネットワークがつながれば何からでもアクセスができる • やりとりする情報の取り扱いが容易である
◼ Yahoo!商品検索 API • JANコード(バーコード)で、Yahoo!ショッピングの商品検 索結果を取得してみます • 事前にアプリケーションIDを登録する必要があります https://developer.yahoo.co.jp/yconnect/v1/registration.html •
ブラウザからアクセスします https://shopping.yahooapis.jp/ShoppingWebService/V3/itemSearch?appid =<アプリケーションID>&jan_code=<JANコード>&in_stock=true ここでちょこっとデモ
APIとは ④ ◼ 各サービスが異なるルールでAPIを作ってしまうと、 つながるものもつながらない ➢ RESTと呼ばれる設計原則に従って作る それが REST API(RESTful
API)
REST API とは
REST APIとは ① ▪ 「REpresentational State Transfer」 具象的な 状態の 転送
▪ 「具体的に状態を定義した情報の転送」 ▪ 「RESTの4原則」を満たす「RESTful」なAPI
RESTの4原則 1. 統一インターフェース 2. アドレス可能性 3. 接続性 4. ステートレス性
統一インターフェース (Uniform Interface) ▪ あらかじめ定義し共有された方法でやり取りすること ① リクエスト ② レスポンス JSONとXML形式で返すこと
(最近はJSONのみ返すシステムが多い) HTTPメソッド 操作 GET 取得 POST 作成 PUT 更新 DELETE 削除
HTTPリクエストの構成 ▪ メソッド以外にも指定する要素があります POST https://jlp.yahooapis.jp/FuriganaService/V2/furigana ?APPID=<AppID> Content-Type: application/json { "id":
"1234-1", "jsonrpc": "2.0", "method": "jlp.furiganaservice.furigana", "params": { “q”: “愛くるしいパンダが一杯登場する登壇", "grade": 1 } } メソッド パスパラメータ ルビ振り クエリパラメータ リクエストヘッダ リクエストボディ リクエスト ライン
HTTPレスポンスの構成 ▪ レスポンスにも構成があります 200 OK DATE: Thu, 14 Apr 2022
13:21:16 GMT Content-Type: application/json; charset=utf-8 { "id": "1234-1", "jsonrpc": "2.0", "result": { "word": [ { "furigana": "あいくるしい", "roman": "aikurusii", "subword": [ ルビ振り レスポンスヘッダ レスポンスボディ ステータス
HTTPメソッド GET ▪ リソース(情報)を取得する ▪ Webサイトをブラウザーで見るとき、内部ではGETによるリク エストが行われている たけのこは何個買えばいい? 12コだよ API
買い物リスト たけのこ 12コ 天然水 8ℓ Panxa
HTTPメソッド POST ▪ リソース(情報)を新規作成する ▪ GETはパラメーターをURI中に含むが、POSTはリクエストボ ディーに配置するため、パラメーターの長さに上限がない ▪ べき等(何度リクエストしても同じ結果となる)の性質を持た ない
リンゴ10コを追加したよ API 買い物リストにリンゴを10コ追加して Panxa 買い物リスト たけのこ 12コ 天然水 8ℓ りんご 10コ
HTTPメソッド PUT ▪ リソース(情報)を更新する ▪ POSTでリソースを新規作成し、PUTで更新するのがWeb API の典型 リンゴ10コを、笹10トンに変更しました API
まちがえた、リンゴじゃなくて笹10トンです Panxa 買い物リスト たけのこ 12コ 天然水 8ℓ 笹 10トン
HTTPメソッド PATCH ▪ リソース(情報)を部分更新する ▪ PUTはすべて更新し、PATCHは一部更新する まちがえたww 笹10トンてwww 笹は10キロっすwwww デスヨネーww
笹を10キロに変更しました API Panxa 買い物リスト たけのこ 12コ 天然水 8ℓ 笹 10トン→10キロ
HTTPメソッド DELETE ▪ リソース(情報)を削除する ▪ URIが指し示すリソースが存在しない場合でもエラーにならず、 「既に削除されている」ことを返すのが理想的(個人的見解) やっぱ笹イラネwww 飽きたwww 買い物リストから、笹を削除しましたけど
明日から何を食べるの? API Panxa 買い物リスト たけのこ 12コ 天然水 8ℓ - -
HTTPメソッド まとめ メソッド CRUD 動作 リクエスト ボディ べき等 GET READ
リソースから情報を取得 なし 〇 POST CREATE リソース名がサーバ側で割り振られて作成 あり × PUT CREATE/ UPDATE リソース名を指定して作成または更新 (REPLACE) あり 〇 PATCH UPDATE リソースを部分更新する あり 〇 DELETE DELETE リソースを削除 なし 〇 ※あくまでAPI設計の指標です。これらに当てはまらないAPIも存在します。
アドレス可能性 (Addressability) ▪ すべての情報が一意なURIを持っていて、提供する情報 をURIで表現できること https://graph.microsoft.com/ https://shopping.yahooapis.jp/ https://jlp.yahooapis.jp/ etc. https://api.line.me/
接続性 (Connectability) ▪ 応答する情報にハイパーリンクを含むことができる ▪ 1つのリンクから別の情報に接続が可能であること "results": [ { "name":
"Luke Skywalker", "height": "172", "mass": "77", "hair_color": "blond", "skin_color": "fair", "eye_color": "blue", "birth_year": "19BBY", "gender": "male", "homeworld": "https://swapi.dev/api/planets/1/", "films": [ "https://swapi.dev/api/films/1/", "https://swapi.dev/api/films/2/", "https://swapi.dev/api/films/3/", "https://swapi.dev/api/films/6/" ], "species": [], Luke Skywalker が登場する作品 の情報が記載されている
▪ Stateless=「状態がない」「やりとりが1回ごとに完結する」 ▪ 前のやり取りの結果を引き継がない ステートレス性 (Stateless) API ◦◦の情報をちょうだい ▲▲になります さっきの情報をもう一度ちょうだい
さっきの情報がもう何だかわからないよ
APIのセキュリティ
APIの危険性 外部サービスと接続し、データを転送するという性質上 APIが破損、公開、ハッキングされると 大規模なデータ侵害が発生します
認可サーバー APIのセキュリティ ▪ OAuth2.0 ① 許可申請 クライアント ② 権限付与確認 ③
許可 ④ 認可コード発行 利用権でアクセス ⑤ アクセストークン リクエスト ⑥ アクセストークン 取得 そうだよ リソースサーバの API使いたい ID Pass 知ってるクライアント? 許可されたよ 許可権を利用権 にかえて 利用権だよ ⑦ APIへ アクセス ⑧ リソース取得 やったぜ! リソースオーナー リソースサーバー リソースサーバーの ID・パスワード API
OAuth2.0 ▪ 従来のID・パスワードとは異なるトークンベースの認証 – ID・パスワードを他のサービス渡さず済む ▪ 委譲する権限を限定(認可) – トークンを盗まれても被害を最小限に抑えれられる ▪
アクセストークンに有効期限を設定 – 万が一トークンを盗まれても有効期限過ぎると使えない ▪ 認可コードフローなどによりトークンを安全に取得 – ユーザーの質が担保できる
Power Automate でのAPI
Power AutomateでAPI 提供されるコネクタ コネクタを共有 1. 提供コネクタを利用 2. カスタムコネクタを利用 3. HTTPアクション
ある Power Automateで外部サービスを呼びたい 共有する ない 共有しない
提供コネクタ ▪ 標準コネクタ+プレミアムコネクタ ▪ Services :697 Actions :8686 Triggers :894
(2022/4/15) ▪ https://connectorinfo.z31.web.core.windows.net/apilist.html ▪ https://docs.microsoft.com/ja-jp/connectors/connector- reference/
カスタムコネクタ ▪ コネクターが用意されていないサービスとは、カスタム コネクター を構築することで通信が可能 ▪ 作成したカスタムコネクタは組織内で共有 することができる ▪ Microsoft
に認証され公開することも可能
HTTPアクション ▪ HTTPアクションによるAPI連携が可能 ▪ Power AutomateからHTTPリクエストする際に利用 ▪ 認証オプション – 基本(HTTP認証)
– クライアント証明書 – Active Directory Oauth – Raw(未加工)
HTTP要求アクション ▪ APIの作成も可能です – [HTTP要求の受信時]でリクエストを受け取り、 [応答]でレスポンスします – エンドポイントの URL には、共有アクセス署名
(SAS) を含みます – 受信にHTMLメソッドを指定可能です
まとめ APIは便利です 上手く利用して 便利なフローを作ろう!
ありがとうございました