Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
APIについて
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
マルチステージとAI承認について
miyakemito
0
140
Copilot Studioについて
miyakemito
7
9.9k
Dataverseの検索列について
miyakemito
2
1.7k
AI Builder について
miyakemito
3
1.2k
Microsoft Copilot Studio についてざっくり説明
miyakemito
2
1.8k
Power Automateのデータ操作(Data Operation)について (Ver.モダンデザイナー)
miyakemito
5
4.1k
JSON攻略法.pdf
miyakemito
13
7.3k
ガンダムBotを1分でつくってみせろよ
miyakemito
1
890
Microsoft Copilot Studio について
miyakemito
0
8.5k
Other Decks in Technology
See All in Technology
作る力から、見極める力へ — AI時代に広がるエンジニアの価値と役割
rince
0
270
インシデントレスポンス演習 I / Incident Response Exercise I
ks91
PRO
0
110
生成 AI 実践ガイド (概略版) AIガバナンス編
asei
0
150
「勝手に広まる」人気 AI エージェントを爆速で作ろう!(AWS Summit Japan 2026講演資料)
minorun365
PRO
10
2.3k
螺旋型キャリアの生存戦略 / kinoko-conf2026
rakus_dev
1
700
SONiCの統計情報を取得したい
sonic
0
270
【Cyber-sec+】経営層を"動かす"ための考え方
hssh2_bin
0
200
[チョークトーク資料]AWS DevOps Agent を使いこなす / AWS Dev Ops Agent Chalk Talk AWS Summit Japan 2026
kinunori
3
730
手塩にかけりゃいいってもんじゃない
ming_ayami
0
620
クレデンシャル流出 ― 攻撃 3 時間 vs 復旧 10 時間。この非対称性にどう備えるか
kazzpapa3
3
470
Oracle Cloud Infrastructure:2026年6月度サービス・アップデート
oracle4engineer
PRO
0
220
When Platform Engineering Meets GenAI
sucitw
0
150
Featured
See All Featured
The Cult of Friendly URLs
andyhume
79
6.9k
Building AI with AI
inesmontani
PRO
1
1.1k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
540
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Balancing Empowerment & Direction
lara
6
1.2k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
210
A designer walks into a library…
pauljervisheath
211
24k
Embracing the Ebb and Flow
colly
88
5.1k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
170
Discover your Explorer Soul
emna__ayadi
2
1.1k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
400
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は便利です 上手く利用して 便利なフローを作ろう!
ありがとうございました