Linux 上でHCL Domino のデータに接続するGo アプリケーションを作成する方法

CData ODBC Driver とunixODBC を使って、HCL Domino に連携するGo アプリケーションを作成。

古川えりか
コンテンツスペシャリスト

最終更新日:2023-09-07

この記事で実現できるHCL Domino 連携のシナリオ

こんにちは!ドライバー周りのヘルプドキュメントを担当している古川です。

Go はオープンソースのプログラミング言語で、高速かつ信頼性の高いソフトウェアを低コストで作成できるのが魅力です。Go とODBC Driver for Domino およびunixODBC を組み合わせて使うことで、HCL Domino のデータにリアルタイムで 接続するアプリケーションを作成できます。本記事では、ODBC Driver for Domino のインストール、unixODBC Driver Manager への設定、そしてHCL Domino に連携するGo アプリケーションの作成までを説明します。

CData ODBC ドライバとは?

CData ODBC ドライバは、以下のような特徴を持った製品です。

  1. HCL Domino をはじめとする、CRM、MA、会計ツールなど多様なカテゴリの270種類以上のSaaS / オンプレデータソースに対応
  2. Go をはじめとする多様な開発ツールやノーコードアプリ、BI ツールにHCL Domino のデータを連携
  3. ノーコードでの手軽な接続設定

CData ODBC ドライバでは、1.データソースとしてHCL Domino の接続を設定、2.Go 側でODBC Driver との接続を設定、という2つのステップだけでデータソースに接続できます。以下に具体的な設定手順を説明します。

Linux マシンで CData ODBC Drivers を使用する

CData ODBC Drivers はUbuntu、Debian、RHEL、CentOS、およびFedora など多くのRed Hat ベースおよびDebian ベースのシステムでサポートされています。 ほかにもいくつかのライブラリやパッケージのインストールが必要ですが、すでにデフォルトでインストールされている場合もあります。詳細はオンラインおよびインストールされるヘルプドキュメントの「はじめに」のセクションを参照してください。

Driver Manager のインストール

ドライバーのインストール前にシステムにDriver Manager が入っているかを確認してください。本記事では無料のオープンソースDriver Manager であるunixODBC を使います

Ubuntu のようなDebian ベースのシステムでは、APT パッケージマネージャからunixODBC をインストールできます:

$ apt-get install unixODBC unixODBC-dev

Red Hat Linux ベースのシステムでは、yum もしくはdnf からunixODBC をインストールできます:

$ yum install unixODBC unixODBC-devel

unixODBC Driver Manager はDriver の情報をodbcinst.ini ファイルから読み、odbc.ini からデータソースの情報を読みます。 次のコマンドをターミナルに入力して、設定ファイルの配置場所を決めることができます:

$ odbcinst -j

コマンドのアウトプットでODBC データソースのコンフィギュレーションファイルと登録されたODBC Drver のロケーションを表示します。 ユーザーデータソースはodbc.ini ホームフォルダが位置するユーザーアカウントのみからアクセス可能です。システムデータソースはすべてのユーザーからアクセスできます。 このコマンドのアウトプット例は以下です:

DRIVERS............: /etc/odbcinst.ini SYSTEM DATA SOURCES: /etc/odbc.ini FILE DATA SOURCES..: /etc/ODBCDataSources USER DATA SOURCES..: /home/myuser/.odbc.ini SQLULEN Size.......: 8 SQLLEN Size........: 8 SQLSETPOSIROW Size.: 8

ドライバーのインストール

パッケージ形式でドライバーをダウンロードできます。.deb 形式もしくは、.rpm 形式で提供しています。 ファイルをダウンロードしたら、ターミナルからドライバーをインストールします。

ドライバーインストーラーはドライバーをunixODBC に登録し、ODBC 接続をサポートするツールやアプリケーションから利用できるシステムDSN を作成します。T

Ubuntu のようなDebian ベースのシステムでは、sudo で次のコマンドを実行します: $ dpkg -i /path/to/package.deb

.rpms をサポートするシステムでは、sudo で次のコマンドを実行します: $ rpm -i /path/to/package.rpm

ドライバーのインストールが終わったら、unixODBC Driver Manager を使って登録されたドライバーを表示し、データソースを定義することができます。

登録されたドライバーの表示

$ odbcinst -q -d CData ODBC Driver for Domino ...

定義されたData Source の表示

$ odbcinst -q -s CData Domino Source ...

unixODBC でCData ODBC Driver for Domino を使用するには、ドライバーがUTF-8 を使用するように設定する必要があります。それには、通常はインストールフォルダのlib フォルダ(/opt/cdata/cdata-odbc-driver-for-domino)に入っているドライバーのINI ファイル(cdata.odbc.domino.ini)を次のように編集する必要があります:

cdata.odbc.domino.ini

... [Driver] DriverManagerEncoding = UTF-16

DSN の変更

ドライバーがインストールされると、システムDSN が事前定義されます。システムDSN はシステムデータソースファイル(/etc/odbc.ini)を編集して必要な接続プロパティを定義します。 ユーザー単位のDSN を作成することも可能で、その際には$HOME/.odbc.ini へのアクセスと変更は必要ありません

Domino への接続

Domino のデータに接続するには、以下のプロパティを設定してください。

  • URL: Domino データベースをホスティングしているサーバーのホスト名、またはIP を入力します。サーバーのポート番号を含めてください。例えば、http://sampleserver:1234/
  • DatabaseScope: Domino Web UI 内のスコープ名を入力します。ドライバーは、ここで指定したスコープによって制御されるスキーマの、フォームとビューを公開します。Domino Admin UI で、サイドバーからScopes メニューを選択します。このプロパティを、既存のスコープ名に設定します。

Domino での認証

Domino は、ログインクレデンシャルまたはAzure Active Directory OAuth アプリケーションを使用した認証をサポートしています。

ログインクレデンシャル

ログインクレデンシャルで認証するには、以下のプロパティを設定してください:

  • AuthScheme: これを"OAuthPassword" に設定します
  • User: 認証するDomino ユーザーのユーザー名
  • Password: 認証するDominoユ ーザーに関連付けられたパスワード

ドライバーはログインクレデンシャルを使用して、自動的にOAuth トークン交換を実行します。

AzureAD

この認証方法は、Azure Active Directory をIdP として使用してJWTトークンを取得します。Azure Active Directory にカスタムのアプリケーションを作成し、それをIdP として設定する必要があります。そのためには、ヘルプドキュメントの指示に従ってください。その後、以下のプロパティを設定します。

  • AuthScheme: これを"AzureAD" に設定します
  • InitiateOAuth: これをGETANDREFRESH に設定します。InitiateOAuth を使用すると、OAuth 交換の繰り返しやOAuthAccessToken の手動設定を避けることができます。
  • OAuthClientId: カスタムOAuth アプリケーションのセットアップ時に取得したクライアントID
  • OAuthClientSecret: カスタムOAuth アプリケーションのセットアップ時に取得したクライアントシークレット
  • CallbackURL: アプリ登録時に定義したリダイレクトURI。例えば、https://localhost:33333
  • AzureTenant: データにアクセスするために使用されるMicrosoft Online テナント。companyname.microsoft.com 形式の値またはテナントID のいずれかを指定してください。

    テナントID は、Azure ポータルのAzure Active Directory > プロパティページに表示されているディレクトリID と同じです。

/etc/odbc.ini or $HOME/.odbc.ini

[CData Domino Source] Driver = CData ODBC Driver for Domino Description = My Description Server = https://domino.corp.com Database = names.nsf Port = 3002 SSLClientCertType = PEMKEY_FILE SSLClientCert = full_path_of_certificate.pem SSLServerCert = *

これらのコンフィギュレーションファイルの使い方についての詳細は、インストールされるヘルプドキュメントを参照してください。

HCL Domino のデータに連携するGo アプリケーションサンプルの作成

Driver Manager のインストール、DSN 設定を終えたら、HCL Domino のデータ に連携するGo アプリケーションを作成します。 まずはODBC データベース向けのGo ドライバーをインストールします。いくつかのオプションがありますが、本記事ではhttps://github.com/alexbrainman/odbc のODBC ドライバーを使います。

Linux へのODBC のインストール

Go のODBC ドライバーをインストールするには、GOPATH 環境変数を定義する必要があります:

export GOPATH=$HOME/golang/go

GOPATH が定義されたら、ODBC ドライバー向けのGo ドライバーをインストールすることが可能です:

$ go get github.com/alexbrainman/odbc

これでGo アプリケーションを作って実行する準備ができました。

Go アプリケーションサンプル

このサンプルアプリケーションはHCL Domino のデータ に対してシンプルなSQL SELECT クエリを発行し、結果を表示します。$GOPATH/src/cdata-odbc-domino ディレクトリを作成し、次のソースコードをコピーして新しいGo ファイルを作成します。

cdata-odbc-domino.go

package main import ( _ "github.com/alexbrainman/odbc" "database/sql" "log" "fmt" ) func main() { db, err := sql.Open("odbc", "DSN=CData Domino Source") if err != nil { log.Fatal(err) } var ( name string address string ) rows, err := db.Query("SELECT Name, Address FROM ByName WHERE City = ?", "Miami") if err != nil { log.Fatal(err) } defer rows.Close() for rows.Next() { err := rows.Scan(&name, &address) if err != nil { log.Fatal(err) } fmt.Println(name, address) } err = rows.Err() if err != nil { log.Fatal(err) } defer db.Close() }

ターミナルでGo アプリケーションディレクトリに移動して、アプリケーションをビルドします。

$ go build

アプリケーションのビルド後、アプリケーションを実行してHCL Domino のデータを表示することができます。

$ ./cdata-odbc-domino

おわりに

このようにCData ODBC ドライバと併用することで、270を超えるSaaS、NoSQL データをGo から扱うことができます。30日の無償評価版が利用できますので、ぜひ自社で使っているクラウドサービスやNoSQL と合わせて活用してみてください。

日本のユーザー向けにCData ODBC ドライバは、UI の日本語化、ドキュメントの日本語化、日本語でのテクニカルサポートを提供しています。

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。