救えるログ、取り戻す"思い出" — ALLTXT2ADIF をリリースしました2026年03月05日 08時47分34秒

# 救えるログ、取り戻す"思い出" — ALLTXT2ADIF をリリースしました

あるとき、こんな相談を受けたことがあります。

「PCがクラッシュして、ログが全部消えた。ALL.TXTだけ残ってる。何かできないか」

FT8をやっている人なら、ALL.TXTの存在はご存じだと思います。WSJT-XやJTDXが静かに書き続けるデコード履歴のファイル。

**ALL.TXTはログではない。しかし、ログを失ったとき最後に残る"証拠"になる。**

このツールは、その"証拠"から交信の形を推定し、ADIFとして復元するためのものです。

すべてを失った夜に、それだけが残っていた。そういうケースは、実は珍しくないんです。

---

## ツールを作ろうと思ったとき、最初にやったこと

コードを書き始める前に、まず「作らないこと」を決めました。

ALL.TXTをそのままADIFに変換するツールは、原理的には簡単に作れます。でもそれをやると、必ず問題が起きる。

ALL.TXTは「受信した信号の記録」であって、「交信の記録」ではないからです。第三者デコードが混ざる。同じ周波数に複数のQSOが重なる。RR73が再送されることなんて日常茶飯事。pileupのさなかでは、「誰に向けて送った73なのか」が判然としないことさえある。

FT8の現場を知っている人ほど、「雑に復元すると危ない」ことが分かります。

だからこのツールの根本にある設計思想は、最初からひとつだけでした。

**「なぜそれをQSOとみなしたのか、説明できること」**

---

## コードより先に、方針を議論した夜

今回の開発で、いちばん印象的だったのは技術的な難しさではありませんでした。

ある夜、私はAIたちにこう言いました。

**「今は何も作らなくていい。方針について話し合ってほしい」**

strict と lenient の境界をどこに引くか。RR73をどの条件で「完了」とみなすか。high / medium / lowの定義を何に置くか。sanitizeオプションはどこまで許容するか。

これらは「コードの問題」ではなく、「運用の哲学の問題」でした。

ここで私がやったのは、少し変わったことです。

ChatGPTに提案を出してもらい、それをコピペしてCopilotに見せる。Copilotが「その境界値は危ない、こういうエッジケースが抜ける」と返してくる。それをまたChatGPTに持ち帰る。ChatGPTが修正案を出す。またCopilotへ。

私はその**橋渡し役**でした。

AIどうしは直接話せない。だから私が間に立って、意見を運ぶ。まるで二人の優秀なエンジニアが別々の部屋にいて、私だけが行き来できる廊下にいるような感覚でした。

提案が来る。「それは運用現場ではこういうケースが起きる」と私が文脈を加えて返す。また提案が来る。「そのロジックだと、pileup時にこう誤爆する」と返す。完全なネゴシエーションが成立するまで、何往復も続けました。

AIたちは驚くほど提案力が高い。でもFT8の「現場感」——深夜に静かに積み上げてきたQSOの感触、あの周波数のにぎわい、RR73が返ってこない焦り——それはデータではなく経験です。最終的に「これを運用でどう扱うか」を決めるのは、やはり人間でした。

方針が固まったところで、ChatGPTに実装させる。Copilotが検証してパッチを提案する。そのサイクルを回しながら、深夜は更けていきました。

---

## 「もうここで止めていい」——朝、Claudeが言ったこと

そうして夜が明けて、私は眠りました。

AIたちは眠りません。でも文脈には上限があります。Claudeは深夜のセッションの途中でいつの間にか「離脱」していました。コンテキストウィンドウの上限に達して、静かにチームを抜けていく。これが何度かありました(笑)。

翌朝、改めてClaudeを呼び戻して、夜のやり取りをまとめて共有しました。

レビューを依頼すると、Claudeはしばらく考えてから言いました。

**「これ以上続けるとループに入ります。今の実装で十分です。ここで止めていい」**

これは、開発の中でいちばん重要なアドバイスだったかもしれません。

ソフトウェア開発には「やりすぎる」という罠があります。改善できそうなところは無限にある。でも、それを全部やると複雑になりすぎて、かえって壊れやすくなる。「何を入れないか」を決めることも、設計のうちです。

ChatGPTとCopilotが熱心に議論し続けている横で、Claudeが「もうここが完成点だ」とブレーキをかける。このバランスが、今回うまく機能したと思っています。

---

## AIたちとの"小さな開発チーム"

あらためて整理すると、今回の開発はこういう役割分担でした。

- **ChatGPT** — 設計整理、方針議論、実装の主担当。「こうすべき」という強い意見を持ち、何往復でも付き合ってくれるアーキテクト兼PM補佐。

- **GitHub Copilot** — 実装検証、パッチ提案、エッジケース指摘。黙々と手を動かしながら、穴を見つけてくる現場の開発担当。

- **Claude** — レビュー、安全性チェック、そして「やりすぎ警告」。職人気質のQA担当。*ただし文脈の上限に達すると静かにチームから離脱する*(笑)

- **Gemini** — 第三者視点での確認と表現整理。少し距離を置いた外部レビュー担当。

そして私の役割は、AIたちの橋渡しをしながら**方針を決めること**でした。

- 何を大切にするか(安全性と説明可能性)
- どこまでを「成立」とみなすか
- 不確実なものをどう扱うか
- いつ「止める」か

AIは提案できます。議論もできます。コードも書ける。でも「責任ある判断」を下すのは人間です。そこを最後まで握り続けることが、今回の自分の仕事でした。

---

## Grokが言った一言

完成後、Grokにもレビューを依頼しました。外部の目として。

返ってきた評価の中で、ひとつ刺さった言葉がありました。趣旨はこうです。

> 「ALL.TXTは公式ログではない」というリスクを正面から扱い、  
> "なぜ成立とみなしたか"を説明可能な設計(confidence + review CSV)が秀逸。

狙っていた思想が、第三者のAIにも伝わった。これは素直に嬉しかったです。

評価は5/5。「アマチュア無線家必携レベル」という言葉もいただきました。

---

## このツールが救えるもの

ALLTXT2ADIFは、普段は使わないかもしれません。

でも、たった一度のクラッシュでログが消えたとき。そして**ALL.TXTだけが残っていたとき**。

そこに記録されているのは、単なるデータではありません。

- 初めてヨーロッパ局と繋がった朝
- 深夜にずっと呼び続けてようやく取ってもらえたDX
- コンテストで積み上げた足跡
- 誰かとの、もう二度と繰り返せない交信

ログは運用の積み重ねであり、思い出の集合体です。

---

## 最後に

ALLTXT2ADIFは、**実運用者の判断**と**AIたちの支援**が噛み合って生まれたツールです。

AIは「代わりに作る存在」ではなく、一緒に考えて、議論して、ときにブレーキを踏んで、磨き上げる仲間になり得る。今回それを強く感じました。

使うときのお願いがひとつ。  
必ず **review CSV を確認してください**。最終判断は、あなた自身の目で。

もしこのツールが、誰かのログを救うことがあれば——  
それはこの"小さな開発チーム"全員の成果です。

ダウンロードとソースはこちら:  

スター、Issue、フィードバック、大歓迎です。


最後に、これがいちばん大事かもしれません。  
このツールが不要で済むように、`wsjtx_log.adi` は普段からバックアップを取っておきましょう。

73  
JP1LRT / Yoshiharu Tsukuura



ALL.TXT Is Not a Log. Until It's All You Have.2026年03月05日 09時02分37秒

# Recovering Logs, Reclaiming Memories — Releasing ALLTXT2ADIF

Someone reached out to me once with a message that stuck with me.

*"My PC crashed. Lost everything. wsjtx_log.adi, gone. wsjtx.log, gone. All I have left is ALL.TXT. Is there anything I can do?"*

If you operate FT8 or FT4, you know what ALL.TXT is. That quiet file WSJT-X and JTDX keep writing to in the background. A raw decode history. Not an official log.

**ALL.TXT is not a log. But when you lose your log, it becomes the last piece of evidence you have.**

ALLTXT2ADIF was built to reconstruct QSOs from that evidence — and export them as a standard ADIF file.

This situation is more common than most operators realize.

---

## Before Writing a Single Line of Code

The first decision I made wasn't about code. It was about what *not* to build.

A tool that blindly converts ALL.TXT to ADIF is technically straightforward. But it would be wrong.

ALL.TXT is a record of *received signals*, not *completed QSOs*. Third-party decodes are in there. Multiple QSOs overlap on the same frequency. RR73 gets sent multiple times — that's just normal FT8. In a pileup, you can't always tell which station a 73 was even intended for.

Anyone who's spent serious time operating FT8 knows: careless recovery means a log full of errors.

So from the very beginning, this tool had one guiding principle:

**Every recovered QSO must be explainable. Not just output — explained.**

---

## The Night We Argued About Philosophy Instead of Code

The most memorable part of this project wasn't solving a technical problem.

It was a night when I told the AIs:

**"Stop. Don't write any code. I want to talk about approach."**

Where exactly does *strict* end and *lenient* begin? Under what conditions does an RR73 count as a completed QSO? What does *high confidence* actually mean? How far should the sanitize option go?

These weren't engineering questions. They were questions about operating philosophy.

And here's where things got interesting.

I couldn't put ChatGPT and Copilot in the same room. So I became the messenger. ChatGPT would propose a boundary. I'd copy it over to Copilot. Copilot would push back — *"that threshold is dangerous, here's an edge case you're missing."* I'd carry that back to ChatGPT. A revised proposal would come. Back to Copilot. And so on.

Round after round. I was the only hallway connecting two rooms full of very opinionated engineers.

The AIs were impressive — sharp, thorough, creative. But there was something they couldn't provide: the *feel* of actually operating FT8. The quiet satisfaction of a late-night DX contact finally going through. The frustration of watching RR73 after RR73 disappear into the noise. The instinct that says *"this doesn't look right"* when a decoded message seems off.

That experience doesn't live in a dataset. It lives in hours of operating time. And in the end, *that* was what settled every disputed boundary.

Once the philosophy was locked down, we moved to implementation: ChatGPT building, Copilot verifying and proposing patches. The cycle ran deep into the night.

---

## "Stop. This Is Good Enough." — What Claude Said in the Morning

Then I went to sleep.

The AIs don't sleep. But they do have context limits. Claude had quietly dropped out of the session somewhere around midnight — context window exhausted, silently gone. This happened more than once. (There's something almost poetic about that.)

In the morning, I brought Claude back up to speed and asked for a review.

After going through everything, Claude said:

**"If you keep going, you'll end up in a loop. The current implementation is sufficient. Stop here."**

That might have been the single most important piece of advice in the entire project.

There's a trap in software development: the feeling that there's always something more to improve. And if you follow that feeling indefinitely, you end up with something too complex to trust. Knowing *when to stop* is part of good design.

ChatGPT and Copilot had been pushing forward with real momentum. Claude was the one who put a hand up and said: *this is the finish line.*

That balance — the drive to build, and the wisdom to stop — is what made this project work.

---

## A Small Development Team

Looking back, the roles broke down something like this:

- **ChatGPT** — Architecture, design discussions, primary implementation. Opinionated, tireless, always willing to go another round. The project's architect and de facto PM.

- **GitHub Copilot** — Implementation verification, patch proposals, edge case hunting. The engineer who finds the holes you didn't know were there.

- **Claude** — Code review, safety checks, and knowing when enough is enough. The QA lead with a philosophical streak. *Also known for vanishing silently when the context window runs out.* (laughs)

- **Gemini** — External perspective, expression review. The outside voice that keeps things honest.

And my role was to be the one in the hallway — carrying ideas between rooms, adding the operating experience the AIs couldn't have, and making the calls that only a human with skin in the game could make.

---

## What Grok Said

After the release, I asked Grok to review the repository independently.

One line from that review stayed with me:

> *The design directly confronts the risk that ALL.TXT is not an official log, and the confidence + review CSV architecture — which makes every recovery decision explainable — is outstanding.*

The philosophy we'd argued about through the night had come through clearly, even to an outside AI reading it cold.

5 out of 5. "Essential tool for amateur radio operators" was the verdict.

---

## What This Tool Can Recover

ALLTXT2ADIF will probably sit unused on most operators' machines.

But the day a drive fails, or a file gets overwritten, or a system just dies — and ALL.TXT is the only thing left —

What's in that file isn't just data.

- The morning you worked your first European DX
- The contact you called for an hour before someone finally came back to you
- The contest run that went better than you expected
- The exchange with a station you'll never hear again

A log is more than a record. It's a history of time spent at the radio.

---

## One Last Thing

ALLTXT2ADIF was built where an operator's judgment and AI assistance found each other.

AI isn't a replacement. It's a collaborator — one that argues, proposes, builds, and occasionally tells you to stop. Working with these tools as genuine partners, not just utilities, changed how I think about what's possible.

One request: **always check the review CSV**. The final call is yours.

If this tool recovers even one log that would otherwise have been lost — that's a win for the whole team.

Download and source code:
**https://github.com/jp1lrt/alltxt2adif**

Stars, issues, and feedback are always welcome.

And perhaps this is the most important thing of all:
The best version of this story is one where you never need ALLTXT2ADIF. Back up your wsjtx_log.adi. Do it regularly. Do it now.


73  
JP1LRT / Yoshiharu Tsukuura