Skip to content
インタ―システムズ製品やソリューション、キャリアの機会などについて、検索してご覧ください。

システム連携、システム統合がうまくいくために必要なこと - インターオペラビリティ (1)

「インターオペラビリティ」を普通に日本語に訳す場合、「相互運用性」と訳しているケースがほとんどだと思います。

相互運用性? 

何かわかったようでわからない言葉ではないでしょうか?

インターオペラビリティという言葉は、もちろん由来は英語の ” interoperability ” から来ているわけですが、これは ” inter ” と ” operability ” という2つの単語の合成語になります。

ここで ”inter” という単語が持つ意味というかニュアンスをつかむことが重要です。

接頭辞としてのinterの意味を調べてみると中・間・相互の意という答えがでてきます。

“inter” がつく言葉で一般的になじみがある言葉といえば、おそらく ”international” でしょう。

この言葉は、普通は「国際」と訳されることが多いと思います。

これは結構意味がはっきりしていますね。国の際、つまり国の間あるいはその相互関係ということになります。

国内ではなくて国外のことですね。

そう考えると ” interoperability ” は、” operability ” の間、相互関係ということになります。

そして ” operability ” は直訳すれば、「動作可能なもの」となります。

動作可能なものとなると、これは非常に範囲が広くなりますが、ここではITに関わるものを想定していますので、コンピュータのプログラムやスクリプトだったり、あるいはそれらがある程度まとまった「何々システム」を意味しています。(システムという言葉も状況に応じて大きさの単位が異なったりします)

つまりプログラムやシステムが個別に動作しているのとは別に、それらがお互いに関わりあって協調動作している状態を表しているということになります。(結局あまりわかりやすい説明になっていませんが、言わんとするニュアンスは伝わりましたか?)

国際問題もいろいろとややこしい問題があるように、インターオペラビリティを実現することにも色々と難しいことがたくさんあります。

2つの国があれば、それだけで国際問題が発生するように、2つのプログラム、2つのシステムが何らかのやりとりをする必要が発生すれば、インターオペラビリティが必要になります。従ってインターオペラビリティは古くて新しい問題の1つです。

しかし、その中身は今と昔では随分と異なってきています。

昔は、主としてIT技術の制約、つまり技術の未熟さからシステムの接続方法に制約があったのですが、技術の進歩に伴い段々と制約が取り除かれ、以前に比較して接続は簡単に、また、より高度になってきたのが大きな理由です。

この点を簡単に振り返ってみましょう。

コンピュータ技術の黎明期では、異なるプログラム間でデータを直接やり取りするのは困難でした。その結果取られた方法は、ファイル経由での情報交換です。これがメインフレーム時代の主流で、各プログラムは、入力ファイルを読み込んで、処理をして出力ファイルを作成します。

そして複数のプログラムを組み合わせてジョブを形成し、それが1つのシステム単位となります。

ファイルでの情報交換ですので、1行1行をファイルの単位とすると効率が悪いため、これらの処理は、通常バッチ処理となります。

やがてオンライン処理のニーズが高まると、ファイルを使用したバッチでのデータ交換では、タイムリーに処理できないという問題が起こり、もっとリアルタイムにデータのやり取りをする方法が求められるようになりました。

つまり、プログラム同士が直接通信をしてデータ交換する方法です。

この場合、同じプログラム言語で書かれたプログラム同士であれば、比較的簡単なのですが、プログラム言語が異なると内部的なデータの持ち方の違いなどがあり、お互いに形式を合わせる必要があり、いろいろと複雑です。

過去には異なるプログラム間でデータの交換を行う様々な規格が提案されましたが、なかなか広く普及するものはありませんでした。

しかし最近になってやっとSOAP(Web Service)やREST/JSONが普及してきました。

これらは、最近ではほとんどのプログラミング言語や開発環境でサポートされていますので、異なるプログラム間でデータ交換をするのが非常に簡単になってきました。

つまり過去にはインターオペラビリティと言えば、それは基本的にファイルによるデータ交換を意味していましたが、最近ではSOAPやRESTによる通信を意味することが増えてきました。

しかしながら、技術の進歩とは裏腹に人々の意識はそう簡単には変化せず、古い時代の概念にとらわれたまま相変わらずファイルによるデータ交換が行われている、もしくは行おうとしている現状もあるかと思います。

次に、インターオペラビリティのもうひとつの側面について、指摘しておきたいと思います。

それは、つながるシステムの数は時間とともに増大していくという傾向についてです。

国の場合も2国間だけでなく結局は複数の国同士がいろいろと関わりあう必要があるように、システム間連携も時間とともに増大していくことを避けることはできません。そして数が増えれば複雑さが増してしまうのも避けようがありません。しかもシステム連携の場合には、国同士の連携と同様の難しさに加えてITシステム固有の難しさがあります。

それは、システムをつなぐ時に、普通に考えれば2つのシステムを直接つないでしまうことによって発生する問題です。

通常連携するためには、その2つのシステムに手を加えて、連携できるようにプログラムを変更します。そうすると次に、2国間の関係が3国間、複数国間の関係になってお互いの利害関係を調整する必要があるのと同様に、システムの連携部分の何かを変更して調整しなければなりません。連携が増えるにつれそういう調整作業は見通しが悪くなり、段々と複雑かつ困難になっていきます。

根本的な問題は、各システムがシステム本来の役割とは別に、連携のための仕組みを取り込んでいく必要がある点です。これを連携が増えるたびに繰り返していくと、どうしてもパッチワークの様に継ぎ接ぎだらけとなりやすいのです。

さらに連携処理を一人の開発者が設計、実装するとは限らない点も、物事を複雑化させます。

一般的に個々の連携処理は、非常に似通っていますが、少しずつ異なります。それを別々の開発者が作ると、似て非なるものが拡散されていきやすいと言えるでしょう。(以前誰かが作った仕組みをコピペして使いまわすということも行われているでしょう。)結果として属人化しやすく、保守が困難ということにつながります。当然そのシステム運用も複雑、困難になります。

さらに大がかりなシステム全体に及ぶシステム改変の要件が発生すると、そちらの全ての連携処理にも影響が及び、似たような改造をすべてのポイントで繰り返さなければならないかもしれません。現存するシステムにもこの様な状況に陥り、保守が困難になっている例は多数存在し、実際そういう状況に陥っているシステムを私自身何度も見聞きしています。

それでは、どうしたらこのような困難は解消できるでしょうか?

次回、それについて、述べていきたいと思います。

 

第二回目はこちら→

RELATED TOPICS

あなたが好きかもしれない他の投稿