HOME > ソフテックだより > 第406号(2022年7月20日発行) 現場の声編「大規模システム開発時の苦労」

「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。

ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ


ソフテックだより 第406号(2022年7月20日発行)
現場の声編

「大規模システム開発時の苦労」

1. はじめに

私は今年17年目の中堅社員です。
入社して現在まで、様々な分野のソフトウェア開発を経験しておりますが、PLCソフトウェアとWindowsアプリケーションの開発を主に行ってきました。

今回のソフテックだよりでは「大規模システム開発時の苦労」というテーマで、筆者が経験した開発現場の奮闘振りを紹介したいと思います。

2. 事例紹介

今回紹介するのは、PLCソフトウェアとWindowsアプリケーションを組み合わせたシステムの開発となります。
ハードウェア構成は、サーバーPCが1台、各装置に付随して制御用PLC 1台・オペレーション用PC 1台の構成となります。この装置群が約100台の構成となります。
また、各機器にて複数のソフトウェアが稼働するシステム構成にて工場へと導入を行いました。

システム構成
図1.  システム構成

3. 苦労した点

システム構成だけを見ると、同じソフトを複数装置に展開しているだけなので、難しいことはないように思えるかもしれません。私自身も最初は数が多いだけならたいしたことないと考えていました。
最初のシステム導入時であれば、数はさほど気にすることもありません。しかし、これが一度システム導入した後の改造になってくると色々と難しい点がでてきます。

3-1. ソフトウェア更新が大変

最初にシステム導入後、案件によってはその後に機能追加など色々と改造を行う機会があります。
改造した際にアプリケーションの入替の場合は、基本的にEXEファイルの差し替えとなりますが、単純に台数が多いとそれだけで手間がかかってしまい大変です。
例えば、表示上の文言を変更するなどちょっとした変更であっても、ソフトウェア変更は簡単でも入替作業はすぐにとはいきません。また、改造であればしょうがないですが、ソフトウェア上の不具合を出してしまった場合も同様に入替が必要になりお客様に多大な迷惑をかけてしまうことになりますので、小規模なシステム以上に不具合が起きないように細心の注意を払う必要があります。

ソフトウェア更新が大変
図2.  ソフトウェア更新が大変

このような苦労があったため、最近では起動時に最新ソフトウェアをチェックして自動的に更新を行う機能を用意したり、1つのソフトウェア入替で済むようにWebアプリケーション化したりなど工夫をしています。

3-2. 生産中のままソフトウェア更新が必要

複数台の装置にてソフトウェアが稼働していますが、工場の生産都合などにより一度に装置全体への展開はできない場合があります。
ここで問題となってくるのが、サーバー上のソフトウェアです。
例えばデータ収集を行うようなアプリケーションであれば、更新してソフトウェア再起動後に停止していた期間のデータも収集できるような仕組みなど、停止時の動作についても考慮が必要となってきます。
しかし、機能によっては停止中だとどうしようもない場合もあります。
そういった場合には、一時的に制限がかかる機能を明確にしたうえで、生産調整を行って頂く必要があります。

また、生産の都合で入替ができるタイミングも決まってくるため、お客様にて入替を行って頂く場合もあります。
その際には、入替に関する手順書の準備、注意点(…制限がかかる機能など)の認識合わせを行ったうえで、生産に影響を与えないように入替作業を行って頂きます。

生産中のままソフトウェア更新
図3.  生産中のままソフトウェア更新

最近では作業で使用するPCにてWeb会議を行い、画面を共有して一緒に確認しながら作業を行う場合もあります。
この点については、最近はWeb会議などリモートが普及してきたおかげで、本当に便利になったなと感じます。

3-3. 複数のソフトVerが混在する

上記で記載しましたように、複数台の装置にてソフトウェアが稼働していますが、工場の生産都合などにより一度に全体への展開はできない場合があります。
その場合、タイミングを見て数台ずつソフトウェア更新を行っていくことになり、各装置にて稼働するソフトウェアのバージョンが異なる状態が起きます。
ここで問題となってくるのが、サーバー上のソフトウェアとクライアント(オペレーション用PC)のソフトウェアの関係です。
サーバー側は最新バージョン、クライアント側は旧バージョンということが起こるため、改造を行う場合は常に旧バージョンとの互換性を考慮した設計を行う必要があります。
単純に新機能の追加であれば問題ない場合もありますが、例えばDBテーブルへのフィールド追加、設定ファイルへの項目追加など、旧バージョンのソフトウェアでも参照する場合は注意が必要です。

複数ソフトVerが混在
図4.  複数ソフトVerが混在

こういった問題を起こさないように、サーバー側のソフトウェアではクライアント側のソフトウェアバージョンを確認できる仕組みを用意して、処理分けをできるような形としています。
また、装置数台ずつソフトウェア更新を行っていると、きちんと管理していないと各装置ではどのバージョンが稼働しているのかもわからなくなってきます。管理さえできていればいいのですが、その管理自体もなかなか大変だったりするため、各ソフトウェアのバージョン情報をデータベース上に記録して一覧で確認できるような仕組みも用意しています。

3-4. 設定パラメータ項目

ソフトウェア更新とは関係ないですが、動作に関する設定パラメータ項目も大規模になってくるとしっかりとした考慮が必要になります。

共通設定とするべきか? 装置個別設定とするべきか? をきちんと考慮して設定項目を決定しないと、後で設定値を変更する際に共通でいいのに全台の設定が必要になって手間がかかって使いにくくなったりします。
ここでやっかいな点としては、装置ごとにパラメータを用意すればとりあえず動作は可能という点です。
最初は問題ないですが、後で設定値の変更を行う際に気づくことになります。
このような経験があり、大規模システムに関わった当初は考慮できていなかったこともありましたが、今では必ず考慮するようになりました。

4. おわりに

いかがでしたでしょうか?
これまで様々な開発を行ってきて、単純に技術的に難しいという案件も色々とありました。今回ご紹介したのは単純な技術面とはまた違った難しさです。
ただ振り返ってみると、結局は上流フェーズつまり設計段階での考慮が大切なのだということです。
よくソフトウェアは「品質は上流で作り込む」と言われますが、その大切さが再認識できたので今後の開発に活かしていきます。

(Y.R.)


関連ページへのリンク

関連するソフテックだより

ページTOPへ