文化祭の写真をまとめて加工し、部員が共同で使う写真加工の仕組みを作りたい。速く終わること、途中で失敗してもやり直せること、他の人の写真や作業を壊さないことを、どう両立すればよいでしょうか。[1]
計算機の構成、そこで動くソフトウェア、情報を守る仕組みは互いにつながっています。このテーマでは一つの作業を手がかりに、それぞれの専門が見る場所の違いを考えます。

この題材を、「コンピュータシステム・半導体・高性能計算」、「ソフトウェア・プログラミング」、「セキュリティ」の3分野から見てみます。同じテーマでも、何を調べ、どんな方法で取り組むかに違いがあります。
システムの視点:どこで待っている?
画像の計算が遅いと思っても、実際にはファイルの読み込みを待っているかもしれません。計算するCPU、作業中のデータを一時的に置くメモリ、写真を保存する記憶装置、全体の動きを管理するOS。どこで時間がかかるのかを、それぞれ調べます。
複数の画像を同時に処理する場合にも、計算の担当を増やせば必ず同じ割合で速くなるとは限りません。データの受け渡しや、共有する装置での待ち時間が関係します。
例えば100枚の写真の処理を、読み込み・加工・保存に分けて測ります。加工だけが速くなっても、保存で順番待ちが起きれば全体はあまり短くなりません。同時に動かす数を1、2、4と増やし、全体の時間とメモリの使用量を比べれば、どこが限界になっているかを調べられます。
実際の大規模な計算環境として、理化学研究所の「富岳」の紹介を見ると、多数の計算用コンピュータと、それらをつなぐ通信の仕組み、動作を支えるソフトウェアを確認できます。規模は違っても、部品の組み合わせを見る入口になります。[2]
ソフトウェアの視点:失敗や変更を扱える?
画像を加工する処理と、処理するファイルの管理、利用者への結果の表示をどう分けるか考えます。加工方法を変えたとき、必要な部分を直して、以前の動作が壊れていないか確認できる構成を目指します。
途中で止まったら、どこまで終わったかが分かるか。同じ画像を再び処理したときに、元の画像を壊さないか。「元の写真は残して、加工後の写真は別に保存する」など、期待する動きを決めます。そして、途中で処理を止めた場合も、その通りに動くか試します。期待する動きを書いたものが仕様、それを確かめるのがテストです。
一つの写真の加工に失敗したとき、全件を最初からやり直すのか、失敗した一枚だけを再実行するのかも決めます。途中結果を記録する仕組みを用意すれば再開しやすくなりますが、同じ写真を二重に処理しない工夫も必要です。途中で止める、同じ依頼を二度送るなど、普段と違う使い方も試して、約束した動きが守られるかを確かめます。
マサチューセッツ工科大学(MIT)のソフトウェア開発の公開教材では、このように期待する動きを定め、プログラムを作り、テストする学びが紹介されています。[3]
セキュリティの視点:誰が、何をしてよい?
共同で使う環境では、ファイルを見られる人、加工できる人、元データを削除できる人を考えます。ログインで「誰か」を確かめることと、「その人に削除を許してよいか」を決めることは別です。部員は写真を見られても、削除できるのは管理を担当する人だけ、という設計も考えられます。
想定と違うファイルや操作を受け付けたときに、ほかの作業へ影響しないかも確認します。守る対象を明確にし、実装と運用の両方を考える点では、情報セキュリティの対策や人材育成を支援する公的機関、情報処理推進機構(IPA)の開発者向け資料も参照できます。[4]
画面から削除ボタンを隠すだけで十分でしょうか。別の方法で削除の指示を送られた場合にも、サーバー側で権限を確認する必要があります。自分たちが管理する試験用の環境で、閲覧だけできるアカウントから変更ができないかを確かめます。何を防ぐべきかを具体的な操作にして検証する点が、この分野の面白さです。
速さのために確認を省くと、別の問題が生じるかもしれません。何を守る必要があるかを、性能の設計と同時に検討します。
三つを合わせて、使う場面で確かめる
一人で使ったときは速くても、複数の人が同時に処理すると待ち時間が増えるかもしれません。失敗した作業の再実行が、他の人の処理へ影響する可能性も考えます。
だから、処理の速さだけ、プログラムのテストだけ、権限の確認だけで全体の良さが決まるわけではありません。利用者と作業の条件をそろえ、完了時間、結果の正しさ、失敗後の扱いなどを検討します。
「安心」は、この3分野を並べれば保証される性質ではありません。どんな条件で何を確かめたかを説明できることが、評価の出発点です。実際の運用にはネットワーク、データ管理、利用者への案内なども関わります。
大学選びでは、面白かった問いを手がかりにする
どこで時間を使うかを測りたいならシステムへ、複雑な処理を分かりやすく作りたいならソフトウェアへ、守る条件と対策を考えたいならセキュリティへ進んでみましょう。
学部ではプログラミング、計算機の構成、OSなどから、プログラムを動かして処理時間を測る演習へ進む科目を確認します。大学院では、省電力な計算機を作るのか、並列処理を速くするのか、不正な操作を防ぐのかなど、研究する対象を調べましょう。一つの大学で全部を同じ深さで学べると決めつけず、コースと科目群の組み合わせを見てください。
参考文献・注釈
- [1]この記事の説明は、分野ごとの考え方を紹介するための架空の例に基づいています。特定大学の授業や実施結果を紹介するものではありません。冒頭のイラストはtojihubによるAI生成画像、3視点の図はtojihubが作成した説明図です。 本文へ戻る
- [2]
- [3]MIT「6.102 Software Construction — General Information」、2026年春。設計・実装・テストの学習目標を参照。 本文へ戻る
- [4]IPA「安全なウェブサイトの作り方」、実装と運用に関する説明。対象はWebの開発者向け資料であり、計算機システム全体の安全基準ではありません。 本文へ戻る