Postmanが公開している「APIファーストの世界」というコミックがあります。こちらのサイトで無料で閲覧することができます。
このコミックでは、Postman創業者のアビナフ・アシュタナが、「APIとは何か」「今のAPIの課題は」「PostmanはAPIファーストの世界を目指して何に取り組んでいるのか」というトピックについて語りかけます。現在、私たちのチームはこのコミックの日本語化を進めていて、まもなくご覧いただけるようになる予定ですが、本記事ではその中から、APIの重要さを理解する上でキーとなる「抽象化」の概念について取り上げてみたいと思います。
[2023年8月18日更新] コミックの日本語版が公開されました!
物事を抽象化するAPI
次のページでアビナフは、「APIがユニークな点は、APIを使うことで開発者は物事を抽象化できるところだ」 と述べています。これは、APIを積極的に使うべき大きな根拠になっています。
では、抽象化とは何のことを指しているのでしょうか。続けて彼はこう説明します。「抽象化とは、複雑な物事を包み込んでシンプルに見せることを助けてくれる考え方のことだよ」。つまり、抽象化を行うことで、物事に対する見方がシンプルになり、より複雑なことを考えやすくなる、ということを言っています。
一つ例を挙げてみましょう。あなたはイタリアンレストランを訪れて、何か美味しい料理を食べたいなと思います。メニューを見てカルボナーラを見つけて、これを食べようと決めます。ここで、あなたはカルボナーラの材料や、食材の準備、レシピや調理器具について気にかけることはありません。カルボナーラと注文すれば、15分後には世の中で一般的に認知されているカルボナーラという料理がテーブルに運ばれてくることを期待します。
これは、カルボナーラの注文を受けて調理して提供する、という一連の物事が抽象化されているために実現しています。レストランの客はメニューの品を選べばそれが食べられるということがわかっているので、それがどのように作られるのかは気にせず、レストランでは連れとの会話を食事をしながら楽しめるようになっています(味は気にするかもしれないですけどね!)。
上の例をAPIに当てはめてみると、APIはメニュー、その背後に包み込まれている物事はキッチンで行われている調理もろもろ、そしてAPIの呼び出しは料理の注文、と見ることができるでしょう。
コンピュータの歴史と抽象化
そしてアビナフはこう続けます。「この数十年、コンピューティングの世界では、段階的に高次の抽象化を実現するための技術開発に力が注がれてきたんだ」。実は、コンピュータの進化の歴史は抽象化の歴史と言ってもいいくらい、抽象化の考え方を中心に進んできました。
コンピュータの黎明期、今でいうプログラムは物理的な回路の実装そのものでした。しかし、これだとほんのわずかなロジックの変更でも、もう一度回路の作り直しになります。その度に新しい基盤や素子が必要になり、お金と時間がかかります。
そこで技術者たちは、メモリ素子に格納されるバイナリデータでロジックを表現することで、バイナリデータを書き換えるだけで動作を変えることを試みます。物理的な回路は汎用的に作っておけば、ロジックを設計する際には物理的な回路を意識せずに済むようになります。第一段の抽象化のできあがりです。
ところで、バイナリデータは0と1の並びですので、人間がこれを見て動作を理解することは困難です。そこで、この数値の並びに人間が理解しやすいシンボルを割り当てることにしました。実装するロジックは、少し言語っぽい要素が入った機械語で記述できるようになります。第二段の抽象化です。
バイナリと機械語の関係はほぼ1対1の関係でしたが、複雑なロジックを記載するにはもっともっとシンプルに、人間の考え方により近い表現でロジックを記述することが求められるようになります。そしてこれを実現するために、様々なプログラミング言語が発明されました。第三段の抽象化です。
そして今、私たちは次の抽象化の段階に進んできています。モバイルデバイスを通じて、私たちは日常どこでもサービスの恩恵を受けるようになりました。プログラムは一箇所ではなく、ネットワークをまたいでロジックが分散した状態で動いています。大量の計算が必要な処理は、クラウド環境で動くようになってきています。これらのIT技術の進化と同時に、新たに必要になった抽象化の手段、それがAPIです。
APIによる抽象化がもたらす未来
APIによる抽象化が進んでいる今、これまでのソフトウェアの部品、ライブラリなどは徐々にAPIサービスという形での提供にシフトしてきています。アプリケーションの構築は、どのAPIを選択し、どのように組み合わせるか、ということに焦点が移ってくるはずです。コーディングの割合は徐々に下がっていき、ローコード・ノーコードツールを使ったサービス構築が主流になる可能性があります。
昨今注目を集めている生成系AIの登場、そしてAIの外部連携APIの対応もこの流れを後押ししています。既存の情報システムがAIと接続されることで、無限の可能性が開かれつつある状況に皆さんも驚かれていることでしょう。
パラダイムシフトといってもいいこの大きな変化の中、APIがもたらす素晴らしい未来に期待しましょう!