San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
閉じる
プライバシー設定
ウェブサイト運営に必要なCookieや類似技術を使用しています。追加のCookieは貴社の同意がある場合のみ利用されます。同意は「Agree」をクリックすることでいただけます。どのデータが収集され、どのようにパートナーと共有されているかの詳細は、Cookieポリシープライバシーポリシーをご確認ください。
Cookieは、貴社デバイスの特性や、IPアドレス、閲覧履歴、位置情報、固有識別子などの特定の個人情報を取得、解析、保存するために使用されます。これらのデータは様々な目的で利用されます。分析Cookieによりパフォーマンスを評価し、オンライン体験やキャンペーンの効果向上に役立てます。パーソナライズCookieは、利用状況に応じた情報やサポートを通じ、貴社専用の体験を提供します。広告Cookieは、第三者が貴社のデータをもとにオーディエンスリストを作成し、ソーシャルメディアやネット上でのターゲット広告に使用します。貴社は各ページ下部のリンクから、いつでも同意の許可、拒否、または撤回が可能です。
ご送信ありがとうございます。内容を受け付けました。
申し訳ありません。フォーム送信時にエラーが発生しました。
/
/
API Security

CRUD - 作成、参照、更新、削除

はじめに

APIモデルの構築には戦略的なアプローチが必要で、その基本となるのがCRUDです。開発者に道を示し、高品質なAPI開発の指針となります。


CRUD - 作成、参照、更新、削除

CRUDの概要

CRUD(作成、参照、更新、削除)は、堅牢なAPIを構築する際にAPI開発者やプログラマーが従う基本原則です。業界標準に従い、各APIモデルはこの4原則、または最低でも3原則に沿って動作する必要があります。 

一部のプログラミング言語はそのままのCRUDを採用し、また一部はカスタマイズ版を用います。Python、PHP、Java、.NetなどはCRUDフレームワークを利用しており、CRUDの主要な機能のひとつは、 

必要な要素を開発者に示し、アプリが一体となるための指標となることです。80年代初頭に誕生し、当時はSQLデータベースの有効性を説明するために使われました。時とともに範囲を拡大し、DDSやHTTPの設計原則としても重要視されるようになりました。


CRUD操作を定義する

CRUD操作の基本を理解すれば、活用の幅が広がります。各操作とその例を確認して、概念をより深く理解してください。

  • 作成

これは、データベースに新しい変更を追加する機能を指します。SQLリレーショナルデータベースでは、作成はINSERTとして扱われます。利用者が新たなデータ行を生成し、既存データと容易に連携できるようにします。 

例: 

例えば、Fruitsのリスト(http://www.example.com/fruits/)に追加する場合を考えます。

オブジェクト「Mango」を作成するには、このURLにPOSTリクエストを送ります:

{
  “fruit”: {
    "name": “Mango”,
    "color": “Yellow”
  }
}

このコードで、fruitsに「Mango」というオブジェクトが追加され、colorプロパティに「Yellow」が設定されます。作成が成功すると、HTTPレスポンス201が返ります。

  • 参照 

一般的な検索機能のように、参照はリレーショナルデータベース内の特定の値やデータを探すために用いられます。利用者はキーワードやフィルターを使用し、目的の情報を得ることができます。 

例: 

先の例で追加したオブジェクトが含まれるリストを参照するため、GETリクエストを発行します。

次のコードを実行してください:

GET http://www.example.com/fruits/

レコードが存在すれば、HTTPレスポンス200が返り、fruitsのリストが表示されます。

 {
  "fruits": [
    {
      "id": 1,
      "name": “Apple”,
      "color": “Red”
    },
    {
      "id": 2,
      "name": “Grapes”,
      "color": “Green”
    },
    ...
    {
      "id": 3,
      "name": “Mango”,
      "color": “Yellow”
    }
  ]
}

Mangoで作成したオブジェクトの詳細を確認するには、次のコードを使用します:

GET http://www.example.com/fruits/3/
  • 更新 

更新機能は、既存のデータを変更する際に、データベース全体に影響を与えずに修正が可能です。 

全体修正の場合、複数のフィールドの変更が必要となります。SQLやOracle HCM Cloudでは、この機能はUpdateと呼ばれます。

例: 

オブジェクトの値を変更するには、そのオブジェクトのURLにPUTリクエストを実行します。以下のようになります:

PUT http://www.example.com/fruits/3/
{
  "fruits": {
    "name": “Ripe Watermelon”,
    "color": “Blood Red”
  }
}

操作がHTTPコード200を返せば更新成功です。確認のため、再度参照操作で値をご確認ください。

  • 削除

削除機能により、不要または古くなったデータをデータベースから取り除くことができます。 

1つまたは複数のデータを同時に削除することも可能です。 

削除にはハードデリートとソフトデリートの2種類があり、ハードデリートはデータを完全に消去し、ソフトデリートはデータ状態を更新するのみで、永久に削除はしません。 

例:

簡単です。作成したオブジェクトを削除してみましょう。

GET http://www.example.com/fruits/3/

その後、GETリクエストでHTTPコード204が返れば、内容が存在しないことを意味します。

CRUD meaning
CRUDの意味

CRUDの実践

CRUDの各要素は、機能的なストレージモデルの構築に不可欠で、システムやアプリの設計において重要な役割を果たします。しかし、CRUDモデルをしっかり理解することで、より多くの利点が得られます。以下に簡単な実践例を示します。

ペインティングのトレーニングセッションを管理するシステムの新モデルを開発してみましょう。 

このシステムは、クラス一覧、継続時間、講師、参加者などの詳細情報を備える必要があります。 

例として、以下のようなモデルになります。 

{
  "fruits": {
    "id": 1    
    "name": “Mango”,
    “color”: “Yellow”,
    "weather": “summer”
   }
}

次に、各CRUD操作について、以下の質問の答えを考えてみてください。

  • ペインティングクラスのために、どのルートを実装し、どのHTTP動詞が提供されるか?
  • 選択したルートが各データベースにどのような影響を与えるか?
  • 各ルートからどのようなレスポンスボディが期待されるか?

これらの質問に答えられるようになれば、試作プロジェクトで作成、更新、参照、削除の練習を重ね、概念理解を深めてください。


CRUDの利点

一部の開発者やアプリ設計者が他の方法ではなくCRUDを選ぶ理由は、優れたパフォーマンスと独自機能によるものです。CRUD採用の主なメリットは以下の通りです。

  • SQLインジェクション攻撃のリスク低減

SQLステートメントがSQLサーバ上で実行されるため、SQL攻撃のリスクが伴います。サーバにはSQL情報や手順が保存され、不正アクセスが致命的な結果を招く可能性があります。 

CRUDでは既存のアクションを利用し、利用者データで動的クエリを生成する必要がないため、SQLインジェクション攻撃の可能性を抑制でき、SQLステートメントのパラメータも正確に引用されます。 

  • 不用意な閲覧に対する防御の強化 

アドホックなSQL文の利用者は、データベーステーブルへのアクセス権を取得する必要があります。権限が付与されると、ExcelやWordなどのデータ操作やアプリの業務ルールを迂回することも可能になります。 

しかし、これにはデータ流出のリスクも伴います。CRUDはアプリのロール管理を可能にし、高いセキュリティとアクセス制御を実現します。 

権限はパスワードで保護され、パスワードがアプリに統合されるため、情報変更は難しく、不用意な閲覧を防止します。 

sql and crud

CRUDとRESTの比較

CRUDとRESTは、同一の手法とみなされることがあります。この混同は、RESTアプリがCRUDに似た方法で他アプリやコンポーネントと連携するためです。しかし、両者は同一ではなく、明確な類似点と相違点があります。 

以下に、両者のポイントを説明します。 

  • 類似点

RESTアプリは特定のリソースを中心に構築され、これらのリソースはCRUDと同様に容易に作成、参照、更新、削除が可能です。ただし、CRUDでは作成、参照、更新、削除と呼ばれる操作が、RESTではPUT/POST、GET、PATCH/POST、DELETEとなります。

  • 相違点

両者は類似点よりも相違点が多いです。主な相違点は以下の通りです。

  • 定義上、RESTはアーキテクチャであるのに対し、CRUDは機能です。
  • RESTはHTTPの構成要素を中心に据えています。
  • CRUDはデータベースに保存された情報を中心に動作します。
  • CRUDはRESTの一部として利用可能ですが、RESTはCRUDなしでも独立して機能します。


CRUDの応用

CRUDはその即時性から、多くの分野で利用されています。リレーショナルデータベースを用いるアプリケーションでは、特にCRUDが頻繁に使われています。ソフトウェア開発以外の主要なCRUDの実装例を見てみましょう。

  • 人事におけるCRUD 

HR(人事部)は、各組織にとって重要な部門で、スタッフの記録管理や業績の即時確認を担当します。この目的のため、適切なデータベースアプリが利用されることが多いです。

従業員情報を保存するために、Employee Table、HR Data Table、Locations Tableなどが使われます。新たな採用や変更時には、作成操作が必要となります。 

メールアドレスや採用情報などの取得には参照操作が用いられ、給与や個人情報、スキルの変更時は更新操作で記録を修正します。

従業員が退職する際は、削除操作でその情報をシステム/データベースから除去します。

  • 各業界における情報管理のためのCRUD

eCommerce、オンラインフォーラム、ソーシャルメディアなどの運用分野では、適切なデータベースが維持され、情報の更新や削除にCRUDが広く利用されています。


CRUDテストとは

CRUDテストは、ソフトの即時性を検証するために広く用いられるブラックボックステストの手法です。この手法は、SQLやその他のDBMSにおいて、正確なデータマッピング、ACID特性の維持、そして確実なデータ整合性を保証するために使用されます。


RESTおよびCRUD操作のセキュリティ確保

認証、認可、会計、すなわちAAAは、RESTとCRUDの両方に有効なセキュリティ対策です。利用者の認証、各アクセス前の認可、操作およびデータ使用の監査を行い、WallarmのAPI Security platformなどのリソースを活用して、初めから終わりまでセキュリティを守ります。

FAQ

Open
なぜWeb開発においてCRUDは重要なのでしょうか?
Open
APIのCRUDとは?
Open
CRUDとは何か?
Open
ウェブ開発で使われる一般的なCRUDフレームワークは何ですか?
Open
開発者はウェブアプリでどのようにしてCRUD操作を実装できるか?

参考資料

CRUD operations - Github

CRUD application - Github

最新情報を購読

更新日:
February 25, 2025
学習目標
最新情報を購読
購読
関連トピック