最近、ChatGPTのバージョンアップなどが発表されたり、コーディングAIツールなどが流行っていたり、バイブコーディングなる概念をよく聞くようになっております。
youtube動画にて、バイブコーディングのセキュリティ面についての言及をしているベテランエンジニアの方の動画などがありましたので、備忘録も含めてまとめてみようと思いました。
内容としましては、バイブコーディングで作られたアプリケーションの中にはセキュリティホールがあり、情報が抜かれてしまうものもあったというものです。
しかしながら、だからといってバイブコーディング自体を否定する物ではないようです。
これについて、私自身は初学者レベルですが、思った事についても書いてみようと思います。
AIは指示する人間本人の実力以上のものは作れない
こちらはAIコーディングでよく言われている事ですが、私自身もChatGPTを使って何個かアプリを作ってみて実感した事でもあります。
言語モデルの生成AIは良くも悪くも、あまり利用者を否定しません。
仮に頭ごなしに否定する鬼上司のようなAIだったら、利用者はもっと少ないでしょう。
さながら全肯定して励ましてくるパートナーのように、どんな話も否定せず、肯定してきます。
これは反面、AIが人間の間違いを指摘して正す能力、または、人間の出す指示の欠陥や穴をついて遠慮なく突っ込む能力は少し弱いと思っています。
これはいわゆる情報選択バイアスに近い現象なのではないでしょうか。
人間が聞いた方面の事しか話してくれない
ChatGPTは、人間が意識を向けた方面についての話題や関連事項については詳細に話してくれます。
逆に言うと、本人が意識もせず持ち合わせない情報について引き出すことはあまりできなかったりします。
- ハルシネーション(AIが事実に基づかない情報を生成する現象のこと)の禁止、
- セキュリティリスクの観点も意識すること
- 不明な点は不明と明記すること
- 検索なども用いて正確度の高い情報を提示すること
なども念頭において開発のアドバイスを聞けば、大体はまともな事を話してくれます。
しかし、こちらの指示があいまいだったり、そもそも見落としている観点があった状態で話を進めていると、思わぬドツボにハマったりします。
アプリケーション開発で、ターミナルでのPythonコマンドが何回やってもエラーとなり、ChatGPT側も再起動やディレクトリの確認やら色々試行錯誤しても直らず1時間近く堂々巡りといった事もありました。
結果的に、新しく買ったPCにPythonをインストールしていなかっただけというオチで終わりましたが、エラー周りではこちらの知識や前提も欠けていると環境構築で詰むこともあります。
他には:TailwindCSSの導入で詰んだ、Webアプリケーションの効果音実装に詰んだ、等(たぶん、ブラウザでボタンを押して効果音ならすみたいのは、そもそも規制などで実現が難しいっぽい?)
開発設計の指示が曖昧だとAIもポンコツになる
これはもう上流と下流工程の関係と同じだと思います。そもそもコーディングを指示する側のセキュリティ意識が低い物になればセキュリティの低い物になります。
そもそも開発について何も分からない人間でも、ざっくりとした指示だけでとりあえず動くアプリが作れてしまうのだから、
セキュリティについても何も分からないまま世に公開できてしまう事例などもあるのでしょう。
個人情報も入力しない、個人で楽しむようなアプリケーションを作る分には問題はないですが、顧客情報なども扱う規模と責任の大きいサービスとなると当然それをチェックする人間の責任も大きくなります。
こういうのはやはり長年開発の現場にいないと身につかないスキルなのでしょう。
とはいえバイブコーディングのセキュリティ問題が解決するのも時間の問題なのでは?
セキュリティ問題は決して見落とせない課題ですが、
セキュリティ知識も開発知識も何もない人間がアプリを作れた結果、セキュリティホールのある質の低いアプリが量産されてしまうと否定的に捉えるか、セキュリティ知識すらない人間でもアプリが作れる革命的な技術だと肯定的に捉えるかは観点が分かれると思います。
とはいえ、産業的に大きくなりつつあるAI産業において、AI開発側も利用者もセキュリティ対策は遅かれ早かれ考えるだろうし、時間の問題なのでは?と思います。
しかしながら、こういった革新的な素晴らしい技術を、ただただ危険だと言って規制してしまう事もありえなくないというのが日本という国でもあります。
winny事件しかり、技術のネガティブ面だけをとらえて規制やら技術者を委縮させるような事が起これば、日本のIT産業が更に他国に後れを取る事態にもなりえます。
そんな事を思いつつ、これから生成AIを用いた開発の比率が大きくなることを見越して、セキュリティに意識を払いつつアプリケーションの自己開発(あと就職)を進めていければなと思っております。
ChatGPTやバイブコーディングは能動的な学習効率向上に貢献するが、それだけに頼るのは危険
学習効率を高めるには、受動的/能動的な学習のバランスが大切なのではと思っています。
他者の情報を一方的に受け取るのが受動的な学習だとすれば、自ら選択して情報を取得していくのは能動的学習だと言えます。
書籍や記事や動画を検索し選択したり、chatGPTに質問するまでは能動的ですが、その後情報を受け取るのは一方的であり、ここは受動的と言えます。
個人差はあれど、受動的すぎる学習だけだとそこで生まれた疑問点などを流したまま聞き入れるだけになりがちで、知識が頭に入りづらいです。
反対に、能動的に知識を求める事によって生まれた疑問点なども解消しやすく、自身の知識として身に付きやすいですが、自身が知りたい情報のみ取得してしまい、情報選択バイアスにかかりやすいというトラップも存在します。
ChatGPTやバイブコーディングは会話ベースで実践的にアプリを開発でき、知識として身に付きやすい反面、自身が持ちえない観点や知識を仕入れづらいので、
それだけに頼っては開発する知識はあるもののセキュリティーやネットワークの知識は全く無い、といった歪な知識に偏りがちになってしまうと思われます。
なので、能動的学習としてChatGPTやバイブコーディングを利用しつつ、自分が持ちえない新しい観点や注意点、知識を得るためには、他者のエンジニアの話を聞く、書籍を読む、記事やトレンドを読むといった、バランスのいい情報取得を心がけるべきなのだとおもいました。
ある意味、こういった記事形式でのアウトプットも、他者と情報交換をして違った視点を得るためであり、自身の偏った情報知識を平均化するための行いとも言えます。
私自身、開発エンジニア職を目指して転職活動中の身であり、様々な知識を仕入れてはいるものの、アウトプットがまだまだ少なく偏った情報に進んでいる可能性もありますので、反対意見や指摘などは遠慮なくコメントしてもらって問題ありません。
以上となります。ありがとうございました。