浅野直樹の学習日記

この画面は、簡易表示です

2025 / 10月

Tellus公式データAPIを使って指定した住所の周辺の衛星画像を取得する

仕事でTellus公式データAPIを使うことになり、数日間悪戦苦闘してようやく仕組みがわかってきました。

指定した住所の周辺の衛星画像を取得するという例で、Tellus公式データAPIの使い方をコード例とともにわかりやすくまとめます。

数日前の自分が読みたかった記事です。比較的新しいサービスのせいか、まだ解説記事があまりありませんでした。

パッケージのインストール方法やループ、関数など、Pythonの基本は理解しているという前提で書きます。

 

1.コード例

私の手元で動作確認をしたコード例を示します。

わかりやすさのために、エラー処理はしておらず、トークンや住所などをコードに書き込んでいますので、そのあたりは適当に処理してください。

・main.py

import time
import my_latlng
import my_tellus
import my_images

# 定数の設定
address = "京都府京都市左京区下鴨宮河町"
dataset_id = "ea71ef6e-9569-49fc-be16-ba98d876fb73"
the_number_of_images = 5

# 住所から緯度経度を取得
latlng = my_latlng.get_latlng(address)

# 取得した緯度経度からtellus用の矩形の緯度経度を算出
tellus_rectangle_latlng = my_latlng.get_rectangle_latlng(latlng)

# tellus用の矩形の緯度経度からシーンを検索してdata_id(シーンID)を取得
scenes = my_tellus.search_scene(
    dataset_id=dataset_id,
    intersects={
        "type":"Polygon","coordinates":[
            tellus_rectangle_latlng
        ]
    }
)
print(f"{len(scenes["features"])}件のシーンがヒットしました")

# シーンごとにファイル情報を取得して 形式の画像を処理
for scene in scenes["features"][:the_number_of_images]:
    data_id = scene["id"]
    file_information = my_tellus.get_file_information(dataset_id, data_id)
    
    for file in file_information["results"]:
        if "webcog" in file["name"]:
            file_name = file["name"]
            file_id = file["id"]
            print(f"{file_name}を処理しています")
            download_url = my_tellus.get_download_url(dataset_id, data_id, file_id)
            my_images.get_tellus_image(download_url["download_url"], file_name)
            my_images.clip_image(file_name, tellus_rectangle_latlng)
            time.sleep(1)

・my_latlng.py

import urllib
import requests

def get_latlng(address):
    """国土地理院の住所検索APIを利用して、指定された住所の緯度経度を取得する。

    Args:
        address (str): 緯度経度を検索する住所

    Returns:
        latlng (list): 経度と緯度のリスト [lng, lat]

    """
    address_search_url = "https://msearch.gsi.go.jp/address-search/AddressSearch?q="
    quoted_address = urllib.parse.quote(address)
    response = requests.get(address_search_url + quoted_address)
    response.raise_for_status()
    latlng = response.json()[0]["geometry"]["coordinates"]
    return latlng

def get_rectangle_latlng(latlng):
    """緯度経度からTellus用の矩形の緯度経度リストを生成する。

    Args:
        latlng (list): 中心の緯度経度 [lng, lat]

    Returns:
        tellus_rectangle_latlng (list): 矩形の頂点座標のリスト(二次元リスト)

    """
    margin = 0.01
    lng = latlng[0]
    lat = latlng[1]
    
    tellus_rectangle_latlng = [
        [lng - margin, lat - margin], 
        [lng + margin, lat - margin], 
        [lng + margin, lat + margin], 
        [lng - margin, lat + margin],
        [lng - margin, lat - margin],
    ]
    return tellus_rectangle_latlng

・my_tellus.py

import json
import requests

TOKEN = "TOKENXXXXXXXXXXXXXXXXXX"

# API 呼び出しの共通設定
BASE_URL = "https://www.tellusxdp.com/api/traveler/v1"
REQUESTS_HEADERS = {
    "Authorization": "Bearer " + TOKEN,
    "Content-Type": "application/json",
}

def search_scene(dataset_id, intersects):
    """Tellus APIでシーンを検索する。

    Args:
        dataset_id (str): 検索対象のデータセットID
        intersects (dict): 検索範囲を指定するGeoJSON形式のPolygon、例: {"type": "Polygon", "coordinates": [[...]]}

    Returns:
        scenes (dict): 検索にヒットしたシーンの情報のリストを含む辞書

    """
    url = f"{BASE_URL}/datasets/{dataset_id}/data-search/"
    payloads = {
        "intersects": intersects,
        "query": {},
        "sortby": [
            {"field":"properties.end_datetime","direction":"desc"}
        ],
    }
    response = requests.post(url, headers=REQUESTS_HEADERS, data=json.dumps(payloads))
    response.raise_for_status()
    scenes = response.json()
    return scenes

def get_file_information(dataset_id, data_id):
    """Tellus APIで指定したシーンのファイル情報を取得する。

    Args:
        dataset_id (str): データセットID
        data_id (str): シーンID

    Returns:
        file_information (dict): ファイル情報の一覧を含む辞書

    """
    url = f"{BASE_URL}/datasets/{dataset_id}/data/{data_id}/files/"
    response = requests.get(url, headers=REQUESTS_HEADERS)
    response.raise_for_status()
    file_information = response.json()
    return file_information

def get_download_url(dataset_id, data_id, file_id):
    """Tellus APIでファイルのダウンロードURLを取得する。

    Args:
        dataset_id (str): データセットID
        data_id (str): シーンID
        file_id (str): ファイルID

    Returns:
        download_url (dict): ダウンロードURLを含む辞書

    """
    url = f"{BASE_URL}/datasets/{dataset_id}/data/{data_id}/files/{file_id}/download-url/"
    response = requests.post(url, headers=REQUESTS_HEADERS)
    response.raise_for_status()
    download_url = response.json()
    return download_url

・my_images.py

import requests
import rioxarray
import matplotlib.pyplot as plt

def get_tellus_image(download_url, file_name):
    """Tellusから画像ファイルをダウンロードして保存する。

    Args:
        download_url (str): ダウンロードURL
        file_name (str): 保存するファイル名

    """
    response = requests.get(download_url)
    response.raise_for_status() 
    with open(file_name, 'wb') as file:
        file.write(response.content)

def clip_image(file_name, tellus_rectangle_latlng):
    """画像を指定された矩形領域でクリップし、PNGファイルとして保存する。

    Args:
        file_name (str): クリップ対象の画像ファイル名
        tellus_rectangle_latlng (list): Tellus用の矩形の緯度経度リスト(二次元リスト)

    """
    bounding_box = [
        tellus_rectangle_latlng[0][0], 
        tellus_rectangle_latlng[0][1], 
        tellus_rectangle_latlng[1][0],
        tellus_rectangle_latlng[2][1],
    ]
    data = rioxarray.open_rasterio(file_name, masked=True)
    clipped_data = data.rio.clip_box(*bounding_box)
    fig, ax = plt.subplots(figsize=(8, 8))
    clipped_data.sel(band=[1, 2, 3]).astype("uint8").plot.imshow(ax=ax)
    ax.set_title('')
    plt.savefig(f"clipped_{file_name}.png")

 

この4つのファイルを同じディレクトリに入れ、python main.pyと実行すれば、コードに書いた住所付近の衛星画像が指定枚数分だけ作成されます。

2025年10月30日に、この例で書いたように京都府京都市左京区下鴨宮河町付近の衛星画像を5枚作成すると、以下のようになりました。

画像の著作権はすべてJAXAにあります。

鴨川デルタと呼ばれる、川がYの字に合流する地点を住所として指定しました。雲がない画像だときれいに写っていますね。画像左下の緑の部分は御所です。

 

2.大きな流れ

(1) 住所→住所の緯度経度(1点)

(2) 住所緯度経度(1点)→住所を中心とする矩形の緯度経度(5点)

(3) dataset_idと矩形の緯度経度(5点)→data_id(シーンID)

(4) dataset_idとdata_id→ファイル情報一覧

(5) dataset_idとdata_idとfile_id→(COG形式の画像ファイルの)ダウンロードURL

(6) ダウンロードURL→COG形式の画像ファイル

(7) COG形式の画像ファイル→住所を中心とする矩形の緯度経度でクリップしたPNG形式の画像ファイル

(1)と(2)の緯度経度関係の処理をmy_latlng.pyに、(3)と(4)と(5)のTellus公式データAPIの処理をmy_tellus.pyに、(6)と(7)の画像処理をmy_images.pyに書いています。

この大きな流れの見通しをつかむまでに苦労しました。

 

3.緯度経度の処理

(1)の住所から緯度経度への変換は、Pythonで地名/住所から緯度/経度を取得し地図にプロットする方法 #folium – Qiitaを参考に国土地理院のAPIを利用するとあっけなくできました。これはありがたいです。

(2)は(1)で取得した緯度経度にそれぞれ0.01を足したり引いたりすることで、指定した住所付近の矩形にしました。指定した住所を中心とする約2キロメートル四方の矩形です(緯度により0.01の東西の距離が変わってしまい正方形になりませんが、今回は周辺画像を大まかに取得したいという目的なので、これでよしとしました)。

 

4.Tellus公式データAPIの使い方

tellus-traveler-pythonというパッケージを使ってもよかったのですが、ここでは原理的な理解を目指して、公式のAPIをそのまま利用しました。

How to Use|TellusHow to Use|Tellusが最重要の資料です。

それをもとに試行錯誤を繰り返し、できるだけわかりやすい形にしたのが冒頭で示したコードです。

この公式ドキュメントがわかりづらかったので、別記事で詳しくまとめられたらと思っております。

 

5.取得した画像の後処理

この部分はTellus APIを利用した衛星データ活用 可視化偏からほぼそのまま拝借しました。

COG形式の画像ファイルを活用すると緯度経度でクリップできるというのがポイントです。

ただ、それをそのまま保存しても人間が見てすぐにわかるような衛星写真の画像にはならなかったので、Matplotlibで可視化しました。

私はこのあたりの処理がよくわかっておらず、もっとよい方法があるかもしれません。

ともあれ、やりたいことは実現できたので、知見を共有します。

 



令和7年度秋期情報処理安全確保支援士試験を受けました

令和7年度秋期情報処理安全確保支援士試験を受けてきました。

受ける直前の記事は令和7年度秋期情報処理安全確保支援士試験を受けますです。

以下、感想と再現答案です。

 

午前Ⅰ

1周目でそれなりに解けた感触があり、2周目で迷った問題や計算問題の答えを出して、解答用紙にマークしました。

思考プロセスの一部を紹介します。

問3は、m行n/m列だから、列の平均がn/2mで行の平均はm/2で、これらを足したものが選択肢イにあったので選びました。

問7は、aが1でbが0で、このときだけ1になるものを選べばよいから、足し算は1となる組み合わせが2つあるのであり得ず、選択肢アが条件を満たすと考えました。

問10は、2つのLANの差から考えるので、パケットの個数が同じだからパケットの送信間隔は気にせず、全部ビット単位で考えたほうが計算しやすそうだったのでビットに揃え、方程式を解いてウを選びました。

問19は、少なくとも8人月余計にかかるから800万円以上になるはずなのに選択肢の最高額が700万円でどうしようかと悩みました。他のプロジェクトを手伝うためにこのプロジェクトから外れたメンバーの人件費は計上しない理屈なのかとひらめき、それなら教育期間の4人月×半月=200万円でアと考えました。

問29は、機械1時間当たりの利益が商品Aが1500円で商品Bが1250円だからほかに制約条件がないこの問では全部商品Aを作る、15000時間だから8で割り切れるので商品Aが整数個作れるので、1時間当たりの利益から合計の利益を単純計算し、固定費を差し引いてイとしました。

正解と照らし合わせると、問19は間違っていました。私は単純に4人増員すると考えてしまいましたが、引き継ぎ期間の元のメンバー4人分の遅れを取り戻すために増員が必要になるのは5人で、引き継ぎ期間の250万円と8月9月の100万円ずつで合計450万円というウが正解です。

25/30正解できたのでここは通過できました。

 

午前Ⅱ

見たことのある問題がけっこうありましたが、これは無理だという問題が3〜5問あり、厳しいなと感じました。

1周目で自信のある問題を埋め、2周目3周目と少しずつ埋めていきました。

ほぼすべて知識問題で、計算問題は問24だけですね。これは過去問にあったような気がしました。最初から織り込み済みの停止時間は分母にも分子にも含めないのがポイントです。あとは月の日数から時間数を算出し、割り算するだけです。計算を間違えるといけないので、停止時間を分子にした場合と提供時間を分子にした場合の両方を計算して、一致するのを確認しました。

21/25正解できたのでここも通過できました。

 

午後

全体

問題冊子全体にざっと目を通して、問1はWeb系だからおそらく選ぶ、問2は難しそう、問3はネットワーク系で問4がマネジメント寄りかなという印象を得ました。

令和7年度秋期情報処理安全確保支援士試験を受けますで書いた方針に基づき、すべての問について頭の中で答えを作っていきました。

問1はスクリプトも比較的単純で意図がわかりやすく、Excelファイルに偽装したファイルにスクリプトを仕込んだことも明白でしたから、大きなストーリーをつかめた感触があり、早めに解答用紙に書いていきました。

問2は設問2のサイドチャネル攻撃の一般的な定義は知っているとしてもこの場合の内容がわからず、その後の問題も難しそうに見えたので、飛ばす方向にしました。

問3は最初のDNS関係の知識問題は1〜2問どうにかできそうという今ひとつな滑り出しでしたが、あとは問題文をじっくり読めば何とかなりそうでした。問題文が長いのはそれだけヒントも多いだろうと好意的に捉えられました。

問4は「未知の」と「暗号化」かなと最初の空白は埋められそうで権限の設問も問題文をよく読めば答えられそうに思いましたが、主なストーリーである後半部分の手がかりを思いつくことができませんでした。

ということで問3を頭の中で解き進め、いけそうならこれを選び、ダメそうなら問4に挑戦するという戦略を立てました。

 

問1

設問1は、SAMEORIGINに着目してaはできない、Content-Security-Policyのselfに着目してbもできないにしました。

設問2の(1)は、元従業員のZが管理者権限を不当に取得するというストーリー(スクリプトの内容を参照)から、ロール管理としました。

(2)は、タスク名ですね。一瞬タスクの詳細説明かとも思いましたが、プロジェクト進捗管理で詳細説明は表示されずタスク名は表示されるのでこちらが正解でしょう。

(3)は個人タスク<script src=”/files/F1234567890.xlsx”></script>としました。図2の正常なタスク名と見比べて慎重に抜き出しました。

(4)はeが管理者、fが締切日を過ぎた、gが管理者ロールを設定するとしました。eは利用者かなと最初は思いましたが、表1をよく読んでこの処理は管理者しかできないと気づきました。

(5)は、CSPの設定で防御できていたという記述から(CSPが何かわからなかったのですが、Content-Security-Policyのことだろうと思い至りました)、工夫前は直接スクリプトの文字列を書いていたのだろうと想像し、スクリプトを仕込んだファイルをスレッドにアップロードし、そのファイルを参照すると書きました。「スクリプトを直接書くのではなく」といった内容も含めたかったのですが、解答欄が足りませんでした。他サイトではなく自サイトのスレッドにファイルをアップロードするのが一つのポイントですから、そこは外せないと思いました。

設問3の(1)は、テキストファイルとして開き、スクリプトが含まれていないことを確認するとしました。Pythonで言うならrbではなくrでファイルをオープンして、scriptのような文字列を検索するイメージです。

(2)はプロジェクト進捗管理としました。最初は入力時にエスケープ処理をすると考えてタスク管理と書きましたが、htmlへの出力時にエスケープ処理をするほうが自然かと思い直して書き直しました。

(3)はHTMLで特別な意味を持つ記号<と>をエスケープ処理すると書きました。設問で「具体的に」と指示されており、<と>を具体化しました。&lt;のような内容も書こうかと思いましたが、自信がなかったことと「エスケープ処理」という表現を入れたかったので、この記述に落ち着きました。本文中に「類似の問題がないかどうか」とあったので、<と>をエスケープすればいいだろうと考えました。

設問4は、SASTが何かわからず、頭をひねった挙句、専門家による手動での検査にしました。これなら文句はつけられないだろうという判断です。

アルファベットの頭文字の略称は覚えきれないのでやめてほしいです。

 

問3

設問1の(1)はDNSSEC、(2)のbはDoS、cはTLSと書きました。調べてみると、DoSではなくDoHが正解のようですが、仕方ないです。

設問2はイ、アとしました。eは通常なら表示されないポップアップ画面に入力されたものだからアなのは間違いないだろうと考え、dのほうにアを出すならあとでeを出す必要がないのでイだろうと考えました。

インターネットバンキングは大きなテーマの割にこれだけしか設問がないのかと拍子抜けしました。

設問3は、Kサービス設定サイトへのアクセスを許可する接続元IPアドレスとしてa1.b1.c1d1を設定するとしました。なるべく問題文中の表現を活用しました。解答用紙に「1」と書くときに私が普通に書くと「l」のように見えたので、不自然になるのを覚悟で縦棒の上と下に付け足しました。

設問4の(1)は、各取引先サービスで行っている接続元IPアドレス制限について、P社の契約者専用のKサービス用固定グローバルIPアドレスからの接続を許可してもらうと書きました。問題文中の表現を最大限活用するという姿勢は変わりません。「接続を許可してもらう」と「接続も許可してもらう」のどちらにしようかと数分悩んだ挙句、全体利用も想定しているので「を」のほうにしました。過去問で「も」が模範解答になっていた問題を思い出しました。

(2)は、ざっくりと基本サイトのことかと考えたあとで、それにしては解答欄が不自然に広く、基本サイトの周囲をよく読み、OSベンダーのOSアップデート配布サイト及びQ社のマルウェア定義ファイル配布サイトとしました。この2つはKサービスへの接続前に接続する必要があるのに対し、VサービスとP社専用WサービスはKサービスへの接続後に接続すると想像しました。問題文中の後二者はWebブラウザのブックマークに登録するという記載がヒントだと解釈しました。2つのサイトをつなぐ文言を「及び」にするか「と」にするか迷いましたが、A、B、C、D及びEという形になっている問題文を参考にして「及び」にしました。

設問5の(1)は、認証方式1でSMS通知を受ける1件の電話番号を利用者ごとにあらかじめ登録するにしました。ここでも問題文中の表現を最大限利用するという姿勢です。「利用者ごとにあらかじめ」とまで最初は書いていませんでしたが、時間があまって見直ししているときに消しゴムで消してそれも追加しました。

(2)は、Kサービス接続時に接続元PCのOSのバージョンをチェックし、移行前のバージョンであれば接続を拒否するようP社の管理者アカウントで設定するとともに、ログから接続を拒否されたPCを割り出してそのPCの利用者にOSの移行を促す声かけをするとしました。これで解答欄をちょうど使い切るくらいの分量です。システム的(技術的)な施策と運用的(人間的)な施策の両方を欲張って盛り込みました。ここでも問題文の表現を最大限活用しています。バージョンXとかバージョンYのように具体化しようか迷いましたが、下線③の直前にはそのような具体的な名前が書かれていなかったのでやめました。

 

全体

ベストは尽くせたという手応えです。

午後の問題選択には迷わず、問1と問3を選んだことに悔いはありません。

問1はLaravelやDjangoでWebアプリを作る仕事をしてきたのが生きました。

問3は国語力勝負ですね。

この試験を受けることをきっかけにして、セキュリティについて集中的に学べてよかったです。

 

 



令和7年度秋期情報処理安全確保支援士試験を受けます

明後日の10月12日に令和7年度秋期情報処理安全確保支援士試験を受ける予定です。

受験後は感想と再現答案をアップする予定です。

 

1.受験に至る経緯

3年ほど前に基本情報技術者試験と応用情報技術者試験を受け、ITエンジニア関係の仕事の比重を増やしてきました。

仕事の関係でセキュリティに力を入れようと思い立ち、情報処理安全確保支援士試験の受験を決めました。

IT系ではないとある職場で、リモートワークをするには有償のウィルス対策ソフトを入れなければならないと言われ、Linuxで無償のClamAVを使っているために諦めたという悔しい体験も原動力になっています。

そういうこともありセキュリティに詳しくなりたいと思ったわけですが、参考書でも過去問でも無償のウィルス対策ソフトはダメで有償ならいいという記載はついぞ見ることはなく、セキュリティの技術的な問題ではなく経営判断や社内政治の問題だと再確認した次第です。

実は今年の春期の受験申込みをして受けるつもりでいたのですが、試験前日に腰を痛めて動けなくなり、泣く泣く断念しました。

半年ほど期間が空いたのでモチベーションを維持するのが難しかったです。

その期間中にLPIのSecurity Essentialsを受けて合格しました。

LPI公式にはSecurity Essentialsという英語版の学習教材しかまだありませんが(試験は日本語で受けられます)、情報処理安全確保支援士試験とは重複する内容を違った切り口から扱われているので、気分転換をしながら学習することができました。

 

2.学習記録

(1)本

以下では現時点での最新の版を紹介しますが、昔に読んだり中古で安く手に入れたりした本があるため、自分が読んだ本と版が一致するとは限りません。


体系的に学ぶ安全なWebアプリケーションの作り方 : 脆弱性が生まれる原理と対策の実践


作 者: 

出版社: SBクリエイティブ

発売日: 2018年07月12日

いわゆる徳丸本です。情報処理安全確保支援士試験を受けることを決めるずっと前に、Web関係の実務に携わる際にお世話になりました。試験対策としてもこの本をおすすめします。


セキュリティ技術の教科書 : 情報処理安全確保支援士試験


作 者: 

出版社: アイテック

発売日: 2023年03月31日

タイトルの通りの本です。一般書と資格対策本の中間のような感じです。


情報処理安全確保支援士 : 対応試験SC


作 者: 

出版社: 翔泳社

発売日: 2024年11月27日

網羅的な資格対策本です。最初のインプットにうってつけです。私は春期の受験前に2周、秋期の受験前に1周しました。


情報処理安全確保支援士ポケット攻略本 : 要点早わかり


作 者: 

出版社: 技術評論社

発売日: 2022年10月06日

資格対策本が一冊だけでは不安で別の角度からもアプローチしたかったので、二冊目としてこれを選びました。コンパクトにまとまっています。


うかる!情報処理安全確保支援士午後問題集


作 者: 

出版社: 日経BP日本経済新聞出版

発売日: 2023年07月11日

春期に受験できず、同じ本だと飽きるので、これを入手しました。表紙からチャラい本なのかと思いましたが、中身はしっかりしていて、午後試験の対策本として優秀だと感じました。秋期の受験前に2周しました。


情報セキュリティの敗北史 : 脆弱性はどこから来たのか


作 者: 

出版社: 白揚社

発売日: 2022年11月24日

試験とは関係なく、以前に興味から読んでいました。試験にとどまらず広い視野を得るのにいいと思います。


カッコウはコンピュータに卵を産む


作 者: 

出版社: 草思社

発売日: 2025年04月28日

これも試験とは関係なく趣味で読んでいました。古い本です。楽しみながらセキュリティの感覚を養うことができます。

 

(2)過去問

午前Ⅰ

応用情報技術者試験の午前試験と同じ問題であり、そう遠くない昔に同試験には合格しているので、そのときの状態に戻すことができれば大丈夫だと思いました。

『応用情報技術者合格教本』をもう一度読み直し、応用情報技術者過去問道場|応用情報技術者試験.comをコツコツ解いています。

午前Ⅱ

こちらも情報処理安全確保支援士過去問道場|情報処理安全確保支援士.comに頼り切っています。上で紹介した本でインプットしたら、あとはひたすら過去問を解けばいいと思います。

午後

この午後試験が勝負です。分量が多くて圧倒されます。私は文章を読むのが好きで読む速度もかなり速いほうですけれども、それでも何度かくじけそうになりました。

どの試験でもそうですが、早めに過去問に触れて、その試験の世界観に馴染んだほうがよいです。

私は、最初の頃、C&Cサーバが何かわからなかったですし、よくあるFWとプロキシサーバの構成もいちいち図から時間をかけて読み取っていました。

過去問の経験を積むと、典型的なパターンが自分の中に形作られるので、またこのパターンかという感触になってきます。

約8年分(16回分)を、春期の前に2周、秋期の前に1周して、ようやくその境地に近づいてきました。

実際に書いて解いたのは数回分で、あとは頭の中で答えを作ってからすぐに解答例を見ました。

(一定の論理的思考は求められるとして)技術やアルゴリズム的なロジックよりも、知識や国語力を問われる試験だという印象です。

注に小さく書いてあることが答えに直結するような問題がたくさんあります。

 

(3)その他

試験要綱・シラバスについて | 試験情報 | IPA 独立行政法人 情報処理推進機構に載っている試験要綱とシラバスにも一通り目を通し、知らない用語や気になる用語は検索して調べました。無味乾燥で頭に入ってきづらい資料ですが、知識に漏れがないことを確認する気休めにはなりました。

 

3.当日の戦略

午前試験は、過去問と同じで見たことのある問題や自信を持って答えられる問題で、6割くらい正解できればと期待しています。わからない問題でも必死に食らいつき、計算問題では慎重に計算して、少しでも上積みできれば6割を下回ることはないと信じたいです。

午前Ⅰで不合格となり以後の試験の採点がされないことを一番恐れます。応用情報技術者試験の合格により免除される期間内に受けておけばよかったと少し後悔しています。

午後試験は、過去問に取り組んだ感触から、制限字数内で紙に書くことをしなければ、制限時間内に4問全部頭の中で回答を作れるくらいの時間はありそうです。その中から得点率の高い2問を選ぶことができれば合格できると踏んでいます。

攻撃手法やインシデント対応などの大きなストーリーを理解できて、配点の高そうな問題の答えに確信が持てれば、その問題を選びます。同程度であれば、配点の低そうな知識問題の自信も加味します。

分野としては、日々実務に携わっているWeb系とLinuxコマンド系とクラウド系があれば、その問を選ぶ可能性が高いです。ネットワークについては得意意識もなければ苦手意識もないので、問題次第で選びます。マネジメント系は答えに確信は持てないものの国語力でそれなりに解けることが多いため、いざというときに選ぶという構えでいます。日頃からプログラミングをしているエンジニアとしてはセキュアプログラミングを選びたいところではありますが、C++はさっぱり、Javaは使ったことがないけれども読めばそれなりにわかるかも、というレベルですので、選びにくいです。ECMAScript(JavaScript)はセキュアプログラミングというよりはWeb系だと認識しています。

この試験に書かれているような状況に実務で陥ったら笑えませんが、紙の上での試験としては推理小説のような謎解きの楽しみがあるので、せいぜい楽しんできます。

 

 



Pythonで退屈な作業を自動化する「第16章 SQLiteデータベース」の訳後感

訳文はPythonで退屈な作業を自動化するです。

この章は第3版で新しく追加されました。

本文中にも書かれていますように、データベース一般へのいい導入になっています。

スプレッドシートとの異同から基本操作の説明、さらにはSQLインジェクション攻撃、トランザクション、インメモリデータベースまで説明されていて、ITエンジニアにとっても読み応えのある内容です。

同時書き込みが多くなければ本番環境でもSQLiteを使えるという根拠を得ることができたのが、個人的には収穫でした。

第2版には存在しなかった章であり、おそらく初めての日本語訳ですから、データベースに興味のある人はぜひご一読ください。




top