はじめに
未経験から入社して2年目となったエンジニアです。
1年目からFlutterのモバイルアプリ開発に参画しており、Flutterのプロジェクトと、DBのデータを取得するバックエンドのプロジェクトをAPIを経由する形で実装しておりました。
ただし、APIって何??と聞かれた時に、毎回確信を持って回答ができないので、ここらで理解してみようと思います!
対象とする読者
- モバイルアプリ開発を行なっている方
- 初心者エンジニア
- APIについて理解を深めたい方
- APIに詳しい方
APIとは
とりあえずChatGPTに聞いてみた
Q: APIとは
A:
API(Application Programming Interface)は、ソフトウェアアプリケーション同士が相互に通信・連携するためのインターフェースやプログラミングの手段を指します。これは、あるプログラムが他のプログラムと情報をやりとりする際の手順や規約を定めたもので、異なるソフトウェアコンポーネントが互いに通信できるようにするための枠組みです。
APIは、様々な形で提供されることがあります。ウェブ開発においては、ウェブAPIが一般的で、HTTPを通じてクライアント(たとえば、Webブラウザやモバイルアプリ)がサーバーにリクエストを送り、データを受け取る仕組みがあります。他にも、プログラムライブラリ、オペレーティングシステムのAPI、データベースのAPIなど、多くの場面で使用されています。
とりあえず聞いたけれど、自分の中で大きな認識の違いはなかった。
開発者目線で言うと、プロジェクト間で情報の連携を行うインターフェースがAPIということになる。
つまりAPIを使用することで、広い意味で外部のプログラムを交えて開発することが可能になる。
イメージとしては、こんな感じ。(画像作成ツール知ってる方教えてください。。。)
APIにもいくつか種類があるらしく、
プログラミング開発中に外部のライブラリを用いる際に使われるライブラリAPI
DBへの接続やデータの取得をする際に使われえるデータベースAPI
など、調べてみたら知らぬところでAPIが使われていました。
今回の記事では紹介しませんが、気になる人は調べてみてください。
APIを使用することのメリットとデメリット
メリット
ソフトウェア開発の効率化
これは、プログラミングを少し触ったことがある人なら言わずもがなと言うところでしょう。
公開されている外部のライブラリを取り入れることによって、数百行書かなくてはいけないところを、たったの数行で書けてしまいます。開発時間の短縮に繋がるので、大きなメリットと言えます。
セキュリティの向上
例を挙げるとSNSからのログイン認証を行うことができるAPIが存在しています。
ここについては、考え方の個人差があるかと思いますが、大手企業のSNS認証を取り入れることによって、ユーザ側の安心感も違いますし、0から作るログイン認証の欠陥による情報漏洩を防ぐことができるといった考え方もあります。
デメリット
定期的なメンテナンスが必要
連携先のサービスに仕様変更などがあった場合に、それに応じてアプリの修正が必要になります。
特にモバイルアプリ開発は、Webサイトと違い、変更を加えたバージョンのリリースまでに手間がかかるため、変更になるタイミングを把握し適宜適切な対応を行わなければなりません。
ここについては、痛いほど経験してきました。。。
最後に
最後まで読んでいただきありがとうございました!
Flutterについての記事やRTDBの記事についてもいくつかまとめているので、よかったら覗いてみてください!