はじめに
プライベートでコード書くということがちょくちょくありますが、リファクタリングをするということはあまりありませんでした。
そこでたまたま約2年前に書いたコードを見てみたらあまりにも酷かったので、リファクタリングすることにしました。そこで契約してるにも関わらずあまり活用できていないGitHub Copilotを使いました。
APIキーがべた書きだったので、そこも修正しつつPrivateリポジトリにあったものをPublicリポジトリで公開しました。
どんなコードをリファクタリングするのか
使用プログラミング言語:Python
リファクタリング済みのGithub Repositoryリンク
csvに記載のあるASMR配信者が、YouTubeに20時間以内に投稿していたらX(Twitter)にpost(Tweet)するというもの。
動画、ライブ予約、ライブ中の3つのステータス別にポスト内容が変わります。
機能追加やフォーマット変更などはその都度行っていましたが、根本的なところは触っていませんでした。
こんな感じに投稿されてます
見てくれている人もいるようですが、ほぼ自己満ですね
ファイル構成は以下の通りです。main_program.pyを実行すると動作します。
ASMR_Tweet_Bot - main_program.py
- get_new_video.py
- judgement_time.py
- tweet.py
- Channel_List.csv
- .env
Channel_Listcsvに監視したいチャンネル名とチャンネルIDを記載すると、Botがそのチャンネルの投稿動画の情報を引っ張ってきて、条件に当てはまるものがあればX(Twitter)にポストされます。
自分の運用方法としてはUbuntuが入ったN100のPCでcrontabに登録して動作させています。
リファクタリング結果
リファクタリングの様子はこんな感じです!
ざっくりとですが、以下の点が改善できました
- 不要な変数の削除と重複コードの関数化: 重複したコードを関数化し、不必要な変数を削除することで、全体のコード量をざっくり26%ほど削減しました。
- APIキーの管理方法の改善: APIキーのハードコーディングをやめ、.envファイルを使用してこれらを管理するように変更しました。セキュリティを強化し、設定の柔軟性を高めました。
- コードの整理と可読性の向上: 複雑で読みにくいコードを整理し、可読性を向上させました。これにより、コードを理解しやすくなり、メンテナンスが容易になりました。
- エラーハンドリングの追加: システムの堅牢性を高めるために、エラーハンドリングを追加しました。これにより予期せぬ挙動やエラーに対する対応力が向上しました。
メンテナンスをするのは私だけだと思いますが、久しぶりにコードを見たときでも理解しやすくなったと思います!
GitHub Copilotの良さとは
- リファクタリングのガイダンス: 「この部分をリファクタリングしてください」というリクエストに対して、GitHub Copilot Chatが具体的なコードや改善案を提案してくれました。
- コードレビューの支援: 指定したコードに対して「このコードに問題はないか」と聞くことで、GitHub Copilot Chatが問題点を指摘し、その原因を説明してくれました。
- ドキュメントの作成支援: README.mdなどのドキュメント作成時にGitHub Copilotを活用し、さくっとドキュメントを作成することができました。
- 作業時間の短縮: Copilot Chatによって、コードの記述や修正、ドキュメント作成にかかる時間を大幅に短縮し、作業時間が短縮できました。うれしい。
初めて使ったときは自分の思考を読み取ってるんじゃないかと勘違いするほど感動しました
おわりに
簡単にGitHub Copilotをリファクタリングで使ってみての結果と感想でした。
私はChatGPTも契約していて、自分の生活にAIをとりこんでからやりたいことが効率よくできるようになって楽しいです。
GitHub Copilot Individualは月払いだと10ドルですが、学生やOSSのメンテナーの方は無料です。
このくらいの価格なら気軽に使えてよいです(赤字らしいですが…)
今回はASMRの動画が投稿されていたらポストするBotのリファクタリングをしましたが、ASMRにはまってるので、何かしら触れた記事でも書こうかなと考えています。
コメント