
こんにちは!マーケ担当の加藤です。
企業が業務システムにMySQL、PostgreSQL、Oracle、SQL Server といったリレーショナルデータベースを使いはじめて以来、データベースへの接続は重要な課題であり続けてきました。この課題に画期的な解決策をもたらしたのが、1992年にMicrosoft が発表したOpen Database Connectivity(ODBC)API です。
一言でいえば、ODBCとは、アプリケーションとデータベースを標準的なSQL でつなぐ、Microsoft 社が策定したAPI 規格です。ODBC を使うことで、アプリケーション側はデータベースの種類ごとの違いを意識せずに、統一された方法でデータへアクセスできます。
ODBC は、アプリケーションと多様なデータベース間の接続を標準化する技術として、現在でも広く採用されています。本記事では、ODBC 技術の仕組みとODBC ドライバーの役割、その重要性について詳しく解説します!
この記事で分かること
✓ ODBCドライバーの基本概念と4つの主要コンポーネント
✓ ODBCドライバーによる業務効率化の具体例
✓ 5分で完了するODBCドライバーの環境構築手順
✓ ODBCの制約と注意点
✓ トラブルシューティングとよくある質問への回答
【対象読者】データベース接続を初めて行う方、API連携を自動化したい方
それでは早速見ていきましょう。
ODBC の仕組みとは?
ODBCとは?
ODBC は、アプリケーションからデータベースへのアクセスを標準化するためのAPI です。この技術により、アプリケーション開発者は特定のデータベース管理システム(DBMS)に依存することなく、統一されたインターフェースを通じてデータにアクセスすることが可能になりました。
身近なイメージで言えば、ODBC は「通訳」のような存在です。英語・フランス語・中国語など自分の知らない言語を話す取引先が相手でも、優秀な通訳が1人いれば日本語でやりとりできるのと同じように、Oracle、MySQL、SQL Server といった「話し方」の異なるデータベースが相手でも、ODBC を介せばアプリケーションは共通言語であるSQL だけで会話できます。
なお、よく比較されるJDBC との違いは以下のとおりです。
| ODBC | JDBC |
対象 | 言語非依存(C/C++、Excel、Access、Power BI などのBI ツール) | Java アプリケーション専用 |
策定元 | Microsoft(1992年) | Sun Microsystems(現Oracle、1997年) |
主な利用シーン | BI・帳票・ETL ツールからのデータ接続 | Java 製の業務システム・Web アプリケーション |
ODBCドライバーの役割
ODBC ドライバーは、ODBC の仕様に基づいてアプリケーションからの要求を特定のデータベース向けのSQL に変換するミドルウェアコンポーネントです。ODBC ドライバーを使うことで、ODBC に準拠したアプリケーションであれば、多様なデータベースと効率的にデータをやりとりすることができます。また、CData ODBC Drivers を使えばDB と同様にSaaS からもデータを取得できます。
ODBC アーキテクチャ
ODBC アーキテクチャは、主に以下のコンポーネントから構成されています。
アプリケーション
ドライバーマネージャー
ODBCドライバー
データソース

図を元に、ODBC を使ってアプリケーションからデータを取得しようとする際どんなことが起こるのか、見てみましょう。
ODBCのコンポーネント | コンポーネントの役割 |
アプリケーション | データソース名(DSN)と実行したい操作をドライバーマネージャーに送信します。 |
ドライバーマネージャー | DSN に基づいて適切なODBC ドライバーを選択し、ロードします。 |
ODBC ドライバー | データソースに接続し、アプリケーションからの要求をデータソースが理解できるSQL に変換します。 |
データソース | SQL を処理し、データをODBC ドライバーを経由してアプリケーションに返します。 |
実際の接続処理は、大きくCONNECT(接続)→ EXECUTE(実行)→ FETCH(取得)→ DISCONNECT(切断)という4 ステップの流れで進みます。アプリケーションがドライバーマネージャー経由でデータソースに接続(CONNECT)し、SQL 文を実行(EXECUTE)、結果セットを1 行ずつ取得(FETCH)した後、接続を閉じます(DISCONNECT)。CData ODBC Drivers もこの標準的な流れに準拠しているため、既存のODBC 対応アプリケーションからそのまま接続できます。
このプロセスにおいて、ODBCドライバーが果たす役割は極めて重要です。データソースへの接続の確立、SQL の変換、そしてデータの取得と返送という核心的な機能を担っているからです。
ODBC ドライバーは元々Windows OS 向けに開発されましたが、その後Linux やMac OS でもドライバーマネージャが利用可能になり、任意のプラットフォームのアプリケーションから各種データベースへの接続が可能になりました。
ODBCの仕様とバージョン
ODBC の仕様は1992年の初版以降段階的に拡張されており、現在広く使われているのはODBC 3.x 系です。最新のODBC 4.0 仕様はGitHub 上で公開されています。また、各ドライバーがサポートするAPI 関数の範囲は「準拠レベル」(コア/レベル1/レベル2)として定義されており、レベルが上がるほどストアドプロシージャやスクロール可能カーソルといった高度な機能に対応します。ドライバー選定の際は、利用したいアプリケーションが要求する適合レベルを満たしているかも確認しておくと安心です。
Access からODBC でのデータ取得を試してみる
Microsoft Access からSalesforce への接続を例に、実際にODBC での接続を試してみましょう。CData のODBC ドライバーを使えば、Salesforce などデータベースではないSaaS データソースであっても、仮想的にデータベースとして扱うことでODBC を介してデータを取得・編集できます。
1. DSN の作成
事前に、Salesforce 用のドライバーをインストールしてユーザー名・パスワードなどデータソースへの接続情報を含むDSN を作成しておきます。ちなみに、外部のDSN を呼び出すことなく直接接続情報を渡す必要があるODBC ドライバーも存在します。
それでは進めていきましょう。CData Salesforce Drivers は、こちらから30日間のトライアルがダウンロードできます。
ドライバーをインストールしたら、「ODBC データソース アドミニストレーター」を開いてみてください。アドミニストレーターは、Windows 上でDSN をGUI で管理するためのツールです。Mac / Linux などUNIX OS では、unixODBC を利用してDSN をファイルベースで管理できます。
ドライバーがインストールされていれば、「CData Salesforce Sys」という項目が追加されています。

接続情報を設定してみましょう。以下では、Salesforce への接続に必要なユーザー名・パスワード・セキュリティトークンを入力しています。OAuth 接続を使用することで、通常のウェブサービスへのログインと同じ感覚で接続情報を設定することもできます。

2. アプリケーションからドライバーを呼び出す
それでは、Access からODBC 経由でSalesforce のデータを取得してみましょう。Access で新しいデータベースを作成したら、「新しいデータソース」 → 「他のソースから」 → 「ODBC データベース」と進みます。

「コンピューター データソース」を選ぶと、先ほど設定した「CData Salesforce Sys」を含むDSN の一覧が表示されます。

OK をクリックすると、Salesforce ODBC Driver がDSN の接続情報を使って、データソースであるSalesforce への接続を試みます。
成功すると、以下のようにSalesforce のテーブル一覧が表示されます。

テーブル一覧から取得したいテーブルを選択してOKをクリックすると、Access 側で呼び出したコマンドをドライバーがSalesforce 用のSQL に変換して、Salesforce から指定したデータを取得、Access にデータを返します。今回はリードデータを取得してみました。取得したSalesforce データをAccess のテーブルと結合して活用する具体的な方法は、CData ODBC Driver を使ってSalesforce データをAccess で結合するで紹介しています。

ODBC接続ができないときの確認ポイント
ODBC 接続でエラーが出る場合、まずは次の4点を順に確認してみてください。
DSN が正しく作成されているか:ODBC データソース アドミニストレーターで対象のDSN が存在し、接続テストが成功するかを確認します。
ドライバーがインストールされているか:アプリケーションから見えるドライバー一覧に対象のドライバーが表示されているかを確認します。
32bit/64bit の不一致がないか:アプリケーションが32bit 版の場合、64bit 版のDSN は参照できません。よくあるつまずきポイントなので、アプリケーションとドライバー・DSN のビット数を揃えてください。
認証情報・ネットワーク設定:パスワードの期限切れ、ファイアウォールやプロキシによる接続先へのアクセス遮断がないかを確認します。
CData ODBC Drivers をご利用の場合は、こうした接続トラブルも日本語のテクニカルサポートに相談できます。
プログラミング言語でのODBC 接続
ここまでで、Access からGUI ベースでのODBC を使ったデータ取得の方法を見てみました。ODBC のユースケースとしては、NodeJS やPHP といったプログラミング言語からの利用も人気です。プログラミング言語からの利用については、以下の記事をご確認ください。
SQLHDBC hdbc;
SQLHSTMT hstmt;
SQLConnect(hdbc, (SQLCHAR*)"CData Salesforce Sys", SQL_NTS, NULL, 0, NULL, 0);
SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
SQLExecDirect(hstmt, (SQLCHAR*)"SELECT Id, Name FROM Lead", SQL_NTS);
SQLFetch(hstmt);
SQLDisconnect(hdbc);
上記はC 言語でのODBC API 呼び出し例です。NodeJS やPHP から利用する場合も、内部的には同様にSQLConnect などの関数が呼び出されています。
Access のようなGUI アプリケーションから利用する場合でも、プログラミング言語から利用する場合でも、根っこで呼び出しているのはSQLConnect、SQLDisconnect などのOBDC API であることは変わりません。なお、Java アプリケーションから同様の接続を行いたい場合はODBC ではなくJDBC を使用します。両者の仕組みの違いはJDBCドライバとは?仕組みと5つのタイプ別活用方法で詳しく解説していますので、あわせてご覧ください。
ODBC ドライバーを使う7つのメリット
ODBC ドライバーは以下のような多くの利点を持ち、多様なデータベース・SaaS のデータを活用したい企業には欠かせません。
データベースとアプリケーション間の相互運用性:ODBC ドライバーは、さまざまな種類のデータベースに対して統一されたインターフェイスを提供します。そのため、企業はデータベースの追加や切り替えを容易に行うことができ、BI(ビジネスインテリジェンス)、分析、レポート作成のニーズに対して最適なデータアプリケーションを柔軟に使用できます。
汎用性:ODBCは、幅広いアプリケーションやツールでサポートされています。BI ツール、スプレッドシート、データ分析ツールなど、多くのソフトウェアがODBC という汎用インターフェースを介してデータにアクセスできます。代表的なBI ツールでの設定例はTableau でODBC Driver を利用する方法で画面つきで解説しています。
疎結合:ODBC は、アプリケーションとデータベースの間に抽象化層を提供します。これにより、データベースの変更がアプリケーションに与える影響を最小限に抑えることができます。
高度な機能:ODBC ドライバーは多くの場合、次のような高度なデータベース機能をサポートしています。
ストアドプロシージャ:データベースに対し複雑な操作を直接実行します。
トランザクション:データベーストランザクションをサポートすることで、データの整合性を維持します。
バッチ処理:1回の操作で複数のクエリや更新を実行することで、高いパフォーマンスを実現します。
テクニカルサポートとドキュメント:多くのODBC ドライバーは、充実したテクニカルサポートと包括的なドキュメントを提供することで、開発者やデータ管理者がアプリケーションへの連携や問題のトラブルシューティングを簡単に行えるようにします。
開発期間の短縮:データベース固有の詳細を抽象化し、セキュリティ機能の管理を容易にすることで、開発者・データエンジニア・データサイエンティストは、データ分析とアプリケーションの核となる機能に専念できます。
ノーコードでの簡単な設定:ODBC ドライバーには通常、DSN と ODBC 接続の設定と管理のプロセスを簡単にするツールやユーティリティが含まれており、企業におけるすべてのステークホルダーが必要なデータに容易にアクセスできるようになっています。
ODBCの制約・注意点
一方で、ODBC はあくまで汎用的なインターフェースであるため、各データベースやSaaS 固有の高度な機能をそのまま使えるわけではありません。DBMS 独自の拡張機能やプロプライエタリな仕様を活用したい場合は、そのDBMS 専用のネイティブAPI やドライバーを別途利用する必要があります。この点、CData ODBC Drivers は各データソース固有の仕様を標準SQL に変換した上で提供する設計になっているため、接続先ごとに個別対応する運用負担を抑えながらODBC のメリットを活かせます。
よくある活用シーン
ODBC ドライバーは、基幹系システムとSaaS 間の連携やBI・ETL・ノーコードツールと各種システムとの連携など多様なシナリオで活用されています。ここではCData が実際にご相談いただいたユースケースをご紹介します。
ケース1: マスターデータのkintone への自動連携
課題
成果
ペーパレス化:SQL Server のデータをkintone アプリに連携することでkintone のみで回覧できるようになった
正確性(品質)向上:SQL Server のデータをkintone アプリに連携+ルックアップ機能を利用することで、入力の手間や入力ミスが削減、その結果入力情報の正確性も向上した
業務改善:CData のテクニカルサポートを受けながら、アプリ作成や保守を内製化することで業務部門の声を即座に反映することができるようになった
導入事例へ >>
ケース2: ノーコード・ローコードツールのデータ連携
課題
成果
gcmCloud(AWS上の運用環境)+ Claris FileMaker とCData ODBC Driver for Amazon Marketplaceを用いることで短期間・低コスト、かつノーコードで生産・受注管理システムを構築、Amazonからの注文をリアルタイムに把握し温室からユーザーへの即日発送を実現した
生産・受注管理システムにECサイト、および実店舗の注文・販売データを集約することで年間を通した需要予測を実現、高精度な予測に基づいた胡蝶蘭の生産を実現した
導入事例へ >>
RDB だけじゃない!あらゆるデータとの連携を実現するODBC ドライバー
ここまで紹介してきたように、ODBC は元々データベースへの接続を標準化するために開発されてきた技術です。しかし、昨今の業務データはDB だけでなく各種SaaS やクラウドDWH に分散しています。こうしたサービスとの連携には、それぞれのサービスが提供するAPI との連携を開発する必要があります。
とはいえ、API との連携をその都度開発する場合、相互運用性、汎用性、疎結合、ノーコードでの簡単な設定、といったODBC のメリットを享受することはできません。SaaS やクラウドDWH のデータを一元的に集約・変換する仕組みそのものを検討している場合は、ETLとは?仕組み・ELTとの違い・主要ツール比較もあわせて参考にしてください。
CData ODBC Drivers は、RDB だけでなく、以下に紹介するような各種SaaS データソースとの連携をODBC を使って実現します。CData ODBC Drivers を活用することで、ODBC のメリットを享受しつつ400種類以上のデータソースとの連携を簡単に実装できるのです。
どのデータソースでも30日間無料でお試しできるので、ぜひ一度試してみてください!
実際に外部調達へ移行した企業では、データ管理コストを最大80%削減した事例も報告されており、自社開発と比較した際のTCO差は導入後1〜2年で顕在化するケースが多くなっています。
おわりに
多くの企業がデータベース以外のアプリケーションに業務データを格納するようになり、ユニバーサルなコネクティビティの需要が高まっています。CData は、ODBC ドライバーの利点をすべて提供し、400種類以上のSaaS アプリケーション、ビッグデータストア、NoSQL データベースなど、データベースを超えてコネクティビティを拡張します。
参考資料
本記事の執筆に当たって、以下のページを参考にさせていただきました。
ODBC接続をCData Driversで簡単に構築する
CData ODBC Drivers なら、ノーコードで270種類以上のSaaS / DB と連携できます。BI・ETL ツールや各種ODBC ライブラリからお好みのデータソースに接続して、分析や開発に活用できます。
30日間の無料トライアルへ