応用情報技術者 2024年 春期 午後 問04
CRM (Customer Relationship Management) システムの改修に関する次の記述を読んで、設問に答えよ。
C社は、住宅やビルなどのアルミサッシを製造、販売する中堅企業である。取引先の設計・施工会社のニーズにきめ細かく対応するために、自社で開発したCRMシステム(以下、CRMシステムという)を使用している。CRMシステムは、データベースとWebアプリケーションプログラム(以下、Webアプリという)から成り、C社のLAN上にあるPCから利用される。このたび、営業担当者が外出先からスマートフォンやノートPCを用いてCRMシステムを利用できるようにするために、データベースは変更せずにWebアプリを改修することになった。
〔Webアプリの改修方針〕
Webアプリの改修方針を次に示す。
・必要以上の開発コストを掛けない。
・営業担当者が外出先で効率的にCRMシステムを利用できるように、スマートフォンに最適化した画面を追加する。
・将来的に、CRMシステム以外の社内システムとも連携できるように拡張性をもたせる。
〔Webアプリの実装方式の検討〕
これらの改修方針を受けて、図1のWebアプリを実装するシステムの構成案を検討した。

検討した Webアプリの実装方式を次に示す。
・ユーザインタフェースとデータ処理を分ける。ユーザインタフェースは、Webサーバに HTML、Cascading Style Sheets (CSS)、画像、スクリプトなどを静的なファイルとして配置する。データ処理は、AP が DB から取得したデータを JSON 形式のデータで返す WebAPI として実装する。
・ユーザインタフェースとなる静的ファイルは、PCとスマートフォンそれぞれの Webブラウザ用に個別に作成し、データ処理用の WebAPI は共用する。
・ユーザインタフェースの表示速度を向上させるために、①静的ファイルを最適化する。
〔実現可能性の評価〕
〔Webアプリの実装方式の検討〕で示した方式の実現可能性を評価するために、プロトタイプを用いて多くのデータを扱う機能について検証した。その結果、スマートフォンの特定の画面において次の問題が発生した。
・扱うデータ量が増えるに連れて、レスポンスが著しく低下する。
・②スマートフォンの CPU 負荷が大きく、頻繁に使用するとバッテリの消耗が激しい。
そこで、これらの問題の原因を調べるために、Webアプリの処理を分析した。レスポンスの悪かった日誌一覧の表示画面を図2に、WebAPIからの応答データを図3に示す。

スマートフォンのWebブラウザが図2の画面をリクエストしてから描画されるまでの一連の処理について、処理ごとに所要時間を測定した結果を表1に示す。

表1から、図3の応答データのスマートフォンへの転送処理と、Webブラウザ内でその応答データを加工する処理に多くの時間を要していることが判明した。
〔Webアプリの見直し〕
Webブラウザが画面をリクエストしてから描画されるまでの所要時間の目標値を3秒以内に設定して、それを達成するために、次の三つの方式を検討した。
① スマートフォンのユーザーインタフェースをアプリケーションプログラム(以下、スマホアプリという)として開発して、そのスマホアプリ内でWebAPIからの応答データを加工・描画する方式
② リクエストのあった応答データのうち、Webブラウザで描画するデータだけを返すWebAPIを開発して、スマートフォンのWebブラウザからそのWebAPIを利用する方式
③ ②で開発したWebAPIを①で開発したスマホアプリから利用する方式
各方式について、応答データを加工・描画するソフトウェアはサーバと、その実現可能性を評価するために、設けた評価項目ごとに整理した結果を表2に示す。各評価項目8評価点に対する重み付けは均一とし、また、将来的な拡張性については各実装方法を設計するタイミングで検討することにした。
なお、〔実現可能性の評価〕においてプロトタイプを用いて検証した方式を方式Pとする。

〔レスポンス時間の試算〕
表2の結果から、方式②について更に検討を進めることになり、そのレスポンスが実用上問題ないか、表1を基に所要時間を試算した。
表1中のNo.2の所要時間について考える。方式②のWebAPIからの応答データのサイズは、図3のデータのサイズの4分の1になり、サーバ側でのデータ転送には時間を要しないものと仮定すると、No.2の所要時間は[ a ]ミリ秒となる。
次に、No.3~No.5の処理時間について考える。No.3の処理はDBで、No.4とNo.5の処理はAPで行われる。処理時間は各機器のCPU処理能力だけに依存すると仮定する。各機種のCPU処理能力は、スマートフォンが10,000MIPS相当、DBが40,000MIPS相当、APが20,000MIPS相当の場合、No.3~No.5の処理時間の合計は[ b ]ミ秒となる。
以上の試算の結果、方式②で十分なレスポンスが期待できることから、方式②を採用することにした。
〔システム構成の検討〕
方式②で開発したWebAPIの配置について検討した。図1のAP上に配置する案も検討したが、③将来的な拡張性を考慮した結果、図1のAPとは別に、スマートフォンやノートPCから呼び出されるWebAPIのためのAPを、新たに追加する構成にした。
このシステム構成を採用した結果、問題を解消し、さらに将来的な拡張性をもたせることができた。
設問1:
本文中の下線①に該当するものを解答群の中から全て選び、記号で答えよ。
解答群
ア:HTML、CSS、スクリプトなどのコードに、パイプライン処理を有効にする設定を行う。
イ:HTML、CSS、スクリプトなどのコードに含まれる、余分な改行やコメントを削除する。
ウ:画像を、BMPやTIFFなどの画像フォーマットにする。
エ:画像を、PNGやSVGなどの画像フォーマットにする。
オ:全てのファイルをバイトコードに変換して圧縮する。
模範解答
イ、エ
解説
解答の論理構成
- 【問題文】には「ユーザインタフェースの表示速度を向上させるために、①静的ファイルを最適化する。」とあります。
- “静的ファイル”には HTML・CSS・スクリプト・画像が含まれると【問題文】に明記されています。したがって、最適化の方向性は
① 軽量化:テキスト系ファイルの容量削減
② 圧縮率の高い画像フォーマットの採用
の二本立てになります。 - 解答群を分析すると
ア:パイプライン処理の有効化 → HTTP/1.1 のパイプラインはブラウザ側設定であり、ファイル自体は軽くならない。
イ:HTML, CSS, スクリプトの余分な改行・コメント削除 → ファイルサイズを直接削減できるため軽量化に合致。
ウ:BMP や TIFF は非圧縮または可逆高画質で容量が大きい → 最適化の方向性と逆。
エ:PNG や SVG は圧縮率が高く、テキスト系描画の SVG は拡大縮小にも強い → 軽量化に寄与。
オ:全ファイルをバイトコードへ変換して圧縮 → 汎用ブラウザでは解凍・解釈の追加負荷が生じ、標準仕様外。 - 以上より、“静的ファイルを最適化”の具体策として妥当なのは
「イ:HTML、CSS、スクリプトなどのコードに含まれる、余分な改行やコメントを削除する。」
「エ:画像を、PNGやSVGなどの画像フォーマットにする。」
の2つです。
誤りやすいポイント
- 「パイプライン処理=高速化」と短絡し、アを選んでしまう
→ 転送の同時化で往復遅延は減らせてもファイル容量は変わらず、①の“ファイル自体の最適化”とは異なります。 - 「全て圧縮=最適」と考えオを選ぶ
→ ブラウザが標準対応しない独自形式は、読込手順の追加でかえって遅延や互換性問題を招きます。 - BMP/TIFF を高画質と誤認しウを選ぶ
→ 静的コンテンツでは“高画質”より“軽量”が優先される点を見落としがちです。
FAQ
Q: PNG と JPEG のどちらを選ぶべきですか?
A: 透過が不要で写真主体なら JPEG、高コントラスト図や透過が必要なら PNG が一般的です。本問は“軽量化”と“スマートフォン最適化”を同時に達成しやすい PNG/SVG を代表例として挙げています。
A: 透過が不要で写真主体なら JPEG、高コントラスト図や透過が必要なら PNG が一般的です。本問は“軽量化”と“スマートフォン最適化”を同時に達成しやすい PNG/SVG を代表例として挙げています。
Q: SVG は画像でしょうか?
A: ブラウザでレンダリングされるベクタ形式の“静的ファイル”です。テキストベースなので gzip 圧縮と相性が良く、拡大しても劣化しないため Web UI に向いています。
A: ブラウザでレンダリングされるベクタ形式の“静的ファイル”です。テキストベースなので gzip 圧縮と相性が良く、拡大しても劣化しないため Web UI に向いています。
Q: Minify(改行・コメント削除)は可読性を損ないませんか?
A: 開発用ソースと配信用ファイルを分ければ問題ありません。CI/CD で自動的に Minify を行うのが一般的です。
A: 開発用ソースと配信用ファイルを分ければ問題ありません。CI/CD で自動的に Minify を行うのが一般的です。
関連キーワード: Minify, PNG, SVG, ページ軽量化, 静的コンテンツ最適化
設問2:〔実現可能性の評価〕について答えよ。
(1)本文中の下線②の要因として、最も適切なものを解答群の中から選び、記号で答えよ。
解答群
ア:JSON形式の応答データを送受信する処理
イ:WebブラウザにHTML、CSS、画像ファイルをレンダリングする処理
ウ:スマートフォンのメモリ上で目誌のデータを加工する処理
エ:目誌一覧の各担当がログインユーザか否かを判別する処理
模範解答
ウ
解説
解答の論理構成
- 【問題文】では、下線②として「スマートフォンの CPU 負荷が大きく、頻繁に使用するとバッテリの消耗が激しい」とあります。
- CPU負荷の大きさを調査した結果、【表1】から「Webブラウザ内で日誌のデータを日付の降順にソートして、画面に表示する最大件数である4件目までを抽出する。」処理が「1,200」ミリ秒と突出して長く、さらに「日誌本文が42文字を超える場合…」が「300」ミリ秒、「本人が作成した日誌には“編集”ボタンを表示する。」が「200」ミリ秒となり、合計で1秒超を占めています。
- 【問題文】は「図3の応答データのスマートフォンへの転送処理と、Webブラウザ内でその応答データを加工する処理に多くの時間を要していることが判明した。」とも明確に述べています。
- したがって、CPUを最も使っているのは「スマートフォンのメモリ上で日誌のデータを加工する処理」であり、解答群では「ウ」が該当します。
誤りやすいポイント
- ネットワーク転送(解答群ア)は遅延の原因ではあってもCPU利用率を大きく押し上げる要因ではない点を見落としやすいです。
- HTMLやCSSのレンダリング(解答群イ)は描画時にGPUも利用するため、CPU負荷だけを見る設問では決め手になりません。
- ログインユーザ判定(解答群エ)は【表1】で「200」ミリ秒と相対的に小さく、CPU負荷増大の主因にはなりません。
FAQ
Q: 送受信データ量が多いとCPU負荷も比例して高くなるのでは?
A: 送受信自体はI/O主体の処理であり、待ち時間は長くてもCPUの実行時間は多くありません。今回の測定値でもCPU時間が多いのはデータ加工部分です。
A: 送受信自体はI/O主体の処理であり、待ち時間は長くてもCPUの実行時間は多くありません。今回の測定値でもCPU時間が多いのはデータ加工部分です。
Q: CSSの描画最適化を行えばCPU負荷は下がりますか?
A: 描画最適化は画面表示のフレームレート向上には効きますが、表1で問題となっている1,200ミリ秒のデータ加工時間には影響しません。
A: 描画最適化は画面表示のフレームレート向上には効きますが、表1で問題となっている1,200ミリ秒のデータ加工時間には影響しません。
Q: メモリ上での加工を減らすにはどうすればよいですか?
A: サーバ側でソートや文字列加工を済ませ、Webブラウザへは表示に必要な最小限のデータだけを返す方式②が有効です。
A: サーバ側でソートや文字列加工を済ませ、Webブラウザへは表示に必要な最小限のデータだけを返す方式②が有効です。
関連キーワード: JSON, クライアントサイド処理, ソートアルゴリズム, レンダリング, バッテリ消費
設問2:〔実現可能性の評価〕について答えよ。
(2)図3中のαとβの箇所にある“[” 及び “]”で囲まれたデータはどのようなデータを表現するものか。データ形式に着目し、“日誌”という単語を用いて、15字以内で答えよ。
模範解答
日誌の繰返しデータ
解説
解答の論理構成
-
図3は"diaries": [ [ α {"date": "2023-08-21", ...}, …, {"date": "2023-10-04", ...}, … ] βという JSON 形式のコード片を示しています。
-
JSON における [ と ] は「配列(array)」を表す記号です。
-
配列の中には、同じ構造を持つ複数の要素が順番に格納されます。ここでは
• "date"
• "salesperson"
• "salesprocess"
• "diary"
を持つオブジェクトが並んでいます。 -
図2の画面見出しは【日誌一覧】であり、要素一つ一つが個別の“日誌”を示していることが分かります。
-
以上より、[ α … β ] 全体は「複数の日誌が連続して入っている配列」であると論理的に導けます。
-
よって解答は
日誌の繰返しデータ
誤りやすいポイント
- count があるため「日誌件数のメタ情報」と誤解し、配列そのものの意味を見落とす。
- {} と [] の区別を曖昧にし、オブジェクトの集合と単一オブジェクトを取り違える。
- 画面が一覧形式なので「一覧表示用データ」とだけ答え、データ形式(配列)への言及が不足する。
FAQ
Q: count があるのに配列も必要なのはなぜですか?
A: count は総件数を示すメタ情報、配列は実データ本体です。ページングや部分取得に備え両方保持すると設計が容易になります。
A: count は総件数を示すメタ情報、配列は実データ本体です。ページングや部分取得に備え両方保持すると設計が容易になります。
Q: JSON 配列では要素順序は保証されますか?
A: JSON 仕様上、配列は順序付きコレクションです。DB でソート済みなら、その順序がフロントへそのまま渡ります。
A: JSON 仕様上、配列は順序付きコレクションです。DB でソート済みなら、その順序がフロントへそのまま渡ります。
Q: オブジェクトを配列で包まず一件ずつ送る設計は問題ですか?
A: 件数が可変の場合、配列でまとめて送る方が通信回数や解析処理を減らせ、一般に効率的です。
A: 件数が可変の場合、配列でまとめて送る方が通信回数や解析処理を減らせ、一般に効率的です。
関連キーワード: JSON, 配列, オブジェクト形式, データ転送, クライアント処理
設問3:
表2中の方式②のレスポンスが、方式Pに比べて優れていると評価した理由を二つ挙げ、それぞれ30字以内で答えよ。
模範解答
①:応答データの加工処理をサーバ側で行うから
②:応答データの転送量が削減されるから
解説
解答の論理構成
- 表1より、方式Pでは
「Webブラウザ内で日誌のデータを日付の降順にソート」(No.3)などの処理に1,200ミリ秒、さらに転送にも800ミリ秒を要していました。 - 方式②の説明には
「リクエストのあった応答データのうち、Webブラウザで描画するデータだけを返すWebAPIを開発して」
とあり、転送対象を必要最小限に絞ることが示されています。 - また、No.3〜No.5の処理は
「No.3の処理はDBで、No.4とNo.5の処理はAPで行われる」
と明示され、データ加工がサーバ側へ移管されるため、スマートフォンのCPU負荷が下がります。 - その結果、表2では方式②が
「レスポンス ○」「CPU負荷 ○」と評価され、総合6点で方式P(3点)より高評価です。 - 以上から、レスポンス向上の主因は
①データ加工をサーバ側で行うこと
②応答データ量を削減すること
であると導けます。
誤りやすいポイント
- 転送量削減だけに注目し、サーバ側加工移行を見落とす。
- 表2の評価点をそのまま列挙し理由と混同する。
- 「CPU負荷低減=レスポンス向上」と短絡して根拠を示さない。
FAQ
Q: 方式②でもスマートフォンは描画を行うが、CPU負荷は本当に下がるのか?
A: 描画自体は必須ですが、ソート・抽出・文字列加工など重い前処理がAPとDBにオフロードされるため負荷が大幅に減ります。
A: 描画自体は必須ですが、ソート・抽出・文字列加工など重い前処理がAPとDBにオフロードされるため負荷が大幅に減ります。
Q: 転送量が4分の1になる根拠は?
A: 問題文に「方式②のWebAPIからの応答データのサイズは、図3のデータのサイズの4分の1」と明記されています。
A: 問題文に「方式②のWebAPIからの応答データのサイズは、図3のデータのサイズの4分の1」と明記されています。
Q: 開発コストが方式②で「○」なのはなぜ?
A: スマホアプリ新規開発が不要で、既存Web技術の範囲でWebAPIを追加すれば済むためです。
A: スマホアプリ新規開発が不要で、既存Web技術の範囲でWebAPIを追加すれば済むためです。
関連キーワード: WebAPI, クライアントサイド処理, データ転送量, オフロード, レスポンス最適化
設問4:
本文中のa、bに入れられる適切な数値を答えよ。
模範解答
a:200
b:550
解説
解答の論理構成
-
【問題文】に「方式②のWebAPIからの応答データのサイズは、図3のデータのサイズの4分の1」とあります。
-
さらに「サーバ側でのデータ転送には時間を要しないものと仮定すると、No.2の所要時間は[ a ]ミリ秒」とあるので、ネットワーク転送・受信処理はデータ量に比例するとみなします。
-
表1の No.2 は「WebブラウザがWebAPIにリクエストして、図3の応答データを全て受信する。」で所要時間は「800」ミリ秒でした。
800 ms × 1/4 = 200 ms → a=200 -
No.3~No.5 の計算
- 「No.3の処理はDBで、No.4とNo.5の処理はAPで行われる。」
- CPU 性能は「スマートフォンが10,000MIPS相当、DBが40,000MIPS相当、APが20,000MIPS相当」。
- 時間は MIPS に反比例すると仮定。
合計 300 ms + 150 ms + 100 ms = 550 ms → b=550
- 以上より
a:200
b:550
誤りやすいポイント
- 「800 を 4 で割る」際に 200 ではなく 400 と誤計算する。
- No.3~No.5 のうち DB に載せ替わるのは No.3 だけで、No.4・No.5 は AP で実行される点を見落とす。
- MIPS 倍率を逆にして、処理時間を増やしてしまう。
- No.3~No.5 の合計を算出後に a の 200 ms を加えてしまうなど、試算の対象範囲を取り違える。
FAQ
Q: MIPS 倍率は必ず整数倍で計算しなければいけませんか?
A: 今回は 40,000/10,000=4、20,000/10,000=2 ときれいな整数になるため整数倍で十分です。実務では小数点を含む倍率になることもあります。
A: 今回は 40,000/10,000=4、20,000/10,000=2 ときれいな整数になるため整数倍で十分です。実務では小数点を含む倍率になることもあります。
Q: 「サーバ側でのデータ転送には時間を要しない」とはどういう意味ですか?
A: Webサーバと AP・DB は同一 LAN 内に配置される想定であり、スマートフォン―サーバ間のインターネット回線と比べて転送時間は無視できる、という前提です。
A: Webサーバと AP・DB は同一 LAN 内に配置される想定であり、スマートフォン―サーバ間のインターネット回線と比べて転送時間は無視できる、という前提です。
Q: スマートフォン用にスマホアプリを作る方式①が採用されなかった決定的理由は何ですか?
A: 表2で「CPU負荷」が「△」止まりであり「開発コスト」も「△」と高めです。方式②はレスポンス・開発コスト・CPU負荷すべて「○」で合計点が最も高く、総合評価で勝ったためです。
A: 表2で「CPU負荷」が「△」止まりであり「開発コスト」も「△」と高めです。方式②はレスポンス・開発コスト・CPU負荷すべて「○」で合計点が最も高く、総合評価で勝ったためです。
関連キーワード: JSONデータ転送, MIPS, クライアントサイド処理, サーバサイドオフロード, レスポンス時間
設問5:
本文中の下線③の拡張性とは何か。40字以内で答えよ。
模範解答
WebAPIを介してCRMシステム以外の社内システムとも連携する拡張性
解説
解答の論理構成
- 下線③は〔システム構成の検討〕に登場します。
引用:「図1のAPとは別に、スマートフォンやノートPCから呼び出されるWebAPIのためのAPを、新たに追加する構成にした。」
ここで “別に” 配置する目的が拡張性です。 - 改修方針でも同じ趣旨が強調されています。
引用:「将来的に、CRMシステム以外の社内システムとも連携できるように拡張性をもたせる。」
つまり WebAPI を共通の窓口とし、他の社内システムが後から利用できるようにしておくことが狙いです。 - したがって③が指す拡張性とは、
「WebAPI を介して既存 CRM 以外の社内システムも接続できる柔軟性」
という結論になります。
誤りやすいポイント
- スマートフォンの台数増への対応と誤認し、スケールアウト面だけを答えてしまう。
- AP を分離した理由を “セキュリティ強化” と短絡的に捉え、連携面を見落とす。
- 「将来的な拡張性」を“画面追加が容易”と解釈し、データ連携の文脈を読み飛ばす。
FAQ
Q: なぜWebAPI専用のAPを別に置くと拡張性が高まるのですか?
A: 業務ロジックをサービス化し、他システムが同じエンドポイントを再利用できるからです。CRMとは無関係なアプリでも HTTP/JSON で呼び出せます。
A: 業務ロジックをサービス化し、他システムが同じエンドポイントを再利用できるからです。CRMとは無関係なアプリでも HTTP/JSON で呼び出せます。
Q: 画面の追加だけなら既存APにWebAPIを置いても良かったのでは?
A: 画面専用に閉じたAPIだと他システムが使いづらく、後から共通仕様へ作り直すコストが増えます。最初から独立させる方が将来連携が容易です。
A: 画面専用に閉じたAPIだと他システムが使いづらく、後から共通仕様へ作り直すコストが増えます。最初から独立させる方が将来連携が容易です。
Q: セキュリティはどう確保する想定ですか?
A: 認証・認可はAPI側でトークン方式などを実装し、ファイアウォールのフィルタリングと併用して多層防御を行います。
A: 認証・認可はAPI側でトークン方式などを実装し、ファイアウォールのフィルタリングと併用して多層防御を行います。
関連キーワード: WebAPI, システム連携, マイクロサービス, REST, API設計


