APIとフレームワークの意味

投稿日:  更新日:

プログラミングを学習していると、「API」と「フレームワーク」という言葉が頻繁に出てきます。

最近、自分の中で「“APIであるもの”と“ないもの”」「“フレームワークであるもの”と“ないもの”」の境目が、ぼやけてきました。

ライブラーとフレームワークが別ものとして扱われている記事を見たりすると、「フレームワークとは何?!」と考えてしまいます。同じものだと思うのですが…

ここで、もう一度、整理を行うために、まとめました。

スポンサーリンク

ライブラリの階層構造

アプリ開発において、自身が定義したクラスや関数をプログラムから呼び出します。

自分が作ったクラスや関数も、別のクラスや関数を呼び出します。

別のクラスや関数も、また別のクラスや関数を呼び出します。

クラスや関数の呼び出しを繰り返す

これを更に掘り下げて行くと、BIOSがCPUのマシン語を呼び出す所に行きつきます。

呼び出されるクラスや関数はライブラリーとして提供されたものです。

つまり、アプリケーションはライブラリーの階層構造の上に成り立っています。

ライブラリーの階層構造

※BIOS(Basic Input Output System):ハードを直接操作するための基礎ライブラリ
※CPU(Central Processing Unit):中央処理装置

スポンサーリンク

APIの意味

ライブラリーに含まれるクラスと関数が行う、処理の内容を見てみます。

階層構造の上へ行くほどアプリに近い処理を行い、下へ行くほどハードに近い処理を行います。

APIの意味

図に示したように、アプリに近い処理を行うライブラリーをAPI(Application Programming Interface)と呼びます。

ただし、「どれくらいアプリに近い処理を行えば、APIと言えるのか?」ついては、曖昧です。開発者または使用者が「〇〇 API」と呼べば、そのライブラリーはAPIです。

また、逆にハードに近い処理を行うライブラリーをドライバーと呼びます。

 【 「APIとは?」の表現は色々 】 

APIはアプリを特徴付ける機能を持ちます。アプリに近い処理を行うライブラリーであるためです。

APIを利用すると、その機能(〇〇)を利用できるようなることから、〇〇 APIは「〇〇の窓口」と表現されたりします。

例えば、Web APIはネット上のプログラム同士(Webサーバー&クライアント)を繋ぐ機能を持ちます。ですので、「プログラム同士を繋ぐ窓口」と表現されます。

「機能面から見たAPIとは何か!」を述べれば、そのような表現になることは必然です。

ですので、この表現も正しいと思います。

スポンサーリンク

フレームワークの意味

良く試験などで「穴埋め問題」と呼ばれる問いがあります。

空欄を埋める語句を間違えない限り、誰でも正しい文章を導き出せます。

穴埋め問題穴埋め回答
穴埋め問題
穴埋め回答

フレームワークは、正に、この「穴埋め問題」と同じです。

プログラムのひな形があり、アプリの機能に合わせて空欄を埋めれば、誰でも一定以上の品質を持ったプログラムを作成できます。

そんな、ひな形を登録したAPIがフレームワークです。

例えば、Android APIはフレームワークであり、Activityクラスはひな形です。

ライブサイクルの遷移で呼び出されるコールバック(onCreate/…/onDestroy)に、その時々に必要な処理を記述する(埋める)ことで、一枚の画面を作成します。

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
		// 空欄:画面が作成された時の処理
	    enableEdgeToEdge()
        setContent { 表示するCompose UIを記述 }
    }

    override fun onResume() {
        super.onResume()
		// 空欄:画面が前面に移る時の処理
    }

    override fun onPause() {
        super.onPause()
		// 空欄:画面が背面に移る時の処理
    }

    override fun onDestroy() {
        super.onDestroy()
		// 空欄:画面が破棄された時の処理
    }
}
スポンサーリンク

関連記事:

シリアル化(serialize)とは「複数のデータをすべて数珠つなぎに並べて、一つのデータにする」ことです。 なぜ、シリアル化が必要なのか?! 役割について、簡単にまとめました。 ...
スポンサーリンク