Copilot先生
ネット新語賞が「エッホエッホ」になったと知り、あれ今年のミームなの…!?となったフクロウです
それくらい一年が充実してたということですかね🦉ポテポテしてる感じが可愛くて好きです
新卒入社して早八ヶ月が経ちました
4月に比べるとかなり知識がついてきたなという自信はあるのですが、一人前かと言われると微妙なところ。AIコーディングが主流なので、AIが出すものがベストプラクティスだと思いがち……🤔
ある程度業務に慣れてきた今だからこそ何か変えるべきだと思い、普段から使っているCopilotの使い方を見直してみました
知識がまだ足りないけどこういう使い方してみたよ!というブログですので、あしからず😌
やりたいこと
- AIコーディングでふんわりとした理解でやっていたところの知識を深める
- より良いコーディングができるようになる
- 良いクエリが書けるとか、適切にデータの処理をさせるとか
Copilot先生を生成
学習時間を取りたくても、普段の業務は待ってくれません
じゃあ業務をこなしながら学習をすれば良いじゃないか、ということで、普段からお世話になっているgithub copilotを活用することにしました
copilotを活用と言っても個人で行うものなので、プロダクト共有のAGENTSをいじったりはせず、簡単なプロンプトを入れるだけに留めました
学習のため、コードの修正案は複数出して、メリットとデメリットを提示してください。どの手法にするかはこちらで選択をするので、その決定を元に開発を行なってください
これだけでcopilot先生の出来上がりです
授業開始
設定ができたので授業(開発)の開始です
今回は仮として「1日1回発火する機能の回数判定ロジック」を作成していきます

こんな感じ
するとCopilotは3つの方法の提案をしてくれました

今回提示されたのは
- タイムスタンプ比較
- 前回実行時刻をローカルストレージに保存する方式
- ハッシュ検証
- 同じく前回実行時刻ローカルストレージに保存+保存形式を変更
- バックエンド連携
- dbに前回実行時刻を保存する
この3つ
それぞれのまとめもわかりやすく作成してくれます
- dbに前回実行時刻を保存する
ここまで来たら、自分が開発したい環境に合わせて実装方法を選び、Agentsを用いて開発を進めていくだけです
開発の途中で「これ本当に最適な処理?」となった場合も、「何パターンか出して」と伝えるだけで色んな選択肢から選ぶことができ、ついでに様々な手法が理解できる(はず)という一石二鳥な感じです🦉🦉
期末テスト
先生と一緒に実技授業をしたら、最後にはテストを課します
開発中に出てきた様々な処理方法のメリット・デメリットをまとめたり、そもそも知らなかった単語やクエリなどをドキュメントにまとめておきます
最近だと、IPアドレスの取得・参照方法について学ぶことがあったので、こんな感じでまとめました
この文章も一部はcopilot先生に出してもらいました
板書とノートみたいな感じです

これを今度はGeminiに参照させて、クイズを出してもらいます
これが期末テストです
せっかくGoogleドキュメントにまとめているので、それを参照してクイズを出してもらうことにしました
カスタム指示はこんな感じ
参照ドキュメントは、railsによるwebアプリ開発で学んだことをリスト化したものです
「クイズ開始」とチャットしたら、問題を五問程度出題してください。ただし、以下の規則に従ってください
・選択式(2~4択)
・ドキュメントが事実と異なる可能性があるので、出題時は問題を精査する
・ドキュメントが事実と異なる場合はクイズが終わった後に修正点を挙げる
・出題目的は開発の知識をつけることで、状況に応じたコードを選択できるようになるため
もう少し良い指示の仕方がありそうなものですが…🤔おまけ程度なのでこの辺で
テストはこんな感じになりました
いい感じですね

まとめ
同じ挙動のはずなのに、コードの書き方って色々あるんだなぁと改めて感じました
いくつか手法を提示してもらうことで「何を判断基準とするか」「判断するために見るべき・知っておくべき情報は何か」を考えるようになりました
とはいえレビューでもっと良い手法が出てくることもあるので、まだまだ修行が必要そうです
ちゃんと動いているし、読んだ感じも良さそうだから大丈夫!とはせずに、このプロジェクトならどの実装が最適なのかを見極められるようになりたいなと思います
株式会社ウェイブのエンジニアによるテックブログです。 弊社では、電子コミック、アニメ配信などのエンタメコンテンツを自社開発で運営しております! wwwave.jp/service/
Discussion