【景品表示法に基づく表記】

本サイトのコンテンツには、標品プロモーションが含まれている場合があります。

DIARY PR

[DIARY] CQ誌用DXレポート集計アプリを作ってみた

キーボード
記事内に商品プロモーションを含む場合があります

Loading

公開日 2025年3月23日  最終更新日 2025年3月23日 by JE2UFF_Toshi

 

おはようございます。昨日は風は強いですが、暖かな1日になりました。一昨日は風が強く寒かったですが、昨日は全然寒くなくむしろ暑いくらい。車に乗っているとエアコンの気温設定を思わす下げてしまいました。

 

 

さて、2014年より前はCQ誌にDXレポートを提出しておりました。遠い昔にはRTTYでベストレポートを貰った思い出もあります。

しかし、ここの所全然出していないので、アクティビティの為にレポートでも出そうかと考えました。しかし、レポートの時間はJSTなんですよね。

現在、DXkeeperを使用しており当然時間はUTC、周波数もMHz設定なのでそれらを変換しなければならないですが、自分でせこせこマニュアル処理をするのは面倒くさい。

なんとかならないかと考えたのが生成AIの活用。

今回もまたCopilotと一緒に変換アプリを作成しました。

 

DXkeeperから吐き出されるadifファイルはこんな内容になっております。

<Band:3>10M <Call:6>DL5NAV <APP_DXKEEPER_DXCCPREFIX:2>DL <DXCC:3>230 <Freq:9>28.180476 <Mode:4>MFSK <SUBMODE:3>FT4 <Operator:6>JE2UFF <QSO_DATE:8>20250316 <TIME_OFF:6>081707 <TIME_ON:6>081622 <RST_Rcvd:3>-05 <RST_Sent:3>-11 <TX_PWR:5>100.0 <Comment:25>FT4 Sent: -11 Rcvd: -05 <CONT:2>EU <ITUZ:2>28 <CQZ:2>14 <GRIDSQUARE:6>JO33tf <PFX:3>DL5 <STATION_CALLSIGN:6>JE2UFF <OWNER_CALLSIGN:6>JE2UFF <A_INDEX:2>18 <K_INDEX:1>2 <SFI:3>178 <DISTANCE:6>9121.0 <LAT:11>N053 13.750 <LON:11>E007 37.500 <FREQ_RX:9>28.180476 <BAND_RX:3>10M <QSO_COMPLETE:1>Y <APP_DXKeeper_LotW_MEMBER:1>Y <APP_DXKeeper_EQSL_MEMBER:1>A <EQSL_QSL_SENT:1>Y <EQSL_QSL_RCVD:1>R <EQSL_QSLSDATE:8>20250316 <LOTW_QSL_SENT:1>Y <LOTW_QSL_RCVD:1>R <LOTW_QSLSDATE:8>20250316 <CLUBLOG_QSO_UPLOAD_STATUS:1>Y <CLUBLOG_QSO_UPLOAD_DATE:8>20250316 <APP_DXKeeper_ClubLog_QSL_Rcvd:1>R <APP_DXKEEPER_MY_QTHID:8>Shizuoka <EOR>
<Band:3>10M <Call:5>UW8SM <APP_DXKEEPER_DXCCPREFIX:2>UT <DXCC:3>288 <Freq:9>28.180476 <Mode:4>MFSK <SUBMODE:3>FT4 <Operator:6>JE2UFF <QSO_DATE:8>20250316 <TIME_OFF:6>081852 <TIME_ON:6>081807 <RST_Rcvd:3>-04 <RST_Sent:3>-12 <TX_PWR:5>100.0 <Comment:25>FT4 Sent: -12 Rcvd: -04 <CONT:2>EU <ITUZ:2>29 <CQZ:2>16 <GRIDSQUARE:6>KN28iv <PFX:3>UW8 <STATION_CALLSIGN:6>JE2UFF <OWNER_CALLSIGN:6>JE2UFF <A_INDEX:2>18 <K_INDEX:1>2 <SFI:3>178 <DISTANCE:6>8619.0 <LAT:11>N048 53.750 <LON:11>E024 42.500 <FREQ_RX:9>28.180476 <BAND_RX:3>10M <QSO_COMPLETE:1>Y <APP_DXKeeper_LotW_MEMBER:1>Y <APP_DXKeeper_EQSL_MEMBER:1>A <EQSL_QSL_SENT:1>Y <EQSL_QSL_RCVD:1>R <EQSL_QSLSDATE:8>20250316 <LOTW_QSL_SENT:1>Y <LOTW_QSL_RCVD:1>Y <LOTW_QSLSDATE:8>20250316 <LOTW_QSLRDATE:8>20250317 <CLUBLOG_QSO_UPLOAD_STATUS:1>M <CLUBLOG_QSO_UPLOAD_DATE:8>20250316 <APP_DXKeeper_ClubLog_QSL_Rcvd:1>R <APP_DXKeeper_LotWConfirmation:3>GMZ <APP_DXKEEPER_MY_QTHID:8>Shizuoka <EOR>
<Band:3>10M <Call:5>SQ9OI <APP_DXKEEPER_DXCCPREFIX:2>SP <DXCC:3>269 <Freq:9>28.180476 <Mode:4>MFSK <SUBMODE:3>FT4 <Operator:6>JE2UFF <QSO_DATE:8>20250316 <TIME_OFF:6>082037 <TIME_ON:6>082007 <RST_Rcvd:3>+12 <RST_Sent:3>-05 <TX_PWR:5>100.0 <Comment:25>FT4 Sent: -05 Rcvd: +12 <CONT:2>EU <ITUZ:2>28 <CQZ:2>15 <GRIDSQUARE:4>JO90 <PFX:3>SQ9 <STATION_CALLSIGN:6>JE2UFF <OWNER_CALLSIGN:6>JE2UFF <A_INDEX:2>18 <K_INDEX:1>2 <SFI:3>178 <DISTANCE:6>8810.0 <LAT:11>N050 30.000 <LON:11>E019 00.000 <FREQ_RX:9>28.180476 <BAND_RX:3>10M <QSO_COMPLETE:1>Y <EQSL_QSL_SENT:1>Y <EQSL_QSL_RCVD:1>R <EQSL_QSLSDATE:8>20250316 <LOTW_QSL_SENT:1>Y <LOTW_QSL_RCVD:1>R <LOTW_QSLSDATE:8>20250316 <CLUBLOG_QSO_UPLOAD_STATUS:1>Y <CLUBLOG_QSO_UPLOAD_DATE:8>20250316 <APP_DXKeeper_ClubLog_QSL_Rcvd:1>R <APP_DXKEEPER_MY_QTHID:8>Shizuoka <EOR>
<Band:3>10M <Call:5>PD0LK <APP_DXKEEPER_DXCCPREFIX:2>PA <DXCC:3>263 <Freq:9>28.180476 <Mode:4>MFSK <SUBMODE:3>FT4 <Operator:6>JE2UFF <QSO_DATE:8>20250316 <TIME_OFF:6>082252 <TIME_ON:6>082222 <RST_Rcvd:3>-08 <RST_Sent:3>-06 <TX_PWR:5>100.0 <Comment:25>FT4 Sent: -06 Rcvd: -08 <CONT:2>EU <ITUZ:2>27 <CQZ:2>14 <GRIDSQUARE:4>JO21 <PFX:3>PD0 <STATION_CALLSIGN:6>JE2UFF <OWNER_CALLSIGN:6>JE2UFF <A_INDEX:2>18 <K_INDEX:1>2 <SFI:3>178 <DISTANCE:6>9382.0 <LAT:11>N051 30.000 <LON:11>E005 00.000 <FREQ_RX:9>28.180476 <BAND_RX:3>10M <QSO_COMPLETE:1>Y <EQSL_QSL_SENT:1>Y <EQSL_QSL_RCVD:1>R <EQSL_QSLSDATE:8>20250316 <LOTW_QSL_SENT:1>Y <LOTW_QSL_RCVD:1>R <LOTW_QSLSDATE:8>20250316 <CLUBLOG_QSO_UPLOAD_STATUS:1>Y <CLUBLOG_QSO_UPLOAD_DATE:8>20250316 <APP_DXKeeper_ClubLog_QSL_Rcvd:1>R <APP_DXKEEPER_MY_QTHID:8>Shizuoka <EOR>
<Band:3>10M <Call:4>OS4K <APP_DXKEEPER_DXCCPREFIX:2>ON <DXCC:3>209 <Freq:9>28.180476 <Mode:4>MFSK <SUBMODE:3>FT4 <Operator:6>JE2UFF <QSO_DATE:8>20250316 <TIME_OFF:6>082407 <TIME_ON:6>082322 <RST_Rcvd:3>-06 <RST_Sent:3>-10 <TX_PWR:5>100.0 <Comment:25>FT4 Sent: -10 Rcvd: -06 <CONT:2>EU <ITUZ:2>27 <CQZ:2>14 <GRIDSQUARE:6>JO21dg <PFX:3>OS4 <STATION_CALLSIGN:6>JE2UFF <OWNER_CALLSIGN:6>JE2UFF <A_INDEX:2>18 <K_INDEX:1>2 <SFI:3>178 <LAT:11>N051 16.250 <LON:11>E004 17.500 <FREQ_RX:9>28.180476 <BAND_RX:3>10M <QSO_COMPLETE:1>Y <APP_DXKeeper_LotW_MEMBER:1>Y <EQSL_QSL_SENT:1>Y <EQSL_QSL_RCVD:1>R <EQSL_QSLSDATE:8>20250316 <LOTW_QSL_SENT:1>Y <LOTW_QSL_RCVD:1>Y <LOTW_QSLSDATE:8>20250316 <LOTW_QSLRDATE:8>20250316 <CLUBLOG_QSO_UPLOAD_STATUS:1>M <CLUBLOG_QSO_UPLOAD_DATE:8>20250316 <APP_DXKeeper_ClubLog_QSL_Rcvd:1>R <APP_DXKeeper_LotWConfirmation:3>GMZ <APP_DXKEEPER_MY_QTHID:8>Shizuoka <EOR>

全てが<EOR>迄で1つのQSOデータとなっております。これから、次の仕様をCopilotの指示して変換用アプリを作っていきます。

要求仕様配下の通り。

  1. 日時がUTCなのでJSTに変換し、日付は西暦を削除し月と日の間に/を追加する。時間も秒の単位は削除し4桁の時間にする。
  2. 周波数はMHzの単位になっているのでKHzの単位に変換し、小数点以下は削除する。
  3. モードは指定した英字に変換し、周波数の最後に付加する。
  4. DXレポートに必要なコールサインと日時、周波数、モードを抽出して、バンド毎に並び替えを実施しながら、第2キーとして日付、第3キーとして時間の合計3つで並び替えを実施。
  5. 1エンティティ1局なので、ソートしたデータから同一エンティティの場合は、各バンドの最初の1局以外は全て削除する。
  6. 変換前のadifファイルは、エクスプローラーを開いて自分で選択できるようにする。
  7. 変換後のデータは、エクスプローラーを使い自分の好きな名前を付加したテキストファイルで保存する。

Copilotに何回も指示をしながら、微妙な違いを直したりしていきなんとかプログラムは完成しました。

 

adifファイルからDXレポート用テキストファイルに変換された中身はこんな感じです。

OZ3MC 03/20 1649 21076F JE2UFF
R0SK 03/20 1653 21076F JE2UFF
OE3KJO 03/20 1655 21076F JE2UFF
VU4AX 03/13 1612 21092F JE2UFF
HF6FIRAC 03/06 1819 21140X JE2UFF
YL2CI 03/06 1820 21140X JE2UFF
R9BT 03/06 1821 21140X JE2UFF
KP3V 03/06 0824 21141X JE2UFF

とりあえずはCQ誌で指定されている内容になっているかと思います。

最後に、この変換プログラムはPythonで作成しておりますので、いちいちPower Shellかターミナルで実行しなければならず、操作が面倒くさいのでPythonプログラムをWindows用exeファイルに変換するプログラムを使用し、Windowsで普通に使えるexeファイルを作りました。

 

ショートカット

ショートカットを作成し、デスクトップに置くことで簡単にCQ誌用のレポートが作成できるようになりました。

レポートはテキストファイルになっているので、最終確認もできるし雑魚のような不要なレポートも削除することができるので便利です。

 

生成AIを使用すると、ホント何でもできますね。プログラミングの知識が浅くても仕様自体がしっかりでき、完成イメージを思い浮かべることができれば、生成AIとの協同作業で簡単に目的を達成することができます。

「仕様をつくる=頭の中の整理」にも繋がるので、定期的に生成AIと対話すると良いですね。

 

 

これで来月からDXレポートを提出するようにします。

 

 

 

ABOUT ME
JE2UFF_Toshi
年々若者のアマチュア無線人口が減る中、何時までも現役でやり続けたく、若き日の想い出を胸に、熱き思いを忘れないように「燃えよDX」と言うタイトルを付けました。単身赴任以降、過熱するDXスロットゲームに違和感を覚え、主力だったHFのアンテナも下ろしてしまったこともあり、燃えるような情熱からいろんな楽しみ方が有るんだ。そう思えるようになって、タイトルもむせん見聞録に変更しコツコツマイペースでやってます。 最近は6mの面白さのハマっています。
部材購入に困った時は!

digital-dxer.comからのお知らせ

アマチュア無線をやってて困ったことないですか?
何か作りたいが工具が無い、アンテナ作りたいけど材料が無い

そんな時、工具から小さな小物材料、はたまた無線機からアンテナまで何でも簡単購入ができるYahoo!ショッピングが便利です。
クリックすれば後は到着を待つだけ、近くて簡単便利なYahoo!ショッピング。

 

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

コメントは日本語で入力してください。(スパム対策)

CAPTCHA