カテゴリ:IT業界・就活 投稿:2022年7月6日0:08、更新:2022年7月8日18:55
・記事の概要
API(エーピーアイ)とは?について、難しい言葉はなるべく無しで「Twitter」を例に説明します。
おおよそAPIってものが何かを把握してもらうことが目的の記事です。
・この記事の対象
・API(webAPI)ってのがいまいちピンと来ていない方
・ざっくりとでいいから理解しておきたい方
・IT業界に就職/転職で興味があり勉強をしている方
・簡単な経歴
SE(システムエンジニア)として4年、PM(プロジェクトマネージャー)として3年間大手IT企業で働き、今はIT企業で新卒採用担当をしています。文系未経験で業界に入ったので、業界特有の用語の難解さはよくわかります 笑
ただ私がTwitterを開始したのはこの記事を書いている1週間前(2022/6/28)ですので、その辺の知見がおかしかったらご容赦ください!おじいかな?
ちなみに以下のようなIT業界研究用のオススメ記事がありますので、ご興味あれば後ほど参照ください!
・SIerについて
エンジニア歴7年の新卒採用担当者がSI(Sier)って何かを簡単解説
・DXについて
DXってなんだ??実は難解なようで単純!エンジニア歴7年の新卒採用担当者が解説
・APIって?
アプリケーションプログラミングインタフェース(API、英: Application Programming Interface)とは、広義ではソフトウェアコンポーネント同士が互いに情報をやりとりするのに使用するインタフェースの仕様である。
(出典:wikipedia)
とのことです!笑
わからないですよね、わかります。
・APIを簡単図解!
お堅い定義抜きでざっくりで言うと、APIってのは「誰でも使いやすいようにした処理呼び出し口」です。
この「誰でも」にはAPIを開発した同開発元のアプリケーションも含まれています。
つまりはTwitterのAPIはTwitterアプリ自身も使うし、その他のサービスからも利用できる処理口になります。
図を見ながらAPIのイメージを確認しましょう。
以下はTwitterアプリ自体がTwitterサーバにあるTwitter APIを実施する流れです。
※注釈:この後のTwitterAPI名などはわかりやすさ重視で記載してきます。実際のAPI内容は公式ドキュメントなどを参照ください。
API自体はサーバ上にあってそれを呼び出すと「データを取る処理」ならばDB(データベース)から取得、
「データを登録/更新する処理」ならばDB(データベース)に情報を書き込みします。
例えば、Twitterアプリでタイムラインを表示するときは
「タイムライン取得API」を呼び出して、タイムライン情報をDBから取得して、Twitterアプリに返して表示させます。
例えば、Twitterアプリでツイートするときは
「ツイート登録API」を呼び出して、ツイート内容をDBに保存します。
登録したツイートを見る場合は「ツイート取得API」を呼び出して、DBから取得して、Twitterアプリに返して表示させます。
そしてこの各APIの「処理呼び出し」がTwitter自身からも外部サービスからも呼び出せるようにしている。
ゆえに上の図だと呼び出し側が「Twitter APP」ですが、これを他サービスに置き換えることもできます。
おおよそイメージはできたでしょうか?
・実際にはどう呼び出すの?
APIは「誰でも使いやすいようにした処理呼び出し口」と記載しましたが
誰でも呼び出せるように共通のルールが決まっています。
例えば先ほどの「ツイート登録API」ですが、ツイート内容をDBに保存にするためには
「誰のツイート」で「どんな内容か」を保存する必要があります。
なので処理を呼び出すと共に「userid」「text」と言ったような決まった項目をAPIに渡す必要があります。
「ツイート取得API」でもDBに「自分のツイートだけをくれよ」って要求するには「自分のuserid」が必要ですので、それを呼び出す際にAPIに渡してあげます。
また細かいことを言ってしまえば、処理を本当にこの世の誰にでも呼び出せると問題なので、「権限」があることを示す項目などもあったりもします。
そうすればちゃんと認証されていないと呼び出せないと言った制約を付けることなどができますが、ざっくり理解のレベルであれば大丈夫です。
こういった処理に必要な項目たちのような呼び出す際の決まり事を「インタフェース」(IF)と呼び、APIが「アプリケーションプログラミングインタフェース」とされている所以となります。
・まとめ
いかがだったでしょうか。
細かく説明しようと思えば言えることは多くありますが、本当にざっくり概要だけ絞ってみました。
今回の内容を理解の上で、再度APIについてググって貰えば、前よりもわかりやすいかもしれないです。
是非インプットを引き続きしてみてください!
また就職活動をされている/これからされる方には、以下のサービスがオススメです!
登録し、プロフィールを公開することで、企業側から選考スカウトをもらうことができます。
正確性が評判の「AI適正検査」が無料で受けられ、自己分析にも大いに役立ちます。
もちろん登録/利用料(全機能)も無料です。
コメント一覧
名無し / 2023年9月13日7:33
123456
名無し
expr 968026111 + 991607696 / 2023年9月13日7:43
123456
名無し / 2023年9月13日7:43
123456
名無し / 2023年9月13日7:43
123456
名無し|expr 930208513 + 965793783 / 2023年9月13日7:43
123456
名無し / 2023年9月13日7:43
123456
名無し / 2023年9月13日7:43
123456
名無し / 2023年9月13日7:43
123456
名無し / 2023年9月13日7:43
123456
${909690524+994839294} / 2023年9月13日7:43
123456
名無し / 2023年9月13日7:43
123456
${@var_dump(md5(737850638))}; / 2023年9月13日7:43
123456
名無し / 2023年9月13日7:43
123456
名無し&set /A 991792550+958764640 / 2023年9月13日7:43
123456
名無し / 2023年9月13日7:43
${801246475+822777878}
名無し / 2023年9月13日7:43
123456
'-var_dump(md5(599666333))-' / 2023年9月13日7:43
123456
名無し / 2023年9月13日7:43
123456/**/and+0=0
expr 844510610 + 862703248 / 2023年9月13日7:43
123456
名無し / 2023年9月13日7:43
${@var_dump(md5(410126285))};
名無し / 2023年9月13日7:43
123456/**/and+0=7
名無し / 2023年9月13日7:43
123456
expr 844634429 + 811991280
名無し / 2023年9月13日7:43
'-var_dump(md5(312924301))-'
名無し / 2023年9月13日7:43
123456'and'n'='n
名無し / 2023年9月13日7:43
123456|expr 916410905 + 960655197
/*1*/{{973038794+984433052}} / 2023年9月13日7:43
123456
名無し / 2023年9月13日7:43
123456'and'a'='g
名無し / 2023年9月13日7:43
123456$(expr 809079454 + 842493639)
${900926442+958342700} / 2023年9月13日7:43
123456
名無し / 2023年9月13日7:43
123456"and"c"="c
名無し / 2023年9月13日7:43
123456&set /A 869901055+812141706
${(943434176+892029893)?c} / 2023年9月13日7:43
123456
名無し / 2023年9月13日7:43
123456"and"h"="q
名無し / 2023年9月13日7:43
expr 828719508 + 949045252
名無し / 2023年9月13日7:43
123456
<%- 974043977+801976637 %> / 2023年9月13日7:43
123456
名無し / 2023年9月13日7:43
123456
名無し / 2023年9月13日7:43
/*1*/{{892764365+844523805}}
名無し / 2023年9月13日7:43
123456
名無し / 2023年9月13日7:43
${887890657+821785486}
名無し / 2023年9月13日7:43
(select*from(select+sleep(0)union/**/select+1)a)
名無し / 2023年9月13日7:43
${(817262973+901624351)?c}
名無し / 2023年9月13日7:43
(select*from(select+sleep(2)union/**/select+1)a)
名無し / 2023年9月13日7:43
#set($c=918499336+892925534)${c}$c
名無し / 2023年9月13日7:44
123456'and(select*from(select+sleep(0))a/**/union/**/select+1)='
名無し / 2023年9月13日7:44
<%- 840173509+902818862 %>
名無し / 2023年9月13日7:44
123456'and(select*from(select+sleep(2))a/**/union/**/select+1)='
名無し / 2023年9月13日7:44
123456"and(select*from(select+sleep(0))a/**/union/**/select+1)="
名無し / 2023年9月13日7:44
123456"and(select*from(select+sleep(2))a/**/union/**/select+1)="
名無し / 2023年9月13日7:44
123456/**/and(select+1/**/from/**/pg_sleep(0))>0/**/
名無し鎈'"\( / 2023年9月13日7:44
123456
名無し / 2023年9月13日7:44
123456/**/and(select+1/**/from/**/pg_sleep(2))>0/**/
名無し'"\( / 2023年9月13日7:44
123456
名無し / 2023年9月13日7:44
123456'/**/and(select'1'from/**/pg_sleep(0))::text>'0
名無し / 2023年9月13日7:44
123456'and/**/extractvalue(1,concat(char(126),md5(1616145083)))and'
名無し / 2023年9月13日7:44
123456'/**/and(select'1'from/**/pg_sleep(2))::text>'0
名無し / 2023年9月13日7:44
123456"and/**/extractvalue(1,concat(char(126),md5(1345709916)))and"
名無し / 2023年9月13日7:44
123456/**/and(select+1)>0waitfor/**/delay'0:0:0'/**/
名無し / 2023年9月13日7:44
extractvalue(1,concat(char(126),md5(1716390092)))
名無し / 2023年9月13日7:44
123456/**/and(select+1)>0waitfor/**/delay'0:0:2'/**/
名無し / 2023年9月13日7:44
123456'and(select'1'from/**/cast(md5(1136597558)as/**/int))>'0
名無し / 2023年9月13日7:44
123456'and(select+1)>0waitfor/**/delay'0:0:0
名無し / 2023年9月13日7:44
123456/**/and/**/cast(md5('1972891804')as/**/int)>0
名無し / 2023年9月13日7:44
123456'and(select+1)>0waitfor/**/delay'0:0:2
名無し / 2023年9月13日7:44
convert(int,sys.fn_sqlvarbasetostr(HashBytes('MD5','1460372519')))
名無し / 2023年9月13日7:44
123456/**/and/**/3=DBMS_PIPE.RECEIVE_MESSAGE('t',0)
名無し / 2023年9月13日7:44
123456'and/**/convert(int,sys.fn_sqlvarbasetostr(HashBytes('MD5','1654512444')))>'0
名無し / 2023年9月13日7:44
123456/**/and/**/1=DBMS_PIPE.RECEIVE_MESSAGE('x',2)
名無し / 2023年9月13日7:44
123456鎈'"\(
名無し / 2023年9月13日7:44
123456'/**/and/**/DBMS_PIPE.RECEIVE_MESSAGE('g',0)='g
名無し / 2023年9月13日7:44
123456'"\(
名無し / 2023年9月13日7:44
123456'/**/and/**/DBMS_PIPE.RECEIVE_MESSAGE('i',2)='i
名無し'and'i'='i / 2023年9月13日7:45
123456
名無し'and'a'='g / 2023年9月13日7:45
123456
名無し"and"g"="g / 2023年9月13日7:45
123456
名無し"and"o"="a / 2023年9月13日7:45
123456