見出し画像

【AP午後R05秋問8】応用情報技術者R05秋情報システム開発の解説

このNoteは、問8をリアルタイムで解きつつ解説します。

「どう読んで」「どうマーキングして」「どう解くか」の流れを一緒にやりましょう。私がIT専門学校でしている授業と同じ。

「情報システム開発推し」でも「単なる解説」でもありません。問8を通して、「なぜ選んだか」「どう得点するのか」「何を学ぶのか」を伝えたいです。

過去問を見ると、ネットワークやデータベース以外に再現性はあまりありません。毎回題材が違いますよね。

「本質的な正解力」を高めるのが重要と思い、Noteを作成しました。

私は学生時代に、応用情報技術者試験の午後は88点で独学合格し、現在はIT専門学校で授業をしています。


「4問のどれを選択するか」。

私は、ネットワーク・データベース・組み込み・プロジェクトマネジメント・サービスマネジメントの優先順で対策をしています。逆にプログラミングは絶対に選びません。>>問題の選び方対策Note<<

問題選びは、解答形式・解き始めまでの読む量・図表の分かり易さの「3つの視点」で決めます。


今回の問8。情報システム開発は、魅力的です。

「解き始めるまでに読む分量が」少ないので、「それだけ」でぜひ選択したい問題です。

得点も期待ができます。

  • 得点しやすい選択肢が多い

  • 解き始めるまでの文章量が少ない


実際、マーキングも読み直しも少なく、15~20分で解けました。私は25分で組んでいるので、5~10分を別の問題に回せます。>>本試験の時間配分Note<<

得点も7~9割が狙え、6割を切ることはまずありません。

選択肢に知らない用語が少しあり、設問3(2)は失点覚悟なのは判断難しいです。とはいえ、他の問題が「解き始めまでの文章量が多い」ので、問8の魅力は衰えません。

よって私は本試験で問8を選びます。


長くなってすみません。それでは始めましょう。

過去問のダウンロードはIPA公式より。
>>公式の問題pdfへのリンク<<
>>公式の解答pdfへのリンク<<





選ぶ3つの理由


>>問題選びの3視点<< で解説した視点で分析し、「選んで良さそう」と判断しました。

  • 回答形式:選択肢が多く作文も20文字で短め。計算問題が1問あるが、足し算でなんとかなりそう。

  • 解き始めるまで読む分量:穴埋めaが1頁目最後。図を抜けば0.6頁で到達できるのは貴重!

  • 図表:図1はアプリ画面、図2は処理一覧。パッと見て「特別な解釈は要らなそう」なので良いですね。

以上より、私なら間違いなく選びます。

特に他の問題が、「解き始めるまで読む分量」が多いので、1頁以内に解き始められるだけで「即決定!」です。



時間があれば選択肢(用語)も見る

一応、用語系の選択肢は確認しても良いです。ただし、>>本試験の時間配分Note<<の通り、問題選びは5分以内は厳守です。解きを圧迫しては元も子もありません。

「全然知らない用語がどれくらいあるか」。1個なら消去法が使えるので問題ないですが、2個ならちょっと考えちゃいますね。

設問1について。

  • Javaアプレット:Webブラウザ側で動くプログラム。なお、Javaサーブレットは、サーバ側で動くプログラム。午前問題レベル。

  • Webアプリケーション:Webブラウザ側で動くプログラム。Javaアプレットは一種です。

  • コンソールアプリケーション:コンソールはコマンドを打ち込むウィンドウ。ハッカーさんがキーボードカタカタしてますよね。

  • ネイティブアプリケーション:ネイティブとは「地元」。つまり、端末で動くソフトのこと。

設問2について。

  • イベント:プログラムが動作をするキッカケ。マウスを操作する、ボタンが押されるなど。

  • ウィンドウ:GUIでの各アプリ表示のこと。今もWebブラウザなどPCでたくさん開いてますね。

  • スレッド:プログラムの実行単位(細かい)。

  • プロセス:アプリの実行単位。

アプリ=プロセス。アプリな中で動いている色んなプログラム=スレッド。と思って大丈夫です。

設問3について。forkだかwaitだか、スレッド管理について。

それぞれ知らないでしょうし、今後も出るとは思えません。「英語は分かるので推測して、問題文にヒントがなければ、失点も止む無し」と考えます。

失点覚悟は、ただのハンデ。「失点すると分かっている問題を選ぶ」かは、本試験では難しい判断。

それでも選択肢が多く、作文短く、解き始めまでの文量の少なさは引き続き魅力でした。

とはいえ、他の問題に対して、選択肢の多さ・作文の短さ・読む分量が優れているので、問8を切る判断こそ難しいです。



読みの2つのコツ


読みのコツは2つ。

事前に設問を読み、問題文を「目的を持って読む」
マーキングして、「情報整理」する

しかし今回は、設問1も2(1)も用語系の穴埋めなので、目的を持たなくて良さそう。「理由」を問われていたら「問題文に理由のヒントがあるはず!」と読むのですが。備えには残念ですが、気軽に読めるのは楽。


さくっと読めて、マーキングも少なくてすむ問題でした。珍しい。(問10なんてマーキングだらけになるのですが)

マーキングは大事です。

丸囲み:数値
四角囲み:組織名など
行頭に▼:怪しい点・問題になりそうな点

「問題文の読み直し」が一番ロス。マーキングによって情報へのアクセスがスムーズに。

  • いきなり計算問題がでても、すぐに数値を搔き集められます

  • 作文する時に使う言葉も分かります

  • 怪しい点がピックアップできると、問題のヒントが見つけやすいです

なお、名称の四角囲みは最初の1回目だけ囲み。1回目にどんな組織かどんなシステムかの説明があるので、「何だっけ?」と忘れてもすぐに解決。

怪しい点は「時間がかかってしまった」「取り決めてなかった」「周知してなかった」など、「だったらやっとけやい」と思う瞬間に▼印です。「ほーん」と読んでると見逃してますよ。
セキュリティだったら「USBメモリ」「共用ID」など「おいおい」と思いながらしっかり▼印。



読み | 最初の段落

最初は今回の「舞台」が説明されますね。

大した情報はなくて、「スマホ向けサービス始めるのね」程度。

マーキングポイントは、

  • 「50店」を丸囲み:ひょっとしたら計算問題でるかも

  • 「新サービス」を四角囲み:作文で使うかも

マーキングした箇所を、計算や作文で使わなくても無駄ではありません。なーんか頭に入る不思議さ。



読み | 【新サービスの機能】

図1まで特にないです。

図1の「ご来店」は、予約日ということなのかな?と少し疑問ていど。



読み | 【新サービスを提供するアプリケーションソフトウェア】

分類の話ですね。

長文ですが、箇条書き的に捉えられたら良いです。捉えてなければ、書き出しましょう。 情報整理・情報圧縮をしながら読み進めます。

アプリケーションソフトウェアには2種類。

  • サーバでHTML生成して送信する【穴埋めa】

  • スマホにインストールして実行する【穴埋めb】

読みでは以下2点を意識します。

箇条書きに情報整理
短い文章に情報圧縮



解き | 設問1

まず正解から。

  • サーバでHTML生成して送信する【穴埋めa】「イ:Webアプリケーション」

  • スマホにインストールして実行する【穴埋めb】「エ:ネイティブアプリケーション」

用語の知ってる知らないは人それぞれですが、正解引きでも消去法でも良いので満点取りたいですね。

少なくも、「ウ:コンソール」だけは消して欲しいです。

あと「ネイティブ」も使いますが、端末のことを「ローカル」とも云います。

Webアプリとネイティブアプリ(ローカル)の模式図(オリジナル作成)


「ア:Javaアプレット」で迷った方もいるかもです。次のセクションで「Java言語を用いてスマホアプリ~」と書かれているので。

ただこれでも「ア:Javaアプレット」は打ち消して欲しい。

問題文の趣旨はアプリの「種類」です。Java言語に限定した話ではありません。サーバでHTMLを生成する系なら、PHPなどもあります。


よって、ウとアを削って、イとエになり。「イのWebアプリは、インストールしない方でしょう」と、解答が確定します。



読み | 【トップ画面の開発】

設問を見ると、(1)はただの用語。(2)の「ワーカースレッドで実行すべきでない処理」のヒントを探す目的で、問題文を読みます。

なお「ワーカースレッドなんて知らない」でも気にしません。午前問題で出ない用語は、問題文に説明やヒントがあるはずですから。

「知識不足」に恐れず「午前問題で知るべきことは結構知ってる!」と少しでも自信を持ちましょう。


さて、話は並列処理について。

並列処理の仕組みには2つ。

  • 独立したメモリを割り当てて実行する【穴埋めc】

  • メモリを共有して実行する【穴埋めd】

穴埋めa, bの時と同様、箇条書きで捉えられましたか?


次は、スレッドの話でした。

  • メインスレッド:画面UIに関する処理をする

  • ワーカースレッド:処理時間が長い処理をする

更に「ワーカースレッドによる画面UI処理は禁止」と、いかにも今後問題になりそうなので、▼印でしっかりマーキング!!


穴埋めc, dと下線①に到達したので解きに入ります。区切り良く解ける良問です。うまい構成。



解き | 設問2(1)c, d

まずは正解から。

  • 独立したメモリを割り当てて実行する【穴埋めc】:「エのプロセス」

  • メモリを共有して実行する【穴埋めd】:「ウのスレッド」

プロセスの中に、スレッドがたくさんあるイメージです。


せっかくなので見ても良いですね。

Windowsの下のタスクバーの上で、右クリック、タスクマネージャー。「プロセス」タブがありますね。

タスクマネージャーを開く手順(2024/03/06作成)
タスクマネージャーの操作説明(2024/03/06作成)

ここまででも、充分進歩ですね。

昔のWindowsでは、プログラムが応答しなくなったら、よく切ってました。Linuxだと「kill -9 プロセスID」で切りますね。


詳細タブではスレッド数も確認できます。

※項目の上で右クリック>列の選択>スレッド数をチェックして、ドラックで左側に寄せました。

タスクマネージャーでのスレッド数の確認画面(2024/03/06作成)

なお「タスク」もありますが、まぁ「プロセスと同じ」程度に考えてOK。実際「タスクマネージャー」でしたもんね。

「プロセスとタスクの違いとは?」と問われることはないでしょう。それよりももっと覚えることはたっっくさんあります。



解き | 設問2(2)

正解は「ア:サーバから取得した情報を画面に表示する処理」。

▼印が効きました。「ワーカースレッドによる画面UIに関する処理は禁止」より。

一発で引いても油断大敵。一応他の選択肢も見ます。もっと正解な選択肢が潜んでいるかもしれませんから。

イ~エは全て、一言も問題文に書かれてませんね。選ぶ理由がないので、確定しました。


もしマークしてなくても、この手は「国語の問題」。問題文の「ワーカースレッド」を片っ端から読みましょう。「実行してはいけない注意書きがあるはず」と。

なければ「メインスレッド」を読めば良し。「メインスレッドで実行すべきな注意書きがあるはず」と。

設問文と同じ言葉を、問題文から探し出して、周辺からヒントを見つけます



事前読み | 設問3

いよいよ終盤なので作文も来ます。「理由」など何が問われているのかを把握します。

  • (1):処理名を表1から選ぶ

  • (2):専門用語っぽい。ヒントあるか? 

  • (3):処理の内容。ヒントあるか? 

  • (4):計算問題。足し算かなたぶん

特段、気をつけるポイントはなさそうですね。(3)が、問題文にヒントがあるのか、ノーヒントなのかは気になります(ノーヒントでした)。



読み | 【おすすめの髪型機能の開発】

いよいよスマホ本体のカメラを使ったデータ処理の話。

ここでポイント。

問題文読みで、図は先に見るけど、表は把握してスキップ。解く時に必要な所だけ読み直します。

表は情報が多く、覚えきれません。「何が載っているか」を把握すればスキップします。

表1には、処理内容と処理時間が書いてあると分かればスキップ。「計算する時に使うのね」ていど。


表1の下の段落。下線②、穴埋めe、下線③と遭遇する段落です。

  • メインスレッド(下線②)とワーカスレッドで処理する

  • 処理4と5の完了を待つ処理:穴埋めe

  • 通信環境が悪いとずっと処理待ちになるので、処理5に追加した(下線③)



解き | 設問3(1)

正解は「処理2、処理7」。「処理2と7」や「2, 7」でもたぶん正解にしてくれるでしょう(採点者さんが気づいてくれれば)。

ただし設問文に「表1中の処理名で全て答えよ」なので、「処理2」「処理7」と書かないと×があり得ると覚悟を。雑さがどんどん失点につながりますよ。

国家試験は学校ではありません。「書き方は×や△だけど、分かってるから○」なんて優しくないです。設問文に忠実であれ、と意識しましょう。 


ここでも▼印「ワーカースレッドによる画面UIに関する処理は禁止」が効きましたね。

表1の処理内容で、画面をいじっているのは、処理2と7。

ひょっとしたら「処理6を入れるべきか」と迷ったかもですね。1 → 2&3 → 4&5 → 6 → 7と考えた方、理屈があるのでOKです。「処理2, 6, 7」で不正解になっても悔いなし。

流れは、処理2の「処理中」をずっと表示して、処理7で合成写真を表示でした。



解き | 設問3(2)

正解は「ウ:join」。間違って良いです。私は覚える気すらありません。

英語を知っていて、「理屈ある推測」をして外れるのなら仕方ありません。

  • break:ループから抜ける、休み。

  • join:参加する

  • wait:待つ

以上は一般常識として知っておきましょう。



解き | 設問3(3)

正解は「一定時間でタイムアウトする処理」。

「タイムアウト」が入っていれば良いです。また「一定時間で処理を終えエラー表示する(17文字)」など、処理を中断する旨を書けばOK。


終盤の問題は難しいです。仕組みを理解した上で一段深い考察が必要だったり、ノーヒントだったり。

今回はノーヒントでした。

「問題文に書いてない技術を解答に要求するってどうなん?」と思うのは当然ですが、ノーヒント問題に策はあります。

エンジニア経験がないんだから、「定石」を「過去問の模範解答」から学び取る。

「タイムアウト」は定石オブ定石。データベースでも、デッドロック対策で使います。

他にも「社員教育をする」「マニュアルを作成する」など、困ったらとりあえず使ってOKな定石があります。

大事なのは「模範解答を当てる」のではなく、「問われていることに、理論的な解答をする」です。



解き | 設問3(4)

「処理1 → 2&3 → 4&5 → 6 → 7」が分かればOKです。

  • 処理1で100ミリ秒

  • 処理2と3が並列なので、長い100を採用

  • 処理4と5が並列なので、長い200を採用

  • 処理6で50

  • 処理7で10

したがって「100+100+200+50+10」= 460ミリ秒。



まとめ



選択肢の多い解答形式から得点力、解き始めまでの文章量からさくさく解けるスムーズさから、ぜひ選びたい問題でした。

10問から4問だけ選択すれば良いので、候補は5~6問あれば充分です。興味やモチベ、解き易さなどの感覚から少しずつ候補を増やしてくださいね。

私は、上位資格につながり再現性の高いネットワーク・データベース、好きな組み込み・プロジェクトマネジメント・サービスマネジメントあたりを候補にしています。

しかし難易度にバラツキもあり、「決め打ち」はリスキー。決めてた問題から2~3問、残り2~1問は別からでもOK。

例えば、応用情報技術者ではデータベースの難易度の差が激しいですね。個人的には解きたいですが、切った方が良いことも。

しかしネットワークとデータベースのどちらとも切ることはありません。必ず片方だけでも、できれば両方を選びたいスタンス。

よって候補5~6問から、3~4問を選ぶことに。


今回の「情報システム開発」を薦めているわけではありません。「選んでも良い問題だったね」「どうして選びたいと思ったか」を伝えたくて書きました。

引き続き問題演習を続けてくださいね。でわでわ。



p.s. 普段は >> 専門学校とIT就職のブログ << をやってます。

でわでわ(・ω・▼)ノシ



\全ての無料Noteへのリンク!/

時間配分・問題選択法から午後問題解説まで


\R05秋の選択・得点・学ぶ解法の3点セット!/

不合格になった方に特にお薦めです


この記事が参加している募集

スキしてみて

学習方法・問題特集のNoteは全て無料提供を続けます▼ もしご覧になったNoteが有益だったり、私の志に共感されたりしましたら、サポート頂けますと励みになります▼ もちろんコメントでも結構です(・ω・▼)ノシ