3.クライアントライブラリを使っての開発

3.クライアントライブラリを使っての開発

ここまではantを利用したテスト的な接続を行ってきましたが、実際にクライアントライブラリを利用してプログラムから「okuyama」に接続してみましょう。今回はJavaの専用クライアントを利用して接続を行います。

クライアントライブラリを利用する際のクラスファイルはclasses配下のokuyama/imdst/client/OkuyamaClient.classとokuyama/imdst/client/OkuyamaClientException.classの2つになります。開発時はokuyama.imdst.client.OkuyamaClientとokuyama.imdst.client.OkuyamaClientExceptionをimportしてください。

以降は利用時のソースコードになります。

それぞれ行っていることを行単位で説明します。

  • 13行目:「okuyama」クライアントのインスタンス化を行います。
  • 14行目:「okuyama」へ接続します。現在起動している「okuyama」のIPアドレスとポート番号を指定
  • 17行目:「okuyama」へKeyとValueのペアを登録しています。
    setValueメソッドは、登録結果をbooleanとして返します。
  • 19行目:登録結果を判定。22行目は登録成功、24行目は登録失敗になります。
  • 29行目:「okuyama」から値の取得を行います。先ほど登録したKey値"Key111"で取得しています。
    getValueメソッドは結果を文字列の配列として返します。配列の添え字0番目が実行結果を表します。
  • 31行目:取得結果を判定。34行目はデータあり。Valueをコンソールに出力しています。
    37行目はデータなし、40行目はサーバー側でエラー発生です。
  • 45行目:「okuyama」の特徴的な機能である、タグを登録しています。Tagは文字列の配列になります。
    1つのデータにいくつでも付加できます。付加したいタグの準備は46行目で行っています。
    47、48行目で"Key111"と新たに"Key222"にタグを付加しています。タグ付加はsetValueの引数が
    (key, タグ, Value)の順番での呼び出しになります。
  • 51行目:Tagを利用して紐付くKey値とValue値のペアを取得します。
    getTagValuesメソッドは結果をKeyとValueのペアを格納したMap型として返します。
    該当データが存在しない場合はnullになります。
  • 54行目:取得結果のMapをコンソールに出力しています。
  • 60行目:接続を切断しています。

このソースコードはMain.javaとして保存し、クラスパスにclassesディレクトリと、libディレクトリ配下のjavamail-1.4.1.jar(Base64変換のために使用)をクラスパスに通してコンパイルしてください。

※「okuyama」展開ディレクトリにて実行

#javac -classpath ./classes:./lib/javamail-1.4.1.jar Main.java

そして実行はMain.classの配置パスとコンパイル時に使用したクラスパスを通して実行します。

#java -classpath ./:./classes:./lib/javamail-1.4.1.jar Main

出力)

  setValue Result = [Success]
  getValue Result = [Value111]
  {Key111=Value111, Key222=Value222}

4. では実際の運用ではどのような設定を行い利用するか

「okuyama」の起動から、基本となる操作、そして設定の変更、クライアントライブラリの利用方法までを体験いただけましたでしょうか。

設定の変更部分で行ったように「okuyama」は異なる特性のストレージを意図的には配置しクライアントは意識することなく利用することが可能です。そのため、「okuyama」を導入する際に適正な設定と配置が不可欠になります。

次回はこの点を踏まえて実際のアプリケーションではどのような設定で「okuyama」を運用しているかを事例と合わせて説明します。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30