この記事のランク | |
---|---|
読む時間 | 3分 |
重要度 |
プログラミングを始めたばかりの方は、聞きなれない単語がいくつも出てきて混乱してしまうかと思います。
今回は、その中でも様々なプログラミング言語で登場する「フレームワーク」、「ライブラリ」、「API」のそれぞれの違いについて解説いたします。
システムエンジニアはシステム開発の専門家ですので、クライアントにも説明ができるよう言葉の意味や定義を知ることはとても重要です。
Twitter(@nana_korobi04)でも情報発信していますので、
フォローいただけると嬉しいです!
フレームワークとは
例えば、企業のWebサイトを構築する際に、HTMLやCSSをいちからプログラミングをせず、Webサイトの基本的な構造はフレームワークを使い、フレームワークに予め用意されているデザインの中から用途にあったものを選択します。
フレームワークのメリット
フレームワークの概念はお分かり頂けたかと思いますが、具体的にどのようなメリットがあるのでしょうか。
開発コストが下げられる
前述のとおり、フレームワークはいちからプログラミングをせず、予め用意された骨組みを利用してシステム開発をしますので、骨組みを作る部分の工期を縮めることができるため、その分開発コストを下げることができます。
一定の品質が担保できる
フレームワークは利用する際のコーディングルールが決まっていますので、誰が開発してもシステムの品質を一定に保つことができます。
メンテナンスが容易
コーディングルールが決まっているということは、同時にメンテナンスがし易いというメリットがあります。
数十年前にベテランのエンジニアが独自で作ったソースコードを解析するのはとても時間がかかりますが、フレームワークを利用して開発されたシステムは誰が見ても容易に理解することができます。
フレームワークのデメリット
ここまでの説明を聞くと便利なフレームワークですが、実はデメリットも存在しています。
フレームワークに依存してしまう
フレームワークを使わずに独自性のあるシステムを新たに開発する際や、別のフレームワークへ移行をする際は、これまで中の仕組みを知らずに使っていたフレームワークの機能をソースコードレベルで理解する必要があります。
システムのパフォーマンス低下
フレームワークは汎用的に利用ができるように様々な機能が実装されていますが、使い方のルールを正しく理解して開発をしないと、不必要な処理が含まれてしまい、システムのパフォーマンスの低下に繋がることがあります。
プログラマのスキルが伸びない
便利なフレームワークですが、その便利さに依存してしまうと、フレームワークを使わない開発プロジェクトや、他のフレームワークを利用する際にプログラムの知識が無いため太刀打ちできなくなってしまう危険性があります。
ライブラリとは
「フレームワーク」はシステム全体の構成を決める骨組みであるのに対し、「ライブラリ」は必要に応じて利用者が機能を取り出す、文字通り図書館の本のような存在です。
例えば、お問合せページから問合せをしたサイト利用者へ受付完了メールを自動的に送信したり、新商品の発売まで「あと○○日」といったカウントダウンを表示する機能などはライブラリを活用することで実現できます。
ライブラリは単体では動かず、他のプログラムから必要なライブラリを呼び出して利用します。
ライブラリの種類は下記の3つがあります。
- 静的ライブラリ:プログラム本体にライブラリを組み込んで一つのファイルで完結させる
- 動的ライブラリ:プログラム本体とライブラリを別々のファイルに分けて、プログラム本体の実行時にリンクされたライブラリを読み込む
- 共有ライブラリ:プログラム本体が実行された時点でメモリ上に展開され、複数のプログラムから読み込むことができる
ライブラリのメリット
ライブラリを利用するメリットは、フレームワークと同じく「開発コストの削減」や「品質の担保」が挙げられますが、それ以外にもライブラリを利用するメリットがあります。
プログラムの動作が軽くなる
ライブラリを利用せずに同じような機能を、各プログラムに記述してしまうとファイルが肥大化し、プログラムの動作が重くなってしまいます。
しかし、複数のプログラムで使う機能はライブラリを利用することで、ファイルサイズが最小限となり、プログラムの動作が軽くなるというメリットがあります。
プログラムの理解力向上
オープンソースと呼ばれる無償で提供されているライブラリは、ソースコードも公開されているため、必要な機能のコードを見て、具体的にどのように実装されているのか他人のコードからプログラムの理解を深めることができます。
ライブラリのデメリット
続いてはライブラリのデメリットについて触れたいと思います。
開発環境によっては動作しない
プログラミング言語やOSのバージョンによっては動作しないライブラリもあるため、利用する環境に対応したライブラリを選定する必要があります。
品質が担保されたライブラリを選ぶ
ライブラリは誰でも作ることができるため、中には不具合が混入していたり、動作が不安定なものがあります。
ライブラリを利用する際は、他システムでも利用実績があり、評判の良いライブラリを選定しましょう。
また、ライブラリが定期的にバージョンアップされているかも重要な判断基準です。
APIとは
例えば、ショッピングサイトで商品の購入時にカード決済をする際、クレジットカード会社のシステムに接続して、利用者が入力したカード番号や氏名が一致しているかデータベースに照合しにいくかと思いますが、あれもAPIの機能の一つです。
ライブラリとの大きな違いは、ライブラリはシステムの中に取り込んで利用しますが、APIは他のシステムに接続して利用するという違いがあります。
なお、APIには一般公開されているものと、権限が必要なものの2種類があります。
- オープンAPI:システム利用者のシェア拡大や新たなサービスを輩出を目的とし、システムの接続仕様を一般公開したもの
- クローズドAPI:不正または意図しない利用を防止するため、権限を付与した一部の提携先企業のみが利用できるよう制限したもの
APIのメリット
フレームワークやライブラリと同じく、開発はAPIを利用するための連携部分のみで済むことはもちろんですが、他にはどのようなメリットがあるのでしょうか。
顧客満足度の向上
自社のシステムには無い多様なサービスを顧客へ提供できることで、顧客満足度の向上や集客に繋がります。
セキュリティの担保
先ほど例として挙げたクレジットカード会社を例にすると、カード情報を自社のシステムで管理するのは情報漏洩などのリスクがありますが、APIで他社のシステムのデータベースを照合することで、自社のシステムではカード情報を持つ必要がなくなります。
そのため、セキュリティ部分の開発が不要となり開発コストも情報漏洩のリスクも低減することができます。
APIのデメリット
集客が見込めるAPIですが、以下のようなデメリットもあります。
APIの提供が停止される可能性
他社のシステムを利用している場合は、そのサービスが停止してしまった場合、当然APIも利用ができなくなるため、顧客へサービスが提供できなくなるリスクがあります。
不具合発生時の対応ができない
API連携先のサービスで何らかの不具合が発生した場合、他社のシステムでは調査ができず原因も分からないため、予め不具合発生マニュアルなど用意して、サービスが継続できるように対策を講じる必要があります。
システム開発の現場で良くあるのが、想定していないデータがAPIで連携されてきて上手く処理できずにエラーとなってしまったり、不備があるデータが連携されて後続のシステムで障害になってしまうことがあり、そうならないようシステムの担当者間で入念にシステムの接続仕様を取り決めておくことが重要です。
まとめ
今回は、「フレームワーク」、「ライブラリ」、「API」のそれぞれの違いについて解説しました。
どれも共通して言えることは、それぞれのメリット、デメリットを理解して、正しい使い方をしないと逆効果になってしまう恐れがあります。
実際に触れてみないとイメージがし難い部分があるかもしれませんが、利用するシーンがきたら是非この記事を思い出してみて下さい。