平成24年秋期試験午後問題 問7

問7 組込みシステム開発

⇱問題PDF
スマートフォンのアプリケーションプログラム設計に関する次の記述を読んで,設問1~3に答えよ。
 G社は,スマートフォン(以下,端末という)で稼働する歩数計アプリケーションプログラム(以下,歩数計アプリという)を開発することになった。
 歩数計アプリは,人が歩くことによって変動する加速度を解析し,歩数を算出する。端末は,加速度センサと,加速度センサを制御するためのミドルウェアとを搭載している。歩数計アプリは,このミドルウェアを使用して,加速度センサのデータを取得する。

〔端末の仕様〕
 端末は,電力の消費をできるだけ少なくするために,使用していないときはディスプレイを消灯し,MPUへのクロック供給を停止している。
 端末の状態には,MPUへのクロック供給を行っているウェイク状態と,MPUへのクロック供給を停止しているサスペンド状態がある。
 端末をサスペンド状態にする条件(以下,サスペンド条件という)は,端末が通話及び,データ通信を行っていない状態で,利用者が端末を60秒間操作しないことである。一方,端末がサスペンド状態のときに,着信があるか又は利用者が端末を操作すると,MPUへのクロック供給を再開し,ウェイク状態になる。
 ミドルウェアのAPIには,"サスペンド禁止"と"サスペンド許可"がある。アプリケーションプログラムが"サスペンド禁止"を実行すると,サスペンド状態になることが禁止され,サスペンド条件が成立しても,端末はウェイク状態を維持する。
 一方,アプリケーションプログラムが"サスペンド許可"を実行すると,サスペンド状態になることが許可され,サスペンド条件が成立したとき,端末はサスペンド状態になる。
 なお,電源投入後"サスペンド禁止"を実行するまで,端末はサスペンド状態になることが許可されている。

〔加速度センサ〕
 端末に内蔵されている加速度センサは,(横,縦,高さ)の加速度を(X,Y,Z)とし,それぞれ,-19.6メートル/秒2~19.6メートル/秒2の範囲で測定できる。
 動作確認のために端末を水平な机の上に置いた。ディスプレイ面を上にしたときZの値は負で,下にしたときZの値は正であった。机の上で,ディスプレイ面を上にして端末を図1の①及び②の方向に動かしてみた。Zの値はaメートル/秒2でほぼ一定であったがX及びYの値は図2のように変化した。
pm07_1.png
 さらに,端末のb歩行したところ,加速度は図3のようにZの値だけが大きく変化し, X及びYの値は, Zの値の変化の大きさに比べるとほとんど変化しなかった。
pm07_2.png
〔歩数計アプリ〕
 歩数計アプリが加速度センサのデータを取得するとき,ミドルウェアのAPIである"センサ設定"を実行する。このAPIには,加速度センサのデータ取得間隔として50,100,200及び1,000ミリ秒のいずれかを指定し,ミドルウェアから加速度センサのデータを取得するための関数を歩数計アプリが用意して登録する。
 ミドルウェアは指定された間隔で加速度センサのデータを取得し,メートル/秒2単位の浮動小数点数に変換し,歩数計アプリで用意した関数に渡す。
 歩数計アプリが終了するとき,歩数計アプリはミドルウェアのAPIである"センサ設定解除"を実行し,"センサ設定"で設定した関数の登録を取り消す。
 利用者が端末をどのような向きで持ち,歩行するかは特定できない。そこで,3軸方向の加速度を合成して,重力加速度が正の方向になるように補正した。その補正した値を用いて,端末にかかる加速度の変化を調べる。
 静止しているとき,端末は重力の影響で一定の加速度を受けている。一方,歩行しているとき,端末は上下に動くので,合成された加速度は図4のように周期的に変動する。この周期を検出し,変動の1周期を1歩と判定する。ただし,変動の大きさが所定の値よりも小さいときは,静止しているものとする。
pm07_3.png
 歩数計アプリは,1秒間に最大4歩まで計測できるようにする。
 歩数計アプリは加速度センサのデータを一定時間ごとに取得(以下,サンプリングという)している。サンプリングによって,復元できるデータの周波数は,サンプリングする周波数の1/2までとする。
 1秒間に最大4歩のデータを復元するには,1秒間にc回以上,サンプリングしなければならない。消費電力を考慮し,できる限りサンプリング周期を長くしたい。そこで,加速度センサのデータ取得間隔をdミリ秒とした。
 歩数計アプリは,歩数計アプリ用のアイコンをタッチすることで起動する。歩数計アプリは,起動されると"サスペンド禁止"を実行し,計測した歩数をディスプレイに表示する。
 ディスプレイに表示している終了ボタンをタッチすると,歩数計アプリは終了する。

〔運用試験〕
 歩数計アプリをインストールした端末を,野外に持ち出して試験したところ,歩数計アプリを一度使用すると,歩数計アプリを終了しても電池の消耗が激しい,という指摘があった。
 原因を調べたところ,歩数計アプリ終了時にeを実行しておらず,その結果,歩数計アプリが終了しても,端末の状態はf状態のままとなっていた。

設問1

〔加速度センサ〕について,(1),(2)に答えよ。
  • 本文中のaに入れる適切な数値を解答群の中から選び,記号で答えよ。
  • 本文中のbに入れる適切な字句を解答群の中から選び,記号で答えよ。
a に関する解答群
  • -19.6
  • -9.8
  • -4.9
  • 0
  • 4.9
  • 9.8
  • 19.6
b に関する解答群
  • ディスプレイ面を上にして,水平に保ったまま
  • ディスプレイ面を下にして,水平に保ったまま
  • ディスプレイ面を進行方向に向けて,垂直に保ったまま
  • ディスプレイ面を進行方向の反対に向けて,垂直に保ったまま

解答例・解答の要点

  • a:
  • b:

解説

  • aについて〕
    机の上で、ディスプレイ面を上にして端末を図1の①及び②の方向に動かした場合に、Zの値を解答群から選びます。

    まず、問題文の〔加速度センサー〕には、「動作確認のために端末を水平な机の上に置いた。ディスプレイ面を上にしたときZの値は負で,下にしたときZの値は正であった」と記載されているので、ディスプレイ面を上にした場合のZの値はであることがわかります。次に、地球上の物体には重力がかかっており、9.8m/秒2(重力加速度)で地球の中心に引き寄せられています。問題後半に「静止しているとき,端末は重力の影響で一定の加速度を受けている」とあるように、端末を机に置いている状態でもこの重力加速度の影響を受けます。したがって、空欄には9.8を負の値にした「-9.8」が当てはまります。

    a=イ:-9.8

  • bについて〕
    問題後半に「歩行しているとき,端末は上下に動く」とあるように、歩行中は加速度センサのうち上下運動を示す値が大きく変化することになります(歩行は等速度運動ですので、進行方向の加速度は大きくありません)。動作確認のテストより、端末を動かす方向と変化する値には以下の関係があることがわかります。
    pm07_4.png
    歩行テストでは、X及びYの値にほとんど変化はなく、Zの値だけ変化しているので、Z方向が上下運動の方向と一致することがわかります。つまり、端末を水平に持った状態での歩行ということです。図3を見ると、Zの値は負ですので、(1)よりディスプレイ面は上にした状態であったことがわかります。

    「イ」はディスプレイ面を下にするとZの値が正になるので誤り、「ウ」「エ」は端末を垂直に保つとZではなくYの値が変化することになるので誤りです。

    b=ア:ディスプレイ面を上にして,水平に保ったまま

設問2

〔歩数計アプリ〕について,(1)~(3)に答えよ。
  • 歩数計アプリでミドルウェアのAPIである"サスペンド禁止"を実行しなければならない理由を,30字以内で述べよ。
  • 本文中のcに入れる適切な数値を答えよ。
  • 本文中のdに,ミドルウェアのAPIである"センサ設定"で指定できるデータの取得間隔から適切な数値を選んで答えよ。

解答例・解答の要点

  • ・クロック供給が停止するとアプリケーションが稼働しないから (28文字)
    ・サスペンド状態では歩数計アプリが稼働しないから (23文字)

  • c:8
  • d:100

解説

  • 問題文の〔端末の仕様〕及び〔歩数計アプリ〕には以下の記述があります。
    • 端末の状態には,MPUへのクロック供給を行っているウェイク状態と,MPUへのクロック供給を停止しているサスペンド状態がある。
    • ミドルウェアは指定された間隔で加速度センサのデータを取得し,メートル/秒2単位の浮動小数点数に変換し,歩数計アプリで用意した関数に渡す。
    歩数計アプリを起動後にサスペンド条件を満たすと、MPUへのクロック供給が停止され、ミドルウェアから歩数計アプリへデータが渡されなくなるので、サスペンド状態の間は歩数の計測ができません。つまり、計測した歩数をディスプレイに表示するという機能要件を満たせません。よって、これを防止するため"サスペンド禁止"を実行しておく必要があります。

    ∴クロック供給が停止するとアプリケーションが稼働しないから
     サスペンド状態では歩数計アプリが稼働しないから

  • 1秒間に最大4歩のデータを復元するために、1秒間にサンプリングしなければならない回数を考えます。

    問題文の〔歩数計アプリ〕には、以下の記述があります。
    • サンプリングによって,復元できるデータの周波数は,サンプリングする周波数の1/2までとする。
    詳しくは下記参考リンクを見てもらえばわかるのですが、アナログ周波をデジタルで復元するためには、アナログの最大周波数の2倍のサンプリング周期でサンプリング(標本化)を行う必要があります。例えば、最大10kHzのアナログ周波をデジタルで復元するためには、サンプリング周波数を少なくとも20kHz(20,000回)にする必要があります。

    本問では1秒間に最大4歩、すなわち4回の周波(=4Hz)を復元したいので、その2倍に当たる8回/秒(8Hz)以上のサンプリングが必要です。

    c=8

    参考リンク:【なぜ?】CDは規格上「44.1kHz」あるのに実際には20kHzぐらいまでしか再生されない理由
     https://e-earphone.blog/?p=1323052

  • 問題文の〔歩数計アプリ〕には、以下の記述があります。
    • 加速度センサのデータ取得間隔として50,100,200及び1,000ミリ秒のいずれかを指定し,…登録する。
    1秒間に8回のサンプリングをするには少なくとも「1,000ミリ秒÷8=125ミリ秒」よりも短い周期で行う必要があるので、設定できる4つの時間のうち、8回/秒のサンプリングが可能かつ最も長い周期である100ミリ秒を設定することになります。

    d=100

設問3

〔運用試験〕について,(1),(2)に答えよ。
  • 端末で実行するミドルウェアのAPIのうち,本文中のeに入れる適切なAPI名を答えよ。
  • 本文中のfに入れる適切な端末の状態を答えよ。

解答例・解答の要点

  • e:サスペンド許可
  • f:ウェイク

解説

  • eについて〕
    問題文の〔端末の仕様〕に、「端末は,電力の消費をできるだけ少なくするために,使用していないときはディスプレイを消灯し,MPUへのクロック供給を停止している」とあるように、電力の消費を少なくするためには、使用していないときはディスプレイを消灯し、MPUへのクロックを供給を停止することが有効です。しかし、歩数計アプリは起動するとAPIの"サスペンドの禁止"を実行し、これをできなくしています。一方、終了時には"サスペンド許可"を実行するという記述は見当たりません。"サスペンド許可"を実行していないので、歩数計アプリ終了後も省電力化の機能が使われず、電池の消耗が激しくなってしまいます。

    以上より、電池消耗が激しい原因は歩数計アプリ終了時に"サスペンド許可"を実行していないことであると判断できます。よって、空欄には「サスペンド許可」が当てはまります。

    e=サスペンド許可

  • fについて〕
    端末の状態には、MPUへのクロック供給を行っているウェイク状態と、MPUへのクロック供給を停止しているサスペンド状態があります。"サスペンド禁止"が実行されると、端末は"サスペンド許可"が実行されるまでウェイク状態を維持します。よって、空欄には「ウェイク」が当てはまります。

    f=ウェイク
模範解答

Pagetop