最近流行っている生成AIは、私たちの生活に様々な形で浸透しつつあります。画像生成、文章作成、そして今、プログラミングの世界にも大きな波を起こしています。プログラムコードを自然言語で指示するだけで生成したり、デバッグチェックを自動化したりと、生成AIはプログラミングのあり方を大きく変えつつあります。
しかし、生成AIは万能ではありません。その可能性と課題を深く掘り下げていくために、実際に自分でCopilotを使用して挑戦してみました。
生成AIがプログラミングを簡単にする理由
1. コードの自動生成
生成AIは、人間が自然言語で指示した内容に基づいて、複雑なアルゴリズムや繰り返し処理を含むコードを自動生成することができます。例えば、「1から100までの数を足し算するプログラムを作って」と指示すれば、PythonやJavaScriptなど、指定したプログラミング言語で適切なコードが生成されます。これにより、プログラマーは低レベルなコーディング作業から解放され、より創造的な部分に集中できるようになります。
2. デバッグの効率化
生成AIは、コードのエラーを自動的に検出し、修正方法を提案してくれます。従来は、プログラマーが一つ一つエラーの原因を突き止め、修正する必要がありましたが、生成AIの登場により、デバッグにかかる時間を大幅に削減できます。また、生成AIは、コードの品質を向上させるためのアドバイスも提供してくれるため、より信頼性の高いソフトウェア開発が可能になります。
3. 学習のサポート
プログラミング初心者にとって、プログラミング言語の文法やライブラリの使用方法を覚えることは大きなハードルです。生成AIは、プログラミングに関する質問に自然言語で答えたり、関連するドキュメントやチュートリアルを検索したりすることができます。これにより、プログラミング学習の効率が大幅に向上し、初心者でも短期間で複雑なプログラムを作成できるようになる可能性があります。
4. アイデアの具現化
生成AIは、プログラマーのアイデアをコードに落とし込むための強力なツールとなります。例えば、「画像認識機能付きのWebアプリケーションを作りたい」という漠然としたアイデアがあった場合、生成AIは、必要なライブラリやアルゴリズムの選定、コードの構造設計などを支援してくれます。これにより、プログラマーは、アイデアの具現化に集中し、より革新的なアプリケーションを開発することができます。
生成AIのメリットとデメリット
メリット
- 開発効率の向上
- プログラミングの敷居の低下
- 新しい技術への取り組みやすさ
- コード品質の向上
デメリット
- 生成されたコードの品質管理の必要性
- プログラミングの根本的な理解が不可欠
- AIの誤動作によるリスク
- ブラックボックス化の問題
生成AIの活用事例
それでは実際に生成AIを使用してプログラムを作成してみましょう。いきなり大規模なプログラムを行うと、デバッグなどで収拾が付かなくなる可能性があるので、小規模なモノでやってみます。
今回は実際に自分のブログ(wordpress)で使用できるプラグインを作って見たいと思います。
個人的には、プログラミングの経験は初級レベルですので、生成AIを使用してコードを生成し、それを学ぶと言うスタンスでやってみたいと思います。
まず生成AIに言語データで作りたい骨子をインプットします。今回インプットした内容の骨子は以下の通りになります。
- wordpressのプラグイン
- 現在の日時と曜日、時間をリアルタイムで表示する
- 表示領域は4行分とし、1行目と4行目はブランクとする
- 2行目に日付と曜日、3行目が現在の時間を秒表示させる
- 曜日表示は日本語
- wordpressのインストールされているプラグインの管理画面で/無効化ができる
- セキュリティ対策も行う
以上の項目を網羅してプラグインを生成するようにお願いする。
出来上がったコードは以下の通り。
<?php
/*
Plugin Name: Display Date and Time
Description: A simple plugin to display the current date and time in a formatted way.
Version: 1.4
Author: JKawasaki
*/
// Function to get the day of the week in Japanese
function get_japanese_day_of_week($day) {
$days = array('Sunday' => '日曜日', 'Monday' => '月曜日', 'Tuesday' => '火曜日',
'Wednesday' => '水曜日', 'Thursday' => '木曜日', 'Friday' => '金曜日', 'Saturday' => '土曜日');
return isset($days[$day]) ? $days[$day] : '';
}
// Function to display the date, day of the week, and time in a specific format
function display_formatted_date_time() {
ob_start();
$day_of_week = get_japanese_day_of_week(date('l'));
?>
<div class="date-time-widget" style="text-align:center;">
<div style="margin-bottom: 10px;"></div> <!-- 1行目: 空きスペース -->
<div>本日は <?php echo esc_html(date('Y-m-d')); ?> <?php echo esc_html($day_of_week); ?></div> <!-- 2行目: 日付と曜日 -->
<div id="current-time"></div> <!-- 3行目: 時間(秒までカウント) -->
<div style="margin-top: 10px;"></div> <!-- 4行目: 空きスペース -->
</div>
<script type="text/javascript">
function updateTime() {
var now = new Date();
var timeString = now.getHours().toString().padStart(2, '0') + ':' +
now.getMinutes().toString().padStart(2, '0') + ':' +
now.getSeconds().toString().padStart(2, '0');
document.getElementById('current-time').innerText = timeString;
}
setInterval(updateTime, 1000);
updateTime();
</script>
<?php
return ob_get_clean();
}
// Shortcode to use the formatted date and time display function
add_shortcode('formatted_date_time', 'display_formatted_date_time');
// Function to run upon plugin activation
function display_date_time_activate() {
update_option('display_date_time_activation_message', 'The Display Date and Time plugin has been activated.');
}
register_activation_hook(__FILE__, 'display_date_time_activate');
// Function to run upon plugin deactivation
function display_date_time_deactivate() {
delete_option('display_date_time_activation_message');
}
register_deactivation_hook(__FILE__, 'display_date_time_deactivate');
?>
出来上がったコードを、wp-contents/pluginsのは以下にDIRを作成し、そこに保存する。
プラグインの管理画面から今回作成したプラグインがインストールされていることを確認し有効化する。
次に、ウィジェットにショートコードを書き込み、右列に配置し完了とする。
実際のTOP画面を見ると、今回生成したコードのプラグインにより現在の時間として表示されていることを確認しました。
無事にリアルタイム表示がされていました。
wordpressに対する詳細な知識が無くても、簡単にプラグインを作成し配置することができるなんて素晴らしいですよね。
これは正にプログラミングの革命です。
【追記】10/10/2024 5:54:00 PM
上記のコードでプラグインは出来たのですが、1日経過しても時間は変わりますが日付が変わりませんでした。
すぐにCopilotに状況説明をし、原因の質問と改版コードを要求したら、即座に修正コードを出して見れました。
理由は日付を取得後に1度だけ表示されているコードだったため、日付が変更出来なかったようです。
これを時間のようにJavaScriptに変更したら、リロードすると日付が変わりました。またしばらく様子見です。
しかし、すぐに回答して修正してくれるなんて素晴らしいアシスタントだと思いますよね。
まとめ
生成AIを活用するようになると、プログラミングのあり方を大きく変える可能性が有ります。しかし、いくら便利ですばらしいとはいえ生成AI自体は必ずしも万能ではありません。
プログラマーは、生成AIの能力を理解し、そのメリットを最大限に引き出すとともに、デメリットを克服するための対策を講じる必要があります。
生成したコードを自分なりに解析して炉回することで、より一層向上したコードが作れるようになると思います。
今後は生成AIと人間の協働により、より効率的で創造的なソフトウェア開発が可能になると思われますよね。
自分で実際にコードを書かないので、これもノーコードになるのかなぁ。
アイデアがあれば、素晴らしいアプリが簡単に作れる時代になりました。なんて素敵な時代になったのでしょう。
これからもアイデアを具現化していきたいと思います。