公開日 2025年9月5日 最終更新日 2025年9月5日 by JE2UFF_Toshi
おはようございます。今朝は台風15号の影響で、大雨の朝になっております。風は殆ど無いですが、大雨の中でも時折タライをひっくり返した用に集中的に豪雨が来ます。
現在四国沖にいるようですが、これからこちらに向かって来る進路になっておりますね。今回は雨台風と言う事なので大雨が心配です。予報では大雨のピークは午前中とのことですが、進路図を見る限り今日1日はずっと大雨の感じですね。

無線の方もコンディションが上がって来ておりパイルが激しくなってきております。パイルがなかなか抜けないので、日頃課題と思っていた事に手を付けました。
毎月QSO実績を集計しているのですが、これが以外と面倒くさい。手順としては、
- 対象月のQSOをLogからExportする
- バンド事に並び替えを実施
- バンド毎のQSO数の集計を行う
- 集計数字をExcelに入力し円グラフを作成する
- 作成された円グラフを定型の形に修正する
- 出来上がったグラフを画像化する
作業としてはたいした内容ではないのですが、集計したり入力したりと数が少ない場合は問題無いですが、1000QSOを超えてくると微妙に数値が合わなくなったりして再計算を何度かすることになります。
この作業のうち②~④迄を自動で実施してくれたら非常に簡単になるので、この部分を自動化するプログラムを考える事にしました。
しかし、自分はプログラマーではないので自力でコードを書くことはかなり困難ですので、過去にCQ誌用のDXレポートの自動化を行ったと同じように、Copilotにお願いしてコードを作成してもらい、それをデバッグしながら自分の求める形になるように追い込みました。
まずは8月の実績計算用に、既にExportした8月分のADIFファイルを開いて集計対象となる項目を選びます。
自分の使用しているのはDXkeeperなので、このアプリでは<BAND_RX:3>と言う項目が集計対象となるのが解りましたので、ADIFファイルからこの<BAND_RX:3>の数値をバンド順並び替え、更に各バンドの数値を集計し合計値を大きい順に並び替えます。
それがExcelのbookに入力する数値となります。
これらの一連動作を、Pythonで指定したファイルを開き集計後Excelを起動してbookに書込、ベースの円グラフを作成する迄を作って貰い、後で修正ができるようにExcelのファイルとして保存するようにしました。
文章で書くと直ぐに終わりますが、最初はPythonで集計したデータをPythonのグラフ処理ライブラリを使用して処理したのですが、Excelのグラフほど見栄えが良くないので、途中からExcel連携に切り替えたのです。
データの引き渡しが上手くいかなかったり、勝手にExcelが閉じてしまったりとトラブルは沢山有りましたが、Copilotに細かな指示を出してなんとか目標とする作業を自動化することができました。
これを使うと、月集計用に作ったのですが年間集計も可能になります。
最後は、いちいちPowerShellからPythonで指示を出すのは大変なので、PythonからExeファイルへ変換する処理を行い、Windows用のExeファイルを作成しました。
これを使うと、集計作業が一切なくなるので1分も掛からずにベースの円グラフが作成されます。
後はこれを見栄えの良いように加工すれば完了。今まで何十分も掛かっていた作業が10分掛からずにできるようになりました。
Copilotを使用すれば、プログラミング言語知識が無くてもアプリが作れて最高ですね。
これがCopilotに作成してもらったコードの一部です。
import re
from collections import Counter
from tkinter import Tk, filedialog, simpledialog
import pandas as pd
import win32com.client as win32
import os
import time
def select_adif_file():
root = Tk()
root.withdraw()
return filedialog.askopenfilename(
title="ADIFファイルを選択してください",
filetypes=[("ADIF files", "*.adi"), ("All files", "*.*")]
)
def extract_band_rx_values(adif_text):
return re.findall(r"<BAND_RX:\d+>([^<]+)", adif_text)
def main():
adif_file_path = select_adif_file()
if not adif_file_path:
print("ファイルが選択されませんでした。")
return
with open(adif_file_path, 'r', encoding='utf-8') as file:
adif_content = file.read()
band_rx_values = extract_band_rx_values(adif_content)
if not band_rx_values:
print("BAND_RXのデータが見つかりませんでした。")
return
band_counter = Counter(band_rx_values)
total = sum(band_counter.values())
data = [
{"Band": band, "Count": count, "Ratio (%)": round(count / total * 100, 1)}
for band, count in band_counter.items()
]
df = pd.DataFrame(data)
df_sorted = df.sort_values(by="Count", ascending=False)
root = Tk()
root.withdraw()
title = simpledialog.askstring("Excelファイル名", "保存するExcelファイル名を入力してください(拡張子不要):")
if not title:
title = "BAND_RX集計結果"
Windows PCにPythonさえインストールされていれば、テキストエディタとPowerShellで簡単にできますので素晴らしい。Window用のプログラミングアプリは不要なので、何が必要な事を自動化したりするのは便利です。
仕様書さえ出来れば、後は全てCopilotがやってくれるので、自分はできた物を仕様通りか評価するだけです。
すごい時代になったですね。
にほんブログ村 ↑ブログランキング参加中。クリックでランキングが上がりますので、ご支援をお願いします。
