Azure API Managementとは?基本からメリット・使い方まで徹底解説!

Azure

近年、ビジネスのスピードは加速し、企業内外でのデータ連携や機能共有の重要性が増しています。その中心的な役割を担うのが「API(Application Programming Interface)」です。しかし、APIが増えるにつれて、その管理やセキュリティ、公開方法に関する課題も顕在化してきました。

「開発したAPIを安全に公開したい」「複数のAPIを効率的に管理したい」「開発者がAPIを使いやすいようにしたい」

こうした悩みを解決するために登場したのが、Microsoft Azureが提供するAzure API Managementです。この記事では、Azure API Managementとは何か、その基本機能からメリット、具体的なユースケース、料金体系、さらにはデプロイ手順まで、初級エンジニアの方にもわかりやすく徹底解説します。Azure API Managementを理解し、API活用をさらに推進するための一助となれば幸いです。

Azure API Managementとは?わかりやすく解説

Azure API Managementは、その名の通り、APIを「管理(Management)」するためのAzureのクラウドサービス(PaaS)です。少し難しく聞こえるかもしれませんが、簡単に言えば**「APIの公開・管理・保護を一手に引き受ける総合受付」**のようなものだとイメージしてください。

APIとは?

Azure API Managementを理解する上で、まずAPIについて簡単におさらいしましょう。APIは、ソフトウェアやプログラム、Webサービス同士が情報をやり取りするための「接続口」や「約束事」のようなものです。

例えば、天気予報アプリが気象庁のデータを利用したり、地図アプリが他のサービスの店舗情報を表示したりする際に、APIが使われています。APIがあるおかげで、開発者はゼロから全ての機能を作る必要がなく、既存の優れた機能を組み合わせて新しいサービスを効率的に開発できるのです。

APIが増えると出てくる悩み

しかし、企業内で開発されるAPIや、外部に公開するAPIが増えてくると、以下のような様々な課題が出てきます。

  • APIの乱立と管理の煩雑化: どの部署がどんなAPIを持っているのか把握できない、バージョン管理が大変。
  • セキュリティの懸念: 不正なアクセスからAPIを守るにはどうすればいいか、誰にどこまでのアクセス権限を与えるべきか。
  • 開発者への情報提供: APIの使い方をまとめたドキュメント作成や、開発者からの問い合わせ対応が負担。
  • 利用状況の把握と制御: 誰がどれくらいAPIを使っているのか把握したい、特定のユーザーからのアクセスを制限したい。

これらの課題を放置すると、APIの利便性が損なわれ、セキュリティリスクが高まり、開発効率も低下してしまいます。

Azure API Managementが解決すること

そこで登場するのがAzure API Managementです。Azure API Managementは、これらのAPIに関する様々な課題を解決するための機能を包括的に提供します。

Azure API Managementを導入することで、企業は以下のようなことを実現できます。

  • APIの一元管理: 組織内外の様々なAPIを1つの場所でまとめて管理できます。
  • セキュリティの強化: 認証・認可、アクセス制御、IPアドレス制限、不正アクセス検知などの機能でAPIを保護します。
  • 開発者エクスペリエンスの向上: APIドキュメントの自動生成や、開発者がAPIを試せるテスト環境(開発者ポータル)を提供します。
  • APIの公開と収益化: パートナー企業や外部開発者向けにAPIを安全かつ簡単に公開し、利用量に応じた課金なども設定できます。
  • 利用状況の分析: APIのアクセスログやパフォーマンスを監視・分析し、改善に役立てます。

Azure API Managementは、バックエンドで動作している実際のAPI(Web API、マイクロサービスなど)と、それを利用するクライアント(Webアプリ、モバイルアプリ、他のシステムなど)の間に立ち、「APIゲートウェイ」として機能します。これにより、バックエンドのAPI実装の詳細を隠蔽しつつ、セキュリティや管理、分析といった付加価値を提供できるのです。まさに、API活用のための強力なプラットフォームと言えるでしょう。

Azure API Managementの基本機能

Azure API Managementは、APIのライフサイクル全体をサポートする様々な機能を提供しています。ここでは、その中心となる3つのコンポーネントについて解説します。

APIゲートウェイ:APIの「門番」

APIゲートウェイは、Azure API Managementの中核をなす機能であり、APIへのすべてのリクエストを受け付ける窓口です。クライアントからのリクエストを受け取り、適切なバックエンドAPIへ転送(ルーティング)する役割を担います。

単にリクエストを転送するだけでなく、以下のような重要な処理を行います。

  • 認証と認可: APIキー、OAuth 2.0、JWT(JSON Web Token)など、様々な方法でリクエスト元を認証し、アクセス権限を確認します。不正なアクセスはここでブロックされます。
  • 流量制御(スロットリング): 特定のユーザーやAPIごとに、一定時間内のリクエスト数を制限します。これにより、バックエンドAPIへの過負荷を防ぎ、安定したサービス提供を維持します。
  • リクエスト/レスポンス変換: 必要に応じて、リクエストやレスポンスの形式(JSONからXMLへなど)や内容を変換します。これにより、バックエンドAPIの仕様変更にクライアント側が影響を受けにくくなります。
  • キャッシュ: よくアクセスされるAPIのレスポンスを一時的に保存(キャッシュ)し、次回同じリクエストがあった際にバックエンドAPIに問い合わせることなく、高速に応答します。
  • ログ記録と監視: APIへのアクセスログを記録し、パフォーマンスやエラー状況を監視します。

このように、APIゲートウェイは、セキュリティの確保、安定稼働、パフォーマンス向上といった、API公開に不可欠な役割を果たします。Azure API Managementを利用することで、これらの複雑な処理を開発者が個別に実装する手間が省けます。

開発者ポータル

Azure API Managementが提供する「開発者ポータル」は、APIを利用する開発者向けのWebサイトです。開発者はこのポータルを通じて、公開されているAPIに関する情報を効率的に入手し、利用を開始できます。主な機能は以下の通りです。

  • APIドキュメントの公開: 利用可能なAPIの一覧、各APIのエンドポイント、パラメータ、リクエスト/レスポンスの例などが自動生成され、公開されます。開発者はこれを見てAPIの使い方を理解できます。
  • インタラクティブなテストコンソール: 開発者はポータル上で実際にAPIを呼び出し、動作を確認できます。これにより、コードを書く前にAPIの挙動を試すことができ、開発効率が向上します。
  • 開発者アカウント管理: 開発者はポータルでアカウントを登録し、APIを利用するためのキー(サブスクリプションキー)を取得できます。
  • 利用状況の確認: 開発者は自身が利用しているAPIのアクセス状況や使用量を確認できます。
  • お知らせやフォーラム: APIに関するお知らせの掲載や、開発者同士が情報交換できるフォーラム機能なども提供できます。

開発者ポータルは、デザインやコンテンツをカスタマイズすることも可能です。Azure API Managementは、開発者がAPIをスムーズに利用開始できるよう、充実したサポート機能を提供します。

Azureポータル(管理プレーン):API管理者のための管理画面

Azureポータル(またはAzure Resource Manager API、PowerShell、Visual Studio Code拡張機能など)は、APIの管理者や運用者がAzure API Managementサービス自体を設定・管理するためのインターフェースです。

主な管理作業は以下の通りです。

  • APIの定義とインポート: 新しいAPIを定義したり、既存のAPI定義(OpenAPI Specificationなど)をインポートしたりします。バックエンドサービスのURLなどもここで設定します。
  • ポリシーの設定: APIゲートウェイで実行されるルール(認証、流量制御、変換など)を「ポリシー」として定義・適用します。XMLベースで柔軟な設定が可能です。
  • 製品の作成と管理: 複数のAPIをまとめて「製品」としてグループ化し、公開範囲や利用条件(サブスクリプションの承認要否など)を設定します。
  • ユーザーとグループの管理: APIを利用する開発者アカウントやグループを管理します。
  • 分析と監視: APIの利用状況、パフォーマンス、エラーなどをダッシュボードで確認したり、詳細なログを分析したりします。Application Insightsとの連携も可能です。
  • セキュリティ設定: 証明書、暗号化、ネットワーク設定(VNET統合など)を構成します。
  • バックアップとリストア: Azure API Managementインスタンスの構成をバックアップ・リストアします。

管理者はAzureポータルを通じて、Azure API Managementのすべての機能をコントロールし、APIのライフサイクル全体を管理します。

Azure API Managementを利用するメリット

Azure API Managementを導入することは、企業や開発者にとって多くのメリットをもたらします。ここでは主なメリットを4つご紹介します。

API管理の一元化と効率向上

複数のシステムやサービスで個別にAPIが開発・公開されている状況では、管理が煩雑になりがちです。どこにどんなAPIがあり、誰が管理しているのか、最新バージョンはどれか、といった情報の把握が困難になります。

Azure API Managementを利用すれば、組織内外の様々なAPI(オンプレミスのAPI、他のクラウド上のAPI、Azure FunctionsやLogic Appsなど)を1つのプラットフォームに集約し、一元的に管理できます。これにより、APIの可視性が向上し、バージョン管理やアクセス権の管理も効率化されます。管理者はAzureポータルからすべてのAPIの状態を把握し、必要な設定変更を容易に行えるようになります。この一元管理は、Azure API Managementが提供する大きな価値の一つです。

セキュリティの強化とリスク低減

APIは外部からのアクセスを受け付けるため、セキュリティ対策が非常に重要です。Azure API Managementは、APIを保護するための多層的なセキュリティ機能を提供します。

  • 認証・認可: APIキー、OAuth 2.0、Azure Active Directory連携など、多様な認証方式をサポートし、不正なアクセスを防ぎます。
  • アクセス制御: IPアドレスによるフィルタリングや、JWTのクレームに基づいたアクセス制御など、きめ細やかなアクセス制限が可能です。
  • 通信の暗号化: クライアントとAPIゲートウェイ間、APIゲートウェイとバックエンドAPI間の通信をSSL/TLSで暗号化します。
  • 脅威からの保護: SQLインジェクションやクロスサイトスクリプティング(XSS)といった一般的なWeb攻撃からAPIを保護する機能(Web Application Firewallとの連携など)も利用できます。
  • ポリシーによるセキュリティルールの適用: 例えば、「特定のヘッダーが含まれていないリクエストは拒否する」といったカスタムルールをポリシーで簡単に実装できます。

これらの機能を活用することで、開発者はセキュリティ対策の実装に煩わされることなく、ビジネスロジックの開発に集中できます。Azure API ManagementがAPIの安全な公開を強力にサポートします。

開発効率の向上とイノベーション促進

開発者がAPIを効率的に利用できる環境を整えることは、新しいサービス開発やイノベーションを促進する上で不可欠です。Azure API Managementは、開発者の生産性を高めるための機能も充実しています。

  • 開発者ポータル: 前述の通り、APIドキュメントの自動生成、インタラクティブなテストコンソールなどを提供し、開発者がAPIを迅速に理解し、利用開始できるように支援します。
  • モックAPI: バックエンドAPIがまだ完成していなくても、Azure API Management上でAPIの仕様に基づいて仮の応答(モックレスポンス)を返すモックAPIを作成できます。これにより、フロントエンド開発者はバックエンド開発の完了を待たずに開発を進めることができます。
  • バージョン管理とリビジョン管理: APIの変更を安全に管理するためのバージョン管理機能や、テスト用のリビジョンを作成して段階的に公開する機能があります。
  • SDK生成: 開発者ポータルから、様々なプログラミング言語向けのSDK(ソフトウェア開発キット)を生成することも可能です(機能による)。

Azure API Managementを活用することで、開発者はAPIの検索、学習、テスト、利用といった一連のプロセスをスムーズに行えるようになり、開発サイクル全体のスピードアップが期待できます。

スケーラビリティと高可用性

公開したAPIへのアクセス数は、時期やキャンペーンなどによって大きく変動する可能性があります。Azure API Managementは、トラフィックの増減に合わせて自動的に処理能力を調整するオートスケール機能(プランによる)を備えており、突発的なアクセス増にも対応できます。

また、複数のリージョンにAzure API Managementインスタンスをデプロイし、トラフィックを分散させることで、単一リージョンでの障害発生時にもサービスを継続できる高可用性構成を組むことが可能です(Premiumレベル)。これにより、ミッションクリティカルなAPIも安心して公開できます。Azure API Managementは、信頼性の高いAPI基盤を提供します。

Azure API Managementのユースケース

Azure API Managementは、その柔軟性と豊富な機能から、様々なシナリオで活用されています。ここでは代表的なユースケースをいくつか紹介します。

  • 社内システム連携の促進:
    • 部門ごとに独立して開発されたシステム(販売管理、在庫管理、顧客管理など)が持つ機能をAPIとしてAzure API Managementで公開し、集約します。
    • これにより、各システムは他のシステムの機能やデータにAPI経由で容易にアクセスできるようになり、部門間のデータ連携や業務プロセスの自動化が促進されます。
    • Azure API Managementが認証やアクセス制御を行うため、安全な連携が可能です。
  • パートナー企業や外部開発者へのAPI公開:
    • 自社のサービスやプラットフォームの機能をAPIとして外部に公開し、パートナー企業やサードパーティ開発者が利用できるようにします。
    • 開発者ポータルを通じてAPIドキュメントや利用キーを提供し、利用状況に応じた課金設定なども可能です。
    • これにより、自社サービスの価値を高め、新たなエコシステムを構築することができます。Azure API Managementは、BtoB連携やAPIエコノミーの基盤となります。
  • マイクロサービスアーキテクチャのAPIゲートウェイ:
    • システムを小さな独立したサービス(マイクロサービス)に分割して開発するアーキテクチャでは、多数のAPIが生まれます。
    • Azure API Managementをこれらのマイクロサービスの前面に配置し、単一のエントリーポイント(APIゲートウェイ)として機能させます。
    • クライアントはAzure API Managementにアクセスするだけで、背後にある複数のマイクロサービスと連携できます。認証、ログ収集、流量制御などをAzure API Managementに集約することで、各マイクロサービスの実装をシンプルに保てます。
  • モバイルアプリ/Webアプリケーションのバックエンド統合 (BFF: Backend For Frontend):
    • スマートフォンアプリやWebアプリケーションが必要とするデータや機能を、それぞれのフロントエンドに最適化された形で提供するためのAPIをAzure API Managementで作成・公開します。
    • 例えば、モバイルアプリ用には必要最低限のデータだけを返すAPI、Webアプリ用にはより詳細なデータを返すAPIといった使い分けが可能です。
    • Azure API Managementのリクエスト/レスポンス変換機能などを活用し、バックエンドの複数のAPIを組み合わせてフロントエンドに最適なAPIを提供します。

これらのユースケース以外にも、レガシーシステムのモダナイゼーション、IoTデバイスからのデータ収集APIの管理など、Azure API Managementの活用範囲は多岐にわたります。

Azure API Managementの利用料金

Azure API Managementの利用料金は、選択する価格レベル(サービス階層)と利用状況によって決まります。主な価格レベルには以下のようなものがあります(2025年4月時点の情報。最新情報は必ず公式サイトでご確認ください)。

  • Consumption (従量課金):
    • API呼び出し回数とデータ転送量に基づく従量課金制です。
    • 利用が少ない場合や、開発・テスト環境、サーバーレスアプリケーションに適しています。
    • 仮想ネットワーク(VNet)統合や専用IPアドレスなどの高度な機能は利用できません。
    • 手軽にAzure API Managementを試したい場合に最適です。
  • Developer:
    • 開発およびテスト用途向けの低価格なプランです。
    • 機能は豊富ですが、SLA(サービス品質保証)はなく、本番環境での利用は推奨されません。
    • 個人開発者や学習目的での利用に向いています。
  • Basic:
    • 小規模な運用環境向けの基本的な機能を提供します。
    • SLAが提供され、本番環境での利用が可能です。
    • 機能とコストのバランスが取れたエントリーレベルのプランです。
  • Standard:
    • Basicよりも多くの機能(VNet統合の一部サポートなど)と高いスループットを提供します。
    • 中規模程度の本番環境に適しています。
    • Basicと同様にSLAが提供されます。
  • Premium:
    • 最も高機能かつ高性能なプランです。
    • マルチリージョンデプロイによる高可用性と地理的な分散、仮想ネットワーク(VNet)への完全な統合、セルフホストゲートウェイ(オンプレミスや他のクラウドでAPIゲートウェイを実行する機能)などが利用可能です。
    • 大規模でミッションクリティカルなAPI基盤を構築する場合に適しています。高いSLAが提供されます。

料金体系のポイント:

  • Consumptionレベル以外は、基本的に時間単位の固定料金(インスタンス料金)がかかります。スケールアウト(ユニット数を増やす)すると、料金も増加します。
  • データ転送量に応じた料金が別途発生します(送信データ量)。
  • セルフホストゲートウェイを利用する場合、追加の料金が発生することがあります。

どの価格レベルを選択するかは、必要な機能、予想されるトラフィック量、可用性の要件、予算などを考慮して決定する必要があります。最初はConsumptionやDeveloperで試し、必要に応じて上位レベルに移行するのが一般的です。Azure API Managementの料金体系は柔軟ですが、コストを最適化するためには利用状況を監視し、適切なレベルを選択することが重要です。

Azure API Managementのデプロイ手順を解説

Azure API Managementを実際に利用し始めるための基本的なデプロイ手順を解説します。ここではAzureポータルを使った手順を想定しています。

1. API Managementインスタンスの作成

まず、Azure API Managementサービスを利用するための「器」となるインスタンスを作成します。

  1. Azureポータルにログインします。
  2. 「リソースの作成」で「API Management」を検索し、選択します。
  3. 「作成」ボタンをクリックします。
  4. 基本設定:
    • サブスクリプション: 利用するAzureサブスクリプションを選択します。
    • リソースグループ: 新規作成するか、既存のリソースグループを選択します。
    • リージョン: サービスをデプロイする地域を選択します(ユーザーに近いリージョンを選ぶのが一般的)。
    • リソース名: Azure API Managementインスタンスの一意の名前を入力します(これがサービスのURLの一部になります)。
    • 組織名: 開発者ポータルや通知メールで使用される組織名を入力します。
    • 管理者メールアドレス: サービスからの通知を受け取るメールアドレスを入力します。
    • 価格レベル: 前述の利用料金セクションで説明した価格レベル(Consumption, Developer, Basic, Standard, Premium)から適切なものを選択します。最初はDeveloperやConsumptionで試すのがおすすめです。
  5. 必要に応じてネットワーク設定などを行い、「確認および作成」をクリックし、設定内容を確認後、「作成」をクリックします。
  6. デプロイが完了するまでには少し時間がかかります(選択したレベルによりますが、数十分程度かかることもあります)。

これで、Azure API Managementを利用する準備が整いました。

2. APIのインポートと設定

次に、管理したいバックエンドAPIをAzure API Managementに登録します。

  1. 作成したAzure API Managementインスタンスのリソースページに移動します。
  2. 左側のメニューから「API」を選択します。
  3. 「+ APIの追加」をクリックします。
  4. 様々な方法でAPIを追加できます。
    • OpenAPI: OpenAPI Specification (Swagger) ファイルを持っている場合、これをアップロードまたはURLを指定してインポートするのが最も簡単で推奨される方法です。APIの定義(エンドポイント、パラメータなど)が自動的に設定されます。
    • WSDL, WADL: SOAPサービスやWADL定義からもインポートできます。
    • Azureリソースから: Azure Functions, App Service, Logic Appsなどを選択して直接インポートすることも可能です。
    • 空白のAPI: 手動でAPIの定義を最初から作成します。
  5. インポートまたは作成方法を選択し、画面の指示に従って設定を進めます。
    • 表示名: Azure API Management内で表示されるAPIの名前。
    • 名前: APIの一意な内部名。
    • WebサービスURL: バックエンドで実際にAPIを提供しているサービスのURL(ベースURL)を入力します。
    • API URLサフィックス: Azure API Managementの公開URLの一部となるパスを指定します (例: myapi)。公開されるURLは https://<リソース名>.azure-api.net/<API URLサフィックス> のようになります。
  6. APIが追加されたら、個別の操作(GET, POSTなど)の定義を確認・編集します。バックエンドへの接続方法(認証情報など)も必要に応じて設定します。

3. ポリシーの適用 (例: 流量制御)

APIに対してルール(ポリシー)を適用し、セキュリティや挙動を制御します。ここでは例として流量制御ポリシーを設定してみます。

  1. APIの一覧から、ポリシーを設定したいAPIを選択します。
  2. 「デザイン」タブを選択し、「すべての操作」または特定の操作を選択します。
  3. 「受信処理」セクションの「+ ポリシーの追加」をクリックします(受信処理はクライアントからリクエストを受け取った際に適用されるポリシーです)。
  4. ポリシーの一覧から「Rate limit by key」(サブスクリプションキーごとの流量制御)または「Rate limit by subscription」(サブスクリプションごとの流量制御)を選択します。
  5. ポリシーの設定画面で、制限する呼び出し回数(例: 10)と更新期間(例: 60秒)を入力します。これは「60秒間に10回まで呼び出し可能」という意味になります。
  6. 「保存」をクリックします。

これで、このAPIには流量制御ポリシーが適用されました。同様の手順で、認証ポリシー(例: validate-jwt)、ヘッダー書き換えポリシー(例: set-header)、キャッシュポリシー(例: cache-lookup)など、様々なポリシーを組み合わせて適用できます。Azure API Managementのポリシーは非常に強力で柔軟な機能です。

4. 製品へのAPIの追加と公開

APIを利用可能にするには、「製品」にAPIを追加し、開発者がその製品を「サブスクライブ」できるように設定します。

  1. 左側のメニューから「製品」を選択します。
  2. デフォルトで「Starter」と「Unlimited」という製品がありますが、「+ 追加」で新しい製品を作成することもできます。
  3. 製品を選択し、「API」タブを開きます。
  4. 「+ 追加」をクリックし、この製品に含めたいAPIを選択して「選択」をクリックします。
  5. 次に、製品を利用可能にする設定を行います。「設定」タブで「公開済み」にチェックが入っていることを確認します。
  6. 「サブスクリプション」タブで、「サブスクリプションが必要」にチェックを入れ、必要に応じて「サブスクリプションの承認を要求する」のチェックを調整します(チェックを入れると管理者の承認が必要になります)。

5. 開発者ポータルでの確認と利用

最後に、開発者ポータルでAPIが公開されているか確認し、実際に利用してみます。

  1. Azure API Managementインスタンスの概要ページで、「開発者ポータル」のURLをクリックします。
  2. 開発者ポータルが開きます。管理者の権限でアクセスしている場合は、ポータルのカスタマイズなども可能です。
  3. 「API」メニューを選択すると、製品に追加され公開されたAPIが表示されます。
  4. 利用したいAPIを選択し、ドキュメントを確認します。
  5. 「試してみる」機能を使って、必要なパラメータを入力し、APIを呼び出してみます。この際、通常は「サブスクリプションキー」が必要になります。
  6. 開発者として利用する場合は、ポータルでサインアップ(または管理者が招待)し、製品をサブスクライブして自分のサブスクリプションキーを取得する必要があります。

以上が、Azure API Managementの基本的なデプロイと利用開始の流れです。Azure API Managementを使えば、比較的簡単な手順でAPIを管理・公開できることがお分かりいただけたかと思います。

まとめ

この記事では、Azure API Managementについて、その基本的な概念から機能、メリット、ユースケース、料金、類似サービス比較、そしてデプロイ手順までを解説しました。

Azure API Managementは、APIの公開・管理・保護に関する様々な課題を解決するための強力なプラットフォームです。APIゲートウェイ、開発者ポータル、管理プレーンといったコンポーネントを通じて、APIの一元管理、セキュリティ強化、開発効率向上、スケーラビリティ確保などを実現します。

社内システム連携、外部API公開、マイクロサービス管理、モバイル/Webアプリのバックエンド統合など、多様なシナリオでその価値を発揮します。料金体系も柔軟で、スモールスタートから大規模運用まで対応可能です。

API活用がビジネスの競争力を左右する現代において、Azure API ManagementのようなAPI管理基盤の導入はますます重要になっています。もし、あなたがAPIの管理や公開に課題を感じているなら、あるいはこれからAPI活用を本格化させたいと考えているなら、Azure API Managementは間違いなく検討すべき選択肢の一つです。

まずはConsumptionレベルやDeveloperレベルから、Azure API Managementの世界に触れてみてはいかがでしょうか。きっと、あなたのAPI活用戦略を次のレベルへと引き上げてくれるはずです。

プロフィール
tanat

「株式会社あいてぃ」に所属。
主にAWSとAzureなどのクラウドインフラを管理するクラウドエンジニアとして活動中。
スマホアプリやフロント部分の構築も可能なフルスタックエンジニアとして活躍できるように日々勉強中です。

tanatをフォローする
Azure
tanatをフォローする

コメント

タイトルとURLをコピーしました
function cocoon_custom_code_copy_script() { ?>   } add_action('wp_footer', 'cocoon_custom_code_copy_script');