2023 年 3 月時点で、自分の開発スタイルがどう変わったかを雑に書いておく。
どんなタイミングで何を聞いているか
主に Go と TypeScript や W3C や IETF の仕様について聞く場合はほぼ ChatGPT Plus を利用している。間違いとかはどうせ公式ドキュメントを読めばいいので、正しさは求めておらず、きっかけを求めている。
最近では Cloudflare Workers 上で動く WebAuthn サーバーを実装しているが W3C の WebAuthn を開きつつも、ほぼ ChatGPT に相談しながら実装している。
TypeScript で Uint8Array から ArrayBuffer に変換する方法を聞いたり、証明書について聞いたりと色々。参考までにどんなことを聞いているかを紹介しておきたい。
WebAuthn で送られてくる署名の r と s がたまに 33 バイトで先頭に 0 が入ってくることがあったので、なんだこれ?と思って聞いてみた。
とりあえず 0 バイトパディングを除去するコードを ChatGPT に生成してもらい、回避してみたところうまく動いたが、この回答が正しいかどうかはまだ調べていない。
Zerolog をテスト時に出力させたくなくて、zerolog の Writer 部分に /dev/null みたいなの渡せないかと思って聞いた。
無事 Zerolog の New に渡して期待通りの動作をした。
追記: どうやら /dev/null には書き込んでないらしい
VSCode を使っていて Cloudflare Workers で利用できる import html from “./index.html” でずっとエラーが出ていたので聞いた。
無事エラーが出なくなった。
WebAuthn の HTML を書いているときに JS の処理をもう少しきれいに書きたかったので聞いた。この type=”module” は GitHub で色々ソースを見ていたときに見つけたもの。
何を生成しているか
ChatGPT にコードを生成して貰ったりもしている。主にプロパティベーステストのテストコードを生成してもらっている。
fast-check という JS/TS 向けのフレームワークと vitest を利用しているが、ChatGPT は vitest を知らないので、jest の部分を vitest にしてくれと言って書いて貰っている。ちなみに base64url 自体も ChatGPT に生成してもらっている。
調べる際に Google でほとんど検索しなくなった
自分が得意ではない Go や TypeScript 、また新しく覚えたいと思っている技術に関しては ChatGPT に聞いている。その後公式ドキュメントや VSCode で書いてみて実際に動かしてみるというのを繰り返している。
大きく変わったのは Google で検索した際に出てくる「広告がたくさん貼り付けられていて怪しげなサイト」を目にしなくて良くなったことだ。
効率は上がったか
これはあくまで個人の感覚だが、自分のように必要なタイミングで必要な情報を得たいタイプの人間にとっては、ChatGPT のようなツールは劇的に効率を上げてくれる。自分は答えが欲しいわけではなくきっかけが欲しいタイプというのもあるかもしれない。
感覚的には 1 時間書けて調べていたのが 数秒で終わる感じ。もちろん、正確性のチェックは必要だが、実際にコード書いてエラーになれば、そこで調べればいい場合もある。
特にプロパティベースのテストを生成してもらうのは衝撃的に便利だった。いつも同じようなコードを書くのだるいなぁって思っていたのもある。
得意分野についてはどうか
正直自分の得意分野である Erlang/OTP の文法レベルについては知らないことがほとんどないので、聞くことがない。WebRTC に付いても同様で、仕様について聞く必要がない。とはいえ、今後は Erlang のプロパティテストを生成してもらったりはしていきたい。
今後、情報を追加で得る場合は積極的に使っていくのが良いと思っている。
雑感
- 開発スタイルが大幅に変わった ChatGPT を開いて不明な点はすぐ聞くスタイルになった、どう書けばいいのかということで悩むことが少なくなった
- 自社に GitHub Copilot for Business も導入した。公開されているコードにはマッチしない設定を有効にしている。
- 不得意な分野でも困ることがなくなった、聞けばいいだけになったのは大きいし、不明な点はそのタイミングで聞く、ほんとか?と思ったら公式ドキュメントを見る
正直ここまで変わるとは思っていなかった。一番恐いのはここから戻れなくなることだと思う。あまりにも効率が良すぎて今までどうやって開発したかをそのうち忘れそうなレベル。
あくまで自分個人の話なので、なんともだがわけがわからないくらい時間を高率に使えているのを実感している。
今後どう変わっていくかわからないし、もしかすると自分の職がなくなるのかもしれないが、うまく時代の流れに適用できればと思う。