今日の作業

Web Logbook の根幹となるユーザー認証システムと、自局設定画面を構築しました。

マルチユーザー対応

Web Logbook は複数のアマチュア無線家が登録して使うサービスです。各ユーザーのデータは完全に分離されます。
ユーザーA(JA1XXX)── 自分のログ・設定・免許情報
ユーザーB(JA2YYY)── 自分のログ・設定・免許情報
セッションベースの認証で、ログイン/ログアウト/新規登録を実装しました。パスワードは password_hash() で安全にハッシュ化して保存しています。

データベース設計

今回作成したテーブルは4つです。

logbook_users(ユーザー)

  • メールアドレス、パスワード、コールサイン
  • デフォルトのQTH、グリッドロケーター、出力、バンド、モード
  • 時刻表示設定(JST/UTC切替)

logbook_operator_license(従事者免許)

ユーザーと1:多の関係。第一級〜第四級の資格情報を複数登録可能。

logbook_station_license(無線局免許)

ユーザーと1:多の関係。固定局と移動局で別々の免許を持つ方も多いので、複数登録に対応。

logbook_equipment(運用設備)

リグ、アンテナ、その他の設備を自由に登録可能。デフォルト設定も可能で、QSOログ入力時に自動反映されます。

総務省API連携

総務省の無線局等情報検索 Web-API と連携する機能を実装しました。

無線局免許の登録画面で「総務省データベースから取得」ボタンを押すと、コールサインをもとに以下の情報を自動取得できます:

  • 免許年月日・有効期限
  • 許可周波数帯・電波形式
  • 空中線電力
  • 管轄総合通信局
GET https://www.tele.soumu.go.jp/musen/list?ST=1&OW=AT&OF=2&DA=1&MA=コールサイン
REST APIでJSON形式のレスポンスが返ってくるので、PHPのプロキシ経由で取得してフロントエンドに渡しています。

自局設定画面

スマホで使いやすいモバイルファーストのUIで設定画面を作りました。

1. 基本情報 — コールサイン、名前、QTH、グリッドロケーター、デフォルト設定 2. 従事者免許 — 資格、従免番号、交付日(追加/編集/削除) 3. 無線局免許 — コールサイン、局種別、免許情報、総務省API連携(追加/編集/削除) 4. 運用設備 — リグ、アンテナ等の登録(追加/編集/削除)

技術的なポイント

  • セキュリティ: プリペアドステートメント、パスワードハッシュ、CSRF対策
  • データ分離: 全テーブルに user_id を持たせ、SQLでも必ずユーザーIDでフィルタ
  • モバイルUI: 600px幅のコンテナ、タッチしやすいボタンサイズ、スティッキーヘッダー

次にやること

  • QSOログ入力画面の作成
  • ログ一覧・検索機能
  • ADIFエクスポート
いよいよ Web Logbook の核心部分、交信ログの入力画面に取りかかります。 73!