ChatGPTを業務活用できるか検証してみた

katsuraAI,ChatGPT,チャットBOT

お久しぶりです、katsuraです。

2022年はStableDiffusionを代表とする生成系AIソフトウェア・サービスが多数発表され、AI技術がぐっと身近に近づいた1年でした。

そんな中でもAIチャットサービス「ChatGPT」は個人で利用して面白いだけでなく、業務で利用することで業務の効率化・クオリティアップにつながるツールとして個人的に注目しています。
今回は、このChatGPTを実際の業務にて使ってみた上で、役立った点・気をつける必要がある点についてまとめていきたいと思います。
なお、この記事を書いている時点では検証利用であり、今後も社内で正式利用するかは未定です。

ChatGPTとは

ChatGPTとはOpenAIが提供する高度なAIのチャットボットサービスで、様々な質問を自然言語で回答してくれます。
例えば、ChatGPT自体にChatGPTのことを解説してもらうみたいなことも出来ます。

ChatGPTを業務で利用してみたことについて、ブログ記事を書こうと思います。
「ChatGPTとは」の章について書いてください

ChatGPTは、自然言語生成のための大型言語モデルです。実際の会話や文章を学習データとして使用することで、人間のように自然な文章を生成することができます。
ChatGPTは、OpenAIによって開発されたGPT-3(Generative Pre-training Transformer 3)の拡張版です。GPT-3は、膨大なテキストデータを使用して訓練された言語モデルであり、自然言語生成タスクにおいて高い性能を発揮しています。 ChatGPTもまた、GPT-3と同様に膨大なテキストデータを使用して訓練されており、人間のように自然な文章を生成することができます。
ChatGPTは、会話システムや自動応答システムなどに利用されることが多いです。例えば、Webサイトにアクセスしたユーザーからの質問に対して、自動的に回答を返すことができるようになります。また、ChatGPTは、自然言語処理タスクである文章生成や文書サマリーの生成、文書の自動翻訳などにも利用されることがあります。

今までなら「ChatGPT」でGoogle検索してChatGPTの公式ページを開き、英語で書かれたChatGPTの説明文をDeepLで日本語に翻訳し、最後にブログ向けに文体を修正して完成となっていた工程が、ChatGPTだと1ステップで行ってくれます。

また、この説明文だと専門用語が多くてわかりにくいなと思ったら、わかりやすいように書き直してもらうことも出来ます。

この内容だとITに詳しくない人がわかりにくそうなので、小学生にもわかる表現で書き直してみてください。

ChatGPTは、コンピューターが人間のように自然な文章を生成するためのプログラムです。 ChatGPTは、大量のテキストデータを使って学習させることで、人間のように自然な文章を生成することができます。
ChatGPTは、インターネットでのやりとりや、自動応答システムなどで使われることが多いです。例えば、Webサイトにアクセスしたときに、質問に自動的に答えてくれるようになります。また、ChatGPTは、文章を生成したり、文書の簡単なまとめを作ったり、文書を翻訳するといったタスクにも使われることがあります。

このように、チャットで質問した結果に対して指示や質問を行うことで、回答のブラッシュアップを行うことが出来るのもChatGPT特徴です。

ChatGPTの良い点

  • 自然言語で質問して答えてくれる
    • Google検索で検索する場合、長い説明文を書いても上手くヒットしないので、どの単語で検索を行うべきか考える能力が問われます
    • しかしChatGPTの場合、他の人に相談するときのような聞き方で聞いても回答してくれるので、検索の仕方に困るような問題には強いです
  • 曖昧な問題についても回答してくれる
    • 答えが一つに決まっていないような曖昧な質問についても、いくつか案を出してもらうことが出来ます
  • プログラミングのソース作成やSQLの作成、エラーの修正など、簡単なエンジニアの仕事も代行してくれます
    • サンプルソースを調べる必要すらなく、日本語で質問したら対応したソースを書いてくれます
    • 具体例は後ほど説明します

ChatGPTの欠点・懸念点

  • 誤った情報を回答する場合がそれなりにある
    • ChatGPTはそれらしき回答をかなりの場合で回答してくれるのですが、それらしいだけで内容が間違っているケースもあります。
    • 実を言うと「ChatGPTとは」の説明も一部、間違っています
    • 「ChatGPTは、会話システムや自動応答システムなどに利用されることが多いです。」とありますがChatGPTはまだ発表されたばかりであり、API等も公開されていないので、他のシステムでChatGPTを利用するという利用の仕方は公式ではされていません(一部有志でChatGPTを利用したブラウザプラグイン等を開発している人はいます)
    • このように、それらしき回答でもChatGPTがウソを言っている可能性があるので、ChatGPTが回答した内容が正しい情報なのかは人間が判断する必要があります
    • 特に数学的知識・論理的知識が必要な内容や、後述の最新情報に関する知識、メジャーではない知識については誤った情報を出す可能性が高い傾向にあるので注意が必要です
  • ChatGPTは最新情報を把握していないので、古い情報を出す可能性があります
    • ChatGPTはインターネットの情報をリアルタイムに取得して回答しているわけではないので、古い情報を回答する可能性があります
    • 具体的には2021年以降の情報については十分ではないとされているので、注意が必要です
  • チャットで送信したデータはChatGPTの学習に使われる可能性があるので注意が必要です
    • Google検索やDeepL翻訳でも言えることですが、送信した情報はサービスの学習に使われる可能性があるため、個人情報を含む情報を送信すると、その結果が学習され、他の人に表示される可能性があります
    • 業務で利用する場合には固有名詞を差し替えるなどの対応して使うようにしましょう
    • ちなみに、DeepL翻訳は有料版ですと学習で利用しないサービス運用になっています
    • ChatGPTも今後そのような方針を取る可能性はあるかもしれません
  • ChatGPTは2022年12月23日時点ではプレビュー版での公開で無料で利用できますが、今後どうなるかは不明です
    • 一説によると、1リクエストごとに1セント(1.3円程度)かかっていると言われているので、個人的には無料で提供し続ける可能性は低いと考えています(参考: https://twitter.com/tomgoldsteincs/status/1600196990905614336
    • 比較的性質の近いCopilotというAIプログラミングサポートツールが月額10$の金額設定なので、こちらを意識した値付けをしてくる可能性があるのではないかと、個人的には予想していますが、どうなるかはわかりません
    • DeepLのように、無償プランと有償プランを用意して提供する可能性もあるかもしれません。

業務での活用例

ここからは、実際に業務で利用して活用できそうだなと思った事例について説明していきます。
なお、サンプルで利用しているプログラミング言語や内容は、実際の業務で利用しているものと異なるものをあえて載せているものもありますので、その点はご留意下さい。

活用例1.コーディングなどのエンジニア業務のサポートに活用する

例えば、以下のように小さな処理であればChatGPTにコーディングさせることも可能です。

PHPでBearerヘッダーからアクセストークンを取得する処理を書いてください。

以下は、PHPでBearerヘッダーからアクセストークンを取得する処理の例です。

<?php
// Bearerヘッダーを取得する
$headers = getallheaders();
// Bearerヘッダーが設定されている場合
if (isset($headers['Authorization'])) {
// Bearerヘッダーを分解する
$header = explode(' ', $headers['Authorization']);
// アクセストークンが含まれている場合
if ($header[0] === 'Bearer') {
// アクセストークンを取得する
$access_token = $header[1];
}
}

上記の例では、getallheaders関数を使用してHTTPリクエストヘッダーを取得し、Authorizationヘッダーを取得します。次に、Authorizationヘッダーを分解し、最初の要素がBearerである場合は、2番目の要素がアクセストークンであると判断し、変数$access_tokenに代入します。
注意: getallheaders関数はPHPでリクエストヘッダーを取得するための関数ですが、一部の環境では利用できない場合があるため、利用する前に必ず利用可能かどうかを確認する必要があります。

このように、指定した言語でソースコードを書き、日本語のコメントまでつけてくれます。

ただし、ChatGPTが作成したコードは完璧ではないコードが多い点は注意が必要です。
今回のケースですと、AuthorizationヘッダにBearerの文字のみが入っていた場合にエラーが発生するなど、いくつかのイレギュラーケースへの対応が出来ていません。
ただ、逆に言うと、少し手直しすれば十分に使えるソースではあるので、1からソースを書くよりも、ChatGPTが書いた処理を手直ししたほうが早いケースはそれなりにアリそうな手応えでした。

また、初心者がプログラミングする場合には、まず何から手を付けるかわからない場合も多いかと思います。
そういった場合に、まずはChatGPTにコードを生成してもらい、そのコードをレビュー・デバッグしてクォリティを上げていくというステップを踏むことで、手が止まって進まないみたいな自体を回避できるかと思いました。

ちなみに、テスト・デバッグをする上での注意点を聞くと、それに関してもある程度参考になる回答を得ることが出来ます。
これも、完全なものではないですが、参考にはなるので、ChatGPTの提案した観点に気をつけつつ、自分なりに情報整理した上で、デバッグ・修正をしていくことが良いかと思います。

このスクリプトのテスト・デバッグをする際の注意点を列挙してください

以下は、このスクリプトのテスト・デバッグをする際の注意点です。
 1.Bearerヘッダーが正しく設定されていることを確認する。
 2.getallheaders関数が利用できることを確認する。
 3.アクセストークンが正しく取得できていることを確認する。
 4.アクセストークンの検証や使用方法については、そのアプリケーションやサービスの具体的な仕様に準じる必要がある。
また、以下の点も注意する必要があります。
 1.アクセストークンが設定されていない場合の処理が記述されているかを確認する。
 2.ヘッダーの設定や取得に失敗した場合の処理が記述されているかを確認する。
 3.アクセストークンが分解できなかった場合の処理が記述されているかを確認する。
 4.アクセストークンを使用する際に、期限切れや無効なアクセストークンである場合の処理が記述されているかを確認する。

他にもプログラミング的な補助として、以下のような利用方法も有効でした

  • APIやbashコマンドの実行例を出力させる
    • AWS CLIなど有名どころのAPIなら安定して出力してくれる印象です
    • やりたい内容・パラメータを具体的に指定すると、それを反映したコマンドを出力してくれるので、サンプルを編集するより楽なケースがあります
  • プログラムのエラーメッセージと、該当のソースを入力し、エラーの原因特定やソースの修正方法を確認する
    • ソースのよっては、エラー原因の特定だけでなくリファクタリングの提案をしてくれるケースもありました
  • 変数名・関数名の命名を考えてもらう
    • 「~~~という処理のメソッドを実装予定です。この処理のメソッド名の候補を箇条書きで100個ぐらい教えてください。」と書くと、本当に100個候補をリストアップしてくれます
    • 言語や命名規則を指定すると、さらに精度が高くなる印象です

活用例2.リスクの洗い出しや論理の補強に利用する

明確に1つの答えが存在しないような問題について、ChatGPTに相談することで情報の整理を行ったり、観点の抜けを減らす事ができます。

例えば、PHPのメジャーバージョンアップのプロジェクトを行う場合には、以下のようにChatGPTに相談することでタスクの抜けやリスクの考慮漏れを減らすことが出来そうです。
これは、特にプロジェクトリーダーの経験が少ない人が進める場合や、未知の領域のプロジェクトを進める際の経験不足を補うのに有効な予感がしています。

PHP7を利用したWebアプリの開発・運用を行っています。
利用するPHPのバージョンを8にバージョンアップするプロジェクトを始めます。
このプロジェクトの段取りをまとめてください

PHPのバージョンアッププロジェクトの段取りとして、次のような手順が考えられます。

 1.現在使用しているPHPのバージョンと、アップグレード先のPHP8の主な変更点を調査する。
 2.PHP8へのアップグレードが、Webアプリケーションの既存の機能に影響を与えないか、または必要な変更があるかを確認する。
 3.PHP8へのアップグレードに必要な変更を適用する。この作業は、既存のコードの変更や、必要なライブラリやパッケージのインストールが含まれる場合がある。
 4.PHP8へのアップグレード後のWebアプリケーションを、ローカル環境やステージング環境などでテストする。
 5.PHP8へのアップグレードが問題なく完了したことを確認したら、本番環境へのアップグレードを実施する。
 6.PHP8へのアップグレード後の本番環境での動作を確認する。

以上が、PHPのバージョンアッププロジェクトの段取りとして考えられる手順です。
ただし、実際にアップグレードプロジェクトを進める際には、プロジェクトの状況やニーズに応じて、上記の段取りを適宜調整する必要があります。

「PHP8へのアップグレードが、Webアプリケーションの既存の機能に影響を与えないか、または必要な変更があるかを確認する。」について、より詳しい手順・タスクをリストアップしてください

PHP8へのアップグレードが、Webアプリケーションの既存の機能に影響を与えないか、または必要な変更があるかを確認する手順として、次のようなタスクが考えられます。

 1.PHP8のリリースノートや、変更点のドキュメントを確認し、既存のWebアプリケーションが使用しているAPIや機能が、PHP8で削除や変更されるものがあるかを調査する。
 2.既存のWebアプリケーションのソースコードをスキャンし、PHP8で非互換な書き方や、Deprecated(非推奨)になったAPIを使用している箇所があるかを検出する。
 3.PHP8では、新しい機能やAPIが追加されているため、既存のWebアプリケーションがそれらを利用できるようにするための必要な変更があるかを調査する。
 4.上記の調査の結果をまとめ、PHP8へのアップグレードが既存の機能に影響を与えるか、または必要な変更があるかを検討する。

以上が、「PHP8へのアップグレードが、Webアプリケーションの既存の機能に影響を与えないか、または必要な変更があるかを確認する。」について、より詳しい手順・タスクとして考えられるものです。
ただし、実際にアップグレードプロジェクトを進める際には、プロジェクトの状況やニーズに応じて、上記のタスクを適宜調整する必要があります。

「既存のWebアプリケーションのソースコードをスキャンし、PHP8で非互換な書き方や、Deprecated(非推奨)になったAPIを使用している箇所があるかを検出する。」について、ここで言うスキャンとは、具体的にはどのような作業のことでしょうか?
PHPStormあるいはVS Codeで行う方法があれば教えてください

「既存のWebアプリケーションのソースコードをスキャンし、PHP8で非互換な書き方や、Deprecated(非推奨)になったAPIを使用している箇所があるかを検出する。」について、ここで言うスキャンとは、次のような作業のことを指します。

 ・PHP8で非互換な書き方や、Deprecated(非推奨)になったAPIを使用している箇所を、検出するためのツールを実行する。
 ・上記のツールが出力する結果を確認し、PHP8で非互換な書き方や、Deprecated(非推奨)になったAPIを使用している箇所を検出する。

例えば、PHPStormやVS Codeでは、次のような方法で、PHP8で非互換な書き方や、Deprecated(非推奨)になったAPIを使用している箇所を検出することができます。
 ・PHPStormの場合
   ・PHPStormの「Inspection」機能を使用する。「Inspection」機能を使うと、PHPのコードをスキャンして、様々な問題箇所を検出できる。
   ・「Inspection」機能で、「PHP Deprecated Code」や「PHP Internal Compatibility」といった、非互換な書き方や、Deprecated(非推奨)になったAPIを使用している箇所を検出する設定を有効にする。
   ・「Inspection」機能を実行し、検出された問題箇所を確認する。

このようにPHPのバージョンアップのようなよくあるプロジェクトを進める上では、事前計画の精度を上げるのにChatGPTが使えそうした。
また、プロジェクトを進める上で利用可能な手段やツールの提案もしてくれるので、事前知識が少なかった場合での見落としも減らさせそうです。

また、考慮漏れを減らす方法の別のケースとして、賛成派・反対派の意見を出して整理することが有効な場合もあります。
次の例では、新入社員にバグ修正を任せるべきか、コードレビューを任せるべきかについて、賛成派・反対派の意見をまとめています。

B2B向けのWebサービスの開発を行っている開発者です。
入社1年目の社員とベテランの社員の2人がいます。
この2人で、小さなバグ修正を行い、2人で、バグ修正とコードレビューを分担するとします。
入社1年目の社員に任せるのは、バグ修正とコードレビューのどちらが良いか討議しましょう
なお、入社1年目の社員のプログラミングスキルは及第点ではあるが、高くはないとします。
バグ修正派とコードレビュー派に分かれて議論してください

バグ修正派:
入社1年目の社員には、バグ修正を任せることが良いです。
これにより、実際のコードを手を動かしながら修正することで、実践的なスキルを身につけることができます。
また、実際にバグを修正することで、自分が書いたコードに対する責任感を高めることができます。
さらに、バグ修正を行うことで、実際の問題を解決することができるため、成功体験を得ることができます。

コードレビュー派:
入社1年目の社員には、コードレビューを任せることが良いです。
これにより、他人のコードを見ることで、プログラミングにおける基本的なスタイルやテクニックを学ぶことができます。
また、他人のコードを見ることで、自分のコードを書く上での指標となることができます。
さらに、コードレビューを行うことで、自分のコードを見直すことで、自己改善することができます。

このように、ChatGPTと相談しながら考えをまとめたり、タスクの整理をすることで、1人で考えるよりも精度高く計画を建てられる可能性があります。

他にも、以下のような相談をすることで、業務活用ができそうでした。

  • マネジメントの相談などを行う
    • 例えば、「同僚が作業で詰まった点に関する連絡をしてくれなくて、時間をロスするケースが多くて困っている」みたいなマネジメントの相談は、相談相手を選ぶ場合も多いので、なかなか相談をしにくいです
    • 普通は上司と相談して結論を出していくものですが、ある程度の一般論であればChatGPTも回答してくれるので、こういった問題の相談相手としても有効です
    • また、ChatGPTに相談して解決しなかった場合でも、相談の過程で自分の考えが整理さ出来るので、上司に相談する前に相談するという使い方も有効です
  • 問題・障害が起きたときに何から確認していけばよいかを確認する
    • 例えば、「ディスク容量が逼迫しているアラートが出た場合」や「sshでログインできない場合」など複数のシチュエーションがある技術的な問題について、ChatGPTに相談することで確認するポイントを整理することも出来ます
    • アラートや障害の対応経験が少ない社員だと、何から手を付ければいいかわからなかったりするので、そういうケースに役立ちそうです

業務活用するときのコツ

最後に、実際に業務で活用してみてわかった利用上のコツについてまとめていこうと思います。

  • 機密情報に気をつけつつ、なるべく具体的な情報で質問する
    • 例えば、「後輩のojtを行う際に気をつけるべき点を教えて欲しい」という質問をする場合、勤めている会社の業種や職種を入れないと、的確なアドバイスを得られない可能性があります。
    • プログラミングのエラーを質問する場合は、利用している言語やエラーメッセージなど具体的な情報を入れないと、ChatGPTもエラーを特定できない可能性があります
    • 質問する際には、回答に必要な情報が何かを考え、必要そうな情報を具体的に質問に盛り込むようにしましょう
    • 具体的な情報を入れて質問するのには一種のスキルが必要になるかもしれませんが、このスキルは対人で質問・相談するときにも役立つスキルです
    • 対人での質問スキルを磨くためにChatGPTで練習するつもりで頑張るのも良いかもしれません
  • ChatGPTの回答は誤っている可能性がある前提で考えましょう
    • 繰り返すようですが、ChatGPTは間違った回答をすることもそれなりにあります。
    • ChatGPTにコーディングしてもらう場合であれば、ChatGPTの書いたコードをきちんと理解し、分からない関数や書き方は言語マニュアルを確認したりして、問題ないと判断してから利用しましょう
    • マネジメントの相談などは、人によりケースバイケースで正解が異なります。ChatGPTが出した回答が自分の職場にあてはまるかどうか考えるようにしましょう

まとめ

以上、2週間ほどChatGPTを業務で利用してみた結果をまとめてみましたが、いかがでしたか。

ChatGPTで出来ることは限定的ではあるものの、十分に業務内で利用できるレベルに達していますし、今後バージョンアップを繰り返すことで更に有効なツールとなっていくかと思われます。

今後の成長の過程で、AIチャットという存在はビジネスに欠かせないツールの一つになっていく可能性が高いと思いますので、私も引き続きChatGPTを業務活用する検証をしつつ、可能性を探っていきたいと思います。

katsuraAI,ChatGPT,チャットBOT

Posted by katsura