ノベルティメディア
media打ち合わせで「?」にならないための!APIについて分かりやすくご紹介!
![打ち合わせで「?」にならないための!APIについて分かりやすくご紹介!](/_next/image?url=https%3A%2F%2Fimages.microcms-assets.io%2Fassets%2F806a9cf3faa34477a12eaa88601b1d05%2F49c18442673b4c75b68b50b2d0213220%2Fhashimoto.jpg&w=64&q=75)
![打ち合わせで「?」にならないための!APIについて分かりやすくご紹介!](/_next/image?url=https%3A%2F%2Fimages.microcms-assets.io%2Fassets%2F806a9cf3faa34477a12eaa88601b1d05%2Fa9e5d9aa07a042c48310aa59b4706e04%2F2023_09_hashimoto_colum.jpg&w=1920&q=75)
こんにちは、ノベルティの橋本です。
今回はAPI(エーピーアイ)について、しっかりと解説していきたいと思います。
昨今ヘッドレスな開発やサイト制作といった技術が、選択肢の一つとして大きなウェイトを占めてきました。
そこで肝になる技術が、このAPIだったりします。
お打ち合わせの中でも「API」という単語が出てきて、なんだろう?となったことはありませんか?
ネットで検索などしてみると専門的な解説の視点が多いので、今回は非エンジニアの方にもご理解いただけるように、小難しいところは抽象化しながらなるべくわかりやすくご説明させていただきますね!
この記事で全体像をご理解いただいてから、もっと専門的な記事で知見を深めていただければ嬉しいです。
今回の記事で得られること!
- APIについて、打ち合わせで話題になってもちゃんと理解できる
- 小難しい用語を抜きにして、APIを相手にざっくり説明できるようになる
- APIのできること、メリットについて知ることができる
APIとは?
※APIには色々と種類がありますが、今回のAPIはウェブの分野における「API」なのでお調べの文脈によって解釈をお願いします。
軽くググってみるとAPIとは、ソフトウェアやサービスが他のソフトウェアやサービスとコミュニケーションをするためのインターフェース…といった解説が非常に多いです。
もちろん正確な回答なので、エンジニアとしては必ず知っておくべき要点だと思います。
ただ、今回のテーマで言うと、少し分かりづらいかもしれませんね。
そこで噛み砕いたズバリAPIとは、他のウェブシステムの機能を自分のシステムで利用するということです。もちろん逆も然り、ですね。
例えば、天気予報のサイトのデータを自分のウェブサイトに表示する、といった使い方になります。
具体的に掘り下げていくと、APIは自分の持っている機能を外部へ提供するための、起動口の役割を持っています。
APIは、外付けのシステム起動口
起動口?と疑問は浮かぶと思います。
では、まずざっくりウェブシステムとはなんでしょうか?
例えば、今見ているこちらのブログも、ブログ作成システムによって管理されています。
作って、更新して、削除して、このように閲覧できるシステムです。
このようにブログ管理機能は、特定のブログ管理システムによって実現しています。みなさんも管理画面にログインしてブログを書いてみた…なんてご経験がある方もいらっしゃると思います。(WordPressとかアメブロとかですね)
例えばそのシステムが「ノベルティブログシステム」だとしましょう。その場合、記事を管理したいときにノベルティブログシステムの管理画面(URLはblogsystem.noveltyinc.jp)に入って記事を書いて…といった動きをすると思います。
つまり、ウェブで動いているシステムは、特定の環境(blogsystem.noveltyinc.jp)内にシステムが構築されている状態になっています。
この環境の中に、本題のAPIというものを構築します。
例えば本サイトのブログ記事を別のシステムからでも見られるようにしたい!と考えましょう。
ん?この記事はノベルティブログシステムで管理されているから無理じゃ…となりそうですが、異なる環境間での機能提供を実現するのがAPIです。
APIは起動口があり、そこを起動するとノベルティブログシステムに搭載した機能が実行されます。
つまり、ノベルティブログシステムのブログ記事を、ほかのシステムでも閲覧できる機能を提供します。
その仕組みを利用することで、ノベルティブログシステム外から、本システムの機能を利用することができるのです!
APIの動き
では、ノベルティブログシステムを例に、APIの理解を深めていくため実際の動き方を見てみましょう。
【A】…とあるシステム
【ノ】…ノベルティブログシステム
【A】別システムが「ブログの記事欲しいよー!」と言って起動口へアクセス
↓
【ノ】ノベルティブログシステム起動口(API)で受付
↓
【ノ】欲しいと言われた記事の用意
↓
【ノ】ノベルティブログシステム起動口(API)から返却
↓
【A】欲しいと言われた記事の情報を取得し、ページを構築
このようなつながりによって情報の伝達がされます。
次の項目から、詳細の解説を進めていきます。
起動口について
では、APIに重要な「起動口」について解説していきますね!
※これを打ち合わせなどではよくエンドポイントなんて表現をします! ぜひ覚えておいてくださいね!
APIの起動口についてですが、その実態はURLという解釈で問題ありません。
例えば先ほどの「ノベルティブログシステム」のシステム管理者である私が、blogsystem.noveltyinc.jp/view-archivesというURLを用意したとします。
そしてここにアクセスされたら記事の内容を返すという仕様を作ります。
この時のポイントが、どうやって別のシステムにノベルティブログの「情報を渡す」のかということです。
URLにアクセスしたら情報が表示される、というのはなんだかAPIといった感じはしませんよね?この記事も要するにAPIのエンドポイントなの?といった疑問も生まれるかもしれません。
ただ、今回の文脈における「情報を渡す」というのは、下記のような情報が返ります。
{
"article_id": 1234,
"title": "打ち合わせで「?」にならないための!APIについて分かりやすくご紹介!",
"author": "橋本大地",
"published_date": "2023-09-24",
"category": "開発",
"tags": ["API", "初心者"],
"content": "今回はAPIについて、しっかりと解説していきたいと思います(以下略)",
}
なんじゃこりゃって感じですよね。しかしこのような情報の返却方法は、エンジニアの中では一般的な形として定義しています。(※今回は見やすく整形しています)
APIのお話をしているときにJSON(ジェイソン)なんて言葉が出てくるかもしれませんが、それは返却するデータの形式を指します。
つまり起動口にはルールがあり、一定の情報を返却することで別のシステムに受け渡しています。
視覚情報を返却するのではなく、あくまでもデータを渡す、という感覚を持っていただければと思います!
情報を行き来させるということ
これでAPIは特定の起動口(URL-エンドポイント)があって、そこでシステムの情報が返却されることがわかりました。
ということは、その情報を利用する側と、情報を返却する側があるということですね。
では、橋本情報サイトというメディアサイト(hashimoto.noveltyinc.jp)でノベルティブログシステム(blogsystem.noveltyinc.jp)の情報を表示したいとしましょう。
この時に橋本情報サイトのシステム内で、起動口へアクセスする処理を開発します。(この動きを、APIを叩くなんて表現したりしますね)
すると先ほどのデータっぽい文字が返却されるので、それを使って橋本情報サイトはページを構築していく形になります。
本来橋本情報サイトはブログを管理するシステムを導入していませんが、ノベルティブログシステムのAPIを借りることでブログ情報を表示することができます!
今回は記事の内容を表示するAPIの提供でしたが、たとえばブログを登録したり更新したり、削除したりも可能です。
これによって、本来自分のシステムに備わってない機能を使えることが、APIの大きなメリットですね。
APIのメリット
前項で少しメリットについて触れたので、ここからAPIのメリットについてご説明していきたいと思います。
まずはAPIが持つメリットについて列挙してみます。
- 本来自分のシステムに備わってない機能が利用できる
- 基本ルールがあるので、開発のコストを下げられる
- プログラミング言語間の差異をこえられる
- 一つのAPIを開発することで、多くの外部システムが利用できる
- 拡張性や保守性にも優れている
本来自分のシステムに備わってない機能が利用できる
まず、本来自分のシステムに備わってない機能が利用できることですね。
これは前項で触れた通り、開発コストを大きく下げることを実現します。
基本ルールがあるので、開発のコストを下げられる
返却データや通信方式にルールを持つことで、多くの開発者が携わりやすい形を作れます。
もしルールがバラバラだった場合、APIを利用する開発者は返却時のルールやデータの形式からドキュメントを読んでいく必要があります。
これらを解消しているのが、APIに備わるルールです。開発コストカットにつながりますね。(すべてのAPIに同一のルールがあるわけではありません)
プログラミング言語間の差異をこえられる
続いてはこちらです。
これは先ほどご説明させていただいたJSON(ジェイソン)が関連します。
このJSONというものは、さまざまなプログラミング言語にて共通で使われている形式です。
ウェブシステムに使われるプログラミング言語は多岐に渡ります。
例えば先ほどの橋本情報サイトはAという言語、ノベルティブログシステムがBという言語を使っている場合、同じシステムとしては連携が難しいです。
しかしAPIを介することで、データのやり取りをJSON形式で行うことができるため、連携も容易です。
エンジニアといっても、生涯習得できる言語は限られていると思います。
こちらはエンジニア人材が減少傾向にある現在、大きなメリットを発揮できます。
一つのAPIを開発することで、多くの外部システムが利用できる
利用される側はAPIを一つ作ることで、他の複数のシステムでAPIの機能を利用することができます。
例えば顧客管理システムを開発し、そこに情報を更新するAPIを使ったとします。
そうすれば別の複数のシステムで更新が行われたとしても、更新のAPIを利用すれば顧客情報を一元管理することも可能となります。
つまりAPIは、システムの一元管理にも適しているということですね。
このような連携は、第三者がシステムを拡張できることを意味するので、APIを開発することはより多くのユーザーにシステムを利用してもらえる可能性が増えるきっかけになったりもします。
今回の例で挙げた顧客管理システムにはブログ機能はありませんが、ブログシステムの部分はノベルティブログシステムのAPIを利用して開発しよう!となる可能性があります。
これによってノベルティブログシステムはユーザーを拡大し、顧客管理システムの開発者は限られた予算を顧客管理システム側に大きく投じることができ、かなり効果的な品質向上とコストカットが得られます。
拡張性や保守性にも優れているAPIの仕組み
また、このようなAPIのやり方は拡張性や保守性にも優れています。
難しそうな観点ですが、APIは比較的単一機能として作られることが多いです。(モジュール性なんて言葉で表現したりします)
例えばノベルティブログシステムはログイン機能や記事管理機能など、たくさんの機能を持っていますがそれらを一気に提供する機能は作りません。
一気に提供と言うとイメージがわかないかもしれません。具体的には、一つのAPIを実行したとしてその効果が「ログインしてからブログの記事を作成し、さらに削除をした記事のIDを送信されれば記事を削除する」といったものです。
なんだかごちゃごちゃして、分かりづらいですよね。
開発者も同じことを思います。
ですから、事情がない限りはこのような設計はしません。
「ログイン機能」「ブログ作成機能」「ブログ更新機能」など、小分けにして作ります。
もちろん他のシステムがこのような作りになっていないと断言するわけではないのですが、APIではこのような作りが一般的です。
これによって開発者は別の機能への依存関係を考える必要が少なく、「ブログ作成機能」に対する機能拡張が行いやすい仕組みを確立することができます。
もちろんAPI以外のウェブシステムがこうであるというわけではありませんが、比較的機能間の関連を持ちやすいと言えます。
まとめ
今回はAPIについて、嚙み砕いてご説明させていただきました!
APIやらGASやらJWTやら、IT業界は横文字略語が多くて想像がつきづらいですよね。
少しでも本記事で解決できましたら幸いです。
APIは上記のほか、セキュリティの面などでも重要なポイントがいくつかあります。また、Jamstackな開発/構築では、同一システム内でAPIを叩いたりもします。
まだまだ深いAPIの世界なので…もしさらに知見を持っていきたい方は、ぜひ調べてみてくださいね!
ノベルティではシステムのことがいまいち分からない、といった方にも多くのシステムをご提供させていただいております。
難しい用語が分からなくても問題ありません!
ぜひ一度、アイディアをシステムとして形にしてみませんか?
それではまた!
おすすめ記事/ PICKUP
記事カテゴリー/ CATEGORY
企業の課題はノベルティひとつで完結
ホームページ制作などのWeb制作をはじめ、
システム開発やマーケティング支援などワンストップで対応
まずはお気軽にお問い合わせください
お電話またはメールでお気軽にお問い合わせください。
各種サービスの資料をご用意しています