背景
パラグライダー界隈では有名と思うのですがパフォーマンスセンターに参加した際に優秀なデータ分析をする方がおられて、その中でも複数の機体の軌跡を動画的に表示する機能が本当に羨ましかった!
優秀なパラグライダーデータ分析される方のサイト
作りたいもの
複数のパラグライダーの軌跡のファイル(IGCファイル)を元に、時間経過に伴って地図上に位置をプロットしてどのように飛んだか動画的に表示してくれるツール
(上記の方のツールで一度見ているものを改めて言語化するのはもどかしい、、それがそのままこの後の作業の難しさにつながった)
出来上がったもの
試行錯誤はあったものの以下にツールが完成した
ファイルの入力画面

再生中の画面

赤い線と青い線が飛行中の2機の軌跡。赤い網掛けはタスクで設定された領域
開発(?)
前回はkiro様で試行したが、今回は課金しているgithub copilotでトライしてみた。
全部で3000文字に足らないぐらいの最初の大きな指示と、追加の数百文字程度の支持を10から20回ぐらい。なので、文章を作る時間としては1時間程度、開発全体が概ね5時間程度だったのほとんど「Allow」ボタンを押しては待つ時間だったことになる。 そんなものでできてしまったのか、すごいな、、
課題(?)
とは言えストレスなく一発で出来上がったわけではないのは事実。
1. ある程度処理をイメージして指示を出さないと思ったものとは異なるものができる事がある。
タスクで設定したエリアを俯瞰する地図をズームイン/アウトできるように作成する指示を出したところ、1枚のJPEGを作成して「ホイールなどで拡大縮小できる」として完了となった。
間違ってはいないがGoogleMapのように縮尺変更や表示範囲の移動に伴って動的に描画して欲しかった、、
といった「それじゃない」感をチャットで擦り合わせてゆくことになった。
まるで人間と仕様のすり合わせをしているような、、、
2. 今何が作成されているか程度把握しておかないと要領をえない修正をし続けることになる
最初の指示でシステム構成やプログラム配置の方向性が決まり、その後、修正の指示に対して宰相の修正で実現できる方法を選択して実装することになる。各修正は最小の修正で実現しようとするので、直近の指示は実現できているものの全体最適ではないものが出来上がることがある。
後から仕様変更や機能追加を行う場合は元になっているものの作りを把握し、それを前提に適切な指示をだす必要がある。
本件では複数のIGCファイルの処理を後から追加した際に極端な性能劣化が起きた。時間がかかっても確かに欲しいものが出来上がるが、それでは実用に耐えないので再度修正方針と修正箇所を与えることで問題を解決できた。
他にもあったかもしれないが、あっという間に欲しいものができてしまった衝撃で吹っ飛んでしまった、、
まとめ
コーディングのテクニックを駆使して動くものを作る時代は終わったのか?
これまでの蓄積で「この感じで関数を構成して作って欲しい」と指示ができて、コードレビュー的なこともある程度できている気がするが、最初からこの環境があったらそのようなスキルを身につける機会がなかったかもしれない。
趣味ならそれでも良いものの、業務的なシステム構築ではどうなのだろう?そのレビューも別のLLMにさせるのか?そもそも人がやっていても100%安全なコードが書けていたわけではないのでリスクは増えても減ってもいないのか?
すごい時代になったものだ、、、
追加
ここまできたらどうしても3Dで動くのを見てみたいと思い、何度もお願いしたのですが思う通りにならず、最終的にうまくいったのは3D機能のモック的なものを別立てで作成し、「この機能を組み込んで!」と後から機能を統合する方法でした。自分の軌道だけでなく、投入したものを全て3Dで重ねてくれるツールは見当たらなかったのでかなり素晴らしいものが指示するだけでできてしまった、、、すごい時代になったものだ、、、

