これから、ディープラーニングを組み込んだ非常にシンプルで簡素なAIアプリ開発に挑戦するのですが、先日、AIスクール講師が「怖がらなくて大丈夫。『APIってこんなもんなんだよ』っていう概念をざっくり理解できるようになりましょう。」と、恐ろしくわかりやすい説明をされていて、スクール生の心理的ハードルがかなり下がり、とても素敵だなと感じたため、はじめてITを学ぶ方や、AIを学んでいきたい方に共有したいと思い、この記事を書きました。
※先生に教えてもらったときの感じで、ストーリー調にしてみました。
WEBアプリケーションって何?
WEBアプリケーションは、インターネットの力を借りて動くアプリのこと。ただの会社紹介サイトやブログとは違って、もっと高機能なWEBサイトのことを指すんだ。この手のアプリを作るには、HTMLだけじゃ足りなくて、プログラミングとか特定の開発フレームワークが必要になるよ。他のアプリの便利機能を使えるように、「WEB API」っていうのもよく利用されるんだ。
WEBアプリ、WEBサービス、WEBサイト、WEBシステムって何が違うの?
「WEBページ」は、インターネット上の文書のこと。これがたくさん集まって「WEBサイト」を形成しているわけ。サイトの顔となるのがトップページ。昔はブラウザを開いた時に最初に出てくるページを「ホームページ」と呼んだけど、今ではWEBサイト全体のことを指すことが多いね。WEBを通じてサービスを提供するものが「WEBアプリケーション」。この開発に使われるAPIとかが「WEBサービス」。これら全体の提供システムを「WEBシステム」というんだ。
WEBアプリの動きってどんな感じなの?
WEBアプリケーションがどうやって動いているのか気になるよね。
実は、ユーザーのリクエストからサーバーで処理をして、結果をユーザーに返す、というステップをひたすら繰り返しているんだ。この一連の流れをスムーズにしてくれるのが、WEBアプリケーションフレームワークの役割なんだよ。
ちょっとテクニカルな話になっちゃったね。
例えば
パソコンで、行きたいお店の情報を入力して検索すると、お店の情報が表示されるよね。
行きたいお店の情報を検索したとき、その情報を保存している箱(サーバー)に情報を見に行くんだ。
そして、情報をとってきて、検索した人の画面に表示させるんだ。
これがWEBアプリの動きだよ。
WEBアプリを作るには、「ユーザーのリクエストをサーバーで処理をして、結果をユーザーに返す」という基本的なWEBアプリの流れが共通であるんだ。
この共通した「流れ」を便利な部品にしたものがあって「フレームワーク」と呼ぶんだ。
フレームワークを使うと、開発が楽になって、より早く、よりセキュアなアプリを作れるようになるんだ。
WEBアプリケーションフレームワークって?
WEBアプリケーションを作る時の土台や骨組みのこと。このフレームワークを使うと、開発がずっとラクになるんだ。
レブロックで例えるなら、すでに形になっている部品があるよね。
例えば、モノレールの走っている町を作るときの「線路」は、ブロックではなく、「線路」の部品として提供されているよね。
それを使うと作りたいものが、すぐにモノレールの町が作れるのと同じイメージだよ。
言語によりいろいろなフレームワークがあるよ。
開発言語(プログラミング言語)ランキング(2024年2月時点)
順位 | 言語 | 利用率 | フレームワークや主な利用用途や特徴 |
---|---|---|---|
1 | Python | 15.16% | Django, Flask, FastAPI。機械学習、ウェブ開発に広く利用 |
2 | C | 10.97% | ライブラリに依存せず、組み込みシステムなどに利用 |
3 | C++ | 10.53% | Unity。ゲーム開発、システムプログラミングに利用 |
4 | Java | 8.88% | Apache Struts, Spring。エンタープライズアプリ開発に利用 |
5 | C# | 7.53% | .NET Framework, .NET Core。ウェブ、デスクトップアプリ開発に利用 |
6 | JavaScript | 3.17% | React, Angular, Vue.js。ウェブ開発のフロントエンドに利用 |
7 | SQL | 1.82% | データベース言語。RDBMSでのデータ操作に利用 |
8 | Go | 1.73% | バックエンドプログラミング、Webサービス、APIに利用 |
9 | Visual Basic | 1.52% | Microsoft VBAなど。初学者向けプログラミングに利用 |
10 | PHP | 1.51% | Laravel, Symfony。ウェブアプリケーション開発に利用 |
11 | Fortran | 1.40% | 科学技術計算のための高性能な計算に利用 |
12 | Delphi/Object Pascal | 1.40% | GUIアプリケーションの迅速な開発に利用 |
13 | MATLAB | 1.26% | 数値計算やシミュレーション、アルゴリズム開発に利用 |
14 | Assembly language | 1.19% | 組み込みシステムやOSの低レベルプログラミングに利用 |
15 | Scratch | 1.18% | 教育用プログラミング。初学者向けにデザインされている |
16 | Swift | 1.16% | iOS, macOSアプリ開発に利用。Appleのプラットフォームで人気 |
17 | Kotlin | 1.07% | Androidアプリ開発、ウェブ開発に利用。Jetpack Compose |
18 | Rust | 1.05% | システムプログラミングに用いられ、メモリ安全性が高い |
19 | COBOL | 1.01% | ビジネス処理、金融システムでの利用に適している |
20 | Ruby | 0.99% | Ruby on Rails。ウェブアプリケーション開発に広く利用 |
引用:February Headline: The Go programming language enters the top 10|tiobe-index
その中でもAIやDXの流行りもあり、特に「速さ」と「使いやすさ」にフォーカスしているフレームワークに「FastAPI」というのがあるんだ。
FastAPIって何?
FastAPIは、Pythonで書かれたスピーディなWEBアプリケーションフレームワーク。
あっという間にWEBアプリを立ち上げたい時にピッタリなんだ。
https://fastapi.tiangolo.com/ja/
APIのデータ取得の流れ
さっきは基本的なWEBアプリケーションの流れを解説したね。実は、このデータのやり取りしているのがAPIなんだ。
APIにはいくつか種類があるんだけど、今回は、「REST API」について解説するよ。
REST APIって何?
「REST API」とは、WEB上で情報をやり取りするためのルールセットのこと。このルールを使って、WEBアプリケーションがデータを取得したり、送信したり、更新したり、削除したりできるんだ。これらの操作は、主に「GET」「POST」「PUT」「DELETE」という4つの方法に分かれているよ。
例えば、市役所で住所変更の届け出をする場合を考えてみよう。
まず、自分の情報を確認するために住民票を取得する。これが「GET」。
次に、新しい住所を市役所に伝えるよね。これが「POST」。
この時、個人情報が見えないように封筒に入れて提出するよね。このセキュアにする役割も「POST」がしてくれるよ。
そして、市役所でデータを更新するのが「PUT」。
もし何らかの理由で住所情報を消去する必要がある時は「DELETE」を使うんだ。
このように、REST APIは市役所での手続きのように、インターネット上で情報のやり取りをする時の手続きを決めてくれているんだよ。
「GET」,「POST」,「PUT」,「DELETE」のイメージと「REST API」の具体的な動作
メソッド | イメージ | 具体的な動作 |
---|---|---|
GET | 情報の閲覧。住民票で自分の情報を確認する。 | サーバーにあるデータを取得。読み出し専用で、サーバー上の情報を変更しない。 |
POST | 情報の提出。封筒に入れた届け出を提出する。 | 新しい情報をサーバーに送信。新しいデータを作成する動作で、サーバー上の状態を変更する。 |
PUT | 情報の更新。市役所が住所変更をシステムに反映。 | 既存の情報を更新。プロフィール情報を変更するなどに使う。データを更新する動作で、サーバー上の情報を変更する。 |
DELETE | 情報の削除。記録から住所を消去する。 | サーバー上の特定のデータを削除。アカウント削除などに活躍。 |
これらのメソッドを使って、WEBアプリケーションはユーザーのリクエストに応じて、サーバーと情報のやり取りを行うんだ。ユーザーは直接これらの操作を見ることはないけど、ウェブサイト上でリンクをクリックしたり、フォームに情報を入力して送信ボタンを押したりすることで、裏側でこれらのメソッドが実行されているんだ。
今日はここまで!
本当にIT初めてでAIスクールに通う方がたくさんいます。この記事を読んで、APIについての概念が少しでもお役にたてたら嬉しいです。