インターフェイスの作成についてお聞きしたいです
解決したいこと
システムとシステムをつなぐインターフェイスを作ろうとしています。(送る側のテーブルから、受け取る側に必要な項目だけをデータで送る、またはその逆のIFを作りたい)
こういうIFを作るとき何を理解しておかなければならないのでしょうか?
知識のある方教えていただかると幸いです。![]()
システムとシステムをつなぐインターフェイスを作ろうとしています。(送る側のテーブルから、受け取る側に必要な項目だけをデータで送る、またはその逆のIFを作りたい)
こういうIFを作るとき何を理解しておかなければならないのでしょうか?
知識のある方教えていただかると幸いです。![]()
システム間インターフェースの設計・実装で理解しておくポイントとして以下があります。
●入力及び出力フォーマットの定義
データの構造・型・桁数・必須/任意を明確にします。
「想定外のNULL」や「桁あふれ」の原因になります。
●項目マッピング(変換ルール)
今回は入力項目のうちのものを幾つかの項目を対応する出力項目に移送する単純なパターンと思います。
値の変換・編集・コード変換が入るパターンこともあります。
●起動条件(トリガー)
何が起点で処理が動くかです。以下のような例があります。
・指定時刻でのバッチ起動
・コマンド実行
・HTTPリクエスト
・ファイル生成検知
・DBテーブルへのレコード追加
●エラー発生時の振る舞い
エラーが起きた場合に以下を決めます。
・トランザクション制御(全件ロールバックするか、エラー発生までのレコードはコミットするか)
・ログの出力方式(テキストファイル、OSイベントログなど)
・ログの出力内容
・エラー通知方法(メール、Slackなど)
●エラー時のリカバリ方針
・先頭から全件再送するのか
・エラーになったレコードのみ再送できるのか
以下のような感じですね。
まずは、なにで繋いでいるのか、どういったプロトコルがサポートされているかを理解しましょう。
たとえば、シリアルケーブルでつないで、プロトコルは無手順だとか。
使うレイヤに、誤り検出が含まれているか、訂正や再送などが含まれているかなどは理解しましょう。
TCP/IPが使えるのなら、このあたりはTCPが全部やってくれますが、そうでないなら自作する事も選択肢の1つです。
送る側のテーブルから、受け取る側に必要な項目だけをデータで送る、またはその逆のIFを作りたい
インターフェース作成の前に、必要な機能の要件をもう少し詰めたほうがいいと思います。どうやって送って、受け取る側はどのように取り込むかは決まっていますか?
単純に、テーブルからTSVやJSONのような汎用的なデータを出力して、必要なものだけ取り込んでもらう程度で解決する場合もあります。
単純な例としては、
システムAからシステムBにTable1のデータを要求する
↓
Table1のデータが返ってくる(データ形式は都合のよいもので)
↓
システムAが戻ってきたデータをデシリアラズして検証し、
必須データのNULLチェックやデータ変換が必要なら行う。
システムBのカラム名→システムAのカラム名へのマッピングを行う。
↓
システムAのテーブルに格納
みたいな感じで実現出来そうではあります。
データがめちゃくちゃ大きい、とにかくスピードが求められるみたいな
必須要件が増えてくると、やり方もまた変わってきます。
インターフェースは何かを共通化したい、こういうやり方でやりましょうという取り決めです。システム間でやり取りする際に必要な機能がきちんと決まっていれば、何を共通化すればいいかは自ずと見えてくる筈です。
何を送って、何を返してもらえば自分の考えた機能が実現出来るか、インプット、アウトプットを明確にしましょう。