特にもの珍しいものがあるわけではなく「現状こういうことやってるっす!」というのを説明するときのポインタが欲しくなったので、雑に書く。
ChatGPT
- 普通に便利、ない生活にもう戻れない
- GPT-4でしかもう使ってない
- 時間あたりの回数制限があったけど、最近ではもうそれに引っかかることもほとんどなくなった
- Custom instructionsも使ってる
- AIお姉ちゃんまではいかないが、柔らかい & 話しやすい感じの返答をしてくれるように設定している
- 何かが解決したときは「やったぜ、俺たち天才!!」的なノリに乗ってもらえるほうが気分よく仕事できるので、そういうのに合わせてもらえるような感じにしてる
用途1: 壁打ち相手
- エラーメッセージとコードスニペットをぺたっと貼って、どういうところが原因になってこけてそうかを聞いてる
- 大体は当たり前のことしか返ってこなかったり、「一発で答えが分かる」なんてことはないけど、ChatGPTと対話している中で状況が整理できることが多い
- ほぼ一方的に相談しているうちに解決している、みたいなことが本当によくある
- 営業時間中であれば、同僚掴まえて「何か解決にちょっとはまってしまったので、ちょっとペアで見て欲しいっす」と頼んでいたことが相手の時間とか考えずにスーパー気軽に聞けるのが助かる
- 特に深夜にコード書いてて、はまったときとかは人間には聞けないので、便利な返答をしてくれるテディベアとして使っている
- 相手は人間ではないので、体調とか機嫌とかそういうの全く考えずに完全にこっちのペースで時間の占領とか考えずに聞けるのがマジで助かる
- GitHub Copilot Chatも目的的には同様のことをしてくれるが、Copilot Chatは前後の内容をあんまり考慮してくれていないと感じることが割とあるので、チャット目的だとChatGPTをほぼ使っている
用途2: 便利な英語の先生
- コード中の変数名で困ったときとかに候補の生成とか、どういう文脈ならどれが適切そうか出してもらうのに使ってる
- 単純な翻訳じゃなくって「こういう文脈を踏まえて」だったり「こういう理由でXXXは採用したくない」みたいな情報を追加で与えることで、きっとこれがよさそう、みたいに改善する形で使っている
- 変数名以外にも、英語でpr書いてるときに「こういうことを伝えたくて」的な内容をざっくり伝えて、添削してもらうというのにも使っている
- 完璧ではないかもしれないが、自分の英語力よりは完全に上
- GitHubでPull Request送るときにdescription書くときにもバシバシ使っているが、それらは全部mergeしてもらえているので、いい英語が書けているかはともかく、実務上は完全にworkしていると言えそう
用途3: シェルスクリプトの生成
- 職業柄、bashのスクリプトを書いたり、
jq
/yq
のようなフィルタ処理でいい感じにしないといけないことが多い- 文法とか便利テクとか覚えてらんないし、覚えたくない
- 「こういうinputのyamlがあって、こういう場合は要素をこう変更したい」みたい内容を伝えた上で、それを実現するワンライナーなりスニペットを生成してくれと依頼して使っている
- 一発で生成できることも思ったよりあるし、動かないこともあるが数iterationすると使いものになるコードができ上がってくる
- コードを書いてるというより仕様を伝えた上でコードレビューしてたら欲しいものができ上がってきた、みたいな感覚
GitHub Copilot
- Copilot Chatは思ったよりあまり使ってない
- 前後の文脈あんまり見たと思えない返答をするときがあるし、ChatGPTのほうが問題解決できた経験が多いため
- Custom instructionsのあり / なしは案外大きくて、Copilot Chatはぶっきらぼうな形で返信してくることが多く、アホな返信をしてきたときに「じゃあ、言い換えてやるか」みたいな気持ちにならないので、ChatGPTに聞いちゃってることが多い気がする
- 人間でも愛想がいいとかいつ聞いても機嫌がいい人に相談してしまいがちなのと似ている
- コード補完ではCopilotめっちゃ使っている
- かなり賢い
- 最近書いてるコードはCopilotが補完してくれたコードをtabで選択する or 適切に補完してくれるまでtypeするのが90%と言っても過言ではない
- 型がない言語でintellisenseされていたのが型がある言語でintellisenseされる以上の体験がある気がする
- コードリーディングのアシストをもうちょい頑張って欲しい
- ちゃんとした仕様をあまり知らないが、コンテキストになるインプットは現在開いているタブや左右のタブくらいが限度という認識
- リポジトリ全部のコードを把握した上で「こういう処理をしているファイルがあるはずで、それを教えて」というのをサポートして欲しいと思うことが多い
- データエンジニアだとデータを生成しているリポジトリを見にいくことが多いが、そのリポジトリのコードを自分が書くことはあまりないので、ディレクトリ構造などが頭に入っているわけではない
- その辺いい感じにサポートして欲しい
- まあ、コンテキストの上限があるので、技術的なブレークスルーが起きないと難しいとは思うが、ここできると世界がもう一個上に行けるなと感じている
DeepL
- 有料で使ってる
- 英語のインプットをがっとやるときに特に使ってる
- Chrome拡張機能が便利で、特にデータエンジニアリング / データガバナンス系の記事からインプットを得たいときに使ってる
- htmlも結構ちゃんとした形で処理してくれるので、使いものになってる
- 高速に動作するのも最高
- ChatGPTだと分割しないといけないような長さのものでもほぼ一括でいけるので、便利
- 読めばまあ分かるが、読んだ上で自組織への適用と考えたい場合には翻訳するのに脳のCPUを使っている場合ではないので大分助かってる
- GitHubのPull Requestのようにめっちゃ長いわけではないが、特にニュアンスを汲み取りたい...という場合にはChatGPTにコンテキストを与えた上で教えてもらっていることが多い
- Chrome拡張機能が便利で、特にデータエンジニアリング / データガバナンス系の記事からインプットを得たいときに使ってる
- 英語への翻訳 & 添削
- GitHubのPull Requestを書くときに以下のフローでやっている
- 1: 伝えたい情報を日本語でまずちゃんと書く
- ここの壁打ち相手としてChatGPTに相談に乗ってもらうこともある
- 2: DeepLに英語に訳してもらう
- うまくいかないときもあるが、主語を補完したり、短文に分割すると大体うまくいくことが多い
- 3: DeepL Writeで添削させる
- 翻訳ベースだと英語としてイマイチになっていることがあるので、DeepL Writeを通すことでよりよい英語にしてる
- aとかtheが抜けてるとか、単語ベースでよりよいものを選択できる、くらいの改善
- 文書レベルの改善は1で自分で頑張るのがよい
- 1: 伝えたい情報を日本語でまずちゃんと書く
- GitHubのPull Requestを書くときに以下のフローでやっている
所感
- 自分のインプットやアウトプットは(生成系含む)AIに助けてもらっているところがかなり増えた
- コードの質が上がったかというとそういうことは特にない気がするが、同じレベルの品質に自分単独で仕上げるのと比べて時間は短かくなった気がする
- 自分一人でやるわけではなくて、常に助けてもらえる相手がいるので、気持ち的にもやりやすくなった気がする
- 元々あまりにへっぽこ過ぎるGitHubのPull RequestのDescriptionなどは質が上がったような気がする
- AIで一撃で解決することはそんなにはないが、最終的なアウトプットを得るための過程 / iterationが高速に回せるのはとてもありがたい -高速に回せると捨てることを厭わず試行錯誤を繰り返すことができる
- 合計すると安くはないかもしれない金額をこれらのSaaSに支払っているが、これらによる自分のアウトプットの質やスピードへの寄与を考えると余裕でペイしているなと思うので、今後も使い続けそうだなと思う