次に担当したのは全くの新規システムで、サーバー側をC++、クライアント側をJavaで実装するクライアント・サーバー型のシステムでした。わたしは主にクライアント側の実装を担当しました。
今では考えられませんが、十数年前はサーバーをJavaで実装するのはリスキーという判断があり、上記のような構成になりました。
■JavaのSwingの概念に面白さを感じつつも苦戦
私は主にクライアントのJava側を担当したのですが、Swingの概念は面白いと思ったものの、その理解には苦労しました。今ならググって参考になるサンプルを探せばなんとかなるのでしょうが、当時はネット上に上がっているサンプルも少なく、例えば画面上にグリッドを表示しグリッド内のセルをクリックするとセルの種別に応じた編集用のエディタがポップアップする、というような処理を実装するのに相当悩んだ覚えがあります。
参考になる書籍もあまりなく、以下の書籍くらいしかなかったような気がしますね。
■C++とJavaのクライアント・サーバ間通信も実装しました
当時は、C++とJavaといったような異環境間の通信方式としてCORBAを使うケースが結構有ったと思います。本システムでも当初はCORBAを検討していたようですが、CORBAを使うためのミドルウェアの費用面でNGとなり、通信部分もスクラッチで実装することになりました。
スクラッチで実装する場合、クライアント・サーバ間で通信するためのデータ形式(バイト列の意味、例えば4バイト目から8バイト目は〇〇番号を示すといったようなこと)を予めインターフェースとして定義しておく必要があります。
通常、そのようなインターフェース定義はExcel等の設計書で作成しますが、確かそのExcelのVBAの機能を使って、インタフェース定義からJavaとC++の通信用クラスを自動生成するようなマクロを作った覚えがあります。
当時はこの手のソースコードの自動生成という概念が結構流行ってたと思いますが、最近はあまり無いですかね。
この仕事で、Java、C++、VBAについてひと通りのコーディングを学んだ気がします。