【システム構成】環境が変わってもすぐに馴染む引越し能力!「可搬性」|情報処理問題1000本ノック
WindowsからMacへ、あるいはAWSからAzureへ。特定の環境に縛られず、異なるプラットフォームへ簡単にプログラムを移植できる「可搬性」の概念を攻略しましょう。
1. 【 問題 】:ソフトウェアの品質特性(可搬性)
【 問題 】 ソフトウェアやシステムの品質特性(ISO/IEC 25010など)を評価する指標において、ある特定の動作環境(OSやハードウェア、クラウドプラットフォームなど)向けに開発されたプログラムを、別の異なるプラットフォーム環境へ移行・移植する際の「動作させることの容易さ(引越しのしやすさ)」を表す性質はどれでしょうか?
① 可搬性 (Portability / 移植性)
② 可用性 (Availability)
③ 保守性 (Maintainability)
④ 機能適合性 (Functional Suitability)
2. 正解:
正解: ① 可搬性 (Portability / 移植性)
3. 解説:「特定の環境に依存しない」という自由度の高さ
システムを特定のメーカーの機材やOS専用(密結合)で作ってしまうと、その機材が製造終了になった瞬間にシステム全体を作り直す大惨事になります。それを防ぐために、どこでも動く柔軟さを持たせる設計思想が可搬性(ポータビリティ)です。
・Java言語:プログラミング言語のJavaは、「Write once, run anywhere(一度書けば、どこでも動く)」を掲げています。専用の仮想マシン(JVM)の上で動かすことで、WindowsでもMacでもLinuxでも、プログラムコードを全く書き換えることなく同じように動作させることができ、非常に高い可搬性を誇ります。
・コンテナ技術(Dockerなど):現代のシステム構成の主役です。アプリケーションとそれが動く環境を丸ごと「コンテナ」という箱に詰め込むことで、開発者のパソコンから本番のクラウドサーバー(AWS、GCP、Azureなど)へと、プラットフォームをまたいだ引越し(移行)を1秒で行うことができます。 ← ココが問題の正解!
★ ② 可用性:システムがトラブルで止まることなく、ユーザーが「使いたいときにいつでも利用できる」状態をキープできている割合(稼働率)のことです。
★ ③ 保守性:システムに不具合が見つかったときや、新しい機能を追加したいときに、どれだけ「簡単かつ短時間でプログラムを修正・メンテナンスできるか」という直しやすさの指標です。
★ ④ 機能適合性:ユーザーが「こんな機能が欲しい」と求めた要求に対して、ソフトウェアがどれだけ過不足なくその機能を正しく提供できているかという、機能の網羅性を表す指標です。
1. 理解のコツ: 「世界のどこでも使える電気製品のプラグ」に例えてみましょう。
・日本のコンセント専用に作られた家電は、海外に持っていってもそのままでは使えません(可搬性が低い)。
・一方で、パソコンの充電器のように「100V〜240V対応」になっていて、先っぽの変換プラグを変えるだけで『日本でもアメリカでもヨーロッパでも、どの国の電源プラットフォームでもすぐに差し込んで同じように動く』。この、環境を選ばずに持ち運んで活躍できるポテンシャルの高さこそが可搬性(ポータビリティ)です。
2. 試験対策の視点: 「複数のプラットフォームで動作」「移行や移植の容易さ」という、環境の変化に対する柔軟性のニュアンスがあれば「可搬性(または移植性)」が一択です。ITパスポートから応用情報までの午前試験において、システム開発の「非機能要件定義」や「ソフトウェア品質特性」の分類を問う問題として出題されます。特に近年は「クラウドベンダーロックイン(特定のクラウドから抜け出せなくなること)」を防ぐ文脈で、この可搬性の確保が極めて重要視されています。
4. まとめ
「特定のハードウェアやOS、クラウドの仕様に依存せず、プラットフォームの壁を越えて柔軟に引越し・動作させることができる、システムに高い自由度を与える品質特性」。これが可搬性です。Dockerなどのコンテナ技術がここまで世界中に普及したのも、この可搬性を極限まで高めて、どこでも同じようにシステムを動かしたかったからなんですね!