アマチュア無線QSOログの形式変換Webツール。
日付範囲によるフィルタリングと、複数のログ形式間の相互変換に対応。
- CSVファイルの読み込み — ドラッグ&ドロップまたはファイル選択
- 日付範囲フィルタ — 開始日・終了日を指定してレコードを絞り込み
- プレビュー — 変換前にデータをテーブルで確認(先頭100件)
- 形式変換&ダウンロード — 選択した出力形式でCSVをダウンロード
- 拡張可能な設計 — 新しいログ形式を簡単に追加可能(Strategy Pattern)
| 形式 | 説明 | エンコーディング | ヘッダー |
|---|---|---|---|
| Hamlab QSO管理 | Hamlab のQSOデータCSV | UTF-8 | あり(27カラム) |
| Turbo HAMLOG | Turbo HAMLOG のCSVエクスポート | Shift_JIS (CP932) | なし(16カラム) |
Hamlab → Turbo HAMLOG 変換時のQSLマッピング
| Hamlab QSL | HAMLOG QSLフラグ | 備考 |
|---|---|---|
Direct |
D |
ダイレクト |
JARL |
J |
JARL経由 |
eQSL |
E |
eQSL |
No-CARD |
N |
カード不要 |
| (空) | TimeZone値 (J, U) |
デフォルト |
- PHP 8.3+
- Composer
- Node.js / Yarn
- Laravel Herd (推奨)
git clone https://github.com/itcom/hamlab-logtool.git logtool
cd logtool
composer install
cp .env.example .env
php artisan key:generate
yarn install
yarn run buildLaravel Herd を使用している場合は自動的に https://logtool.test で利用可能です。
# Herdなしの場合
composer devapp/Services/LogConverter/
├── FormatInterface.php # 共通インターフェース
├── QsoRecord.php # 中間データ構造(DTO)
├── HamlabFormat.php # Hamlab形式の読み書き
├── HamLogFormat.php # Turbo HAMLOG形式の読み書き
└── ConverterService.php # 変換オーケストレーション
app/Http/Controllers/
└── ConverterController.php # アップロード/プレビュー/変換
resources/views/
└── converter.blade.php # UI(ダークテーマ)
入力CSV → [FormatA.parse()] → QsoRecord[] → [FormatB.export()] → 出力CSV
全形式が共通の QsoRecord DTO を経由するため、N形式間の相互変換が O(N) の実装で実現できます。
FormatInterfaceを実装するクラスを作成:
class AdifFormat implements FormatInterface
{
public function getName(): string { return 'adif'; }
public function getDisplayName(): string { return 'ADIF'; }
public function getFileExtension(): string { return 'adi'; }
public function parse(UploadedFile $file): Collection { /* ... */ }
public function export(Collection $records): string { /* ... */ }
// ...
}ConverterServiceのコンストラクタに登録:
public function __construct()
{
$this->registerFormat(new HamlabFormat());
$this->registerFormat(new HamLogFormat());
$this->registerFormat(new AdifFormat()); // ← 追加
}UIは自動的に新しい形式を入力/出力セレクタに表示します。
- 形式を選択 — 入力形式と出力形式をドロップダウンから選択
- CSVをアップロード — ドラッグ&ドロップまたはクリックでファイルを選択
- 日付フィルタ(任意) — 開始日・終了日を設定して特定期間を抽出
- プレビュー — 「プレビュー」ボタンで変換前のデータを確認
- ダウンロード — 「変換してダウンロード」ボタンで変換済みCSVを取得
- Laravel 13 — PHP Webフレームワーク
- TailwindCSS v4 — ユーティリティファーストCSS
- Vanilla JS — フロントエンド(fetch API, Blob download)
- Vite — フロントエンドビルド
MIT

