はじめに
今回は、今話題のAIツール「ChatGPT」「Github Copilot」「BlackBox」にコードを書かせてflutterで天気予報アプリを作成してみました!
その中で各AIに感じた特徴やメリット、デメリットを書いていきます。
前提
AIツールをフル活用して検証するため、各AIツールで検索した結果のコードや指示を出したコードで実装しています。
ChatGPT
特徴・使用感
コードの提案
質問形式でChatGPTに送ることにより、コードの解説とサンプルコードの提案をしてくれます。解説もあるため、知らない言語でもある程度理解しながらコードを書いていくことができます。
上記の画像では単純にFlutterで「Hello World」と表示させるためのソースについて解説及びコードの提案がされています。
コード作成の精度
提案されるコードの精度については質問の内容とその説明のやり方次第で大きく変わってきます。例えば、単純なアプリの作成だけなら上記の画像のように「Hello Worldを表示したい」と送れば問題はありませんが、APIを取得し、そのAPIをどう使うかなど、複雑なアプリとなると、漠然とした質問では見当違いな回答が返ってくることもしばしばありました。
複雑な内容の物を作成するときは、作成者がある程度どういう工程が必要かを把握し、その工程ごとにどうすればいいかを質問すると、大体はうまくいきます。とはいえ、必ずしも正確なコードが提示されるとは限らないため、都度都度自分でエラーがないか等は確認した方良いです。
デメリット
回答の正確さ
基本的にはエラー等もないコードが提案されますが、時折誤ったコードが提案される場合があります。ですので全てを鵜呑みにし、アプリ等を作成するのではなく、検証等は自分自身で行う必要があります。
ネットワークエラー
長文での質問や、回答が長くなってしまうものはChatGPT自体でネットワークエラーが発生する場合があります。恐らく回答する際の時間が長すぎると強制的に終了するという感じだと思われます。これに関しては、質問を分割すれば解決します。一度回答してもらった後でも、「もっと詳しく説明してほしい」などと聞いてみると、その質問に付随した回答をもらえるので分割しても問題ありません。賢いですね。
Github Copilot
特徴・使用感
コードのサジェスト機能
コメントや既存コードから推測を行い、次のコードをサジェストしてくれます。そのため、文法が曖昧でもコードを書いていくことができます。
上記画像では、取得した天気情報によって背景画像を変更する関数を作成してもらいました!使用する画像のファイル名やパスは間違っていますが、細かい修正をするだけで済むので非常に効率が良いです。
可読性の向上
主にコメントからソースを生成してもらうため、普段コメントを書かない人でもコメント量が多くなり、ソースの可読性が上がると感じました。
なぜそのコードを使用するか理解できずに作れてしまう
言語への理解がある程度あるならば補助機能としてかなり有用であると思います。
ただ、実装したい内容への手法が定まっておらず、何を調べれば解決できるかわからない状態の際、先に答えを提示してくれることがあるのは非常に効率化につながると感じました。
デメリット
サジェストコメントのループ
このようにコメントでのサジェストで同じものが連続で出てくることがあります。コメントの書き方が悪い、もしくは既存ソースから推測できないといったところが原因かと思われますが、そこをコメントで指摘して欲しいと思いました。
エラーなどを自動で解決してくれるわけではなく、適宜調べる必要がある
ここに関しては、エラー内容を貼るだけで回答してくれるChatGPTのほうが良いと感じました。
根本的な質問等には向いていない
クラス間の値の受け渡しなど、根本的な質問があるときは対話ベースで質問を行えるChatGPTの方が実際に使用してみて良いと感じました。Copilotはあくまでもコーディングの補助的な立ち位置にあると思います。
BlackBox
特徴・使用感
コード補完機能はすごい
ログイン機能を作って欲しいと英語で入力したらサインアップやログアウト機能まで作ってくれたのはすごい反面、細かい具体的な質問には答えられない。ソースとなるコードが少ない可能性がある。他の機能として、疑問文を書くと参考コードを公式リポジトリとかから取ってきてくれる。
BlackboxAIで大枠をつくって、ChatGPTで細かいリファクタリングをしていくような使い方が良さそうと感じました。
デメリット
コード補完を有効にするのがわかりにくい
コマンドパレットで有効にして、ログインする必要がある。また、コメントの書き方も難しい。
要ログインなのもChatGPTと比べるとワンステップ手間で微妙です。
まだBlackBoxに関する技術記事が少ない
BlackBox自体の技術記事が少なく、あっても英語だったりと調査にとても時間がかかってしまいました、、、
そのためあまり検証ができなかったので検証出来次第追記していこうと思います、今回はご了承ください。
まとめ
ChatGPT
複雑すぎるものにはあまり向かないが、書き手の意図は思いの外受け取ってくる。行いたいことが明確に文章にできればとても便利。
Github Copilot
サジェストでのコード補完機能が非常に優秀。メソッドの作成などは行えるが根本的な質問には弱い。
BlackBox
コードの補完機能はすごい、だがコメントの書き方が難しい。
まだ技術記事が少なく調査に時間がかかってしまう。
最後に
それぞれのツールに特徴があり、用途に合わせて使い分けることが大切であると思いました。
また、ChatGPTに質問しつつ、Copilotでコーディングを進めていくといったようにAIツールを組み合わせて使うことでさらに開発の効率化を図れると感じました。
みなさんも是非AIツールを活用して開発効率をアップさせていきましょう!