API入門
スピーカー
@hutegmin さん
講演資料
https://docs.google.com/presentation/d/1DChXgovvUYexfotmuzDml1vPA2N7xd3vsO0se4joYXA/edit#slide=id.p
今回のLTの目標
APIとはなにか、定義だけでなく具体例も話せるように、知識をまとめよう!
背景について
- 業務システムをいかにして自動化して業務改善するのかに取り組んでいた
- API あるの? と突然上司に言われた
- API なに? 教えてもらってない...
関連語の全体関連
- Operator / Operation Engineer
- Infrastructure as Codeが最近の動き
- Software Engineer,Application Engineer
- ここがAPI?
- Cloud Service
- Automation
- Site Reliability Engineer
APIとは
- API = Application Programming Interface
- アプリケーションとプラットフォームをつなぐインターフェース
- 「こうするとこういう機能が使えるよ!」とかが定義されてる
https://cdn.discordapp.com/attachments/422776223383420930/423108898778513428/image.jpg https://cdn.discordapp.com/attachments/422776223383420930/423108978977931265/image.jpg
APIなかったらどうなる・・・?
- APIがなかったら・・・?
ひとつひとつ開発しなければならない(時間がとってもかかる)
https://cdn.discordapp.com/attachments/422776223383420930/423111364941185036/image.jpg
- APIがあったらなら・・・!!
開発者は規約にしたがってプログラムを書くだけ。
ソフトウェアの使いたい機能を利用できる。
https://cdn.discordapp.com/attachments/422776223383420930/423111425356201984/image.jpg
APIの種類
- 独自API
- 標準API
- WebAPI
今のところ、この分類?
現在、スピーカーのhutegminさんが自動化しようとしているところは、
- WinAPI
- JavaAPI
APIエコノミー
あるWebサービスのWebAPIを公開することで、
API利用者がサービスにAPIを組み込み、便利な機能を使えること。
例)個人の資産管理、オンライン銀行サービス、銀行インフラサービス
資料でのまとめ
- APIとは、既存のソフトウェア同士を組み合わせて新たなサービスを短い開発期間でつくれるもの。
- 多種多様なAPIを組み合わせて目的の機能を実装することができる。
参加者の声
- 自分たちで設計しなくて済む頭のいい人が作った便利関数くらいのイメージ
- API = 私こんな機能を作ったよ! 使いたかったら、この窓口に問い合わせて!! の窓口のイメージ
- 近代プログラミングにおいては「APIを使って組み立てる」がプログラミングなの…かも?
- LinuxのコマンドもAPI叩くといえる
- シェルの API 叩いてると言えなくもないか?
- AWSではAPI Gateway(窓口)とLambda(関数・機能)の分け方
- 直接DB見せたくないからAPI経由で公開して利用範囲に縛りを入れるとか
(´・ω・`)
- 「わからない…俺達は雰囲気でAPIを(ry」
- http使ってお話しするのがwebAPI
- API = 認可 ではないかも
- APIがあるとプログラミングが楽になるというより、APIがあることでプログラミングができるって感じがする
- スゴイコーダーさんが作ったブラックボックス関数の代わりに、中は見えないけど使い方がはっきりしてる関数…?
- APIはレイヤで分けて整理したら分かりやすそう。
- APIが主語がでかすぎから「〜のAPI」って話しないと、コンテキスト合わないかもですねー
Q & A
-
Q.「独自API」「標準API」ってどんなイメージです?(WebAPIと同列に並ぶもの?
- A.WebAPIの概念が多すぎて…「標準」が大きい概念、かな?
-
Q.LinuxAPIとは?
- A.システムコールはカーネルが用意した窓口(API)。
-
Q.日々触れている「API」とはどんなもん?
- A.自分が利用したいものを呼び出す、という意識。使っているという実感が無い。(hutegmin)
- 実はそれがわからないのがいいんではないか?「何々に対するAPI」という表現ならまとまる。(kazuhito_m)
-
Q.APIは何を勉強したらいい?
- A.正直なんでしょう?JavaがわかりやすいからJava使っている。
-
Q.自動化したいから、この機能APIで用意してほしいって言われるからやってる?
- A.自動化したいとは要望が来てない。オペレーションミスの発生が多いので、それを抑止するために手段として自動化をやりたい、と考えている。
その他
-
API 学ぶなら、Google Cloud の翻訳API いじくると楽しい
https://cloud.google.com/translate/docs/getting-started?hl=aj -
楽天商品検索API
https://webservice.rakuten.co.jp/api/ichibaitemsearch/ -
シェルから叩くAPI
http://linuxjm.osdn.jp/html/GNU_sh-utils/man1/printf.1.html -
C言語から叩くAPI
http://linuxjm.osdn.jp/html/LDP_man-pages/man3/printf.3.html