AIと作る弾道シミュレータ
このページは作業中
環境
Claude Code
JavaScript
HTML5 + Canvas
モチベーション
狩猟は主に大物猟でスラッグ弾を使っている
サボットスラッグが高いのでハンドロードを始める(予定)
弾速、弾の形状、面積で弾道が変わる→ドロップが変わる→弾道計算したくなる
自分で作るのは大変…そうだ、AIにやらせよう!コンピュータの原点回帰
実装仕様
日本語インターフェース
ブラウザアプリ(ネットワーク接続不要)
シンプルなUIと設定パラメタ
作ってる人の仕様
高卒(普通科)
コンピュータとネットワークは好きだけど数学は苦手
質量、重力、空気抵抗などのある程度の基礎知識はある
1stバージョン
AIにパラメタを書かせて作った
UIの指示出しが大変になったので破棄
2ndバージョン(公開中のもの)
飛翔体、射出条件、環境条件の3要素に分解
このときはまだ弾道モデルの知識がない
3D表現はやめて2Dに切り替え
CSVダウンロード機能を追加
開発ワークフロー
最初期
基本仕様をmarkdown形式で記述
入力パラメタ、表現、言語、単位等
ガードレールの整備(後述の品質保証)
タスクをコンパクトにして、少ないパラメタから実装
リリース後(public化後)
Issue drivenで開発
Issueに仕様および実装方法をまとめる
Claude Codeに読み取らせて実装
テストまで完了したら、ブランチを切ってコミット&プッシュ&PR作成
人間がレビューしてマージ
品質保証
CI / CDにGitHub Actions
markdownlint, yamllintなどのlinterでスタイルを固定化
Jestによるユニットテスト
デプロイメント
Pure JavaScriptなので単一のウェブページでOK
GitHub Actions経由でGitHub Pagesにデプロイ
良いところと悪いところ
Pros
人間の知識の少ない分野でも容易に参入することが出来る
実装速度が圧倒的に高速
それっぽい見た目のものがすぐに出来上がった(結果論)
Cons
コンテキストが広くなると実装にあわせてテストを変更したり、A→B→Aと同じことを繰り返すことがある
人間側に知識がないと正確なものが作れているか不安
UI上の細かい調整が不得意
Playwrightのようなブラウザを使用すれば、認識させて修正できるはず
課題
肝心の弾道計算が正確ではなさそう
弾道モデルテーブル、演算処理を人間の目で正しく確認する必要がある
今後の予定
単位の切り替え
弾道モデルのサポート(G1, G7から)
既成装弾のプロファイル(弾速、直径、BC値)サポート
スコープハイトとスコープ仕様を加味したゼロインサポート
ランニングターゲットの見越し量推定
ライブラリ
ISCライセンス
弾道モデルはG1, G2, G5, G6, G7, G8, GS, GIをサポート
スピンも考慮されている
参考
弾道計算に関するさまざまなリソース
ソフトウェア
アルゴリズム
弾頭データ
Hornady(リローディング用品とか作ってる)の弾道情報ページ
弾頭に対するBC値やテーブルがあるので答え合わせに使えそう