つい最近QSOしたフランスの局からDegiQSLなるログでの私へのACTIVITY WAITING.(ある処理(タスク)が完了するのを待機している状態)のメールが飛んできました。そもそもDegiQSLなるログは全く聞いたことがありません。ひとまずどんな内容の物かを確認すべくアカウント登録して、開いてみました。まず、何か使えそうな感じのものとして、Dx ClusterのSend SPOTSと同じようにSPOTすることでLiveアップデートされる大陸間の各バンドでの交信が点線で表示されています。実交信のリアルタイム情報が見れるという事かと思います。これはとてもありがたい機能だと思います。交信元と交信先の局名もわかりますし、地図で何処と何処が交信できているかが分かります。

DegiQSL-001

下側にボタン(View more on Spotter)がありこれを押すと各バンドのボタンがあらわれます。
バンド指定とかモード(SSB、CW、FT8、e.t.c)指定もできるようです。

DegiQSL-002

他にProfileで自分の情報を見れます。過去28日間の交信が地図上に表示される機能(RECENT QSO MAP)があり何処と交信したかが、地図で確認できます。マウスを更新先に合わせると、一連の交信情報が表示されます。(相手局、バンド、モード、周波数、年月日、時間(UTC)、グリッドロケータ、国名)
ただし、DegiQSLに交信データファイル(adiファイル)をアップロードした情報によります。
あとは、QSL Creatorなるものがありました。
今回はこの機能を使い、相手にQSLカードを送るためにもととなるデータ(ハムログデータ)からのDegiQSLへのADIFデータのインポートに関してが本題になります。今回もCopilotを使っていろいろと思考錯誤しながらの対応となりました。Copilotも教育するという目的もあるのかしりませんが、最初から100%の回答を出してくれるわけではありません。結果からいうと、小出しに正解を回答してくれる感じというとわかるかと思います。単にDegiQSLにデータをインポートする処理なのですが、はっきり言うと不備なCopilotの回答にてアップするため、エラーが出ます。このエラーを元に修正をかけていくやり方を続ける感じになりました。最初から、100%の回答ではなく、60%ぐらいから、70%、80%、90%、そして100%と修正をその都度都度行って最終完了にこぎつける感じです。Copilotについてはこれぐらいにして、まず本題です。ハムログのDX交信元データを出力できます。QRZ.COMやCLUBLOGで使用しているDXファイルと出力するのは同じデータ(ADIF)ですが、今回のDigiQSLのインポートでは全くと言っていいほどそのまま使用でき無いデータフォーマットの様です。Copilotからは、とにかく厳しい面がある説明を受けています。緩くないということです。
■第1にハムログからの出力したADIFファイル(LogList.adi)は1局のデータが、改行されている状態のデータであることがDegiQSLが拒む1つの要因でした。1局のデータは1行で構成されなければならないという事のようです。

■第2にデータ文字間にスペースがあってはならないということです。

■第3にADIFデータの時間データが複数あるとデュープチェックで読み込みでエラーとなりインポート完了できない。1分間のうちに複数交信した場合など(2026年5月21日7時17分に数局交信したときにハムログデータの時間がすべて同じになる(1局目(7:17)、2局目(7:17)、3局目(7:17)、、)のように同じ時間となる)これはnew year partyの交信データでは、よくあります。コンテストなどもそうです。

■第4にDegiQSL用の専用のヘッダーがデータトップにないといけない。

■第5にハムログからのADIFデータにもともとない、自局のコールサイン情報が各交信データ行にないとDegiQSLではimport不可。

1から5までのDegiQSLインポートデータをハムログデータから作成するには大きな障壁があるのがわかるかと思います。

上記の問題点をすべて解決すれば、DegiQSLへのインポート完了できるようになります。
以下解決方法になります

■解決方法-第1
改行データであるハムログ出力(ADIF)データの改行データをアプリケーションで読み込みし、出力しなおすことで一行データ化可能となります。そのアプリケーション名はADIF Masterです。

DegiQSL-003

ハムログ(ADIF)データ LogList.adi を読み込みし、input.adi ファイル名で名前を付けて保存で1局の複数行のデータが1行データに変換されます。注意点として、ヘッダーにADIF Master専用に追加されているので、すべて下記のHeadderは削除します。
---------- Headder --------------------------------------------------------
ADIF Export from ADIFMaster v[1.9]
http://www.dxshell.com
Copyright (C) 2005 - 2012 Igor V. Tolmachev (UU0JC)
File generated on 20 May, 2026 at 22:41
<ADIF_VER:4>2.25
<PROGRAMID:10>ADIFMaster
<PROGRAMVERSION:3>1.9
<EOH>
--------------------------------------------------------------------------------
ハムログ出力ADIFでも同じように専用に下記が追加されて
いました。(ADIF Masterでは読み込み時に削除され上記の
ADIF Master様に差し替えされています。)

ADIF Export from Turbo HAMLOG/Win Ver5.47c (c)JG1MOU
<PROGRAMID:16>Turbo HAMLOG/Win
<EOH>
---------------------------------------------------------------------------------

■解決方法-第2(文字間スペースの削除の必要)
Copilot支援によりコマンドプロンプト用のマクロを用意して
くれました。下記をコピペして実行でinput.adiファイルの
スペースありデータからスペースがすべて削除されたファイル
output.adiが出力されます。

(Get-Content input.adi -Raw) -replace " <", "<" -replace "> ", ">" | Set-Content output.adi -Encoding UTF8

■解決方法-第3(同じ時間のダブりデータ(重複時間)チェックに引っかかる)
及び第4(DegiQSL用のヘッダーの追加)
Copilot支援により、同じ時間での秒(Second)データを割り当てるマクロを使う事で、異なる時間としてチェックにかからなくなります。また、DegiQSLの専用ヘッダーも同じマクロでデータに追加してます。

-----------------------------------------------------------------------------------------------------------------------------------
# === JL7GMN 専用 DegiQSL 対応 ADIF 自動変換スクリプト(TIME_ON_S 方式) ===
# 入力: output.adi(スペース削除済み)
# 出力: final_dqsl.adi(DegiQSL に100%通る形式)

$inputFile = "output.adi"
$outputFile = "final_dqsl.adi"

# 入力データ読み込み
$lines = Get-Content $inputFile

# 出力用配列
$newLines = @()

# === 1. ヘッダを追加 ===
$newLines += "<ADIF_VER:5>3.1.0"
$newLines += "<PROGRAMID:16>Turbo HAMLOG/Win"
$newLines += "<MY_CALL:6>JL7GMN"
$newLines += "<MY_QTH:8>Akita JP"
$newLines += "<EOH>"

# === 2. TIME_ON の重複を検出し、TIME_ON_S を付与 ===
$timeCount = @{}   # TIME_ON の出現回数を記録

foreach ($line in $lines) {

    if ($line -match "<TIME_ON:(\d+)>(\d{4})") {

        $time = $matches[2]

        # 初回なら 0、2回目以降はカウントアップ
        if ($timeCount.ContainsKey($time)) {
            $timeCount[$time]++
        } else {
            $timeCount[$time] = 0
        }

        $count = $timeCount[$time]

        # TIME_ON_S を付与(2桁ゼロ埋め)
        $sec = "{0:D2}" -f $count

        # すでに TIME_ON_S がある場合は削除して付け直す
        $line = $line -replace "<TIME_ON_S:\d+>\d{2}", ""

        # TIME_ON の直後に TIME_ON_S を追加
        $line = $line -replace "<TIME_ON:(\d+)>(\d{4})", "<TIME_ON:`$1>`$2<TIME_ON_S:2>$sec"
    }

    $newLines += $line
}

# === 3. UTF-8 で保存 ===
$newLines | Set-Content $outputFile -Encoding UTF8

Write-Host "変換完了: $outputFile を STATION_CALLSIGN_ADD_MACROを実行してください。"
-----------------------------------------------------------------------------------------------------------------------------------

■解決方法-第5(自局のコールサインの各データ行への追加が必要)
これもCopilot支援により作成。

-----------------------------------------------------------------------------------------------------------------------------------
# === JL7GMN 専用:STATION_CALLSIGN を全 QSO に追加するスクリプト ===
# 入力: final_dqsl.adi(TIME_ON_S 方式で作成済み)
# 出力: final_dqsl_fixed.adi(DegiQSL に100%通る)

$inputFile = "final_dqsl.adi"
$outputFile = "final_dqsl_fixed.adi"

$lines = Get-Content $inputFile

$newLines = @()

foreach ($line in $lines) {

    # QSO 行だけ処理(CALL タグがある行)
    if ($line -match "<CALL:\d+>") {

        # すでに STATION_CALLSIGN がある場合はスキップ
        if ($line -notmatch "<STATION_CALLSIGN:") {

            # CALL タグの直後に追加
            $line = $line -replace "(<CALL:\d+>[^<]+)", "`$1<STATION_CALLSIGN:6>JL7GMN"
        }
    }

    $newLines += $line
}

$newLines | Set-Content $outputFile -Encoding UTF8

Write-Host "変換完了: $outputFile を DegiQSL にアップロードしてください。"
-----------------------------------------------------------------------------------------------------------------------------------

1から5までを順番にマクロも使い、最終のアップロードファイル "final_dqsl_fixed.adi"が完成
します。これで、エラーなしでDegiQSLにインポート可能となりました。
ImportADIFボタンでインポート後のLogbookです。(QSLを1つだけ依頼のあった局へ送っています。

DegiQSL-004

データはハムログのdxチェックを2回クリックしてメインのdx局のみでADIFファイルとして出力して上記の処理を行いマージとしてDegiQSLに追加してゆきます。同じデータ(ダブり)は無視されるシステムなので特に問題はなさそうです。今のところ2つQRZ.COMとCLUBLOGではハムログ出力ADIFファイルがそのまま使用できますが、DegiQSL用に変換処理が必要で、3つ処理するとなると少し手間がかかります。ハムログを使っているので、DegiQSLを同期させて使う場合の手間はしょうがないという事かもしれません。先に書いた、いろいろな便利そうなフィーチャーは、ほんと見逃せない点もありますから!
ヨーロッパ局はこのDegiQSLをログでそのまま使っている局が多いのかもしれません。
久々の新しい事への挑戦で、右往左往ありましたが、最終的にうまくゆきました。
それにしてもCopilotにはお世話になりっぱなしです。Hi!

つづく?