【ご報告】17年ぶりの再挑戦!基本情報技術者試験に無事合格しました。

以前よりご指示・ご期待いただいておりました**「基本情報技術者試験」**ですが、本日無事に受験を終え、合格基準をクリアすることができました!

私にとっては、なんと17年ぶりの再受験となります。 新人研修で教壇に立つにあたり、教える側としても改めて最新の「基本」を網羅・アップデートしておく良い機会となりました。試験の結果と今回実践した対策についてシェアしたいと思います。

これから受験を考えている方の参考になれば幸いです。

受験概要と結果

  • 受験日時: 2026年3月2日(月) AM 10:00
  • 受験会場: 品川・高輪テストセンター
  • 学習期間: 2026年2月11日 〜 3月1日(約20日間)

【スコア結果】

  • 午前(科目A): 795点 / 1000点 (※600点以上で合格)
  • 午後(科目B): 710点 / 1000点 (※600点以上で合格)

私が実践した試験対策

今回の学習期間は約20日間。限られた時間の中で効率よく合格ラインを突破するため、過去問とサンプル問題に絞って徹底的にアウトプットを行いました。

科目A(旧:午前問題)の対策

「基本情報技術者試験.com」の過去問道場を活用し、過去5年分の全360問をすべて解きました。 ここで重要視したのは「間違えた問題をすべて見直すこと」です。なぜ間違えたのか、正解以外の選択肢は何を意味しているのかを理解するまで繰り返しました。

科目B(旧:午後問題)の対策

新制度の科目Bはアルゴリズムとプログラミングが中心となるため、以下の3ステップで対策しました。

  1. 過去30年分のアルゴリズム特訓: 基本情報技術者試験.comの午前対策から、「アルゴリズムとデータ構造」の分野に絞って過去30年分(134問)を解き切りました。
  2. 公式サンプル問題の攻略: IPAが公開している科目Bのサンプル問題(令和5年、令和6年、令和7年)をすべて解きました。
  3. 追加演習: 基本情報技術者試験.comに掲載されている科目Bのオリジナルサンプル問題も実施し、実践感覚を養いました。

実際に受験して感じた「気づき」と「傾向」

17年ぶりに受験してみて、試験内容が現代のITトレンドに合わせて大きく変化していることを肌で感じました。

💡 科目Aの気づき:最新トレンドへの適応が必須 AIやDevOpsといった、昨今のIT現場で欠かせない最新のトピックもしっかりと出題されていました。一方で、過去問からの「全く同じ問題の流用(過去問からの出題率)」は以前ほど高くなかった印象です。丸暗記ではなく、用語の本質的な理解が求められます。 本番では時間配分も上手くいき、15分ほど時間を残して余裕を持って終えることができました。

💡 科目Bの気づき:とにかく時間との戦い!基礎の徹底が鍵 科目Bは、キュー、スタック、逆ポーランド記法といったデータ構造の基本事項をきちんと理解しておくことが絶対条件です。 そして何より「時間が足りない」というのが率直な感想です。100分で20問を解くため、1問あたり5分以内というハイペースで処理していく必要があります。配列の構造や添え字(インデックス)の動きを正確に把握し、スピーディーにトレースする力が試されます。

今回、科目Bの対策として「午前問題(旧制度)のアルゴリズムとデータ構造を過去30年分さかのぼって解いたこと」が、本番での素早い思考と正確なトレースに非常に有効に働いたと実感しています。

おわりに

高度なセキュリティ資格などにも挑戦してきましたが、やはり「基本」に立ち返り、アルゴリズムのトレースなどを泥臭くこなす時間は、エンジニアとしても講師としても非常に有意義なものでした。

このフレッシュな受験経験と最新の試験傾向の肌感覚を、春からの新人研修や今後のITサポートにもしっかりと還元していきたいと思います!

【合格体験記】約3週間の勉強でCompTIA PenTest+に合格した方法

【合格体験記】約3週間の勉強でCompTIA PenTest+に合格した方法

約3週間という短期間の集中学習で、サイバーセキュリティの実践的なスキルを証明するCompTIA PenTest+に無事合格しました!

この記事では、私が実践した勉強方法や使用した教材、そして試験当日の心構えなどをシェアします。これから受験を考えている方の参考になれば嬉しいです。


1. 試験の概要と受験時のスペック

まずは、試験の基本情報と、学習開始時点での私の知識レベルについてまとめます。

項目詳細
試験名CompTIA PenTest+ (PT0-002)
問題数最大85問(単一/複数選択、パフォーマンスベーステスト)
試験時間165分
合格ライン750点(100~900点のスコア形式)

受験時の私のスペック(※ご自身の状況に合わせて書き換えてください)

  • CISSP、RISS、CEH、Security+が取得済みでした。
  • 実務でのペネトレーションテスト経験はなし
  • ネットワークの基本(TCP/IPなど)は理解している

2. 使用した教材

3週間という限られた時間だったため、教材を絞って効率的に学習を進めました。

  • 問題集: Udemyの模擬試験問題集をAIで翻訳しながら学習しました。
  • ハンズオン環境: TryHackMe、Hack The Box

3. 約3週間の勉強スケジュール

第1週:全体像の把握とインプット

最初の1週間は、テキストを読み込み、試験範囲の全体像を把握することに努めました。特に、スキャンツール(Nmapなど)のコマンドオプションや、各種脆弱性の特徴などの暗記項目を整理し、基礎固めを行いました。

第2週:問題演習とハンズオン

2週目からはアウトプット中心に切り替えました。問題集を解きながら、間違えた箇所をテキストで復習します。また、実機環境(TryHackMeなど)を活用して、実際のツールの使い方や攻撃手法を視覚的・体感的に学びました。

第3週:模擬試験と弱点補強

最終週は、本番を想定した時間配分で模擬試験に取り組みました。パフォーマンスベーステスト(PBQ)対策として、ログの解析やネットワーク図の読み解きに慣れるよう、苦手分野の底上げを徹底しました。


4. 試験当日の感想とアドバイス

  • PBQ(パフォーマンスベーステスト)は後回しにする: 最初に出題されることが多いPBQは時間がかかるため、まずはフラグを立てて選択問題を一通り解き終えることをお勧めします。
  • Nmapのコマンドは必須: Nmapのスキャンタイプや出力オプションに関する問題は頻出です。確実に押さえておきましょう。
  • ツールの出力結果に慣れる: 各種スキャンツールや脆弱性診断ツールの出力結果を見て、何が起きているのかを読み解く力が求められます。

5. まとめ

3週間という短い期間でしたが、集中して取り組むことで無事合格することができました。PenTest+は単なる知識だけでなく、実践的な視点が求められる非常にやりがいのある試験です。

これから受験される皆さんの健闘を祈っています!

【合格体験記】CompTIA SecurityXに合格しました!

こんにちは。ちゅらセキュアクラウドの山口雅樹です。 日頃は新入社員向けのIT研修や、情報セキュリティ専門の講義などに登壇しておりますが、自己研鑽の一環として受験していた「CompTIA SecurityX」に無事合格いたしました!

今回は、これから受験を検討されている方や、最新のセキュリティ資格に興味がある方に向けて、SecurityXの概要や難易度、実際の試験で感じた出題傾向などをシェアしたいと思います。

CompTIA SecurityXとは?

CompTIA SecurityXは、ITセキュリティの現場で求められる高度な実践的スキルを証明する、CompTIAの最上位レベルの認定資格です。(以前は「CASP+」という名称で親しまれていましたが、名称が変更されました。)

単なる知識の暗記ではなく、複雑な環境下でのセキュリティ要件の策定や、インシデントへの対応、リスク管理、そしてビジネスニーズとセキュリティのバランスを取るアーキテクチャの設計など、シニアレベルのセキュリティプロフェッショナルに求められる総合的な判断力が問われます。

気になる難易度は?

結論から言うと、難易度は「かなり高い」と感じました。

一般的な基礎資格とは異なり、「この用語の意味は何か?」といった単純な問題は少なく、具体的なシナリオベースの設問が中心です。「この状況で、最も適切でビジネスへの影響が少ないセキュリティ対策はどれか?」といった、現場での実務経験や深い理解に基づいた応用力が試されます。

出題傾向:AIやソフトウェア開発分野からの出題も!

今回の受験で特に印象的だったのは、出題範囲の広さと最新トレンドの反映です。 従来のネットワークやインフラのセキュリティにとどまらず、AI(人工知能)に関するセキュリティリスクや、ソフトウェア開発のプロセス(セキュアコーディングやDevSecOpsなど)に関する問題もしっかりと出題されました。

現代のセキュリティは、インフラエンジニアだけでなく、開発者やAIを導入するビジネス側とも密接に関わっています。SecurityXは、そうした現代のITシステム全体の包括的な脅威を理解し、対策を講じる能力が求められていることを強く実感しました。

勉強時間は1か月程度でした

今回の私の勉強時間は、およそ1ヶ月程度でした。

期間だけを見ると短く感じるかもしれませんが、これは日頃からセキュリティ研修の講師として基礎や最新動向をアウトプットしていることや、他のセキュリティ系資格で培ったベースの知識があったことが大きく影響していると思います。

ゼロから挑戦する場合は、もう少し余裕を持った学習計画を立てることをおすすめします。特に、各セキュリティ技術が「なぜ必要なのか」「どう機能するのか」という根本的な仕組みの理解に時間をかけると良い結果に繋がるはずです。

おわりに

今回のSecurityX合格で得た最新の知見や、AI・ソフトウェア開発領域にまで及ぶセキュリティの考え方は、今後の研修や講義の中にもしっかりと還元していきたいと思います。

情報セキュリティ研修やJava、アルゴリズムなどのIT技術研修のご相談は、ぜひ当方のホームページよりお気軽にお問い合わせください!

#SecurityX #CompTIA

▼ちゅらセキュアクラウド 公式ホームページ https://yamachan.com

日付毎にファイルをサブフォルダに移動

スマートフォンからパソコンに動画や写真を移すと、一つのフォルダに数千ものファイルが溜まってしまい、目的のファイルを探すのが大変になることはありませんか?

この問題を解決するため、AIのGeminiに依頼して、大量のファイルを撮影日ごとに自動でフォルダ分けするPowerShellスクリプトを作成してもらいました。

このスクリプトを使えば、乱雑になりがちなフォルダ内がすっきりと整理され、過去のデータも簡単に見つけられるようになります。

# -----------------------------------------------------------------------------
# 説明: 画像ファイルを撮影日時のフォルダに整理するスクリプト
# -----------------------------------------------------------------------------

# 1. 画像が保存されているフォルダのパスを指定してください
$targetFolder = "C:\Users\YourUser\Pictures\Camera Roll" # 実際のフォルダパスに書き換えてください

# 2. 処理対象とするファイルの拡張子 (必要に応じて追加・削除してください)
$imageExtensions = @(".jpg", ".jpeg", ".png", ".heic", ".cr2", ".nef", ".arw", ".mov", ".mp4")

# -------------------------- ここから下は変更不要 --------------------------

# フォルダの存在チェック
if (-not (Test-Path -Path $targetFolder)) {
    Write-Error "エラー: 指定されたフォルダが見つかりません。パスを確認してください: $targetFolder"
    return
}

Write-Host "📁 処理を開始します。対象フォルダ: $targetFolder" -ForegroundColor Green

try {
    # Shellオブジェクトを使用してファイルの詳細情報にアクセスします
    $shell = New-Object -ComObject Shell.Application
    $folder = $shell.NameSpace($targetFolder)

    # 「撮影日時」の項目が何番目にあるかを探します (環境により異なるため)
    $dateTakenIndex = -1
    for ($i = 0; $i -lt 300; $i++) {
        $header = $folder.GetDetailsOf($null, $i)
        if ($header -eq "撮影日時" -or $header -eq "Date taken") {
            $dateTakenIndex = $i
            break
        }
    }

    # フォルダ内の対象ファイルを一つずつ処理
    Get-ChildItem -Path $targetFolder -File | Where-Object { $imageExtensions -contains $_.Extension.ToLower() } | ForEach-Object {
        $file = $_
        $dateTaken = $null

        # 撮影日時を取得
        if ($dateTakenIndex -ne -1) {
            $folderItem = $folder.ParseName($file.Name)
            if ($folderItem) {
                # GetDetailsOfは文字列を返す
                $dateValue = $folder.GetDetailsOf($folderItem, $dateTakenIndex)
                # 文字列からDateTimeオブジェクトへの変換を試みる
                if (-not [string]::IsNullOrWhiteSpace($dateValue)) {
                    # 日付文字列に含まれることがある特殊文字を除去
                    $cleanedDateString = $dateValue -replace '[\u200E\u200F\u202A-\u202E]',''
                    try {
                        $dateTaken = [datetime]::Parse($cleanedDateString)
                    } catch {}
                }
            }
        }

        # 撮影日時が取得できなかった場合は、ファイルの最終更新日時を使用
        if ($null -eq $dateTaken) {
            $dateTaken = $file.LastWriteTime
            Write-Warning "[$($file.Name)] の撮影日時が取得できませんでした。代わりに更新日時 (${dateTaken}) を使用します。"
        }

        # 移動先のフォルダ名を「yyyyMMdd」形式で作成
        $subFolderName = $dateTaken.ToString("yyyyMMdd")
        $destinationFolder = Join-Path -Path $targetFolder -ChildPath $subFolderName

        # 移動先フォルダがなければ作成
        if (-not (Test-Path -Path $destinationFolder)) {
            Write-Host "新しいフォルダを作成します: $subFolderName" -ForegroundColor Cyan
            New-Item -Path $destinationFolder -ItemType Directory -Force | Out-Null
        }

        # ファイルを移動
        $destinationPath = Join-Path -Path $destinationFolder -ChildPath $file.Name
        Move-Item -Path $file.FullName -Destination $destinationPath
        Write-Host "'$($file.Name)' -> '$subFolderName'"
    }
}
catch {
    Write-Error "予期せぬエラーが発生しました: $_"
}
finally {
    # COMオブジェクトを解放
    if ($shell) {
        [System.Runtime.InteropServices.Marshal]::ReleaseComObject($shell) | Out-Null
        Remove-Variable shell -ErrorAction SilentlyContinue
    }
}

Write-Host "✅ すべての処理が完了しました。" -ForegroundColor Green

実行完了すると8桁の表現(例 20250716)のフォルダ別にファイルが移動されます。利用にあたっては、自己責任でお願いします。 #gemini #powershell

Geminiを使ったファイル整理方法

Google AIであるGeminiを使って未整理のフォルダのファイルを種類別にフォルダに分類するスクリプトを作成してみました。

古いHDDの大掃除が完了!✨ 中身がごちゃごちゃで手付かずでしたが、Geminiに『ファイルを種類別に仕分けるスクリプト作って!』とお願いしたら、一瞬で解決しました。

ExcelはExcelフォルダ、画像は画像フォルダへ自動で仕分けてくれるので、要らないファイルを見つけるのがすごく楽に! これ、月別整理や重複ファイル削除にも応用できそう。AI活用、すごい便利! #データ整理 #Gemini #PowerShell

次のコードはPowerShellで動作します。(ファイルは 拡張子.ps1で保存してください。UTF-8のBOM付で保存します。)wordや、excel、動画やパワーポイントのフォルダーに分類してファイルを移動します。

# 1. 基本設定
# スクリプトを置いた場所を基準に動作します
$basePath = Get-Location
$sourceFolderName = "整理したいファイルのフォルダを指定"
$sourceFolderPath = Join-Path $basePath $sourceFolderName

# 移動先のフォルダ名を定義します (フォルダ名は自由に変更できます)
$destFolders = @{
    excel      = @(".xlsx", ".xls", ".xlsm", "csv")
    movie      = @(".mp4", ".mov", ".avi", ".wmv", ".mkv")
    picture    = @(".jpg", ".jpeg", ".png", ".gif", ".bmp", ".heic", ".raw") # "picuture"を"picture"に修正しました
    pdf        = @(".pdf")
    powerpoint = @(".pptx", ".ppt")
    word       = @(".docx", ".doc")
    etc        = "その他" # ここで定義されていない拡張子のファイルが移動されるフォルダ
}

# 2. 移動先フォルダの作成
# 定義したフォルダが存在しない場合に作成します
Write-Host "--- フォルダの準備 ---" -ForegroundColor Yellow
foreach ($folder in $destFolders.Keys) {
    $path = Join-Path $basePath $folder
    if (-not (Test-Path $path)) {
        New-Item -ItemType Directory -Path $path
        Write-Host "作成しました: $path"
    }
}

# 3. ファイルの移動処理
Write-Host "`n--- ファイルの移動を開始します ---" -ForegroundColor Yellow
# サブフォルダ内もすべて検索 (-Recurse) し、ファイルのみを対象 (-File)
$files = Get-ChildItem -Path $sourceFolderPath -Recurse -File

foreach ($file in $files) {
    $extension = $file.Extension.ToLower()
    $moved = $false

    # 各カテゴリの拡張子に一致するかチェック
    foreach ($category in $destFolders.Keys) {
        if ($category -ne "etc" -and $destFolders[$category] -contains $extension) {
            $destinationFolder = Join-Path $basePath $category
            $moved = $true
            break # 一致したらループを抜ける
        }
    }

    # どのカテゴリにも一致しなかった場合、etcフォルダに設定
    if (-not $moved) {
        $destinationFolder = Join-Path $basePath "etc"
    }

    # 移動先でのファイルパスを決定 (同名ファイル対策)
    $destinationFile = Join-Path $destinationFolder $file.Name
    $counter = 1
    # もし移動先に同名のファイルが存在したら、ファイル名に番号を付けて重複を回避
    while (Test-Path $destinationFile) {
        $newName = "{0}_{1}{2}" -f $file.BaseName, $counter, $file.Extension
        $destinationFile = Join-Path $destinationFolder $newName
        $counter++
    }

    # ファイルを移動
    try {
        Move-Item -Path $file.FullName -Destination $destinationFile -ErrorAction Stop
        Write-Host "移動: $($file.Name)  ->  $($destinationFolder)" -ForegroundColor Green
    }
    catch {
        Write-Host "エラー: $($file.FullName) の移動に失敗しました。" -ForegroundColor Red
        Write-Host $_.Exception.Message -ForegroundColor Red
    }
}

# 4. 空になったサブフォルダの削除 (任意)
# 下記のコメントアウトを解除すると、ファイルがなくなった後の空のフォルダをすべて削除します
# Get-ChildItem -Path $sourceFolderPath -Recurse -Directory | Where-Object { (Get-ChildItem -Path $_.FullName -Recurse -File).Count -eq 0 } | Remove-Item -Recurse -Force
# Write-Host "`n--- 空のフォルダを削除しました ---" -ForegroundColor Yellow


Write-Host "`n--- すべての処理が完了しました ---" -ForegroundColor Yellow

Geminiを使うと瞬時に便利なスクリプトを作成してくれるので大変便利です。

次のフォルダーに分類されます。

#GEMINI #PowerShell #AI