年末ということで溜まっていたTODOをやってしまおうというので、
Cursor、slack apiの勉強のために作ってみました。
いつもはAndroidエンジニアとして記事を投稿していますが、Androidの話ではないです。
作ったもの
成果物->hiroaki404/event_reminder
(自分はpythonを趣味で書いているレベルなので、コードの精査はご自身の判断でお願いします)
この間登壇のためにイベントに参加したが、良かったので参加者としても来年から定期的に参加したい。
そんな気持ちはあるが来年になったら忘れそうなので、slackアプリを入れてbotから一ヶ月に一度通知が来るようにした。
この方法ならSNSに張り付かなくても毎月やる予定のイベントをざっくり確認できる。
メールでいいんじゃないかとも思ったがslack apiの勉強も兼ねて作っりました。
システム構成としては、
GCPのCloud Functionsを使って、pythonコードからslack apiを使って自分が作ったslackチャンネルにメッセージを飛ばす。
メッセージには、https://connpass.com/search/?q=Android&start_from=2024%2F12%2F01&start_to=2024%2F12%2F31&prefectures=tokyo&selectItem=tokyo&sort=
のようなconnpassのurlを貼る。クエリの日時の部分は、関数が呼び出される月が入るようにする。
Cloud FunctionsはCloud Schedulerで毎月呼び出す。
です。
Cursor
いまさらダウンロードしてみましたが、期待以上にいい感じ。
Cursorはchatのウィンドウがあり、プロンプトを入力して、applyしていくと、それだけでコードが埋まっていきます。AIコーディングに特化された印象を受けて、使いやすいです。
初期設定もほとんど時間がかかりませんでした。
今回使ったプロンプトは、
「slack botにhello worldを送るプログラムを作って」
「ありがとう。メッセージの内容を、以下に変えてください。
今月のイベントは、https://connpass.com/search/?q=Android&start_from=2024%2F12%2F01&start_to=2025%2F01%2F01&prefectures=tokyo&selectItem=tokyo&sort= です。
この文字start_fromは関数が実行される日の月の月初、start_toは関数が実行される日の月の月末の日とします。」
「slack_tokenはgcpの環境変数を使って」
「gcpで行うため、requirements.txtが必要です。作ってください」
「これをローカルで実行するには?」
「ローカルの仮想環境で環境変数を追加するにはどうする?」
でした。
まぁ、他のIDEでも同じようなことができるとは思うので、そのあたりはケースバイケースで使うものを判断といことになります。
Cursorはvscodeベースなので、設定やpluginの移行も楽々でした。
AIコーディング
今回のような簡単なコードなら、ほとんど手でコードを書くことなく作れました。修正もほとんどやっていないです。
エラーハンドリングもやってくれています。
今回気づいたこととしては、私のようにpythonの玄人でなく、頻繁に触る機会もないと、
pythonの書き方どうだっけ、からは入ります。
コードを読むのは思い出せばいいのでできますが、ゼロから書くのは迷いが出ることもある状態です。
そうした場合だとかなり威力を発揮すると思いました。
これ自分で書く場合だとpythonってどう書くのだろうか、から入りますし、
普段業務で使っていないので、エディタの環境も万全ではありません。
また今回は自分だけの小規模なツールの開発で、機能を追加していくものでもないし、一定のセキュリティさえあれば動けばいいようなものでした。そうした場合はAIに多くを任せられます。
コードの中身については、slack apiに繋げる部分にslack_sdkを入れます。
これは知識なかったのですが勝手にAIが生成くれました。
また日付を処理する関数の部分は一発生成で問題なさそうでした(バグったらその時直せばいいの前提ですが)。
こういった単純な関数はAIに譲るべきところだと思います。
GCPでエラーでたところも直してくれましたし、
.envの書き方とかrequirements.txtの書き方とかも全部AIがファイルごと作ってくれたので、頼もしかったです。
AIトラブルシューティング
GCPも触るのが久しぶりで、エラーが出たり、関数やスケジューラの作り方を忘れていました。
そうしたときにGeminiに聞いて、トラブルシューティングをしました。
やはり初歩的な用途だと精度は悪くなく、AIを使いながらやり方を思い出しました。
そのおかげで前に同じことをやったのに比べると、かなり早くシステムを構築できるようになました。
注意点
ほとんど手を動かさないと言いましたが、修正がないわけではありませんでした。
書くのはAIが書いてくれて、それを精査する感じになります。
ただ、なんの知識もないとそのコードが問題ないのかわかりませんので、知識が不要というわけではないです。
やはりコードを読む力はより必要になってくるんではないかと思います。
また今回はかなり初歩的なアプリケーションを構築する話で、
実際の業務では要件はもっと複雑になってきます。
またお客様を相手にするアプリケーションでは信頼性が重要になります。
そうした場面だとやはりまだAI駆動で開発するのは限界だと思います。
自分もAndroidの実業務だとAI駆動とはいえません。
しかし実業務でもAIを使って助かっている部分は多いです。
AIの是非が問われており、将来AIに取って代わるとか、そんな話もあります。
自分は将来のことはあまり予測できないと思っています。
AIを過信せず、見放しすぎない、使えるところは正しく使って、疑うところは疑いつつ、
今の状況で自分のすべきベストを探るのがよいと思います。