RaspberryPiで家の騒音をグラフ化

赤ちゃんがいつ泣いているのかログを取りたい

f:id:cyamax:20170309173036j:plain 1日何時間泣いているのかや、
何時頃に泣くなど傾向がわかったら面白そうなのでやってみました。

用意するもの

  • RaspberryPi 2 or 3
  • USBマイク

環境準備

Elasticsearch×kibana×Fluentdのインストール

グラフ化するために以下環境を用意します cyamax.hateblo.jp

Python3のインストール

Pythonは2系と3系がありますが、今後主流になっていく3系を使います。
普通はpyenvやvenvを挟んで環境を切り替えることが多いですが、
RaspberryPi上だとうまくできなかったので、 シンプルに直接Python3系とモジュールをインストールします。

$ sudo apt-get install python3 python3-numpy python3-pyaudio

マイクデバイスの認識

こちらのサイトにマイクデバイスの設定方法が書いてあるので、参考にさせていただきました。 karaage.hatenadiary.jp

設定後以下のようにUSBデバイスが優先されていればOKだとおもいます

$ cat /proc/asound/modules
0 snd_usb_audio
1 snd_bcm2835

マイクのサンプリング周波数を確認

マイクから信号を受け取りにあたりサンプリング周波数を設定する必要があります。
マイクに合った設定をしないとエラーが出て取得できません。
サンプリング周波数はUSBマイクを一度Macに挿して
システム情報->ハードウェア->オーディオ->デバイス
USB PnP Sound Deviceの欄で確認できました。
Windowsの場合は試していませんがデバイスマネージャなどから確認できるかもしれません f:id:cyamax:20170308215921p:plain

騒音をログ化する

動作のながれ

  1. マイクからのストリーミングデータをCHUNK分(1024*2)ずつ抜き出してその中で最大振幅を配列max_dataに入れる。
  2. Thredingを使って指定時間ごとに割り込み処理(sendlog)を実行
  3. 割り込み処理では配列max_dataの平均値を計算してFluentdに送り、max_dataを初期化

Pythonでの割り込み処理はThredingモジュールで実装
Fluentdへはsubprocessでechoを使って実装

コード

# -*- coding:utf-8 -*-

import pyaudio
import numpy as np
import threading
import subprocess

max_data=[]
CHUNK=1024*2 # マイクによって変わる。上手くいかない場合色々試してください
RATE=48000 # 事前に確認したサンプリング周波数
p=pyaudio.PyAudio()

stream=p.open(format = pyaudio.paInt16,
        channels = 1,
        rate = RATE,
        frames_per_buffer = CHUNK,
        input = True,
        output = True)

def audio_trans(input):
    frames=(np.frombuffer(input,dtype="int16"))
    max_data.append(max(frames))
    return

def sendlog(): # 定期的に呼び出される
    global max_data
    if len(max_data) != 0: # 初回実行時だけ無視
        mic_ave=int(sum(max_data)/len(max_data)) # 60秒間のマイク受信音量の平均値を出す
        max_data=[]
        #print("スレッドの数: " + str(threading.activeCount())+threading.currentThread().getName()) #Thredingでプロセスが乱立しないかチェック用
        ## fluentdに最大音量値を渡す
        json = '{'+'\"mic_max\":{0}'.format(mic_ave)+'}'
        cmd = "echo '" + json + "' | /usr/local/bin/fluent-cat log.hoge"
        try:
            print (cmd)
            res = subprocess.check_call(cmd, shell=True )
        except:
            print ("error")
    t=threading.Timer(60,sendlog) #60秒ごとにsendlogを実行
    t.start()

t=threading.Thread(target=sendlog)
t.start()

print ("mic on")

while stream.is_active():
    input = stream.read(CHUNK)
    input = audio_trans(input)

stream.stop_stream()
stream.close()
p.terminate()

print ("Stop Streaming")

実行結果

f:id:cyamax:20170308230824p:plain 1、2時間ごと夜泣きをしてそのタイミングでグラフが上昇。
朝方を過ぎた頃に子供を移動させたのとテレビをつけたので全体的に平坦になっているわかる。

感想

マイクの受信感度やメモリ管理などまだまだ調整する箇所はありますが、
やりたいことはできた感じ。
マイクはベビーベッドに設置してましたが、
泣いたタイミングで抱っこして違う部屋であやしたりしていたので、
数値の大きさはあまり当てにならない結果になってしまいました。
※上昇タイミングだけ意味のあるデータとなった

参考サイト

Raspberry Pi 2で音声認識・音声合成してみる - karaage. [からあげ]
PyAudioの基本メモ2 音声入出力 - たけし備忘録
python - Pythonのthreading.Timerで定期的に処理を呼び出すサンプル - スタック・オーバーフロー

RaspberryPiのCPU温度、電圧、クロック数をElasticsearchに送ってグラフ化

ログの可視化

せっかくelasticsearch×kibana×fluentdの環境を構築したので、
データを入れていきます。

準備

以下の手順で環境を準備します。 cyamax.hateblo.jp

CPU温度、電圧、クロック数の取得

以下の公式?サイトに載っていました。 RPI vcgencmd usage - eLinux.org

##CPU温度
vcgencmd measure_temp
##電圧
vcgencmd measure_volts
##クロック数
vcgencmd measure_clock arm

ただしこのままではグラフ化できません。 Elasticsearch側に送る必要があります。

JSONに整形

以下のスクリプトで取得したデータを整形&Elastisearchに送信をします。
crontabなどで5分ごとの定期実行させると良い感じになります。

#!/bin/bash
#raspberryPiの情報をjsonに整形する
##CPU温度
ras_temp=`vcgencmd measure_temp      |sed -e "s/temp=//" -e "s/'C//"`
##電圧
ras_volt=`vcgencmd measure_volts     |sed -e "s/volt=//" -e "s/V//"`
##クロック数
ras_freq=`vcgencmd measure_clock arm |sed -e "s/frequency(45)=//"`

#echo $ras_temp
#echo $ras_volt
#echo $ras_freq

json_date={\"ras_temp\":$ras_temp,\"ras_volt\":$ras_volt,\"ras_freq\":$ras_freq}

echo $json_date |/usr/local/bin/fluent-cat log.hoge

kibanaを見てみる

crontabで実行するごとにデータが送られて、
以下のようにkibana側で見ることができました。 f:id:cyamax:20170308040522p:plain

電圧・クロック数が動的に変化

グラフ化して初めて知ったのですが、
RaspberryPiは入力電圧によって動作クロックが変わるようです。

私の環境ではRaspberryPiに繋いでいるUSBアダプタはiPhone用の1Aアダプタを使用し、
USBケーブルは60cmほどの長めのものを使っているので、
電圧が不安定になってしまっているのだと思います。
f:id:cyamax:20170308041814p:plain 電圧とクロックが上下していることがわかります

まとめ

RaspberryPi上でデータ収集&グラフ化までできるようになりました。
次は別センサのデータを集めてみようと思います。

参考

RPI vcgencmd usage - eLinux.org

RaspberryPiでログの見える化するよ(Elasticsearch×kibana×Fluentd)

自宅簡易サーバにRaspberryPi

RaspberryPiで収集したデータを見える化したいけど、
外部のサーバやサービスを借りるとお金かかるし、
家に本格的なサーバを立てても設備代や電気代かかる・・・。
そもそも手軽に使えたら何でも良いんだけどと思い、
そのままRaspberryPi内でログ見える化の環境を構築しました。

完成図

Elasticsearch×kibana×Fluentd で構築します。 こんな感じに様々なデータが簡単にグラフ化できました。 f:id:cyamax:20170308021150p:plain

用意したもの

RaspberryPi 2(Raspbian Jessie with PIXEL)
※ネットワークへの接続やapt-get updateなど最低限のセッティングは完了しているものとする

注意

RaspberryPiはそのコンセプトから安定稼働する作りではありません。
ちょっとした学習や研究用にサーバを立てたいときは便利ですが、
中期以上の継続的な稼働が必要な場合はちゃんとサーバを用意しましょう。

Elasticsearch

Javaの確認

OSがRaspbian Jessieであれば、Javaがインストールされているはずですが一応確認。

$ java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) Client VM (build 25.65-b01, mixed mode)

バージョン1.8以上が必要なので、古ければアップデートしましょう。

Elasticsearchのインストー

Elasticsearchとkibanaはバージョンの組み合わせによっては動かないことがあるようなので、
今回は動作が確認されている以下バージョンでやります。

  • Elasticsearch 2.4.1
  • kibana 4.6.2

以下コマンドで、Elasticsearchの公式HPからzipをダウンロードし、
ディレクトリに展開していきます。

$ wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/zip/elasticsearch/2.4.1/elasticsearch-2.4.1.zip
$ unzip elasticsearch-2.4.1.zip
$ rm elasticsearch-2.4.1.zip
$ mv elasticsearch-2.4.1 elasticsearch
$ cd elasticsearch
$ ./bin/elasticsearch

起動確認は以下コマンド。
curlすると返ってきます。

$ curl -XGET http://localhost:9200/
{
  "name" : "Micro",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "",
  "version" : {
    "number" : "2.4.1",
    "build_hash" : "",
    "build_timestamp" : "2016-09-27T18:57:55Z",
    "build_snapshot" : false,
    "lucene_version" : "5.5.2"
  },
  "tagline" : "You Know, for Search"
}

kibana

同様にkibana(4.6.2)を公式ページからダウンロードします。
以下URLからRaspberry Piのバージョンに合わせてダウンロードしてください。
RaspberryPi 2の場合:LINUX 32-BIT
RaspberryPi 3の場合:LINUX 64-BIT
https://www.elastic.co/downloads/past-releases/kibana-4-6-2

以下wgetコマンドはRaspberryPi2(32bit版)の場合

$ wget https://download.elastic.co/kibana/kibana/kibana-4.6.2-linux-x86.tar.gz
$ tar xvfz kibana-4.6.2-linux-x86.tar.gz
$ rm kibana-4.6.2-linux-x86.tar.gz
$ mv kibana-4.6.2-linux-x86 kibana
$ cd kibana
$ ./bin/kibana

しかし実行するとエラーが出ます。

./kibana/bin/../node/bin/node: 1: ./kibana/bin/../node/bin/node: Syntax error: "(" unexpected

これはダウンロードしたkibanaのファイルがRaspberryPiのCPU(ARM)アーキテクチャではないためです。
エラーが出るnodeとnpmをRaspberryPiのものに変更してあげます。
※kibanaのダウンロードページでDEBのパッケージもダウンロードできますが、
これも中身がi386アーキテクチャ用なのでdpkgでインストールできません。

$ wget http://node-arm.herokuapp.com/node_latest_armhf.deb
$ sudo apt-get remove npm node
$ sudo dpkg -i node_latest_armhf.deb
$ rm node_latest_armhf.deb
$ cd kibana/node/bin
$ mv node node.orig
$ mv npm npm.orig
$ ln -s `which node` node
$ ln -s `which npm` npm
$ cd ../../
$ ./bin/kibana

これでhttp://localhost:5601にアクセスするとkibanaのページが表示されます。

fluentd

fluentdはelasticsearchにデータを集めるために使用します。

fluentdのインストー

# インストールから設定まで
$ sudo apt-get install gem
$ sudo gem install fluentd --no-ri --no-rdoc
$ sudo fluent-gem install fluent-plugin-elasticsearch
$ fluentd --setup ./fluent

# 起動とテスト
$ fluentd -c ./fluent/fluent.conf -vv &
$ echo '{"json":"message"}' | fluent-cat debug.test

debug.test: {“json”:“message”} OKのような応答があれば初期設定は完了です。

fluentdの設定ファイル

fluentdに来たログをElasticsearchに飛ばす設定をします。
※fluentdを理解していないので、動作はしますが適切でない可能性が高いです。参考程度に見てください。

vim ~/fluent/fluent.conf

するとデフォルトの設定値が書いてありますが、
それを以下の内容にしてElasticsearchに飛ぶようにします。

<source>
    type forward
</source>

<match log.**>
    @type elasticsearch
    host localhost
    port 9200
    type_name raps
    logstash_format true
</match>

この設定を保存してfluentdを再起動するとfluentd→elasticsearchにデータが飛ぶようになりました。

ログは以下のように書くと飛ばせます。

echo '{"status":"OK"}' |/usr/local/bin/fluent-cat log.hoge

まとめ

今回はRaspberryPiにElasticsearch×kibana×Fluentdを入れてログの見える化をしました。
ただラズパイは安定稼働しないので限定的な用途に限られると思いますが、それでも簡単に自宅サーバが作れるのは便利です。

次回は
RaspberryPiのCPU温度、電圧、クロック数をElasticsearchに送る方法と
Supervisorを用いたデーモン化をやります。

cyamax.hateblo.jp

参考

参考にさせていただきました。ありがとうございます。
Raspberry Pi 3にElasticsearchとKibanaをいれてみた - johshisha’s diary
ElasticSearchの良く使うcurlコマンドまとめ - サナギわさわさ.json
Elasticsearch触ってみた。 - Qiita
fluentd最低限のメモ - Qiita

赤外線カメラのケースが高いから夜中にひっそりと自作する

子供が生まれてから、育児休暇を1ヶ月頂いたのですが、
1日の行動パターンが
「ミルクを飲ませる」「オムツを替える」「ご飯を作る」「沐浴をする」「泣き止ます」のどれかになってきました。
FFでももうちょっと技の種類あるよね。

オムツについてはだいぶ替え慣れたので、もう少しで「オムツァ」から「オムツラ」になれそうです。

子育てを楽にしたい

育児休暇を1ヶ月頂きました。 育児だけやっていてはもったいない&脳みそのシワが取れそうなので、
育児の問題をエンジニア視点から解決できないかと考えてみました。

ただし作業できるのは子供も妻も寝静まった深夜のみ。

赤外線カメラの購入

どう使うかはまた別の記事で書くとして、たまたま寄ったマルツ電波に売っていたので購入しました。
amazonで売り切れでもマルツではよく売っています。

rasberry pi用のsony製カメラ。
HD画質で写真・動画が撮影可能。また、赤外線フィルタも外してあるので、工夫をすれば色々使える。

ケースが高い

f:id:cyamax:20170220030251j:plain カメラが手に入ったのは良かったものの、ケースがないと心もとない。
だけどちゃんとしたケースが高い。私にはこれに2500円かける財力はなかった。

ならば自作だ

色々ケースになりそうなものを探すとちょうど良いものがありました。

SDカードケース f:id:cyamax:20170220024648j:plain

あとはいい感じに適当にやるだけ

f:id:cyamax:20170220024813j:plain 加工したところが分かりやすいようにマジックで塗りました。
ドリルがないのでカッターやドライバーやハサミでガリガリやりました。
レンズ部分が相当雑ですが、初号機なので気にしない。
ドリル欲しい。

完成

f:id:cyamax:20170220024907j:plainf:id:cyamax:20170220030304j:plainf:id:cyamax:20170220025627j:plain

とりあえず、なんとなくいい感じになりました。
写真が全部薄暗いのは、起こさないようにひっそりとやっているから。

これで色々やるぞい。😉

HappyHackingKeyboard ProfessionalJP of Bluetooth by Arduino

一年ぐらい前にHappyHacking Pro JPを買って、その使い心地に酔倒していました。

ただ私はこのキーボードには唯一にして最大の不満点があり、それは有線モデルしかないということでした。

無線がなければ作れば良い

ここからキーボードを無線にするべく勉強と研究がスタートしました。

すでにHappyHacking Proを無線化している強者がネットでソースコードを公開してくれていましたが、
それはUSキーボード版のコードであり、JP版はキーボード数や仕組みが違うため、
駆動の仕組みやコードの書き換えをやる必要がありました。

また一番の問題はJPモデルは中身がパンパンで基盤やバッテリーを詰め込む隙間がなかったため、
配線やモジュールの選定も考えて実装する必要がありました。

そして初号機の完成


HappyHackingKeyboard ProfessionalJP of Bluetooth by Arduino

開発を始めて4ヶ月(2015/12~2016/4)。勉強と試行錯誤を繰り返し、とうとう無線化に成功しました。

動画では分かりづらいですが、キーボード->Arduino->Bluetoothモジュールの順番で配線され、
キーを打つとパソコンに文字が打てていることがわかります。
※カメラを持ちながら片手でキーを打っているのでタイピングが遅いですが、遅延を感じることなく使えます

挫折、そして伝説へ。

初号機が完成し、あとは小型のArduinoに配線し本体に収めれば完成。
運よく小型バッテリーも購入でき(ネットでは手に入らないサイズを偶然マルツ電波で見つけた)、
小型Arduino用のビルドもできた(サードパーティ製の小型基盤のため、正規のArduinoで動いてもこれだと動かないことがある)。

回路を書いて半田付けをし、いざ本体に入れると微妙に入らない・・・。
適当に選定したスイッチとバッテリーからの電源を3.3Vに変換する3端子レギュレータ周りの回路が内部でぶつかっている。
でもこの部分ならいくらでも小型のパーツ売っているし、すぐにできそうだ。手元にパーツがないから今度の土日に買いに行ったら完成だな。
今日は疲れたから終わりにしよう。

そしてこれ最後に微妙にモチベーションが上がらず開発がストップすることになる。
これは私の悪い癖で、メインの開発が終わると途端にやる気が出なくなる。

数週間後、こんなものが発売される。

嘘だろ・・・。

結局意味なかったのか

そんなことは思わない。無線化するために得た知識は今後またどこかで役に立つ気がする。
どんな風にBluetoothが裏で動いているのか、どのくらい電力を消費するのか、キーボードはどうやって動いているのか。
流行りの小型電子デバイスはどう使えばいいのか。
この辺が理解できただけでも大きな報酬かと思う。

あと公式のHHKBのBT版はデザインがなんかダサい。そこが唯一の救い。

pythonでランダムな英単語を取得したい

pythonで意味のあるランダムな単語が複数必要になった。

意味のない単語であればランダムに文字を並べればできるが、 意味のある単語はそうはいかない。

初めはネットからスクレイピングして都度持って来ればいいかなと思ったけど、スマートじゃない。

なんかいい方法ないかなと考えたら、思いついた。

linuxの辞書ファイルを利用する

linuxには辞書ファイルがあるので、そこからランダムに単語を抽出すれば良さそう。

Macの場合、辞書ファイルは以下にある

/usr/share/dict/words
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import random

#辞書ファイルを読み込ませる
f =open ('/usr/share/dict/words','r')
lines=f.readlines()
f.close()

for i in range(35):
    #単語の最後に改行が入ってしまうので、replaceで置換
    input_word= lines[random.randint(1,len(lines)-1)].replace('¥r','')
    print(input_word)

f:id:cyamax:20170204111040p:plain

linuxでパスワードを変更するときに、 「辞書にあるからこのパスワードは使えませんよ」と注意されるときがありますが、 どうやらこのファイルと比較して見ているらしい。

単語数も23万5886単語もあるようなのでとりあえずこれで大丈夫。

ただ、pythonのモジュールとか使ったらもっと良い方法はありそう。

AmazonDushとどいたー

f:id:cyamax:20170202211818j:image

二つ購入しました。

 

電源とか考えるとBluetoothLowEnergyとか使って親機経由かなって思ったら違った。

 

直接wifiに繋げるらしい。これは凄い。

これが500円なのが凄い。

 

改造できるのは来月かな。

MacのChromeでブラウジングしてたら表示がやたら遅くなった

買った当時はサクサクでストレスなく使っていましたが、 購入から4年が経ってモサモサしてきました。

この4年の間に色々なアプリや設定変更・バージョンアップをしてきたので、 クリーンインストールをしないと正直無理かなと思いましたが、 意外とWEBの表示自体は簡単に改善しました。

遅い原因

私の場合、原因はchrome拡張機能でした。 便利なので複数入れていたのですが、 裏で通信していたり、メモリを食っていたりと気づかないうちに表示を遅くしていました。

意外だったのが「広告を非表示にする拡張機能をオフ」にしたら表示が早くなったこと。 もともと無駄な広告の通信をなくすべく入れた拡張機能ですが、 色々処理を裏でやっていて結局遅くなっていたようです。

拡張機能は安全ではない

拡張機能をたまに作ったりするのでその時によく思うのですが、 拡張機能は悪意のあるスクリプトを簡単に作れてしまうということ。

拡張機能はページを書き換えたり情報を取得したりということが簡単にできるので、 アカウントのパスワード情報などを自分のサーバーに送るのも簡単にできそうだということです。

こんな記事もあるので、発行元が分かっている拡張機能以外は全てオフにした方が良さそうですね。

qiita.com

Pythonのmysqlclientをインストールしたらエラー(error: command 'x86_64-linux-gnu-gcc' failed)がでた。

上記の本でスクレイピングを勉強中。

PythonからMySQLに接続するmysqlclientのインストール時に躓いたのでメモ。

環境Vagrant上のUbuntu
python3.4.3

インストールのために以下コマンドを実行。

$ pip install mysqlclient


するとエラーが出てくる。

_mysql.c:40:20: fatal error: Python.h: No such file or directory

 #include "Python.h"

                    ^

compilation terminated.

error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

ライブラリが足りていないようなので、以下コマンドを実行。

$ sudo apt-get install python3-dev


そのあともう一度インストールするとうまくいきました。

$ pip install mysqlclient

セキュリティスペシャリスト(情報処理安全確保支援士試験)を2週間で合格する

このページのまとめ

2週間で合格する方法のまとめは以下のとおり。

  • 情報処理安全確保支援士を未経験&働きながら2週間の学習で一発合格できた。
  • 勉強モチベーションを上げる方法を考えること
  • 勉強できる時間の計算と勉強配分を考えること
  • 参考書は一冊に絞ること(下におすすめ参考書の記載あり)

 おすすめの参考書

2020 情報処理安全確保支援士「専門知識+午後問題」の重点対策 (重点対策シリーズ)
 

 

はじめに

情報処理安全確保支援士(旧セキュリティスペシャリスト)は試験レベル4に分類され、
合格率は18%前後の試験です。※2019年秋は19%

f:id:cyamax:20200811235710p:plain

合格率の推移

f:id:cyamax:20200811235612p:plain

受験者数の推移

参照元:https://www.sc-siken.com/sctoukei.html
 

 

平成28年の秋に初めて試験を受けましたが、
働きながら二週間の独学の勉強で合格する事ができました。 
そのときの学習方法をここに記載しますので、これから試験を受ける予定のある方は参考にしていただければと思います。

注意

以下の方法は短時間で合格するための方法であり、
セキュリティエンジニアとしてバリバリ働くための勉強とは違います。
短時間で学習したものは、短時間で忘れてしまうものです。
試験勉強することで、試験後もセキュリティ知識の受け皿を作る意味で受験しました。 

私のスペック

工学部卒(非情報学部)
仕事内容は情シス(情シス歴:1年(当時))
セキュリティ関連の経験:なし
業務でのプログラミング経験:なし

倒すべき敵を知る

  午前Ⅰ 午前Ⅱ 午後Ⅰ 午後Ⅱ
試験時間 9:30~10:20
(50分)
10:50~11:30
(40分)
12:30~14:00
(90分)
14:30~16:30
(120分)
出題形式 多肢選択式
(四肢択一)
多肢選択式
(四肢択一)
記述式 記述式

出題数
解答数
合格点

出題数:30問
解答数:30問
60%

出題数:25問
解答数:25問
60%

出題数:3問
解答数:2問
60%

出題数:2問
解答数:1問
60%


モチベーションを管理する
 

いきなり過去問に取りかかりたいところですが、その前にモチベーションの高め方を考えます。

私の場合は以下のようにモチベーションを維持ました。

  • 合格するとエンジニアとしての価値が高まる
  • 会社からの報奨金の使い道を考える
  • 試験を受けることを口外し自分を追い詰める
  • 勉強していて純粋に面白いと思える部分を探す(業務などに結びつけて考えてみる)

勉強が嫌になったときや、気づいたらやっていなかったときに上記を思い出して自分をやる気にしていました。 

勉強時間を計算する

試験までに何時間勉強できるか計算します。
私の場合、土日×二回と平日の通勤3時間が勉強できる時間でした。
土日に一日6時間ずつ勉強ができるとして、休日4日間で24時間。
車内では3×10日=30時間ほど。
ただし通勤中は立ちや乗り換えなどあまり勉強の質は良くない。
よって30→20時間ほどと換算して
24+20=44時間が勉強に確保できる時間でした。

 

勉強配分を考える

次に44時間で合格する方法を考えます。
セスペは午前Ⅰ、午前Ⅱ、午後Ⅰ、午後Ⅱがありますが、午前Ⅰは免除されてるとして考えます。

※免除されていない人はすみません

 

午前Ⅱは選択問題、午後Ⅰ、Ⅱは筆記問題なので問題の種類が違うため対策も異なってきます。
ただし全く関係ないわけではなく、午前の理解がなければ午後の問題を解くのが難しいので、勉強の順番は必然的に午前Ⅱ→午後問になります。

また午後ⅠとⅡはそれぞれ90分1問か120分1問の形式ですが、問題の種類や難易度は同じで、問の数が違うだけなので午後ⅠとⅡは同じ勉強法でカバーできます。

よって以下のような時間配分で勉強をしました。

午前 20時間
午後 24時間

 

参考書選び

時間配分と同じぐらい大切なのが参考書選びです。
最速で合格するためには正しい参考書選びが必須です。
正しい選び方ですが、過去問を丁寧に解説している物が良いです。
午後問は文章で説明しないといけないので、答えを見ただけではなぜそれが正解なのか分かりません(私の考えたこの答えでも正解では?となってしまう)。
登録セキスペ独自の採点されやすい文章や書き方があるので、そこもふまえて理解&会得する必要があります。

 

また独自の問題を作成している参考書も要注意です。出題者は出版社でなくIPAなので、IPAの主旨とは別の問題になってしまっている可能性があります。
当たるか分からない予想問題をやるより過去問をしっかり理解した方が効率的です。

 

さらに注意が必要なのが全部平たく説明している参考書です。
必ず出る問題とほとんど出ない問題を同じぐらいのボリュームで扱っているヤツです。
試験参考書はこの手の本が非常に多いですが、私はお勧めできません。
短時間で合格するのに必要なのが全部載っている本ではなく、合格できる本です。
全部載っている本は言わば辞書。
合格できる本が塾というイメージでしょうか。
辞書のような本は長期的に見れば良いかもしれませんが、短期では理解が深まりづらくモチベーションも上げづらいです。

良い本は大事(必出)なところにページを充分に割いて丁寧に説明してくれるので、繰り返し本を読むだけで点数が上がっていきます

 

何冊か比較して以下の本を買いました。
私はこの一冊だけを買って受かりました。とてもおすすめです↓↓↓
2週間で合格するためには、何冊もやっている余裕はありません。良質な参考書一冊に絞り、繰り返し何度もやるほうが効果的です。

 

2020 情報処理安全確保支援士「専門知識+午後問題」の重点対策 (重点対策シリーズ)
 

おすすめしない参考書(時間がない場合)

有名なシリーズですが、網羅的に記載することが目的になっている参考書(辞書のようなもの)であるため、おすすめしません。 

情報処理教科書 情報処理安全確保支援士 2020年版

情報処理教科書 情報処理安全確保支援士 2020年版

  • 作者:上原 孝之
  • 発売日: 2019/11/19
  • メディア: Kindle版
 

  

午前対策(基礎学習)

登録セキスペの基本的な問題やトレンドな問題が出題されますが、
過去問をやっていればほぼ間違いなくパスできます。
 

というのも過去問と全く同じ問題が出題されることが多いので、過去問を何周かすれば、「本番にこれ過去問で見たヤツだ!」となるはずです。
午前の勉強で大切なのは問題を丸々覚えるのではなく、ワードの意味や関連する物などを説明できるようになることです。


午前の問題を見たときに答えがすぐ分かる&ほかの答えのどこがおかしいのか説明できる、不正解の中にある知らない単語をなくすようにしておくと午後問の勉強が楽になります。

 

以下サイトの問題を繰り返しやればOKです

情報処理安全確保支援士過去問道場|情報処理安全確保支援士.com

  

午後対策

本番の午後Ⅰと午後Ⅱですが、前述したように午後Ⅰの勉強をしておけば基本的には午後Ⅱは不要です。
二問ぐらい時間感覚をつかむために解いておくぐらいで大丈夫でしょう。

 

そのかわり午後Ⅰはたくさん数をこなします。試験では90分で2問選択して解答ですが、選択し間違えたり(難しくて変える)、見直しの余裕を考えて一問30分で解けるようにトレーニングします。
こうすることで時間感覚を鍛え午後問の勉強を不要にし(午後Ⅰが30分で解ける力があれば、午後Ⅱは時間が余る)、精神的にも余裕をもって取り組めます。

下手に問題に粘って時間を使ってしまうのはNGです。

 

初めのうちは時間が足りないですが、繰り返しやっていくうちにできるようになります。

また30分で解いた後、答え合わせをして間違った原因を理解してのサイクルが早くなるので、多種類の問題を解けるのと、傾向を理解できるようになるので、午後Ⅱを繰り返すよりも効果的です。

 

試験前日の過ごし方

とにかく試験当日のコンディションを大事にします。
前日に無理をして疲労でパフォーマンスが出なくなってしまっては元も子もありません。
午前Ⅱは過去問を50問ほど解いて正解率が90%ぐらいあれば大丈夫でしょう。

午後問は過去に解いた問題を再度解きます。試験では文章で書かれた問題の環境を理解するのに時間がかかるだけで、聞いていることは単純だったりします。
すでに1回解いてどんな環境なのか頭に入っているので、問題を解くこと(何がセキュリティ的に問題なのか、文章の書き方はこれで合っているか)に専念できます。
サラサラ解いてみて、躓いたところを復習する事を繰り返しましょう。

 

最後に

去年は登録セキスペ以外にも、応用情報、LPIC level1を受けました。
世間の認識では難易度はLPIC < 応用情報 <登録セキスペかと思いますが、
私には登録セキスペが一番楽に感じました。

 

私は暗記することが苦手で、漢字や英単語、人の名前などを覚えることができません。ただ、なぜかという意味を持たせると飛躍的に記憶力が向上することに気づいてからは、比較的楽に試験を突破できるようになりました。

LPICレベル1はコマンドを一部暗記する必要があり、それがわたしには非常に苦痛でした。※勉強しているとなんでだよ!ってなる

 

登録セキスペは単純に単語を知っているかではなく、意味や背景や関係性、発想に重きを置いているので学習しやすかったです。

 

上記の学習方法は私には適していただけなので、自分の得意な学習パターンがある人はその方法で良いです。

自身に決まった学習方法がない、いつも同じ方法でやっているけど成果が出ない方は私の方法を真似てみるのも良いかもしれません。

 

おすすめの参考書

2020 情報処理安全確保支援士「専門知識+午後問題」の重点対策 (重点対策シリーズ)