読み込み中...
先行公開中:2026年11月から一部が有料になります(無料プランはそのまま使えます)。詳しく ›
読み込み中...
スレッド処理に関する次の記述を読んで,設問に答えよ。
出典:令和5年度 秋期 応用情報技術者試験 午後 問8
B社は,首都圏に約50店の美容室を運営する美容室チェーンである。B社では顧客に顧客カードを発行し,B社の全店舗で顧客カードを持参した顧客に割引価格でサービスを提供している。近年,テレワークなどで外出機会が減ったことによって,顧客の来店回数が減少しており,売上げが減少傾向にある。
そこでB社では,顧客に美容室に来てもらうために販売促進活動を行うことにした。この販売促進活動の一つとして,スマートフォン向けサービス(以下,新サービスという)を提供することにした。この新サービスの開発は,B社のWebサイトの構築経験がある情報システム担当のCさんが担当することになった。
Cさんは新サービスの開発に向けて,全店舗の店長から“顧客にもっと来店してもらうためのアイディア”を募った。集まったアイディアを基にCさんが考えた新サービスのトップ画面と四つの機能を図1に示す。
図1 新サービスのトップ画面と四つの機能
| 機能 | 機能説明 |
|---|---|
| 来店予約 | 店名,日付,希望美容師,希望コース(カット,パーマなど)を指定して予約可能時間を検索し,来店予約を行う機能と予約情報を確認,変更する機能。 |
| お知らせ | キャンペーン,新商品の入荷などの情報を知らせる機能。 |
| クーポン | クーポンを配付する機能。 |
| おすすめの髪型 | スマートフォンのカメラで撮影した顧客の顔の特徴情報を基に,顧客ごとに似合う髪型を提案する機能。 |
次にCさんは,新サービスを提供するためのアプリケーションソフトウェア(以下,アプリケーションという)について調査した。その結果,アプリケーションの代表的な種類には,aとbがあることが分かった。aは,サーバでHTMLを生成してスマートフォンに送信する。スマートフォンのOSの差異を考慮した開発は不要だが,カメラやGPSなどのデバイスの利用が一部制限される。一方bは,それ自体をスマートフォンにインストールして実行するもの(以下,スマホアプリという)である。OSの差異を考慮した開発が必要であるが,カメラやGPSなどのデバイスを制限なく利用できる。この調査結果からCさんは,新サービスはbとして開発することを提案し,上司の承認を得た。
次にCさんは,Java言語を用いてスマホアプリのトップ画面の開発に着手した。トップ画面を実装し,画面の描画処理の中で,顧客番号に関連付けられた顧客氏名,来店日付,担当美容師氏名の情報をサーバから取得して画面に表示する処理を行うようにした。しかし,このスマホアプリを実行したところ並行処理に関するエラー(例外)が発生し,スマホアプリの実行が中断された。
このエラーの原因を究明するために,スマートフォン上で動作するGUIアプリケーションにおける並行処理を行う仕組みに関して調査を行った。スマートフォンのOS上で処理を実行するための仕組みとしてcとdとがある。cは,独立したメモリ空間を割り当てて実行されるものであり,多くの場合アプリケーションの実行単位ごとに一つのcで実行される。一方dは,一つのメモリ空間を共有しながら実行されるもので,一つのcの中で,複数のdを実行することができる。
GUIアプリケーションの開発では,画面描画,画面操作などの画面ユーザーインタフェースに関する処理を行うメインスレッドと,メインスレッドと並行して比較的処理時間が長い処理を行う①バックグラウンドスレッド(以下,ワーカースレッドという)とを分けて実装する必要がある。また,ワーカースレッドによる画面ユーザーインタフェースに関する処理は禁止されていることが分かった。
そこで,トップ画面の処理をメインスレッドとワーカースレッドとに分けて実装することにし,トップ画面を完成させた。
次にCさんは,おすすめの髪型機能の開発に着手した。おすすめの髪型機能の実現に必要な処理を表1に示す。なお,表1中の開始条件とは当該処理の実行を開始するために必要な条件であり,処理時間は当該処理の実行に必要なスマートフォン内の計算時間と標準的な通信時間の合計時間である。
| 処理名 | 処理内容 | 開始条件 | 処理時間(ミリ秒) |
|---|---|---|---|
| 処理1 | スマートフォンのカメラデバイスから取得したカメラ映像を画面に表示して,顧客が撮影ボタンを押した時点の画像を顔写真として保存する。 | なし | 100 |
| 処理2 | 画面に“処理中”のメッセージを表示する。 | 処理1の完了 | 10 |
| 処理3 | 処理1で保存した顔写真から顔の特徴点を抽出する。 | 処理1の完了 | 100 |
| 処理4 | 処理1で保存した顔写真から毛髪部分を削除する画像処理を行う。 | 処理3の完了 | 150 |
| 処理5 | 処理3で抽出した特徴点をサーバに送信し,おすすめの髪型の画像を取得する。 | 処理3の完了 | 200 |
| 処理6 | 処理4の結果画像と処理5の画像を合成する。 | 処理4,処理5の完了 | 50 |
| 処理7 | 処理6で合成した写真を画面に表示する。 | 処理6の完了 | 10 |
表1の七つの処理を行うために,②メインスレッドと二つのワーカースレッドを作成して処理を行うプログラムを実装した。処理4と処理5は並行に実行できるので,別々のワーカースレッドで処理することにした。このとき,処理6の実行の開始条件は処理4と処理5が共に完了していることなので,二つのスレッドの完了を待ち合わせるe操作を処理6のプログラムに記載した。
Cさんは,処理1〜処理7で構成されるおすすめの髪型機能を実装してテスト用に準備したスマートフォンで実行したところ,通信環境の良い場所では正常に動作したが,通信環境が悪い場所ではサーバからの応答を待ち続けてしまう問題が発生した。この問題を解決するために③処理5のプログラムにある処理を追加した。
その後,Cさんはスマホアプリの全ての機能の開発とテストを完了させ,B社は新サービスを用いた販売促進活動を開始した。
本文中の a , b に入れる適切な字句を解答群の中から選び,記号で答えよ。
読み込み中…
〔トップ画面の開発〕について答えよ。本文中の c , d に入れる適切な字句を解答群の中から選び,記号で答えよ。
読み込み中…
〔トップ画面の開発〕について答えよ。本文中の下線①について,ワーカースレッドで実行すべきではない処理を解答群の中から選び,記号で答えよ。
読み込み中…
〔おすすめの髪型機能の開発〕について答えよ。本文中の下線②について,表1中の処理2〜処理7のうちメインスレッドで実行すべき処理だけを,表1中の処理名で全て答えよ。
0 字
読み込み中…
〔おすすめの髪型機能の開発〕について答えよ。本文中の e に入れる適切な操作名を解答群の中から選び,記号で答えよ。
読み込み中…
〔おすすめの髪型機能の開発〕について答えよ。本文中の下線③について,Cさんが追加した処理の内容を20字以内で答えよ。
0 / 20 字
読み込み中…
〔おすすめの髪型機能の開発〕について答えよ。おすすめの髪型機能を実行するために必要な処理時間は何ミリ秒か。ここで,通信は標準的な時間で実行でき,表1に記載の処理時間以外については無視できるものとする。
0 字
読み込み中…