2023年8月8日火曜日

注目のChatGPTを使ってRedashにプルリクエストを出してみた!(後編)


前回、ChatGPTに質問してコードを生成してもらいました!
さらに修正依頼をかけたあとの対応が神対応でもう虜になった、元うなぎ屋です!

後編はChatGPTで生成したコードでredashにプルリクを出して、マージしてもらったよ!
の本題を記載していきます
長くなっちゃうかもしれないので、そのときはChatGPTに要約してもらってください!(2回目)

先にこんな事書いてます!的なものを置いておきます。
  • 私はほとんどコードを書けない(短いコードなら読んで意味を理解できる)
  • プルリクをした一番のモチベーションは、アップデート時にコンフリクトしたくない!運用者目線だった
  • OSSにプルリクエストを出してからマージされるまでの過程がとっても勉強になった

もくじ


本家にプルリクエスト出してみた

カスタムなコード入れているので、コンフリクトするのは目に見えていた

前編で、生成されたコードで動いたはいいものの・・・
このままだとredashをアップデートする際にデグレしてしまって、困りますね・・・

DockerなのでDockerfile内でCopyすればいいけど・・・

Dockerで運用しているので、
Dockerfileでこのファイルを上書きするコマンドで、もちろん対応はできますが。
それをやっていると、アップデートによる新機能などに追随は難しそうですね(再度修正の必要が出てくる)

ここ2年以上RedashのDockerイメージは更新されていなかった気もしますがね~

自分で作成した、別のquery_runnerとして追加すればいいのですが、
さらにコーディングのハードルが上がりますね・・・

これってOSSだし、プルリクエスト出してみるか!?(英語めんどいけど)

いっそプルリクをダメ元で出してみる!?(英語めんどいけど)

って思ってプルリクエストを出すことにした。

本家RedashのGitHubリポジトリにプルリクエスト出してみた

Do not makedsn for query_runner/oracle.py by snickerjp · Pull Request #6332 · getredash/redash

プルリクエストを作成して出してみました!

テンプレートの英語めんどい(頑張る)
  • プルリクエストテンプレートがあったのはいいけど、どう編集したものか?
  • まず、変更したいことの理由はわかりやすく!短く!
  • きっとコードで意味がわからない可能性があるので、スクリーンショットを載せよう!

最初にプルリクエストで出したスクリーンショット

ツッコミ来た!(わかる!俺もこれがベストではないと思うけど。。。)

結構すぐに返事があって、なんか難色を示している?

機械翻訳してみたスクリーンショット↓

うんそれはわかるよ。
私もやり方はベスト!とは思ってはいないけど。
cx_Oracleって、makedsnする直接接続文字列書くのどちらかしかない!
そして、makedsnで作れる接続文字列は一般的なものだけ~

後継のpython-oracledbに変えたいなー!って欲もあったのですが、
Python3からの対応なので、心配だしこれまたコーディングのハードルも上がりそう・・・(普通はOKだと思うのですが)

そして別の人の助け舟もあったけど、最後の「そして一人も使いませんでした」は不気味じゃない?
おそらく単語の順番が違うんだよね。きっと。。。
使わないと意味ないよね!?ってことだよね?笑

そのあたりは「ラベルで説明をつけて、案内していくよ~」とかそんなニュアンスで返しました!

自然な英語の言い回しは、ネイティブにお任せ

今度はラベルに書いた言い回しが、不自然な文になっているみたい!
ここは、詳しい人の言うこと聞いておこう!(だってこっちは機械翻訳で書いたんだもん)

ラベルの見た目に指摘

ラベルの見た目にも指摘されたけど、修正案提案されたから受け入れ

CIに引っかかる。めんどいけど解決のヒントを教えてもらえる

「CIでエラーになるから、ここ参考に直してみてね!」って優しさかっ!って思った
ちと時間かかりそうだけど、DockerでPython環境を作ってあとはWikiに書かれている通りにやって・・・
ん?なんかblackってコマンドがよくわからんから、ネット検索してとりあえず解決!

マージされてた!歓喜

なんとかCIによるチェック通ったけど、さっきOKだったCIがNGになる(おそらくCIインフラ側の問題らしい)
また後でやってみるよーって書いてあったから放置して翌朝見たら、マージされてた!歓喜✨

いろいろ顛末がありましたが、無事にマージされました!
これで、Autonomous Databaseの接続文字列を記載して使えるよー!

まとめ

  • コードが書けなくてもChatGPTを使って生成したコードで、やりたいことを実現できた!
  • プルリクエスト出して、いろんなやり取りが英語だったけど新鮮で楽しかった!(受け入れてくれる文化だった)
  • CIは初めて知ったものが多くて、業務でも使えそうかも!って思ったのも収穫でした
  • 自分が出したプルリクエストがマージされて、Redashって結構著名なOSSに貢献できたのは嬉しい

インサイトに自分のアイコンがあるとか、嬉しいじゃないですか!?


今後またChatGPTと相談しながら * python-oracledbに対応 * 別アプローチ とかを考えていきたいと思います!

参考

共有