2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ChatGPTについて何ができるのか色々調べてみた

2
Last updated at Posted at 2022-12-25

何番煎じかはわかりませんが、
今話題のChatGPTについていろいろ調べてみました。
かなり色々できるようです。

日本語で質問しているのにも関わらず、英語や中国語で返答されることがあります。

ChatGPTの返答が長い場合、途中で返答が止まってしまうことがあるので、
その際は、「続きを書いてください」で続きを書いてくれます。
※たまに続きが変になる(途中が抜けている)ことがあります。

ChatGPTの返答は同じ質問でも毎回異なるものが返ってきます。
ですので、この記事での返答はあくまで一例となります。

この記事は随時更新予定です。

ChatGPTとは?

OpenAIがリリースしたAIを使った対話型のチャットボットになります。
2022/12現在は研究のために無料公開されています。
質問等をすると、AIにより様々な返答をしてくれます。
この記事では何ができるのかについていろいろ調べてみました。

後に有料化になる予定とのこと

コマンドについての実行例

Linux等で使用するコマンドについて実行例を伴って説明してくれます。
例として、pingについて聞いてみました。
image.png

プログラムを作成させる

chatgptに聞いてみたところ、プログラムの作成はできず、
プログラム作成についてのアドバイスなどはできるとのことでしたが、
問題なく作成してくれます。
image.png

フィボナッチ数列を求めるプログラムをC++で書いて
ただし、再帰は用いないでください

image.png
image.png

#include <iostream>

int main() {
  // フィボナッチ数列を保存する配列を定義
  int fibonacci[20];

  // 最初の2つの要素を代入
  fibonacci[0] = 0;
  fibonacci[1] = 1;

  // 求める要素数
  int n = 20;

  // 求める要素を求めるループ
  for (int i = 2; i < n; i++) {
    // i番目の要素は、i-1番目とi-2番目の要素の和
    fibonacci[i] = fibonacci[i-1] + fibonacci[i-2];
  }

  // 求めたフィボナッチ数列を表示
  for (int i = 0; i < n; i++) {
    std::cout << fibonacci[i] << " ";
  }
  std::cout << std::endl;

  return 0;
}

プログラムの作成方法を教えてくれる

今回はJavaからMySQLへ接続しデーターを取得する方法を聞いてみました。
環境構築していないし、私自身Javaは詳しくないので、
正常に動作するかわかりませんが、それらしきプログラムが提示されました。
image.png
image.png

競技プログラミングの問題を解く

プログラムが作成できるので、
難しい問題でなければ競技プログラミングの問題を解くこともできます。
例として、下記問題を解かせてみます。
ABC 085 C - Otoshidama

プログラム例を示した後にプログラムの解説を行って、実行結果まで示してくれます。

下記問題をC++で解きなさい。
【問題概要】
10000 円札と、5000 円札と、1000 円札が合計でN枚あって、合計金額がY円であったという。このような条件を満たす各金額の札の枚数の組を1つ求めなさい。そのような状況が存在し得ない場合には各組を-1として出力しなさい。

【制約】

1≦N≦2000
1000≦Y≦2∗10^7
Nは整数
Yは1000の倍数

image.png
image.png
image.png

#include <iostream>

int main()
{
  // 入力を受け取る
  int N, Y;
  std::cin >> N >> Y;

  // 各金額の札の枚数を求める
  for (int num_10000 = 0; num_10000 <= N; ++num_10000) {
    for (int num_5000 = 0; num_5000 <= N - num_10000; ++num_5000) {
      int num_1000 = N - num_10000 - num_5000;
      if (num_10000 * 10000 + num_5000 * 5000 + num_1000 * 1000 == Y) {
        // 合計金額が Y 円である組を出力する
        std::cout << num_10000 << " " << num_5000 << " " << num_1000 << std::endl;
        return 0;
      }
    }
  }

  // 合計金額が Y 円である組が見つからなかった場合
  std::cout << "-1 -1 -1" << std::endl;

  return 0;
}

実際にAtCoderに提出したところ、問題なくACとなりました。

記事を書かせる

Qiita投稿用の記事を作成させることができます。
ChatGPTはQiitaが何であるかは理解している模様。。。
image.png

試しにリファクタリングについて記事を書かせてみました。

image.png

以下、記事となります。

出力される形式は実際に画面で表示される形式(記号とかがない状態)となるため、
ここに記載の記事は私の方で記号(#や*)を追記して同じ見た目にしています。

リファクタリングとは

リファクタリングとは、ソフトウェアのコードを改善することを意味します。 リファクタリングは、コードをより読みやすく、保守しやすくすることを目的として行われます。 リファクタリングは、機能追加やバグ修正を行うこととは別に、定期的に行うことが推奨されています。

リファクタリングのメリット

  • コードの読みやすさが向上する
  • バグを減らすことができる
  • メンテナンスしやすくなる
  • チーム開発での作業効率が向上する

リファクタリングのタイミング

リファクタリングは、機能追加やバグ修正を行う前に行うことが一般的です。 これは、リファクタリングを行った後に機能追加やバグ修正を行うことで、新しいコードを書く手間を省くことができるからです。 リファクタリングを行うときは、テストコードを用意して、リファクタリング前後で機能が正しく動作することを確認することが重要です。

リファクタリングの方法

リファクタリングは、様々な方法で行うことができます。 例えば、以下のような方法があります。

  • メソッド名を変更する
  • メソッドを分割する
  • メソッドを統合する
  • 変数名を変更する
  • 不要なコードを削除する

リファクタリングを行う際は、必ずテストコードを用意して、リファクタリング前後で機能が正しく動作することを確認することが重要です。

リファクタリングツール

リファクタリングを行う際には、リファクタリングツールを利用することもできます。 リファクタリングツールは、自動的にコードを改善するためのツールです。 使い方は、通常のエディタでコードを開いた状態で、リファクタリングツールを実行するだけです。 リファクタリングツールを使うことで、手作業で行うリファクタリング作業が自動化されるため、作業効率が向上します。

リファクタリングの best practice

  • リファクタリングを行う前に、必ずテストコードを用意する
  • リファクタリングを行う際は、一つずつ小さな変更を行う
  • リファクタリング後も、機能が正しく動作することを確認する
  • リファクタリングを定期的に行うことで、コードの質を保つ

リファクタリングは、ソフトウェア開発において欠かせないテクニックです。 機能追加やバグ修正の前に行うことで、新しいコードを書く手間を省くことができるだけでなく、コードの読みやすさや保守しやすさを向上させることができます。 リファクタリングを行う際は、テストコードを用意して、機能が正しく動作することを確認することが大切です。

リファクタリングは、特に大規模なプロジェクトでは、定期的に行うことが重要です。 これは、コードベースが膨大になっていくにつれて、複雑化していくためです。 大規模なプロジェクトでは、リファクタリングを定期的に行うことで、コードの質を保ち、バグを減らすことができるでしょう。

また、リファクタリングは、チーム開発でも重要です。 チームで開発する場合は、リファクタリングを行うことで、他のメンバーが理解しやすいコードを書くことができます。 また、リファクタリングを行うことで、他のメンバーが作業する際に手間を省くことができます。

リファクタリングは、コードを改善するためのテクニックですが、そのためには経験と知識が必要です。 リファクタリングをする際には、慎重に行うことが大切です。 また、リファクタリングを行う際には、常にテストコードを用意して、機能が正しく動作することを確認することが重要です。

記事ここまで

リファクタリング

コードのリファクタリングができます。
ただし、完璧とはいかないようです。

using namespace std;を消したのはいいですが、
std::が追加されていませんでした。

image.png
image.png

俳句を作る

俳句まで作れてしまいます。
今回は単純に冬に季語としましたが、条件を細かく指定すればジャンル等絞った状態で作成が可能になるかと思います。

今回は上五が字足らずになってしまいました。

image.png

落語を作る

落語も作れます。
そこまで面白くはないですが。。。

image.png

しりとりで遊べます

しりとりができます。
ただし、ChatGPTは漢字が読めないため、入力した文字の末尾がひらがなの **"ん"**で終わる言葉のみを終了判定に使っています。
また、最後の文字から始まる文字でしりとりをするため、読み方が違っていても、同じ漢字であればOKとみなされます。
なお、こちらが入力した文字については末尾のもののみを判定するだけで、先頭の文字についてはなんでも通ってしまいます。
image.png

簡単にChatGPTが負けてしまうこともありました。
image.png

日本の芸能人について聞いてみた

試しに明石家さんまについて聞いてみました。
image.png
大枠はあっているものの、詳細な部分はかなり間違っています。

文章の作成

文章を作成することができます。
今回はさくらについてである調で作成させてみました。
最初の1文のみである調となっていて、残りはですます調となっていました。
~調については完ぺきではないようです。
image.png

命令文も作成させてみました。
こちらも命令文とはいいがたいものが出来上がりました。
image.png

自分の間違いについて謝った

回答の中で、パナソニックの旧社名をパイオニアと間違って記載してきました。
それに対し、追加の質問で、パナソニックの旧社名について聞いたところ、
最後に、誤って表示してしまったと謝ってきました。
image.png

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?