今日の作業
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エクスポート
