生成AIブームなので、ソフト開発にどれだけ有効かを体験してみた。流行には乗る方なので。。

1)環境設定
手持ちの環境ではVSCodeに設定するのが簡単そうなのでVSCodeを使用する事にします。
環境設定方法などNetに沢山有りますので参照してください。大体は以下のフローです。
- GitHub アカウントの作成する
- GitHub copilot契約する
個人契約で10ドル/月 - VSCode への GitHub Copilot 導入
GitHub Copilot 用の Extension (拡張機能)を VSCode に追加します - 契約したアカウント設定
上記のフローで大体使える様になります。
(参考URL) GitHub Copilot の概要 (公式)
2)早速使ってみる
GeoDiveExaをXamarinからNetMAUIに移植中で、VSCodeでの開発ができる様になっているので、早速使ってみる。
2-1)クラス説明を作成してみる
GeoDiveExaのMapViewClassの直前で「/// <summary>」と入れると次の様な簡単な説明が出てくる。
/// <summary>
/// MapViewModelは、地図の表示を設定するためのクラスです。
/// </summary>
ここはまあまあですが、MapViewClassの上で「右クリック」「copilot->説明」を実行すると以下の様な説明が延々と続きます=驚きです。
<copilot->説明の抜粋>
このコードは、MapViewModelというクラスの定義です。このクラスは、地図の表示や操作を管理するためのViewModelであり、MVVMパターンに従って実装されています。ObservableObjectを継承しており、プロパティの変更を通知する機能を持っています。
プロパティとフィールド
Title: 地図のタイトルを保持する文字列プロパティです。
_addNewPinとAddNewPin: 新しいピンを追加するためのプロパティとそのバックフィールドです。プロパティが変更されるとOnPropertyChangedが呼び出されます。
_replaceOldPinとReplaceOldPin: 既存のピンを置き換えるためのプロパティとそのバックフィールドです。こちらもプロパティが変更されるとOnPropertyChangedが呼び出されます。
ターゲット関連のプロパティ
_targetPicker: Pickerの選択結果を処理するためのフィールドです。
GpsLabel, GpsBackColor, GpsLabelVisible: GPS関連のラベルや背景色、表示状態を管理するプロパティです。
TargetPickerText, TargetSelected, TargetPickerVisible, TargetButtonVisible: ターゲットPickerのテキストや選択状態、表示状態を管理するプロパティです。
...
2-2)単体テストを作成してみる
19票系で距離を計算する関数calcDistance19M上で「右クリック」「copilot->テストを生成する」を実行すると、以下の様なテストコードができます。一瞬で出来ます=驚きで、良さそうです。
public void TestCalcDistance19M_PositiveCoordinates()
{
// Arrange
double oldLatM = 1000.0;
double oldLonM = 2000.0;
double newLatM = 3000.0;
double newLonM = 4000.0;
// Act
var (latKm, lonKm, distKm) = MapUtilClass.calcDistance19M(oldLatM, oldLonM, newLatM, newLonM);
// Assert
Assert.Equal(2.0, latKm);
Assert.Equal(2.0, lonKm);
Assert.Equal(Math.Sqrt(8.0), distKm);
}
[Fact]
public void TestCalcDistance19M_NegativeCoordinates()
{
// Arrange
double oldLatM = -1000.0;
double oldLonM = -2000.0;
double newLatM = -3000.0;
double newLonM = -4000.0;
// Act
var (latKm, lonKm, distKm) = MapUtilClass.calcDistance19M(oldLatM, oldLonM, newLatM, newLonM);
// Assert
Assert.Equal(-2.0, latKm);
Assert.Equal(-2.0, lonKm);
Assert.Equal(Math.Sqrt(8.0), distKm);
}
[Fact]
public void TestCalcDistance19M_MixedCoordinates()
{
// Arrange
double oldLatM = 1000.0;
double oldLonM = -2000.0;
double newLatM = -3000.0;
double newLonM = 4000.0;
// Act
var (latKm, lonKm, distKm) = MapUtilClass.calcDistance19M(oldLatM, oldLonM, newLatM, newLonM);
// Assert
Assert.Equal(-4.0, latKm);
Assert.Equal(6.0, lonKm);
Assert.Equal(Math.Sqrt(52.0), distKm);
}
[Fact]
public void TestCalcDistance19M_ZeroCoordinates()
{
// Arrange
double oldLatM = 0.0;
double oldLonM = 0.0;
double newLatM = 0.0;
double newLonM = 0.0;
// Act
var (latKm, lonKm, distKm) = MapUtilClass.calcDistance19M(oldLatM, oldLonM, newLatM, newLonM);
// Assert
Assert.Equal(0.0, latKm);
Assert.Equal(0.0, lonKm);
Assert.Equal(0.0, distKm);
}
3)感想
ちょっと使ってみただけで、便利なのが分かった。まだまだ機能は沢山有るので徐々に覚えて行きますが、月10ドルの費用はソフト開発者には必要な経費でしょう。
便利な世の中ですが、若い人が最初からこの様なtoolを使ったら本当の思考力(?)が付くのかな。。。と、若干心配にはなりますが、年寄りには優しいシステムですね。
コメントを残す